Large GTK Application design tips

2008-09-11 Thread Paul Stuart
Hi,
 I'm about to embark on designing a large application that will use GTK+. I was 
wondering if there are any resources out there that might have tips on 
architecture practices specific to GTk+, style guides, etc. I've written small 
apps, but I'm curious about how things scale up.

Any pointers would be appreciated!

Thanks,
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: Large GTK Application design tips

2008-09-11 Thread Paul Stuart
Hi,
 Thanks, great advice! Using glade is an interesting idea I hadn't considered 
since this is for an embedded product. Anyone have experience using it on an 
embedded platform (TI dm355 in my case)? Will the overhead eat me alive?
Paul


From: Vallone, Anthony [mailto:[EMAIL PROTECTED]
Sent: Thursday, September 11, 2008 2:05 PM
To: Paul Stuart; gtk-list@gnome.org
Subject: RE: Large GTK Application design tips

Hi Paul,

I led a very large government project using GTK+ and C++ with great success.  I 
don't know of any docs on the subject, but here are the top three tips that I 
had to learn the hard way:

 1.  GTK+ is not thread safe, and the gdk_threads_enter/gdk_threads_leave calls 
don't always work.  When worker threads need to do something to the GUI, just 
use g_idle_add().
 2.  Glade together with libglade is a must.  With your GUI layout defined in 
XML, its easy to make mass GUI changes via a script.  It also simplifies 
testing, since you don't need to re-compile when trying out different layouts.
 3.  We created a C++ wrapper class hierarchy for each significant widget we 
use.  The wrappers allow us to easily change the look and/or behavior of all of 
those widgets in our system (ex: all non-editable GtkEntries have a grey 
background, or custom search box below all GtkTreeViews). The wrappers are also 
useful when you discover GTK+ quirks that you need to work around (All GUI 
toolkits have them).
-Anthony Vallone


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Paul Stuart
Sent: Thursday, September 11, 2008 3:59 PM
To: gtk-list@gnome.org
Subject: Large GTK Application design tips
Hi,
 I'm about to embark on designing a large application that will use GTK+. I was 
wondering if there are any resources out there that might have tips on 
architecture practices specific to GTk+, style guides, etc. I've written small 
apps, but I'm curious about how things scale up.

Any pointers would be appreciated!

Thanks,
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: Large GTK Application design tips

2008-09-12 Thread Paul Stuart
Great, thanks for the advice!

I'm curious; a number of people have recommended to "make your own widget". Is 
this recommendation purely to give one's application a unique feel, or is there 
an efficiency gain to be had in creating a custom widget?

Thanks again for the great tips everyone has given

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Diego Jacobi
Sent: Friday, September 12, 2008 6:59 AM
To: gtk-list@gnome.org
Subject: Re: Large GTK Application design tips

I recommend you to use:

GtkBuilder instead of depending with libglade.

GtkActions, GtkActionGroups and GtkUIManager for every single action
that the user can do in your aplication, then create Toolbars or
menubars with thoose action or make your own widgets with thoose
actions, the code will be much more clear.

Use gtk_idle_add instead of g_thread_*.

Create your own widgets on top of existents, one for the main window,
one for the main worker widget, etc

I preffer to just use C. Is faster and lowest memory usage.

I try to do everything with glib and gtk as much as you can. Like not
using stdio.h. Replace printf for g_printf always and int for g_int,
etc.

Cheers.
Diego



2008/9/12 Jonh Wendell <[EMAIL PROTECTED]>:
> On Sex, 2008-09-12 at 11:20 +0100, Lukasz Gromotowicz wrote:
>
>> I am writtin an embedded application (GUI) in GTK. It is my first
>> contact with GTK, and so far I learnt:
>> 1. using glade and libglade is briliant idea.
>
> Nowadays you can use GtkBuilder (instead of libglade) which is part of
> gtk+.
>
> Cheers,
> --
> Jonh Wendell
> http://www.bani.com.br
>
> ___
> gtk-list mailing list
> gtk-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-list
>
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Gtk Responsiveness

2008-09-25 Thread Paul Stuart
Hi,
 I'm running Gtk+directfb on a TI dm355. Looks great, but the response time for 
my UI is sluggish (lag time between button press and screen update).

 I've tried different engines (industrial, crux, clearlooks) and have found 
they slow things down or speed things up to a varying degree.

Any advice for getting my app to be ultra-jaunty? Not sure if it's just a 
matter of choosing a particular fast engine, or if there are other things to 
tweak.



On a separate note, I still have an issue where widgets seem to fuzz out and 
then grow crisp when I move focus, not sure what's going on there.

Any hints or advice would be appreciated.


Thanks!
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: expose event

2008-09-26 Thread Paul Stuart
Hi,
 Not sure if this will solve your particular problem, but I had a similar issue 
with images disappearing at one point. The solution was to put the image widget 
into an event box so it would get the redraw event.
paul
-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Douwe Vos
Sent: Friday, September 26, 2008 12:30 PM
To: [EMAIL PROTECTED]
Cc: gtk-list@gnome.org
Subject: Re: expose event

Does the image/video area have its own widget or is it on the same widget to 
which the boxes/spin buttons were added ? If it is shares the same area then 
you should consider putting the images/video area in its own widget i.e:

GtkWidget *drawing_area = gtk_drawing_area_new();

or write a widget class yourself.

It could also be your goal to let the boxes/spin buttons overlap the image 
area... in that case I think its a little harder to get it fixed. Since i'm a 
so called 'newbie' in Gtk/Gdk myself I can only base this answer on my Java/SWT 
experience.

Regards,
Douwe




- Original Message 
From: Andres Gonzalez <[EMAIL PROTECTED]>
To: Douwe Vos <[EMAIL PROTECTED]>
Sent: Friday, September 26, 2008 10:13:35 PM
Subject: Re: expose event

Douwe,

Thank you so much for your response--that fixed my problem.

Another quick question that I think is related to this problem.

When I click on checkboxes or spin buttons, my image disappears. The
callback functions that are registered/connected for these check
boxes/spin buttons are defined to return void so I cannot return FALSE
with them to prevent a paint. Any idea how to resolve this one?

Thank again for your time.

-Andres




Douwe Vos wrote:
> Do you return maybe return TRUE at the end of your paint expose callback 
> handler... if so I think you should change it to FALSE. And are you realy 
> using the connect functions or are you overwriting the expose-handler of the 
> widget itself?
>
> Regards,
> Douwe
>
>
>
> - Original Message 
> From: Andres Gonzalez <[EMAIL PROTECTED]>
> To: gtk-list@gnome.org
> Sent: Friday, September 26, 2008 6:49:45 AM
> Subject: expose event
>
> Hi,
>
> I am developing a video application. I have the images displaying
> correctly. I also have some other widgets on the screen below the images
> like check boxes and labels.
>
> Whenever I connect the expose event for the images, the other widgets
> are not painted to the screen. A spin button is painted, but labels and
> check boxes are not painted. This is even if I have NOTHING in the
> expose event callback itself. When I do not register or connect the
> expose event, all of the other widget are painted as expected.
>
> Sorry for such a newbe question--but can anybody explain why this is and
> how I can resolve it?
>
> Thanks,
>
> -Andres
> ___
> gtk-list mailing list
> gtk-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-list
>
>
>
>
>




___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Gtk widget focus-line "sticks"

2008-12-04 Thread Paul Stuart
Hi,
 I'm using GTK version 2.10 with directfb 1.3 and using the murrine theme 
engine. This is on a TI DM355, if that matters.

The problem is the focus outline "sticks" on pretty much every widget except 
for buttons.

So for a typical window with slider bars, combo boxes, and so on, as I move 
focus through the form using the tab key, each widget draws the focus-line, but 
never removes it.

By the time I've reached the bottom of the window, it looks like all the 
widgets have focus.

Hiding and displaying the window again does not reset this behavior.

Any guesses?
Thanks,
Paul



___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Wrong Exif Id in io-jpeg.c?

2009-03-16 Thread Paul Stuart
Hi,
 Per the Exif specification, and the comments within io-jpeg.c, the 6 byte Exif 
Marker (APP1 marker) should be  0x45786966, or "Exif\0\0".

But, in  io-jpeg, they've defined:
#define EXIF_IDENT_STRING  "Exif\000\000"

which in hex would be 0x457869660030 by my count.

In the code that follows, we see:
.
.
.
/* The Exif APP1 marker should contain a unique 
identification string ("Exif\0\0"). Check for it. */
if (!memcmp (cmarker->data, EXIF_IDENT_STRING, 6)) {
exif_marker = cmarker;
}
.
.
.
So, the author of the comment alluded to the correct identification string, but 
wasn't using it for the check. 

Since this is still in the most recent code, I'm wondering if I'm missing 
something, or if this is a bug.


thanks!
paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: Wrong Exif Id in io-jpeg.c?

2009-03-16 Thread Paul Stuart
Huh, didn't know that. Thanks!

From: gtk-list-boun...@gnome.org [gtk-list-boun...@gnome.org] On Behalf Of 
Robert Pearce [...@bdt-home.demon.co.uk]
Sent: Monday, March 16, 2009 2:29 PM
To: gtk-list@gnome.org
Subject: Re: Wrong Exif Id in io-jpeg.c?

On Mon, 16 Mar 2009, Paul Stuart  wrote :
>But, in  io-jpeg, they've defined:
>#define EXIF_IDENT_STRING  "Exif\000\000"
>
>which in hex would be 0x457869660030 by my count.

I'm not quite sure how you reckon that. Escaped numbers in C strings are
evaluated as octal, so seeing three digits is quite normal. The compiler
will regard \000 as a single zero byte.
--
Rob Pearce   http://www.bdt-home.demon.co.uk

The contents of this | Windows NT crashed.
message are purely   | I am the Blue Screen of Death.
my opinion. Don't| No one hears your screams.
believe a word.  |
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Cache/Save parsed Gtk Builder file?

2009-05-01 Thread Paul Stuart
Hi,
  We are (finally) to the point where our glade-defined UI is not changing 
often. The downside of that is now builder has to  parse the unchanging ui 
definition each time the app starts up,  which burns a fair amount of time (10 
seconds,  running on an embedded system). 

Any ideas/advice for how to speed up the builder parsing process for the UI? 
I've considered traversing through the builder object and serializing it, but 
that seems very, very painful. 

thanks!
paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


GtkTreeView : Create a child row with different model than it's parent row?

2009-09-17 Thread Paul Stuart
Hi,
   I have a treeview interface with five or so columns of  "stuff" (text) that 
spans the screen -easy- but I'd like to have the child of that row be a single 
progress bar that also spans the length of the screen. 

If I just create a column for the progress bar, when the row is expanded, the 
columns of the parent are pushed out of the window to make room for the 
progress bar.

 I'd really like for all the parent columns to stay fixed in place and show the 
progress bar below them. Is there any way to accomplish this? It sounds like I 
need one treeview model for the parent row with a different model for the child 
nested within it. 

Hopefully what I'm trying to say is clear, very new to the GtkTreeview.

Any ideas?

Thanks,
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: round buttons

2009-09-21 Thread Paul Stuart
You can apply styles to specific widgets in your theme resource file, ala:

widget "windowMain.fixedContainerMain.myButton" style : highest 
"coolButtonStyle"

That will only effect "myButton" and not the other, standard buttons.


From: gtk-list-boun...@gnome.org [gtk-list-boun...@gnome.org] On Behalf Of 
l...@xharbour.com.br [l...@xharbour.com.br]
Sent: Monday, September 21, 2009 6:50 AM
To: David Nečas
Cc: gtk-list@gnome.org
Subject: Re: round buttons

Thanks

But i need direct from code, since their place i need an round button  and
others the standart buttons
Regards
Luiz

> On Mon, Sep 21, 2009 at 10:24:45AM -0300, Luiz Rafael Culik Guimaraes
> wrote:
>> Does any one know where i can find an example of rounded borders
>> buttons?
>
> At
>
> http://art.gnome.org/themes/gtk2
>
> Gtk is themable...
>
> Yeti
>
>


___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Why no gtkbutton cell renderer?

2009-10-05 Thread Paul Stuart
Hi There,
 I was surprised to find that there is no gtkcellrenderer implementation for a 
gtkbutton. I understand that one can create a custom cell renderer, but is 
there a reason why this isn't part of the vanilla set of cell renderers? Seems 
like a useful widget to have.

Just curious/hopeful someone can point me to their gtkcellrendererbutton.c code 
:)
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: Recent gtk+ on DirectFB

