Commit 7ff1163c authored by Jiri (George) Lebl's avatar Jiri (George) Lebl Committed by George Lebl

use fork again to start applets so that we don't swallow stdout from the

Thu May 14 03:28:25 1998  George Lebl  <jirka@5z.com>

        * main.c: use fork again to start applets so that we don't
          swallow stdout from the applet, this makes the posibilities
          of param stuff less viable, but we still support a single
          applet cmdline parameter

        * gnome-panel.idl,main.c,panel.[ch],applet-widget.[ch],
          mico-glue.(cc|h),applet-lib.(cc|h): dorestart varaible,
          (stored in AppletInfo's ->data field (slightly hackish:))
          which makes it possible for multiple type applets, all
          kinds of weird queue stuff added to make this work, but
          NO testing whatsoever, except that it doesn't seem to
          break the older stuff

it is not tested, it also includes one minor "Weird Hack(tm)", since
there is no way to know from a dentry, if the applet can support multiple
applets, it is figured out by the name of the executable, if the
executable ends with multi_applet it will be treated as an applet
capable of handeling multiple widgets and/or applet types
parent f9ad1b3a
Thu May 14 03:28:25 1998 George Lebl <jirka@5z.com>
* main.c: use fork again to start applets so that we don't
swallow stdout from the applet, this makes the posibilities
of param stuff less viable, but we still support a single
applet cmdline parameter
* gnome-panel.idl,main.c,panel.[ch],applet-widget.[ch],
mico-glue.(cc|h),applet-lib.(cc|h): dorestart varaible,
(stored in AppletInfo's ->data field (slightly hackish:))
which makes it possible for multiple type applets, all
kinds of weird queue stuff added to make this work, but
NO testing whatsoever, except that it doesn't seem to
break the older stuff
Tue May 12 01:29:19 1998 George Lebl <jirka@5z.com>
* gnome-panel.idl,mico-glue.cc,applet-lib.cc:
......
Thu May 14 03:28:25 1998 George Lebl <jirka@5z.com>
* main.c: use fork again to start applets so that we don't
swallow stdout from the applet, this makes the posibilities
of param stuff less viable, but we still support a single
applet cmdline parameter
* gnome-panel.idl,main.c,panel.[ch],applet-widget.[ch],
mico-glue.(cc|h),applet-lib.(cc|h): dorestart varaible,
(stored in AppletInfo's ->data field (slightly hackish:))
which makes it possible for multiple type applets, all
kinds of weird queue stuff added to make this work, but
NO testing whatsoever, except that it doesn't seem to
break the older stuff
Tue May 12 01:29:19 1998 George Lebl <jirka@5z.com>
* gnome-panel.idl,mico-glue.cc,applet-lib.cc:
......
......@@ -301,6 +301,7 @@ bind_top_applet_events(GtkWidget *widget, int applet_id)
char *
gnome_panel_applet_request_id (char *path,
char *param,
int dorestart,
int *applet_id,
char **cfgpath,
char **globcfgpath,
......@@ -322,6 +323,7 @@ gnome_panel_applet_request_id (char *path,
*applet_id = panel_client->applet_request_id(cookie,
path,
param,
dorestart,
cfg,
globcfg,
wid);
......
......@@ -15,9 +15,9 @@ char *get_full_path(char *argv0);
the current session stuff (not in this file, but implemented in any
applet)*/
char *gnome_panel_applet_request_id (char *path, char *param, int *applet_id,
char **cfgpath, char **globcfgpath,
guint32 *winid);
char *gnome_panel_applet_request_id (char *path, char *param, int dorestart,
int *applet_id, char **cfgpath,
char **globcfgpath, guint32 *winid);
char *gnome_panel_applet_register (GtkWidget *widget, int applet_id);
char *gnome_panel_applet_abort_id (int applet_id);
char *gnome_panel_applet_remove_from_panel (int applet_id);
......
......@@ -16,6 +16,7 @@ typedef gint (*AppletWidgetSaveSignal) (GtkObject * object,
gpointer data);
static GList *applet_widgets=NULL;
static gint applet_count=0;
static GtkPlugClass *parent_class;
......@@ -123,6 +124,7 @@ static void
applet_widget_init (AppletWidget *applet_widget)
{
applet_widget->applet_id = -1;
applet_widget->multi = FALSE;
}
static gint
......@@ -138,6 +140,8 @@ applet_widget_destroy(GtkWidget *w, gpointer data)
gnome_panel_applet_cleanup(applet->applet_id);
if(GTK_BIN(w)->child == NULL)
gnome_panel_applet_abort_id(applet->applet_id);
applet_count--;
return FALSE;
}
......@@ -158,14 +162,8 @@ applet_widget_register_callback(AppletWidget *applet,
menutext,func,data);
}
GtkWidget *
applet_widget_new(gchar *argv0)
{
return applet_widget_new_with_param(argv0,"");
}
GtkWidget *
applet_widget_new_with_param(gchar *argv0, gchar *param)
static GtkWidget *
_applet_widget_new_with_param(gchar *argv0, gchar *param, gint multi)
{
AppletWidget *applet;
char *result;
......@@ -185,7 +183,8 @@ applet_widget_new_with_param(gchar *argv0, gchar *param)
if (!gnome_panel_applet_init_corba())
g_error("Could not communicate with the panel\n");
result = gnome_panel_applet_request_id(myinvoc, param, &applet_id,
result = gnome_panel_applet_request_id(myinvoc, param,multi?FALSE:TRUE,
&applet_id,
&cfgpath, &globcfgpath,
&winid);
if (result)
......@@ -201,6 +200,8 @@ applet_widget_new_with_param(gchar *argv0, gchar *param)
applet->applet_id = applet_id;
applet->cfgpath = cfgpath;
applet->globcfgpath = globcfgpath;
applet->multi = multi;
gtk_signal_connect(GTK_OBJECT(applet),"destroy",
GTK_SIGNAL_FUNC(applet_widget_destroy),
......@@ -208,9 +209,33 @@ applet_widget_new_with_param(gchar *argv0, gchar *param)
applet_widgets = g_list_prepend(applet_widgets,applet);
applet_count++;
return GTK_WIDGET(applet);
}
GtkWidget *
applet_widget_new(gchar *argv0)
{
return _applet_widget_new_with_param(argv0,"",FALSE);
}
GtkWidget *
applet_widget_new_with_param(gchar *argv0, gchar *param)
{
return _applet_widget_new_with_param(argv0,param,FALSE);
}
GtkWidget *
applet_widget_new_multi_with_param(gchar *argv0, gchar *param)
{
return _applet_widget_new_with_param(argv0,param,TRUE);
}
gint
applet_widget_get_applet_count()
{
return applet_count;
}
void
applet_widget_add(AppletWidget *applet, GtkWidget *widget)
{
......
......@@ -36,6 +36,8 @@ struct _AppletWidget
/* use these as prefixes when loading saving data */
gchar *cfgpath;
gchar *globcfgpath;
gint multi;
};
struct _AppletWidgetClass
......@@ -56,11 +58,28 @@ struct _AppletWidgetClass
gint (* session_save) (AppletWidget *applet,
gchar *cfgpath,
gchar *globcfgpath);
/*bind this signal if you want to manage multiple applets, the
panel will signal you the next applet to start with the same
pathname instead of launching the executable, you have to create
your widget with _new_multi_ in order to use this*/
gint (* start_new_applet) (AppletWidget *applet,
gchar *param);
};
guint applet_widget_get_type (void);
/*start a normal applet*/
GtkWidget* applet_widget_new (gchar *argv0);
GtkWidget* applet_widget_new_with_param (gchar *argv0, gchar *param);
/*start one but add a parameter that the panel should use next time
to start us*/
GtkWidget* applet_widget_new_with_param (gchar *argv0,
gchar *param);
/*start an applet which handeles multiple "applet widgets"*/
GtkWidget* applet_widget_new_multi_with_param (gchar *argv0,
gchar *param);
/*set tooltip over the applet, NULL to remove a tooltip*/
void applet_widget_set_tooltip (AppletWidget *applet,
......@@ -89,6 +108,9 @@ void applet_widget_register_callback (AppletWidget *applet,
/* get the applet widget with the id of applet_id */
AppletWidget* applet_widget_get_by_id (gint applet_id);
/*get thenumber of applets*/
gint applet_widget_get_applet_count (void);
/* use this as gtk_main in applets */
void applet_widget_gtk_main (void);
......
......@@ -8,6 +8,7 @@ module GNOME {
short applet_request_id(in string cookie,
in string path,
in string param,
in short dorestart,
out string cfgpath,
out string globcfgpath,
out unsigned long wid);
......
......@@ -51,12 +51,13 @@ GlobalConfig global_config = {
typedef struct _LoadApplet LoadApplet;
struct _LoadApplet {
char *id_str;
char *path;
char *params;
int pos;
int panel;
char *cfgpath;
gchar *id_str;
gchar *path;
gchar *params;
gint dorestart;
gint pos;
gint panel;
gchar *cfgpath;
};
typedef struct _AppletChild AppletChild;
......@@ -72,7 +73,7 @@ struct _AppletChild {
GList *load_queue=NULL;
/* True if parsing determined that all the work is already done. */
int just_exit = 0;
gint just_exit = 0;
/* The security cookie */
char *cookie;
......@@ -108,8 +109,9 @@ static struct argp parser =
/*needed for drawers*/
static void panel_setup(PanelWidget *panel);
void
queue_load_applet(char *id_str, char *path, char *params, int pos, int panel, char *cfgpath)
static void
queue_load_applet(gchar *id_str, gchar *path, gchar *params, gint dorestart,
gint pos, gint panel, gchar *cfgpath)
{
LoadApplet *l;
l = g_new(LoadApplet,1);
......@@ -118,6 +120,7 @@ queue_load_applet(char *id_str, char *path, char *params, int pos, int panel, ch
if(path) l->path=g_strdup(path);
else l->path = NULL;
l->params=g_strdup(params);
l->dorestart=dorestart;
l->pos=pos;
l->panel=panel;
l->cfgpath=g_strdup(cfgpath);
......@@ -140,24 +143,30 @@ monitor_drawers(GtkWidget *w, gpointer data)
void
load_applet(char *id_str, char *path, char *params, int pos, int panel,
char *cfgpath)
load_applet(gchar *id_str, gchar *path, gchar *params, gint dorestart,
gint pos, gint panel, gchar *cfgpath)
{
if(strcmp(id_str,EXTERN_ID) == 0) {
gchar *fullpath;
char *param;
/*start nothing, applet is taking care of everything*/
if(path == NULL ||
path[0] == '\0')
return;
if(!params)
param = "";
else
param = params;
/*VERY UGLY compatibility hack for the old launcher applet*/
if(strcmp(path,"#panel.application.launcher")==0) {
gchar *p;
p = g_copy_strings(cfgpath,"path=",NULL);
fullpath = gnome_config_get_string(p);
g_free(p);
load_applet(LAUNCHER_ID,NULL,fullpath,pos,panel,
load_applet(LAUNCHER_ID,NULL,fullpath,TRUE,pos,panel,
cfgpath);
g_free(fullpath);
return;
......@@ -172,34 +181,41 @@ load_applet(char *id_str, char *path, char *params, int pos, int panel,
fullpath = g_strdup(path);
if(reserve_applet_spot (id_str, fullpath,params, panel, pos,
cfgpath, APPLET_EXTERN_PENDING)==0) {
if(reserve_applet_spot (id_str, fullpath,params, dorestart,
panel, pos, cfgpath,
APPLET_EXTERN_PENDING)==0) {
g_free(fullpath);
return;
}
/*'#' marks an applet that will take care of starting
itself but wants us to reserve a spot for it*/
if(!dorestart) {
if(mulapp_is_in_queue(fullpath)) {
mulapp_load_or_add_to_queue(fullpath,param);
g_free(fullpath);
return;
} else {
mulapp_add_to_queue(fullpath);
}
}
if(path[0]!='#') {
/*this applet is dumb and wants us to start it :)*/
AppletChild *child;
FILE *fp;
char buf[256];
gint i;
char *param;
child = g_new(AppletChild,1);
if(!params)
param = "";
else
param = params;
g_snprintf(buf,256,"(true;%s %s & echo $! )",
fullpath,param);
fp = popen(buf,"r");
fscanf(fp,"%d",&child->pid);
fclose(fp);
child->pid = fork();
if(child->pid < 0)
g_error("Can't fork!");
if(child->pid == 0) {
if(strlen(param)>0)
execl(fullpath,fullpath,param,NULL);
else
execl(fullpath,fullpath,NULL);
g_error("Can't execl!");
}
printf("started applet, pid: %d\n",child->pid);
......@@ -314,8 +330,8 @@ load_queued_applets(void)
for(list = load_queue;list!=NULL;list=g_list_next(list)) {
LoadApplet *l=list->data;
load_applet(l->id_str,l->path,l->params,l->pos,l->panel,
l->cfgpath);
load_applet(l->id_str,l->path,l->params,l->dorestart,
l->pos,l->panel,l->cfgpath);
g_free(l->id_str);
if(l->path) g_free(l->path);
g_free(l->params);
......@@ -340,9 +356,9 @@ add_forbidden_to_panels(void)
static void
load_default_applets(void)
{
queue_load_applet(MENU_ID, NULL, ".", PANEL_UNKNOWN_APPLET_POSITION,
0,NULL);
queue_load_applet(EXTERN_ID, "clock_applet", "",
queue_load_applet(MENU_ID, NULL, ".", TRUE,
PANEL_UNKNOWN_APPLET_POSITION, 0,NULL);
queue_load_applet(EXTERN_ID, "clock_applet", "", TRUE,
PANEL_UNKNOWN_APPLET_POSITION,0,NULL);
}
......@@ -355,6 +371,7 @@ init_user_applets(void)
int pos=0,panel;
char buf[256];
int count,num;
gint dorestart;
g_snprintf(buf,256,"%sConfig/applet_count=0",old_panel_cfg_path);
count=gnome_config_get_int(buf);
......@@ -369,9 +386,11 @@ init_user_applets(void)
if(strcmp(applet_name,"Extern")==0) {
applet_path = gnome_config_get_string("parameters=");
applet_params = gnome_config_get_string("parameters2=");
dorestart = gnome_config_get_bool("dorestart=true");
} else {
applet_path = NULL;
applet_params = gnome_config_get_string("parameters=");
dorestart = TRUE;
}
g_snprintf(buf,256,"position=%d",
......@@ -383,7 +402,7 @@ init_user_applets(void)
loads*/
g_snprintf(buf,256,"%sApplet_%d/",old_panel_cfg_path,num);
queue_load_applet(applet_name, applet_path, applet_params,
pos, panel, buf);
dorestart, pos, panel, buf);
gnome_config_pop_prefix();
......
......@@ -140,9 +140,10 @@ free_string (GtkWidget *widget, void *data)
}
static gint
add_to_panel (char *applet, char *path, char *arg)
add_to_panel (char *applet, char *path, char *arg, gint dorestart)
{
load_applet(applet,path,arg,PANEL_UNKNOWN_APPLET_POSITION,0,NULL);
load_applet(applet,path,arg,dorestart,
PANEL_UNKNOWN_APPLET_POSITION,0,NULL);
return TRUE;
}
......@@ -151,13 +152,13 @@ add_app_to_panel (GtkWidget *widget, void *data)
{
GnomeDesktopEntry *ii = data;
return add_to_panel (LAUNCHER_ID, NULL, ii->location);
return add_to_panel (LAUNCHER_ID, NULL, ii->location,TRUE);
}
static gint
add_dir_to_panel (GtkWidget *widget, void *data)
{
return add_to_panel (MENU_ID, NULL, data);
return add_to_panel (MENU_ID, NULL, data,TRUE);
}
......@@ -190,11 +191,20 @@ add_applet (GtkWidget *w, gpointer data)
char *path;
char *param;
gint r;
gint dorestart;
/*parse out the path and arguments with this really REALLY dumb*/
get_path_param(ii->exec,&path,&param);
r = add_to_panel(EXTERN_ID,path,param);
/*slightly ugly but should work fine, if the applet executable ends
with multi_applet, we start this as a dorestart==FALSE type applet,
which handeles multiple applets or even applet types*/
if(strcmp(path+strlen(path)-12,"multi_applet")==0)
dorestart = FALSE;
else
dorestart = TRUE;
r = add_to_panel(EXTERN_ID,path,param,dorestart);
g_free(path);
g_free(param);
return r;
......@@ -418,7 +428,7 @@ panel_configure (GtkWidget *widget, void *data)
static void
add_applet_to_panel_data(GtkWidget *widget, gpointer data)
{
add_to_panel((char *)data, NULL, NULL);
add_to_panel((char *)data, NULL, NULL,TRUE);
}
static gint
......@@ -428,7 +438,8 @@ act_really_add_swallow(GtkWidget *w, gpointer data)
GtkWidget *d = gtk_object_get_user_data(GTK_OBJECT(entry));
gtk_widget_hide(d);
add_to_panel(SWALLOW_ID, NULL, gtk_entry_get_text(GTK_ENTRY(entry)));
add_to_panel(SWALLOW_ID, NULL, gtk_entry_get_text(GTK_ENTRY(entry)),
TRUE);
return TRUE;
}
......@@ -441,7 +452,7 @@ really_add_swallow(GtkWidget *d,gint button, gpointer data)
gtk_widget_hide(d);
if(button == 0)
add_to_panel(SWALLOW_ID, NULL,
gtk_entry_get_text(GTK_ENTRY(entry)));
gtk_entry_get_text(GTK_ENTRY(entry)),TRUE);
return TRUE;
}
......
......@@ -22,6 +22,7 @@ public:
CORBA::Short applet_request_id (const char *ccookie,
const char *path,
const char *param,
CORBA::Short dorestart,
char *&cfgpath,
char *&globcfgpath,
CORBA::ULong &wid) {
......@@ -31,7 +32,8 @@ public:
guint32 winid;
CHECK_COOKIE_V (0);
applet_id = ::applet_request_id (path,param,&cfg,&globcfg,&winid);
applet_id = ::applet_request_id (path,param,dorestart,
&cfg,&globcfg,&winid);
wid = winid;
if(cfg) {
......@@ -202,3 +204,14 @@ send_applet_do_callback (const char *ior, int applet_id, char *callback_name)
/* Now, use corba to invoke the routine in the panel */
applet->do_callback(cookie,applet_id, callback_name);
}
void
send_applet_start_new_applet (const char *ior, char *param)
{
/* Use the ior that was sent to us to get an Applet CORBA object */
CORBA::Object_var obj = orb_ptr->string_to_object (ior);
GNOME::Applet_var applet = GNOME::Applet::_narrow (obj);
/* Now, use corba to invoke the routine in the panel */
applet->start_new_applet(cookie,param);
}
......@@ -14,6 +14,7 @@ int send_applet_session_save (const char *ior, int id,
const char *globcfgpath);
void send_applet_change_orient (const char *ior, int id, int orient);
void send_applet_do_callback (const char *ior, int id, char *callback_name);
void send_applet_start_new_applet (const char *ior, char *param);
END_GNOME_DECLS
......
......@@ -45,6 +45,83 @@ extern char *old_panel_cfg_path;
extern gint main_menu_count;
/*multiple applet load queue*/
typedef struct _MultiLoadQueue MultiLoadQueue;
struct _MultiLoadQueue {
gchar *path;
gchar *ior;
GList *params;
};
static GList *multiple_applet_load_queue=NULL;
gint
mulapp_is_in_queue(gchar *path)
{
GList *list;
for(list=multiple_applet_load_queue;list!=NULL;list=g_list_next(list))
if(strcmp(((MultiLoadQueue *)list->data)->path,path)==0)
return TRUE;
return FALSE;
}
/*if the parent is already in queue, load the applet or add the param,
into a queue*/
void
mulapp_load_or_add_to_queue(gchar *path,gchar *param)
{
GList *list;
for(list=multiple_applet_load_queue;list!=NULL;list=g_list_next(list)){
MultiLoadQueue *mq = list->data;
if(strcmp(mq->path,path)==0) {
if(mq->ior)
send_applet_start_new_applet(mq->ior,param);
else
mq->params = g_list_prepend(mq->params,
g_strdup(param));
return;
}
}
}
void
mulapp_add_to_queue(gchar *path)
{
MultiLoadQueue *mq;
mq = g_new(MultiLoadQueue,1);
mq->path = g_strdup(path);
mq->ior = NULL;
mq->params = NULL;
multiple_applet_load_queue = g_list_prepend(multiple_applet_load_queue,
mq);
}
static void
mulapp_add_ior_and_free_queue(gchar *path, gchar *ior)
{
GList *list;
for(list=multiple_applet_load_queue;list!=NULL;list=g_list_next(list)){
MultiLoadQueue *mq = list->data;
if(strcmp(mq->path,path)==0) {
GList *li;
if(mq->ior)
g_warning("What? An IOR existed before, this "
"is most likely a bug!");
mq->ior = g_strdup(ior);
if(!mq->params)
return;
for(li=mq->params;li!=NULL;li=g_list_next(li)) {
gchar *param = li->data;
send_applet_start_new_applet(mq->ior,param);
g_free(param);
}
g_list_free(mq->params);
mq->params = NULL;
return;
}
}
}
void
apply_global_config(void)
{
......@@ -141,6 +218,12 @@ save_applet_configuration(AppletInfo *info, gint *num)
fullpath = g_copy_strings(path,"parameters2",NULL);
gnome_config_set_string(fullpath, info->params);
g_free(fullpath);
/*we use the data field to store if we should or
should not restart the applet*/
fullpath = g_copy_strings(path,"dorestart",NULL);
gnome_config_set_bool(fullpath, info->data!=0);
g_free(fullpath);
} else
(*num)--;
} else {
......@@ -778,7 +861,8 @@ applet_add_callback(gint applet_id, char *callback_name, char *menuitem_text)
}
int
applet_request_id (const char *path, const char *param, char **cfgpath,
applet_request_id (const char *path, const char *param,
gint dorestart, char **cfgpath,
char **globcfgpath, guint32 * winid)
{
AppletInfo *info;
......@@ -799,8 +883,8 @@ applet_request_id (const char *path, const char *param, char **cfgpath,
}
}
*winid = reserve_applet_spot (EXTERN_ID, path, param, 0, 0, NULL,
APPLET_EXTERN_RESERVED);
*winid = reserve_applet_spot (EXTERN_ID, path, param, dorestart, 0, 0,
NULL, APPLET_EXTERN_RESERVED);
if(*winid == 0) {
*globcfgpath = NULL;
*cfgpath = NULL;
......@@ -837,13 +921,16 @@ applet_register (const char * ior, int applet_id)
info->id_str = g_strdup(ior);
orientation_change(applet_id,panel);
mulapp_add_ior_and_free_queue(info->path, info->id_str);
}
/*note that type should be APPLET_EXTERN_RESERVED or APPLET_EXTERN_PENDING
only*/
guint32
reserve_applet_spot (const char *id_str, const char *path, const char *param,
int panel, int pos, char *cfgpath, AppletType type)
gint dorestart, int panel, int pos, char *cfgpath,
AppletType type)
{
GtkWidget *socket;
......@@ -855,7 +942,8 @@ reserve_applet_spot (const char *id_str, const char *path, const char *param,
/*we save the ior in the id field of the appletinfo and the
path in the path field*/
if(!register_toy(socket,NULL,NULL,g_strdup(id_str),g_strdup(path),
if(!register_toy(socket,NULL,(gpointer)(dorestart?1L:0L),
g_strdup(id_str),g_strdup(path),
g_strdup(param), pos,panel,cfgpath, type)) {
g_warning("Couldn't add applet");
return 0;
......@@ -876,7 +964,7 @@ panel_add_main_menu(GtkWidget *w, gpointer data)
PanelWidget *panel = data;
gint panel_num = find_panel(panel);
load_applet(MENU_ID,NULL,NULL,PANEL_UNKNOWN_APPLET_POSITION,
load_applet(MENU_ID,NULL,NULL,TRUE,PANEL_UNKNOWN_APPLET_POSITION,
panel_num!=-1?panel_num:0,NULL);
return TRUE;
......
......@@ -113,12 +113,13 @@ void apply_global_config(void);
void panel_clean_applet(gint applet_id);
/*stuff for corba*/
int applet_request_id (const char *path, const char *param, char **cfgpath,
int applet_request_id (const char *path, const char *param,
gint dorestart, char **cfgpath,
char **globcfgpath, guint32 *winid);
void applet_register (const char * ior, int applet_id);
void applet_request_glob_cfg (char **globcfgpath);
guint32 reserve_applet_spot (const char *id_str, const char *path,
const char *param,
const char *param, gint dorestart,
int panel, int pos, char *cfgpath,
AppletType type);
void applet_abort_id(gint applet_id);
......@@ -133,11 +134,22 @@ void applet_add_callback(gint applet_id,
void applet_set_tooltip(gint applet_id, const char *tooltip);
void applet_remove_from_panel(gint applet_id);
/*multi applet que functions*/
gint mulapp_is_in_queue(gchar *path);
/*if the parent is already in queue, load the applet or add the param,
into a queue*/
void mulapp_load_or_add_to_queue(gchar *path,gchar *param);
void mulapp_add_to_queue(gchar *path);
extern char *cookie;
/*this is in main.c*/
void load_applet(char *id, char *path, char *params, int pos, int panel,
char *cfgpath);
void load_applet(char *id, char *path, char *params, int dorestart,
int pos, int panel, char *cfgpath);
void orientation_change(gint applet_id, PanelWidget *panel);
#define get_applet_info(applet_id) \
......
......@@ -8,6 +8,7 @@ module GNOME {
short applet_request_id(in string cookie,
in string path,
in string param,
in short dorestart,
out string cfgpath,
out string globcfgpath,
out unsigned long wid);
......
......@@ -8,6 +8,7 @@ module GNOME {
short applet_request_id(in string cookie,
in string path,
in string param,
in short dorestart,
out string cfgpath,
out string globcfgpath,
out unsigned long wid);
......