Hi Matteo,

There's a few ways to do this, two of which I'll tell you now.
Hopefully, you can change your application to use these functions
instead.

Firstly, there's the g_spawn_ set of APIs designed for this.  I think
that something like g_spawn_command_line_sync() will do exactly what
you want.  Basically, GLib calculates and allocates the space
required.  The documentation mentions nothing about freeing the
allocated strings afterwards but I imagine you will have to free the
standard_output and standard_error parameters with g_free().

Secondly, if the spawned program is meant to run asynchronously in the
background then you'll need to use something like
g_spawn_async_with_pipes().  I don't think that this is what you want
because you were talking about having to allocate the length of the
output.

Thanks,

Michael

On 05/11/2007, Matteo Landi <[EMAIL PROTECTED]> wrote:
> thank you very much, that solved one of my problems.
> here is the second:
> i'm using a pipe to catch the output of a specific command and store it
> as a label in the panel; the problem is that if the array containing the
> output is smaller than the output itself, the line is cut, and the
> applet is show all middle aligned; if the output is bigger, i get the
> label splitted in two lines: the first one containing the entire output,
> and the second one is empty.
> How could i solve this? maybe with dynamic allocation of memory, but in
> order to know the output width size, i gotta insert a while that
> overload the applet isn't it?
> tnx in advance for the help
>
> M@
>
>
> On Sun, 2007-11-04 at 13:33 +1100, Michael Lamothe wrote:
> > Hi Matteo,
> >
> > Look at g_timeout_add() or the new gdk_threads_add_timeout().
> >
> > Thanks,
> >
> > Michael
> >
> >
> > On 04/11/2007, Matteo Landi <[EMAIL PROTECTED]> wrote:
> > > hi all
> > > i'm a complete newbie in developing with gtk, but yesterday i had an
> > > idea about develope a gnome panel which could substitute conky..
> > > In fact i'm in need of a panel that simply display the output of a bash
> > > script..
> > > well, after have googled a bit, i found a guide for implementing gnome
> > > applet and here is the result
> > >
> > > #include <string.h>
> > > #include <panel-applet.h>
> > > #include <gtk/gtklabel.h>
> > > #include <stdio.h>
> > >
> > > static gboolean on_button_press (GtkWidget *event_box, GdkEventButton
> > > *event, GtkWidget* label){
> > >         if (event->button != 1)
> > >                 return FALSE;
> > >         else {
> > >                 FILE* fp;
> > >                 char line[160];
> > >                 fp = popen("~/scripts/allin1", "r");
> > >                 fgets( line, sizeof line, fp);
> > >                 pclose(fp);
> > >                 gtk_label_set_text (label,(const char*) line);
> > >         }
> > >         return TRUE;
> > > }
> > >
> > > static gboolean my_applet_fill (PanelApplet *applet, const gchar *iid,
> > > gpointer data){
> > >         FILE* fp;
> > >         int pid;
> > >         char line[160];
> > >         GtkWidget *label;
> > >
> > >         fp = popen("~/scripts/allin1", "r");
> > >         fgets( line, sizeof line, fp);
> > >         pclose(fp);
> > >
> > >         label = gtk_label_new (line);
> > >         gtk_container_add (GTK_CONTAINER (applet), label);
> > >
> > >         g_signal_connect (G_OBJECT(applet), "button_press_event", 
> > > G_CALLBACK
> > > (on_button_press), label);
> > >
> > >         gtk_widget_show_all (GTK_WIDGET (applet));
> > >
> > >
> > >         return TRUE;
> > > }
> > >
> > > PANEL_APPLET_BONOBO_FACTORY ("OAFIID:my_applet_Factory",
> > > PANEL_TYPE_APPLET, "Conky Porting", "0", my_applet_fill, NULL);
> > >
> > > what i'm asking for is how could i refresh the label of the applet after
> > > a fixed period of time... (now the applets refresh when mouse-clicked)
> > > tnx in advance
> > >
> > > M@
> > >
> > > _______________________________________________
> > > gtk-list mailing list
> > > [EMAIL PROTECTED]
> > > http://mail.gnome.org/mailman/listinfo/gtk-list
> > >
>
>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to