2010-04-08 Thread Paul Stuart
We use GTK+-2.16.6 with DirectFB. Not saying that's the latest version that 
will work, it's just the last version we've cross compiled. 

From: gtk-list-boun...@gnome.org [gtk-list-boun...@gnome.org] On Behalf Of 
Ersin Akinci [ersin.aki...@gmail.com]
Sent: Thursday, April 08, 2010 9:08 AM
To: Javier Jardón
Cc: gtk-list@gnome.org
Subject: Re: Recent gtk+ on DirectFB

Does anyone know what versions of gtk+ *do* work well with the directfb 
backend?  I e-mailed this list asking for help in compiling gtk+ programs with 
only the directfb backend and never got a response (I did eventually fix it, it 
was a problem with my setup), but I haven't yet tried compiling anything 
complicated like gimp.

-Ersin

2010/4/8 Javier Jardón mailto:jjar...@gnome.org>>
2010/4/8 Vasily Khoruzhick mailto:anars...@gmail.com>>:
> Hi,
>
> As you may know, DirectFB backend of gtk+ in recent versions is heavily
> broken, and I want to know if anyone working on fixing DirectFB backend :)
>
> I was able to fix crash by applying 2 patches (attached) from André Draszik,
> and now simple gtk apps works, but that's not enough for complete gtk-demo -
> it just draws white window.

