#include <config.>
#include <applet-widget.h>
typedef struct {
GtkWidget *applet;
GtkWidget *fentry;
GtkWidget *gentry;
GtkWidget *entry;
} PicoData;
static void
entry_activate (GtkWidget *w, PicoData *pico)
{
char *s;
s = gtk_editable_get_chars (GTK_EDITABLE (pico->entry), 0, -1);
gtk_editable_delete_text (GTK_EDITABLE (pico->entry), 0, -1);
if (strlen (s) == 0) {
g_free (s);
return;
}
gnome_execute_shell (NULL, s);
gnome_entry_save_history (GNOME_ENTRY (pico->gentry));
gnome_config_sync ();
g_free (s);
}
static int
applet_save_session (GtkWidget *applet,
const char *privcfgpath,
const char *globcfgpath,
PicoData *pico)
{
gnome_entry_save_history (GNOME_ENTRY (pico->gentry));
gnome_config_sync ();
return FALSE;
}
static void
applet_destroy (GtkWidget *applet, PicoData *pico)
{
g_free (pico);
}
static CORBA_Object
pico_begin (PortableServer_POA poa,
const char *goad_id,
const char **params,
gpointer *impl_ptr,
CORBA_Environment *ev)
{
PicoData *pico = g_new0 (PicoData, 1);
pico->applet = applet_widget_new (goad_id);
pico->fentry = gnome_file_entry_new ("pico-commander", _("Run..."));
pico->gentry = gnome_file_entry_gnome_entry (GNOME_FILE_ENTRY (pico->fentry));
pico->entry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (pico->fentry));
gnome_entry_set_max_saved (GNOME_ENTRY (pico->gentry), 50);
gnome_entry_prepend_history (GNOME_ENTRY (pico->gentry), FALSE, "");
gtk_combo_set_use_arrows_always (GTK_COMBO (pico->gentry), TRUE);
applet_widget_add (APPLET_WIDGET (pico->applet), pico->fentry);
gtk_signal_connect (GTK_OBJECT (pico->entry), "activate",
GTK_SIGNAL_FUNC (entry_activate), pico);
gtk_signal_connect (GTK_OBJECT (pico->applet), "save_session",
GTK_SIGNAL_FUNC (applet_save_session), pico);
gtk_signal_connect (GTK_OBJECT (pico->applet), "destroy",
GTK_SIGNAL_FUNC (applet_destroy), pico);
gtk_widget_show_all (pico->applet);
return applet_widget_corba_activate (APPLET_WIDGET (pico->applet),
poa, goad_id, params,
impl_ptr, ev);
}
static void
pico_end (PortableServer_POA poa,
const char *goad_id,
gpointer impl_ptr,
CORBA_Environment *ev)
{
applet_widget_corba_deactivate (poa, goad_id, impl_ptr, ev);
}
static const char *repo_id[] = { "IDL:GNOME/Applet:1.0", NULL };
static GnomePluginObject applets_list[] = {
{ repo_id, "pico-commander_applet", NULL, "50 line launcher",
&pico_begin, &pico_end },
{ NULL }
};
GnomePlugin GNOME_Plugin_info = { applets_list, NULL };
|