Changing the subject... :-[
On 25/11/15 13:21, aitor_czr wrote:
Hi Roger, Rainer:
Here is the code of the spinner using Gtkmm3 instead of Gtk3+.
The .xml file generated by Glade is the same.
###### SPINNER #######
#include <gtkmm.h>
#include <iostream>
Gtk::Window* pWindow = 0;
Gtk::Button* pButton1 = 0;
Gtk::Button* pButton2 = 0;
Gtk::Button* pButton3 = 0;
Gtk::Button* pButton4 = 0;
Gtk::Spinner* pSpinner1 = 0;
static void on_button1_clicked();
static void on_button2_clicked();
static void on_button3_clicked();
static void on_button4_clicked();
int main (int argc, char **argv)
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc,
argv, "org.gtkmm.example");
Glib::RefPtr<Gtk::Builder> refBuilder =
Gtk::Builder::create_from_file("spinner.ui");
refBuilder->get_widget("window", pWindow);
if(pWindow)
{
refBuilder->get_widget("button1", pButton1);
refBuilder->get_widget("button2", pButton2);
refBuilder->get_widget("button3", pButton3);
refBuilder->get_widget("button4", pButton4);
refBuilder->get_widget("spinner1", pSpinner1);
if(pButton1)
pButton1->signal_clicked().connect(sigc::ptr_fun(on_button1_clicked));
if(pButton2)
pButton2->signal_clicked().connect(sigc::ptr_fun(on_button2_clicked));
if(pButton3)
pButton3->signal_clicked().connect(sigc::ptr_fun(on_button3_clicked));
if(pButton4)
pButton4->signal_clicked().connect(sigc::ptr_fun(on_button4_clicked));
}
app->run(*pWindow);
delete pWindow;
return 0;
}
static void on_button1_clicked ()
{
pSpinner1->show();
}
static void on_button2_clicked ()
{
pSpinner1->hide();
}
static void on_button3_clicked ()
{
pSpinner1->start();
}
static void on_button4_clicked ()
{
pSpinner1->stop();
}
###### END #########
In my case, Rainer, the spinner works only into a chroot jail (i tried
it in a couple of computers).
It's very strange... And it's appearance is also different !!
... "The misterious affaire of the spinner" ...
To be continued :)
Aitor.
On 24/11/15 13:00, Roger Leigh <[email protected]> wrote:
On 23/11/2015 20:43, Rainer Weikusat wrote:
>Roger Leigh<[email protected]> writes:
>>On 23/11/2015 13:50, Rainer Weikusat wrote:
>>>Roger Leigh<[email protected]> writes:
>>>>On 23/11/2015 11:49, Nate Bargmann wrote:
>>>>>* On 2015 23 Nov 00:53 -0600, aitor_czr wrote:
>>>>>>In my opinion, using C with lists will be the most suitable.
>>>>>
>>>>>Have you looked at what glib provides? It is an underlying library of
>>>>>GTK and seems to contain many such solutions.
>>>>
>>>>Using GLib for structures like linked lists (GList) etc. is a much
>>>>better solution than reinventing them unnecessarily.
>>>
>>>I beg to differ here: Using a lot of complicated code in order to
>>>accomplish something simple, ie, management of linked lists, may be
>>>regarded as advantageous, eg, because it enables avoiding a (typically
>>>negligible) amount of work or because it's more politically feasible but
>>>$code doesn't become a 'better' solution for some $problem just because
>>>it can be downloaded for free from the internet.
>>
>>This is true up to a point. Note the "unnecessarily" qualifier in
>>what I wrote--sometimes there might be a justification for reinventing
>>the wheel,
>
>"The wheel" (leaving the issue that wheels are being 're-invented', ie,
>new kinds of wheels are being developed all the time, aside) is a
>technical device which has been in use without changes to the basic
>design for a couple of thousands of years. In contrast to this, most
>other human inventions, say, steam-powered locomotives, delay line
>memory or CP/M, are very short-lived. This make it a particulary
>unsuitable analogy here.
OK, "unnecessary reimplementation" then. Reimplementing basic stuff is
wasteful on many levels.
>>1) Use GLib
>>2) Use a linked list implementation from another library
>>3) Write your own
>>4) Use C++
>>5) Use another language
>>
>>As you say (1) isn't necessarily ideal, and this also potentially
>>applies to (2) depending upon its quality of implementation and how
>>well it matches your needs. Where I would disagree is that (3) has a
>>"typically negligable" cost. A linked list is conceptually simple,
>>and yes, not that much effort to write.
>
>One thing I always liked about Jeff Bonwick's 'Slab Allocator' paper was
>that he apparently didn't even think about implementing a generalized
>library for handling doubly-linked list instead --- he just wrote the
>code manipulating the link pointers as needed.
Well, inside the guts of an allocator is exactly where direct pointer
usage is required for the needed performance and flexibility. But for a
list in a frontend GUI, not so much. It would be a waste of valuable
time and effort when there are easier and simpler alternatives. The
goal is to write a GUI, not mess around with list implementation details.
>>If you take approach (4), and use a standard container type, the
>>problem is solved immediately. "#include <list>", "std::list<mytype>
>>mylist". Job done.
>
>One of the reasons why I stopped using C++ around 2001/2 (A lesser
>reason. The more important one was that it was neither a requirement nor
>particularly helpful) was that I always regarded it as very nice
>language with the millstone of an atrociously implemented standard
>library around its neck while I came to realize that a certain Mr
>Stroustroup seemed to regard is a rather atrocious language he could
>only sell because of the wonderful library requiring it.
So this is pre-Standard C++ given the timeframe? It was particularly
bad around this time, and it took several releases of GCC3.x before the
bugs in libstdc++ were shaken out (so ~2004-5 when it became widely
available). Not that the C++98 standard library is without its warts,
but it's perfectly functional. With C++11, the library became properly
usable--direct initialisation of containers makes it vastly better.
If you came to me with a problem, and that required maps, lists etc. to
solve, I would nowadays automatically discount C. I'd look and C++ or
Python first. I'd have an implementation done and tested well before
I'd even got started on it in C--where I'd be obliged to create all the
low-level pieces before I even got started on the problem itself.
There's no advantage to using C in a situation like this--other than for
masochistic bragging rights--it doesn't do a better job, and it takes
longer, requires more effort and will be more likely to contain bugs.
std::vector<std::string> list{"foo", "bar", "baz"};
Just works. How much low-level C would be required to implement that?
Lots. Would it be worth the cost? Almost certainly not.
Regards,
Roger
_______________________________________________
Dng mailing list
[email protected]
https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng