Why not just make async network requests on the UI thread? On Mon, Sep 12, 2016 at 12:37 PM Daniel. <danielhi...@gmail.com> wrote:
> Well, if I wasn't clear before my layout is totally questionable. I > more generic question would be: > > How you guys aproaches when the problem is showing applications > behavior on screen? > > My backend logic is something like this: > > - Start a new thread for each address passed in command line. Address > are 32bits numbers. > - At each thraed: > - While (true) > - Make the background yellow > - Send a message and wait for response (a blocking call) > - If timeout set background red > - else set background green > - showup the latency (how much time the "Send a message" taken) > - wait a second so that user can see other background color than > yellow > > - Start a new thread to receive events > - While (true) > - when some event arrive: > - instantiate a new label describing the event and show it onto > the screen > - reply the event (blocks till reply acknowledge) > - remove the event from the screen > > > Is there any monitoring software that reacts to outside world events > and show then in some GTK GUI? That would be a good inspiration :) > > Best regards, > > 2016-09-12 13:19 GMT-03:00 Daniel. <danielhi...@gmail.com>: > > Hi thank you guys for the replies, > > > > Gergely, I can't really use FlowBox since I'm depending on gtk2, not > > 3. So the solution is really implementing my own widget as Joël said > > .. Joël in swing I usually use an event queue so that there is only > > one thread doing GUI modifications. Is that pattern used often in gtk? > > I think that this pattern is cleaner and more ellegant that > > synchronizing at every single thread, the problem is that I can't have > > lambda expressions in C :(. How would I apply this pattern to GTK? > > > > Best regards, > > > > 2016-09-12 12:56 GMT-03:00 Joël Krähemann <jkraehem...@gmail.com>: > >> Hi again > >> > >> Don't mess synchronized with a mutex. The closest thing to > >> synchronized would be ags_task_thread_append_task() > >> and run things exclusively > >> > >> > http://git.savannah.gnu.org/cgit/gsequencer.git/tree/ags/thread/ags_task_thread.h?h=0.7.x > >> > >> bests, > >> Joël > >> > >> > >> > >> On Mon, Sep 12, 2016 at 5:50 PM, Joël Krähemann <jkraehem...@gmail.com> > wrote: > >>> Hi > >>> > >>> Since I know Javax/Swing I can tell you there is no synchronize > >>> keyword doing your magic. > >>> > >>> Please take a look at pthread_mutex_lock(), pthread_cond_wait(), > >>> pthread_cond_signal(), pthread_cond_broadcast() > >>> or pthread_barrier_wait(). > >>> > >>> Bests, > >>> Joël > >>> > >>> > >>> On Mon, Sep 12, 2016 at 5:17 PM, Joël Krähemann <jkraehem...@gmail.com> > wrote: > >>>> Hi > >>>> > >>>> You can't do that without implementing your own widget because of > >>>> thread-safety issues. To do your own > >>>> GtkFlowBox implement GtkWidget:size-allocate and > >>>> GtkWidget:size-request the rest is up to you. > >>>> > >>>> Don't forget doing mutices or use g_timeout_add() but this is single > >>>> threaded and is invoked by > >>>> g_main_context_iteration(). > >>>> > >>>> For a simple example consider this: > >>>> > >>>> > http://git.savannah.gnu.org/cgit/gsequencer.git/tree/ags/X/editor/ags_notebook.c?h=0.7.x#n167 > >>>> > >>>> It is a scrolled window containing buttons doing a scrollable area. > >>>> > >>>> You have to use gdk_threads_enter() and gdk_threads_leave(). Might be > >>>> you have even to acquire > >>>> the GMainContext. > >>>> > >>>> Bests, > >>>> Joël > >>>> > >>>> > >>>> > >>>> On Mon, Sep 12, 2016 at 5:03 PM, Gergely Polonkai < > gerg...@polonkai.eu> wrote: > >>>>> Hello, > >>>>> > >>>>> I have no knowledge of Java/Swing, but based on your requirements I > guess > >>>>> you need FlowBox[1]. > >>>>> > >>>>> Best, > >>>>> Gergely > >>>>> > >>>>> [1] https://developer.gnome.org/gtk3/stable/GtkFlowBox.html > >>>>> > >>>>> On Mon, Sep 12, 2016, 16:35 Daniel. <danielhi...@gmail.com> wrote: > >>>>> > >>>>>> Hi everybody, > >>>>>> > >>>>>> I have a library implementing some protocol. That library is > >>>>>> multithread and is responsible to delivery messages to remote nodes > >>>>>> and retrieve it's responses. I need to visualise the whole mess > >>>>>> running. > >>>>>> > >>>>>> To do this I wrote a simple application in Java/Swing where for each > >>>>>> remote node one thread is created. The thread will send a message > and > >>>>>> wait for response in a closed loop. Each thread is represented at > GUI > >>>>>> by a label on the screen. When it's idle the background of that > label > >>>>>> becomes green, when is waiting for response it is yellow and if > >>>>>> timeouts it becomes red. All labels have the same information so > that > >>>>>> they have exactly the same size. > >>>>>> > >>>>>> Beside the request/repsonse there is events that can arrive from the > >>>>>> nodes too. That events need to be replied as the messages. When an > >>>>>> event arrives it's showed up on screen as a new label. When it's > reply > >>>>>> is acknowledge it's removed from the screen. > >>>>>> > >>>>>> In pratice there is a big container where the labels came and go and > >>>>>> change its background colors based on messages, replies and events > >>>>>> comming and going. > >>>>>> > >>>>>> I've been using FlowLayout as the "big container". The labels are > >>>>>> added and arrange horizontally by FlowLayout. When no room is > avaible > >>>>>> at the current row, a new row is added. When the rows exceed the > >>>>>> window size a scrowbar appears. > >>>>>> > >>>>>> I'm looking for something silimar with GTK2 (I'll run in a embeeded > >>>>>> system that doesn't have GTK3). > >>>>>> > >>>>>> My questions are: > >>>>>> > >>>>>> 1) Is there some container with equivalent behavior to the Swing's > >>>>>> FlowLayout? If no I think I'll need to build one from hbox+vbox, > what > >>>>>> would be the best aproach to it. > >>>>>> 2) How is the best way to change the background of a label? > >>>>>> 3) What is the better aproach when adding instantiating, adding, > >>>>>> showing, hiding removing and freeing widgets at runtime? What can > get > >>>>>> wrong? > >>>>>> > >>>>>> References: > >>>>>> > https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#flow > >>>>>> > >>>>>> Best regards, > >>>>>> -- > >>>>>> "Do or do not. There is no try" > >>>>>> Yoda Master > >>>>>> _______________________________________________ > >>>>>> gtk-app-devel-list mailing list > >>>>>> gtk-app-devel-list@gnome.org > >>>>>> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > >>>>>> > >>>>> _______________________________________________ > >>>>> gtk-app-devel-list mailing list > >>>>> gtk-app-devel-list@gnome.org > >>>>> https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list > > > > > > > > -- > > "Do or do not. There is no try" > > Yoda Master > > > > -- > "Do or do not. There is no try" > Yoda Master > _______________________________________________ > gtk-app-devel-list mailing list > gtk-app-devel-list@gnome.org > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list