Are these patches already submitted to GTK+ Bugzilla [1]? If not,
could you attach them to a new bug report?

Thank you.

[1] https://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B
--
Javier Jardón Cabezas
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list



--
What Digital Revolution? -- 
www.whatdigitalrevolution.com
Thinking critically about digital worlds.
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


Clarification on when to unref pixbufs -GtkIconView

2010-05-18 Thread Paul Stuart
Hi,
 I am loading a pixbuf from a file, scaling it and then sticking it into a 
GtkIconView. A snippet of code:

  .
  .
  .
  .
   newPixBuf= gdk_pixbuf_new_from_file ("myImage.png", &err);
   scaledPixBuf = gdk_pixbuf_scale_simple(newPixBuf, ICON_VIEW_W, ICON_VIEW_H, 
GDK_INTERP_BILINEAR);   
 

   if(NULL == err) { // no error
gtk_list_store_append (store, &iter);
gtk_list_store_set(store, &iter, COL_PIXBUF0, scaledPixBuf, -1);
g_object_unref(scaledPixBuf);
g_object_unref(newPixBuf);
  .
  .
  .
  .


Am I correct in calling the g_object_unref after loading it into the 
list_store? 

Sample code I've seen here and there online doesn't unref the pixbufs, but the 
documentation seems to indicate one should. 

Thanks!
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


GtkTreeView Path Ambiguity (Header vs First Row )

2010-06-10 Thread Paul Stuart
Hi,
 When we print out the string name of path in our GtkTreeView, we see "0" for 
the header and "0" for the first row in the model. How does one distinguish 
between the two without resorting to hackish workarounds?
Thanks!
Paul
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: GtkTreeView Path Ambiguity (Header vs First Row )

2010-06-10 Thread Paul Stuart
I'm calling gtk_tree_view_get_cursor 

It turns out that it isn't so much returning a path of "0" for the header, it's 
returning the last valid path the treeview had. For instance, if I am on the 
fourth row, if I move my focus up to the header and call 
gtk_tree_view_get_cursor, path is returned as "4". Not sure why it doesn't set 
path to NULL.


All I'm really after is a way to tell if the focus is in the header or on one 
of the rows, so if there is a clean way to do that I'd love to know.

thanks,
Paul

From: Tadej Borovšak [tadeb...@gmail.com]
Sent: Thursday, June 10, 2010 12:32 PM
To: Paul Stuart
Cc: gtk-list@gnome.org
Subject: Re: GtkTreeView Path Ambiguity (Header vs First Row )

Hi.

>  When we print out the string name of path in our GtkTreeView, we see "0" for 
> the header and "0" for the first row in the model. How does one distinguish 
> between the two without resorting to hackish workarounds?

As far as I know, headers don't have a path associated with it. How do
you event retrieve it?

Tadej

--
Tadej Borovšak
tadeboro.blogspot.com
tadeb...@gmail.com
tadej.borov...@gmail.com
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: GtkTreeView Path Ambiguity (Header vs First Row )

2010-06-10 Thread Paul Stuart
I see, that makes sense.


As far as Why:


This interface is on a product that only has a keyboard -no mouse or 
mouse-like-thing. 

The menu featuring a treeview needs to let the user select any column in the 
header so they can sort the rows but when they are moving through rows, I only 
want them to be able to focus the two leftmost columns (there are five total).  

So, I need to be able to test on key press if they are past the second column 
in a row, and prevent them from moving farther right, but if they are in the 
header, they can move all the way.

I was trying to accomplish this by testing to see if focus is in the header or 
on a row, but I've been stymied at every turn. 

Most of this pain is from having a mouse-less system and very strict 
requirements :)


