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

Reply via email to