Commit 910d0184 authored by Jiri (George) Lebl's avatar Jiri (George) Lebl Committed by George Lebl

port to corba, acts like mc should, needs to be started after panel starts

Sun Mar 15 23:53:47 1998  George Lebl  <jirka@5z.com>

        * launcher.c: port to corba, acts like mc should,
          needs to be started after panel starts manually
          and killed after panel stops manually.

        * gnome-panel.idl: added unimplemented applet_abort_id
          call and implemented applet_request_glob_cfg

        * mico-glue.cc: synced with gnome-panel.idl

        * applet-lib.cc: fixes, new methods above

        * launcher-lib.(cc|h): implemented what needs to be
          done corba-wise with the launcher
parent 7b04b2e3
Sun Mar 15 23:53:47 1998 George Lebl <jirka@5z.com>
* launcher.c: port to corba, acts like mc should,
needs to be started after panel starts manually
and killed after panel stops manually.
* gnome-panel.idl: added unimplemented applet_abort_id
call and implemented applet_request_glob_cfg
* mico-glue.cc: synced with gnome-panel.idl
* applet-lib.cc: fixes, new methods above
* launcher-lib.(cc|h): implemented what needs to be
done corba-wise with the launcher
Sun Mar 15 17:49:33 1998 George Lebl <jirka@5z.com>
* mico-glue.(cc|h): added a way to call new Launchers
......
Sun Mar 15 23:53:47 1998 George Lebl <jirka@5z.com>
* launcher.c: port to corba, acts like mc should,
needs to be started after panel starts manually
and killed after panel stops manually.
* gnome-panel.idl: added unimplemented applet_abort_id
call and implemented applet_request_glob_cfg
* mico-glue.cc: synced with gnome-panel.idl
* applet-lib.cc: fixes, new methods above
* launcher-lib.(cc|h): implemented what needs to be
done corba-wise with the launcher
Sun Mar 15 17:49:33 1998 George Lebl <jirka@5z.com>
* mico-glue.(cc|h): added a way to call new Launchers
......
......@@ -20,9 +20,8 @@ INCLUDES = -I. -I$(srcdir) \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-I$(includedir) $(GNOME_INCLUDEDIR)
bin_PROGRAMS = panel clock_applet logout_applet
bin_PROGRAMS = panel clock_applet logout_applet launcher_applet
# launcher_applet logout_applet
CORBA_SOURCES = \
gnome-panel.cc \
gnome-panel.h
......@@ -76,16 +75,18 @@ panel_SOURCES = \
panel_LDADD = $(GNOME_LIBDIR) $(MICO_LIBS) -lXt $(GNOMEUI_LIBS) $(INTLLIBS)
## FIXME: move clock applet into clock
## FIXME: move clock applet into extra_applets
clock_applet_SOURCES = \
clock.c
clock_applet_LDADD = libpanel_applet.la $(GNOME_LIBDIR) $(MICO_LIBS) -lXt $(GNOMEUI_LIBS) $(INTLLIBS)
#launcher_applet_SOURCES = \
3 launcher.c
launcher_applet_SOURCES = \
launcher-lib.cc \
launcher-lib.h \
launcher.c
#launcher_applet_LDADD = libpanel_applet.la $(GNOME_LIBDIR) $(MICO_LIBS) -lXt $(GNOMEUI_LIBS) $(INTLLIBS)
launcher_applet_LDADD = libpanel_applet.la $(GNOME_LIBDIR) $(MICO_LIBS) -lXt $(GNOMEUI_LIBS) $(INTLLIBS)
logout_applet_SOURCES = \
logout.c
......
......@@ -28,7 +28,7 @@ GHashTable *applet_callbacks=NULL;
#define APPLET_WIDGET_KEY "applet_widget_key"
CORBA::ORB_ptr orb_ptr;
static CORBA::BOA_ptr boa_ptr;
CORBA::BOA_ptr boa_ptr;
/*every applet must implement these*/
BEGIN_GNOME_DECLS
......@@ -247,8 +247,8 @@ gnome_panel_applet_request_id (GtkWidget *widget,
{
char *result;
char *ior;
char *cfgpathback = NULL;
char *globcfgpathback = NULL;
char *cfg = NULL;
char *globcfg = NULL;
/* Create an applet object, I do pass the widget parameter to the
* constructor object to have a way of sort out to which object
......@@ -264,22 +264,21 @@ gnome_panel_applet_request_id (GtkWidget *widget,
ior = orb_ptr->object_to_string (applet);
/*reserve a spot and get an id for this applet*/
*id = panel_client->applet_request_id(ior,path,cfgpathback,
globcfgpathback);
*id = panel_client->applet_request_id(ior,path,cfg,globcfg);
if(cfgpath==NULL) {
CORBA::string_free(cfgpathback);
} else if(cfgpathback != NULL) {
*cfgpath = g_strdup(cfgpathback);
CORBA::string_free(cfgpathback);
CORBA::string_free(cfg);
} else if(cfg != NULL) {
*cfgpath = g_strdup(cfg);
CORBA::string_free(cfg);
} else {
*cfgpath = NULL;
}
if(globcfgpath==NULL) {
CORBA::string_free(globcfgpathback);
} else if(cfgpathback != NULL) {
*globcfgpath = g_strdup(globcfgpathback);
CORBA::string_free(globcfgpathback);
CORBA::string_free(globcfg);
} else if(globcfg != NULL) {
*globcfgpath = g_strdup(globcfg);
CORBA::string_free(globcfg);
} else {
*globcfgpath = NULL;
}
......@@ -287,6 +286,36 @@ gnome_panel_applet_request_id (GtkWidget *widget,
return 0;
}
char *
gnome_panel_applet_abort_id (int id)
{
panel_client->applet_abort_id(id);
return 0;
}
/*id will return a unique id for this applet for the applet to identify
itself as*/
char *
gnome_panel_applet_request_glob_cfg (char **globcfgpath)
{
char *globcfg = NULL;
g_return_val_if_fail(globcfgpath!=NULL,0);
panel_client->applet_request_glob_cfg(globcfg);
if(globcfg!= NULL) {
*globcfgpath = g_strdup(globcfg);
CORBA::string_free(globcfg);
} else {
*globcfgpath = NULL;
}
return 0;
}
/*id will return a unique id for this applet for the applet to identify
itself as*/
char *
......
......@@ -8,6 +8,8 @@ typedef void (*AppletCallbackFunc)(int id, gpointer data);
char *gnome_panel_applet_request_id (GtkWidget *widget, char *path, int *id,
char **cfgpath, char **globcfgpath);
char *gnome_panel_applet_abort_id (int id);
char *gnome_panel_applet_request_glob_cfg (char **globcfgpath);
char *gnome_panel_prepare_and_transfer (GtkWidget *widget, int id);
char *gnome_panel_quit (void);
int gnome_panel_applet_init_corba (void);
......
......@@ -7,6 +7,8 @@ module GNOME {
in string path,
out string cfgpath,
out string globcfgpath);
void applet_abort_id(in short id);
void applet_request_glob_cfg(out string globcfgpath);
void applet_remove_from_panel (in short id);
short applet_get_panel (in short id);
short applet_get_pos (in short id);
......
......@@ -10,12 +10,10 @@
#include "panel-widget.h"
#include "mico-parse.h"
GNOME::Panel_var panel_client;
extern CORBA::ORB_ptr orb_ptr;
extern CORBA::BOA_ptr boa_ptr;
CORBA::ORB_ptr orb_ptr;
static CORBA::BOA_ptr boa_ptr;
/*every applet must implement these*/
/*every launcher must implement these*/
BEGIN_GNOME_DECLS
void start_new_launcher(const char *path);
END_GNOME_DECLS
......@@ -23,6 +21,7 @@ END_GNOME_DECLS
class Launcher_impl : virtual public GNOME::Launcher_skel {
public:
void start_new_launcher (const char *path) {
puts("START_NEW_LAUNCHER");
::start_new_launcher(path);
}
};
......@@ -30,12 +29,10 @@ public:
void
launcher_corba_gtk_main (char *str)
{
GNOME::Panel_ptr acc = new Launcher_impl ();
GNOME::Launcher_ptr acc = new Launcher_impl ();
char hostname [4096];
char *name;
panel_initialize_corba (&orb_ptr, &boa_ptr);
gethostname (hostname, sizeof (hostname));
if (hostname [0] == 0)
strcpy (hostname, "unknown-host");
......@@ -47,7 +44,7 @@ launcher_corba_gtk_main (char *str)
gnome_config_sync ();
g_free (name);
orb_ptr->dispatcher (new GtkDispatcher ());
//orb_ptr->dispatcher (new GtkDispatcher ());
boa_ptr->impl_is_ready (CORBA::ImplementationDef::_nil());
}
......@@ -2,7 +2,7 @@
#define LAUNCHER_LIB_H
BEGIN_GNOME_DECLS
void launcher_corba_gtk_main (char *str);
END_GNOME_DECLS
#endif
......@@ -16,18 +16,23 @@
#include <string.h>
#include "gnome.h"
#include "panel.h"
#include "applet-lib.h"
#include "applet-widget.h"
#include "launcher-lib.h"
#define CONFIG_TAG "Launcher"
#define APPLET_DATA "launcher_data"
static int launcher_count = 0;
GList *lauchers = NULL;
static GList *launchers = NULL;
static char *default_app_pixmap;
static char *myinvoc;
typedef struct {
int applet_id;
int applet_id;
GtkWidget *aw;
GtkWidget *button;
gint signal_click_tag;
......@@ -51,6 +56,23 @@ typedef struct {
GnomeDesktopEntry *dentry;
} Properties;
static Launcher *
find_launcher(int id)
{
GList *list;
if(id < 0)
return NULL;
for(list=launchers;list!=NULL;list=g_list_next(list)) {
Launcher *l = list->data;
if(l->applet_id == id)
return l;
}
return NULL;
}
static void
free_user_data(GtkWidget *widget, gpointer data)
......@@ -104,9 +126,7 @@ create_launcher (GtkWidget *window, char *parameters)
launcher = g_new(Launcher,1);
launcher->button = gtk_button_new ();
pixmap = gnome_pixmap_new_from_file (dentry->opaque_icon);
if (!pixmap)
pixmap = gnome_pixmap_new_from_file (dentry->transparent_icon);
pixmap = gnome_pixmap_new_from_file (dentry->icon);
if (!pixmap) {
if (default_app_pixmap)
pixmap = gnome_pixmap_new_from_file (default_app_pixmap);
......@@ -130,6 +150,9 @@ create_launcher (GtkWidget *window, char *parameters)
launcher->dentry = dentry;
launcher->applet_id = -1;
launcher->aw = NULL;
gtk_signal_connect(GTK_OBJECT(launcher->button), "destroy",
(GtkSignalFunc) free_user_data,
NULL);
......@@ -198,7 +221,6 @@ check_dentry_save(GnomeDesktopEntry *dentry)
static void
properties_ok_callback(GtkWidget *widget, gpointer data)
{
PanelCommand cmd;
Properties *prop;
GnomeDesktopEntry *dentry;
GtkWidget *pixmap;
......@@ -210,14 +232,14 @@ properties_ok_callback(GtkWidget *widget, gpointer data)
free_and_nullify(dentry->comment);
free_and_nullify(dentry->exec);
free_and_nullify(dentry->tryexec);
free_and_nullify(dentry->icon_base);
free_and_nullify(dentry->icon);
free_and_nullify(dentry->docpath);
free_and_nullify(dentry->type);
dentry->name = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->name_entry)));
dentry->comment = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->comment_entry)));
dentry->exec = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->execute_entry)));
dentry->icon_base = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->icon_entry)));
dentry->icon = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->icon_entry)));
dentry->docpath = g_strdup(gtk_entry_get_text(GTK_ENTRY(prop->documentation_entry)));
dentry->type = g_strdup("Application"); /* FIXME: should handle more cases */
dentry->terminal = GTK_TOGGLE_BUTTON(prop->terminal_toggle)->active;
......@@ -234,20 +256,19 @@ properties_ok_callback(GtkWidget *widget, gpointer data)
g_free(prop->launcher->params);
prop->launcher->params=g_strdup(dentry->location);
cmd.cmd = PANEL_CMD_SET_TOOLTIP;
/*FIXME: CORBAize*/
/*cmd.cmd = PANEL_CMD_SET_TOOLTIP;
cmd.params.set_tooltip.applet = prop->launcher->button;
cmd.params.set_tooltip.tooltip = dentry->comment;
(*panel_cmd_func) (&cmd);
(*panel_cmd_func) (&cmd);*/
pixmap=GTK_BUTTON(prop->launcher->button)->child;
gtk_container_remove(GTK_CONTAINER(prop->launcher->button),pixmap);
gtk_widget_destroy(pixmap);
pixmap = gnome_pixmap_new_from_file (dentry->opaque_icon);
if (!pixmap)
pixmap = gnome_pixmap_new_from_file (dentry->transparent_icon);
pixmap = gnome_pixmap_new_from_file (dentry->icon);
if (!pixmap) {
if (default_app_pixmap)
pixmap = gnome_pixmap_new_from_file (default_app_pixmap);
......@@ -314,7 +335,7 @@ create_properties_dialog(GnomeDesktopEntry *dentry, Launcher *launcher)
prop->name_entry = create_text_entry(table, 0, _("Name"), dentry->name);
prop->comment_entry = create_text_entry(table, 1, _("Comment"), dentry->comment);
prop->execute_entry = create_text_entry(table, 2, _("Execute"), dentry->exec);
prop->icon_entry = create_text_entry(table, 3, _("Icon"), dentry->icon_base);
prop->icon_entry = create_text_entry(table, 3, _("Icon"), dentry->icon);
prop->documentation_entry = create_text_entry(table, 4, _("Documentation"), dentry->docpath);
prop->terminal_toggle = toggle =
......@@ -374,35 +395,6 @@ properties(GtkWidget *widget)
gtk_widget_show(dialog);
}
static void
create_instance (PanelWidget *panel, char *params, int pos)
{
Launcher *launcher;
PanelCommand cmd;
GnomeDesktopEntry *dentry;
launcher = create_launcher (GTK_WIDGET(panel), params);
if (!launcher)
return;
cmd.cmd = PANEL_CMD_REGISTER_TOY;
cmd.params.register_toy.applet = launcher->button;
cmd.params.register_toy.id = APPLET_ID;
cmd.params.register_toy.pos = pos;
cmd.params.register_toy.flags = APPLET_HAS_PROPERTIES;
(*panel_cmd_func) (&cmd);
dentry = gnome_desktop_entry_load(launcher->params);
cmd.cmd = PANEL_CMD_SET_TOOLTIP;
cmd.params.set_tooltip.applet = launcher->button;
cmd.params.set_tooltip.tooltip = dentry->comment;
(*panel_cmd_func) (&cmd);
}
/*these are commands sent over corba:*/
void
change_orient(int id, int orient)
......@@ -413,82 +405,91 @@ change_orient(int id, int orient)
void
session_save(int id, const char *cfgpath, const char *globcfgpath)
{
/*save the session here*/
}
char *query;
Launcher *launcher;
static gint
quit_launcher(gpointer data)
{
if(launcher_count<=0)
exit(0);
return FALSE;
launcher = find_launcher(id);
g_return_if_fail(launcher != NULL);
query = g_copy_strings(cfgpath,"path",NULL);
puts(query);
gnome_config_set_string(query,launcher->params);
g_free(query);
query = g_copy_strings(globcfgpath,CONFIG_TAG,"/count",NULL);
puts(query);
gnome_config_set_int(query,launcher_count);
g_free(query);
gnome_config_sync();
}
void
shutdown_applet(int id)
{
/*kill our window using destroy to avoid warnings we need to
kill the aw but we also need to return from this call*/
gtk_widget_destroy(aw);
Launcher *launcher = find_launcher(id);
launcher_count--;
g_return_if_fail(launcher != NULL);
/*FIXME: somehow unref or something this, so we don't leak,
unref gives me a bunch of warnings here*/
if(launcher->aw)
gtk_widget_destroy(launcher->aw);
if(launcher_count<=0)
gtk_idle_add(quit_launcher,NULL);
launcher_count--;
launchers = g_list_remove(launchers,launcher);
}
int
main(int argc, char **argv)
void
start_new_launcher(const char *path)
{
GtkWidget *clock;
char *result;
char *cfgpath;
char *globcfgpath;
char *mypath;
char *myinvoc;
panel_corba_register_arguments ();
gnome_init("clock_applet", NULL, argc, argv, 0, NULL);
GtkWidget *aw;
Launcher *launcher;
GnomeDesktopEntry *dentry;
if (!gnome_panel_applet_init_corba ()){
g_error ("Could not comunicate with the panel\n");
/*fprintf (stderr, "Could not comunicate with the panel\n");*/
/*exit (1);*/
}
GtkWidget *clock;
char *result;
char *cfgpath;
char *globcfgpath;
int applet_id = -1;
aw = applet_widget_new ();
if(argv[0][0] == '/')
myinvoc = g_strdup(argv[0]);
else {
mypath = getcwd(NULL,0);
myinvoc = g_copy_strings(mypath,"/",argv[0],NULL);
free(mypath);
}
result = gnome_panel_applet_request_id(aw,myinvoc,&applet_id,
&cfgpath,&globcfgpath);
g_free(myinvoc);
result = gnome_panel_applet_request_id(aw, myinvoc, &applet_id,
&cfgpath, &globcfgpath);
if (result){
g_error ("Could not talk to the Panel: %s\n", result);
/*exit (1);*/
}
/*use cfg path for loading up data!*/
launcher = NULL;
/*no path given, try getting it from config*/
if(!path) {
char *params;
char *query = g_copy_strings(cfgpath,"path=",NULL);
params = gnome_config_get_string(query);
if(params && params[0]!='\0')
launcher = create_launcher (GTK_WIDGET(aw), params);
g_free(params);
g_free(query);
} else {
launcher = create_launcher (GTK_WIDGET(aw), (char *)path);
}
g_free(globcfgpath);
g_free(cfgpath);
gnome_panel_applet_register_callback (APPLET_WIDGET(aw),
applet_id,
"test",
"TEST CALLBACK",
test_callback,
NULL);
/*we can't start a launcher if we don't know what to start*/
if (!launcher) {
gnome_panel_applet_abort_id(applet_id);
return;
}
clock = create_clock_widget (GTK_WIDGET(aw));
gtk_widget_show(clock);
applet_widget_add (APPLET_WIDGET (aw), clock);
launcher->aw = aw;
launcher->applet_id = applet_id;
applet_widget_add (APPLET_WIDGET (aw), launcher->button);
gtk_widget_show (aw);
result = gnome_panel_prepare_and_transfer(aw,applet_id);
......@@ -498,57 +499,61 @@ main(int argc, char **argv)
/*exit (1);*/
}
applet_corba_gtk_main ("IDL:GNOME/Launcher:1.0");
launchers = g_list_append(launchers,launcher);
launcher_count++;
return 0;
}
/*FIXME: corbaize*/
/*dentry = gnome_desktop_entry_load(launcher->params);
gpointer
applet_cmd_func(AppletCommand *cmd)
{
Launcher *launcher;
cmd.cmd = PANEL_CMD_SET_TOOLTIP;
cmd.params.set_tooltip.applet = launcher->button;
cmd.params.set_tooltip.tooltip = dentry->comment;
g_assert(cmd != NULL);
(*panel_cmd_func) (&cmd);*/
switch (cmd->cmd) {
case APPLET_CMD_QUERY:
return APPLET_ID;
}
case APPLET_CMD_INIT_MODULE:
panel_cmd_func = cmd->params.init_module.cmd_func;
break;
int
main(int argc, char **argv)
{
char *globcfg;
char *query;
char *mypath;
int i,count;
case APPLET_CMD_DESTROY_MODULE:
break;
panel_corba_register_arguments ();
gnome_init("clock_applet", NULL, argc, argv, 0, NULL);
case APPLET_CMD_GET_DEFAULT_PARAMS:
fprintf(stderr, "Launcher: APPLET_CMD_GET_DEFAULT_PARAMS not yet supported\n");
return g_strdup(""); /* FIXME */
if (!gnome_panel_applet_init_corba ()){
g_error ("Could not comunicate with the panel\n");
/*fprintf (stderr, "Could not comunicate with the panel\n");*/
/*exit (1);*/
}
case APPLET_CMD_CREATE_INSTANCE:
create_instance(cmd->panel,
cmd->params.create_instance.params,
cmd->params.create_instance.pos);
break;
/*we pass '#' plus a comment (our path) to the panel to start,
that will tell the panel to doing nothing (next session),
but it will reserve a spot for us on the correct place, and
this is the string that we identify as when we ask for the
spot*/
if(argv[0][0] == '/')
myinvoc = g_copy_strings("#",argv[0],NULL);
else {
mypath = getcwd(NULL,0);
myinvoc = g_copy_strings("#",mypath,"/",argv[0],NULL);
free(mypath);
}
case APPLET_CMD_GET_INSTANCE_PARAMS:
launcher = gtk_object_get_user_data(GTK_OBJECT(cmd->applet));
if(!launcher) return NULL;
return g_strdup(launcher->params);
gnome_panel_applet_request_glob_cfg(&globcfg);
case APPLET_CMD_ORIENTATION_CHANGE_NOTIFY:
break;
query = g_copy_strings(globcfg,CONFIG_TAG,"/count=0",NULL);
count = gnome_config_get_int(query);
g_free(query);
g_free(globcfg);
case APPLET_CMD_PROPERTIES:
properties(cmd->applet);
break;
for(i=0;i<count;i++)
start_new_launcher(NULL);
default:
fprintf(stderr,
APPLET_ID " applet_cmd_func: Oops, unknown command type %d\n",
(int) cmd->cmd);
break;
}
launcher_corba_gtk_main ("IDL:GNOME/Launcher:1.0");
return NULL;
return 0;
}
......@@ -40,23 +40,28 @@ GlobalConfig global_config = {
void
load_applet(char *id, char *params, int pos, int panel, char *cfgpath)
{
/*FIXME: somehow load the applet and call register_toy ... this
thing has to exec the applet or if it is a local applet then it
just calls a function to create the appropriate widget and use
register_toy*/
if(strcmp(id,EXTERN_ID) == 0) {
gchar *command;
AppletInfo * info;
g_return_if_fail (params != NULL);
/*start nothing, applet is taking care of everything*/
if(params == NULL ||
params[0] == '\0')
return;
reserve_applet_spot (id, params, panel, pos, cfgpath,
APPLET_EXTERN_PENDING);
command = g_copy_strings ("(true;", params, ") &", NULL);
system (command);
g_free (command);
/*'#' marks an applet that will take care of starting
itself but wants us to reserve a spot for it*/
if(params[0]!='#') {
/*this applet is dumb and wants us to start it :)*/
command = g_copy_strings ("(true;", params, ") &",
NULL);
system (command);
g_free (command);
}
} else if(strcmp(id,MENU_ID) == 0) {
Menu *menu;
......@@ -260,8 +265,6 @@ panel_orient_change(GtkWidget *widget,
PanelSnapped snapped,
gpointer data)
{
puts("PANEL_ORIENT_CHANGE");
panel_widget_foreach(PANEL_WIDGET(widget),orient_change_foreach,
(gpointer)widget);
}
......@@ -307,17 +310,12 @@ panel_state_change(GtkWidget *widget,
PanelState state,
gpointer data)
{
puts("PANEL_STATE_CHANGE");
if(state==PANEL_SHOWN) {
puts("PANEL_SHOW");
if(state==PANEL_SHOWN)
panel_widget_foreach(PANEL_WIDGET(widget),state_restore_foreach,
(gpointer)widget);
} else {
puts("PANEL_HIDE");
else
panel_widget_foreach(PANEL_WIDGET(widget),state_hide_foreach,
(gpointer)widget);
}
}
static void
......
......@@ -18,6 +18,7 @@
#include "panel.h"
#include "panel_config_global.h"
#include "menu.h"
#include "mico-glue.h"
#define SMALL_ICON_SIZE 20
......@@ -125,7 +126,7 @@ add_app_to_panel (GtkWidget *widget, void *data)
{
GnomeDesktopEntry *ii = data;
add_to_panel ("Launcher", ii->location);
panel_corba_call_launcher(ii->location);
}
void
......
......@@ -40,6 +40,19 @@ public:
globcfgpath = CORBA::string_dup("");
return id;
}
void applet_abort_id (CORBA::Short id) {
/*FIXME: implement, kill of that EXTERN_PENDING*/
}
void applet_request_glob_cfg (char *&globcfgpath) {
char *globcfg=NULL;
::applet_request_glob_cfg (&globcfg);
if(globcfg) {
globcfgpath = CORBA::string_dup(globcfg);
g_free(globcfg);