thanks!
Paul

From: Tadej Borovšak [tadeb...@gmail.com]
Sent: Thursday, June 10, 2010 1:11 PM
To: Paul Stuart
Cc: gtk-list@gnome.org
Subject: Re: GtkTreeView Path Ambiguity (Header vs First Row )

Hi.

> It turns out that it isn't so much returning a path of "0" for the header, 
> it's returning the last valid path the treeview had. For instance, if I am on 
> the fourth row, if I move my focus up to the header and call
> gtk_tree_view_get_cursor, path is returned as "4". Not sure why it doesn't 
> set path to NULL.

Path returned by this function will only be NULL if nothing is
selected in tree view. If you select fourth row and then click the
header, 4th row is still selected.

> All I'm really after is a way to tell if the focus is in the header or on one 
> of the rows, so if there is a clean way to do that I'd love to know.

I'm not sure if this can be done easily. If you describe why you need
to determine this, someone may be able to offer some advice on
alternatives.

Tadej

--
Tadej Borovšak
tadeboro.blogspot.com
tadeb...@gmail.com
tadej.borov...@gmail.com
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list


RE: GtkTreeView Path Ambiguity (Header vs First Row )

2010-06-10 Thread Paul Stuart
Wow #1: That works perfectly, thanks
Wow #2: I can't believe I didn't try that sooner. Wasted s much time!

