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
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to