From: Tadej Borovšak [tadeb...@gmail.com]
Sent: Thursday, June 10, 2010 2:11 PM
To: Paul Stuart
Cc: gtk-list@gnome.org
Subject: Re: GtkTreeView Path Ambiguity (Header vs First Row )

Hello.

> The menu featuring a treeview needs to let the user select any column in the 
> header so they can sort the rows but when they are moving through rows, I 
> only want them to be able to focus the two leftmost columns (there are five 
> total).
>
> So, I need to be able to test on key press if they are past the second column 
> in a row, and prevent them from moving farther right, but if they are in the 
> header, they can move all the way.
>
> I was trying to accomplish this by testing to see if focus is in the header 
> or on a row, but I've been stymied at every turn.

You can test whether tree view has focus. If gtk_widget_has_focus()
returns TRUE, user is moving inside tree view area; if returned value
is FALSE, focus is somewhere else.

Have a look at this minimalistic sample code and play a bit with it.
Maybe method similar to this can solve your troubles?

--
#include 

static gboolean
cb_timeout (GtkWidget *tree)
{
  if (gtk_widget_has_focus (tree))
g_print ("Focus in\n");
  else
g_print ("Focus out\n");

  return TRUE;
}

int
main (int   argc,
  char **argv)
{
  GtkWidget*window,
   *swindow,
   *tree;
  GtkListStore *store;
  gint  i,
j;

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (window, "destroy", gtk_main_quit, NULL);

  swindow = gtk_scrolled_window_new (NULL, NULL);
  gtk_container_add (GTK_CONTAINER (window), swindow);

  store = gtk_list_store_new (5, G_TYPE_STRING,
 G_TYPE_STRING,
 G_TYPE_STRING,
 G_TYPE_STRING,
 G_TYPE_STRING);
  for (i = 1; i < 10; i++)
{
  GtkTreeIter iter;

  gtk_list_store_append (store, &iter);

  for (j = 0; j < 5; j++)
{
  gchar text[] = "( , )";

  text[1] = '0' + j;
  text[3] = '0' + i;

  gtk_list_store_set (store, &iter, j, text, -1);
}
}

  tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
  gtk_container_add (GTK_CONTAINER (swindow), tree);

  for (i = 0; i < 5; i++)
{
  gchar  text[] = "Column  ";
  GtkCellRenderer   *cell = gtk_cell_renderer_text_new();
  GtkTreeViewColumn *col;

  text[7] = '0' + i;
  cell = gtk_cell_renderer_text_new();
  g_object_set (cell, "editable", TRUE, NULL);
  col = gtk_tree_view_column_new_with_attributes (text, cell,
  "text", i,
  NULL);
  gtk_tree_view_column_set_clickable (col, TRUE);

  gtk_tree_view_append_column (GTK_TREE_VIEW (tree), col);
}

  gtk_widget_show_all (window);

  g_timeout_add (330, (GSourceFunc)cb_timeout, tree);

  gtk_main();

  return 0;
}


Tadej

--
Tadej Borovšak
tadeboro.blogspot.com
tadeb...@gmail.com
tadej.borov...@gmail.com
___
gtk-list mailing list
gtk-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-list