diff options
author | mallum <mallum@b067294f-1dea-0310-9683-c47a78595994> | 2005-01-28 16:06:06 +0000 |
---|---|---|
committer | mallum <mallum@b067294f-1dea-0310-9683-c47a78595994> | 2005-01-28 16:06:06 +0000 |
commit | 280a45ae4a92177412ac4c8b31f31144499a0580 (patch) | |
tree | 95ef8d3149f2edf9b2e90bf552b629eb35e9bb65 | |
parent | efdeb1b636f1954e17f5dd334fdf65f44ff90c3e (diff) |
add icon, support for changing device via hack + cmd to run on startup
git-svn-id: http://svn.o-hand.com/repos/matchbox/trunk/Xoo@1047 b067294f-1dea-0310-9683-c47a78595994
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | data/Makefile.am | 5 | ||||
-rw-r--r-- | data/Xoo.glade | 49 | ||||
-rw-r--r-- | data/xoo.desktop | 1 | ||||
-rw-r--r-- | data/xoo.png | bin | 0 -> 2521 bytes | |||
-rw-r--r-- | data/xoo.svg | 181 | ||||
-rw-r--r-- | src/callbacks.c | 38 | ||||
-rw-r--r-- | src/callbacks.h | 34 | ||||
-rw-r--r-- | src/fakedev.h | 6 | ||||
-rw-r--r-- | src/main.c | 97 | ||||
-rw-r--r-- | src/prefs.c | 12 | ||||
-rw-r--r-- | src/prefs.h | 1 |
13 files changed, 419 insertions, 31 deletions
@@ -1,3 +1,27 @@ +2005-01-28 mallum,,, <mallum@openedhand.com> + + * configure.ac: + Bump Up version + + * data/Makefile.am: + * data/xoo.desktop: + * data/xoo.svg: + Add an icon for .dotdesktop + + * data/Xoo.glade: + * src/callbacks.c: (on_about_activate), (on_delete_event_hide): + * src/callbacks.h: + * src/fakedev.h: + * src/main.c: (fakeapp_new), (fakeapp_create_gui), (key_event), + (fakeapp_start_server), (fakeapp_catch_sigchild), + (fakeapp_restart_server), (usage), (main): + * src/prefs.c: (gconf_prefs_init), (on_prefs_apply_clicked): + * src/prefs.h: + Add support for: + - Setting command to run on startup + - Changing device on the fly ( via very nasty hack ) + Also wrap some code at 80 chars. + 2005-01-25 Ross Burton <ross@burtonini.com> * data/Makefile.am: diff --git a/configure.ac b/configure.ac index 38a69ac..56079bf 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.53) -AC_INIT([Xoo], 0.5, [mallum@handhelds.org]) +AC_INIT([Xoo], 0.6, [mallum@handhelds.org]) AC_CONFIG_SRCDIR([src/main.c]) AM_INIT_AUTOMAKE() diff --git a/data/Makefile.am b/data/Makefile.am index 292a8db..36c34d4 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,4 +1,4 @@ -EXTRA_DIST = ipaq3800.xml ipaq3800.png dot.png Xoo.glade +EXTRA_DIST = ipaq3800.xml ipaq3800.png dot.png Xoo.glade xoo.desktop xoo.png devicedir = $(pkgdatadir) device_DATA = ipaq3800.xml ipaq3800.png dot.png @@ -8,3 +8,6 @@ ui_DATA = Xoo.glade desktopdir = $(datadir)/applications desktop_DATA = xoo.desktop + +pixmapdir = $(datadir)/pixmaps +pixmap_DATA = xoo.png diff --git a/data/Xoo.glade b/data/Xoo.glade index a9f0b69..40c3c74 100644 --- a/data/Xoo.glade +++ b/data/Xoo.glade @@ -42,7 +42,7 @@ <child> <widget class="GtkMenuItem" id="select_device"> <property name="visible">True</property> - <property name="sensitive">False</property> + <property name="sensitive">True</property> <property name="label" translatable="yes">Select _Device...</property> <property name="use_underline">True</property> <signal name="activate" handler="on_select_device_activate" last_modification_time="Mon, 08 Nov 2004 12:08:36 GMT"/> @@ -212,7 +212,7 @@ <child> <widget class="GtkTable" id="table1"> <property name="visible">True</property> - <property name="n_rows">3</property> + <property name="n_rows">4</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> <property name="row_spacing">4</property> @@ -392,6 +392,51 @@ <property name="y_options">fill</property> </packing> </child> + + <child> + <widget class="GtkLabel" id="label9"> + <property name="visible">True</property> + <property name="label" translatable="yes">On startup run:</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="left_attach">0</property> + <property name="right_attach">1</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="entry_start"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget> diff --git a/data/xoo.desktop b/data/xoo.desktop index 62e0f9b..0e7bd73 100644 --- a/data/xoo.desktop +++ b/data/xoo.desktop @@ -4,6 +4,7 @@ Name=Xoo Comment=Handheld Device Simulator Exec=xoo Terminal=false +Icon=xoo.png Type=Application Categories=GNOME;Application;Development; StartupNotify=true diff --git a/data/xoo.png b/data/xoo.png Binary files differnew file mode 100644 index 0000000..6866f8a --- /dev/null +++ b/data/xoo.png diff --git a/data/xoo.svg b/data/xoo.svg new file mode 100644 index 0000000..7cae175 --- /dev/null +++ b/data/xoo.svg @@ -0,0 +1,181 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg + id="svg1" + sodipodi:version="0.32" + inkscape:version="0.40" + width="210mm" + height="297mm" + sodipodi:docname="xsvg.svg" + sodipodi:docbase="/home/mallum/Desktop" + xmlns="http://www.w3.org/2000/svg" + xmlns:cc="http://web.resource.org/cc/" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:xml="http://www.w3.org/XML/1998/namespace" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs + id="defs47" /> + <metadata + id="metadata46"> + <rdf:RDF + id="RDF48"> + <cc:Work + rdf:about="" + id="Work49"> + <dc:format + id="format50">image/svg+xml</dc:format> + <dc:type + id="type52" + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="4.5375000" + inkscape:cx="31.073482" + inkscape:cy="656.27045" + inkscape:window-width="676" + inkscape:window-height="852" + inkscape:window-x="663" + inkscape:window-y="68" + inkscape:current-layer="svg1" /> + <rect + x="7.1625342" + y="145.73003" + width="100.00000" + height="100.00000" + rx="10.000000" + ry="10.000000" + id="rect2" + style="fill:#326464;fill-opacity:1.0000000;" + inkscape:export-xdpi="43.200001" + inkscape:export-ydpi="43.200001" /> + <g + transform="translate(253.5455,11.67218)" + font-size="10" + xml:space="preserve" + id="g3" + style="font-size:10.000000;fill:#000000;fill-opacity:0.49999997;font-family:mono"> + <text + x="0" + y="10" + id="text5"> SVG SVG SVG SVG </text> + + + <text + x="0" + y="20" + id="text8">SVG SVG SVG SVG S</text> + + + <text + x="0" + y="30" + id="text11">VG SVG SVG SVG SV</text> + + + <text + x="0" + y="40" + id="text14">G SVG SVG SVG SVG</text> + + + <text + x="0" + y="50" + id="text17"> SVG SVG SVG SVG </text> + + + <text + x="0" + y="60" + id="text20">SVG SVG SVG SVG S</text> + + + <text + x="0" + y="70" + id="text23">VG SVG SVG SVG SV</text> + + + <text + x="0" + y="80" + id="text26">G SVG SVG SVG SVG</text> + + + <text + x="0" + y="90" + id="text29"> SVG SVG SVG SVG </text> + + + <text + x="0" + y="100" + id="text32"> VG SVG SVG SVG </text> + + + </g> + <g + transform="translate(11.20386,155.0055)" + id="g35"> + <g + transform="translate(3.000000,2.000000)" + id="g36" + style="opacity:0.49999997"> + <g + transform="scale(80.00000,80.00000)" + id="g37" + style="fill:#000000"> + <g + transform="scale(7.864000e-7,7.864000e-7)" + id="g38"> + <path + d="M 0.0000000,0.0000000 L 317900.00,0.0000000 L 710600.00,523600.00 L 115600.00,1271600.0 L 0.0000000,1271600.0 L 490875.00,654500.00 L 0.0000000,0.0000000 z " + id="path39" /> + <path + d="M 1271600.0,1271600.0 L 953700.00,1271600.0 L 561000.00,748000.00 L 1156000.0,0.0000000 L 1271600.0,0.0000000 L 780725.00,617100.00 L 1271600.0,1271600.0 z " + id="path40" /> + </g> + </g> + </g> + <g + transform="scale(80.00000,80.00000)" + id="g41" + style="fill:#d7d7d7"> + <g + transform="scale(7.864000e-7,7.864000e-7)" + id="g42"> + <path + d="M 0.0000000,0.0000000 L 317900.00,0.0000000 L 710600.00,523600.00 L 115600.00,1271600.0 L 0.0000000,1271600.0 L 490875.00,654500.00 L 0.0000000,0.0000000 z " + id="path43" /> + <path + d="M 1271600.0,1271600.0 L 953700.00,1271600.0 L 561000.00,748000.00 L 1156000.0,0.0000000 L 1271600.0,0.0000000 L 780725.00,617100.00 L 1271600.0,1271600.0 z " + id="path44" /> + </g> + </g> + </g> + <text + xml:space="preserve" + style="font-size:48.000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#191919;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:HouseMovements-Poster;text-anchor:middle;writing-mode:lr;" + x="60.330578" + y="197.54124" + id="text1103" + sodipodi:linespacing="100%" + transform="translate(23.14050,30.85399)"><tspan + sodipodi:role="line" + id="tspan1104" + x="60.330578" + y="197.54124">oo</tspan></text> +</svg> diff --git a/src/callbacks.c b/src/callbacks.c index 197fc17..7a17953 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -16,6 +16,7 @@ #include "config.h" #include <signal.h> +#include <gtk/gtk.h> #include <gtk/gtkmain.h> #include <gtk/gtkmenu.h> #include <gtk/gtkmenuitem.h> @@ -23,6 +24,8 @@ #include <gtk/gtkwindow.h> #include "fakedev.h" +extern pid_t xnest_pid; + void on_send_signal_activate (GtkMenuItem *menuitem, FakeApp *app) { g_return_if_fail (app->xnest_pid != 0); kill (app->xnest_pid, SIGUSR1); @@ -74,3 +77,38 @@ gboolean on_delete_event_hide (GtkWidget *widget, GdkEvent *event, FakeApp *app) gtk_widget_hide (widget); return TRUE; } + +void +on_select_device (GtkMenuItem *menuitem, FakeApp *app) +{ + GtkWidget *dialog; + + dialog = gtk_file_chooser_dialog_new ("Open Device", + GTK_WINDOW(app->window), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) + { + char *filename; + + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + + /****** DONT TRY THIS AT HOME KIDS. *******/ + + /* xxx FIXME, This is gross - just a very nasty hack for now xxx */ + + kill(xnest_pid, 9); + sleep(2); + execl("/bin/sh", "sh", "-c", "Xoo", "--device", filename, 0); + + g_warning("Failed load device %s\n", filename); + + g_free (filename); + } + + gtk_widget_destroy (dialog); +} diff --git a/src/callbacks.h b/src/callbacks.h index 5c5d38d..e3e4887 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -2,11 +2,29 @@ /* GTK+ callbacks */ -void on_send_signal_activate (GtkWidget *menuitem, FakeApp *app); -void on_preferences_activate (GtkMenuItem *menuitem, FakeApp *app); -void on_quit_activate (GtkMenuItem *menuitem, FakeApp *app); -void on_about_activate (GtkMenuItem *menuitem, FakeApp *app); -void on_window_destroy (GtkObject *widget, FakeApp *app); -gboolean on_popup_menu_show (GtkWidget *widget, GdkEventButton *event, FakeApp *app); -void on_show_decorations_toggle (GtkMenuItem *menuitem, FakeApp *app); -gboolean on_delete_event_hide (GtkWidget *widget, GdkEvent *event, FakeApp *app); +void +on_send_signal_activate (GtkWidget *menuitem, FakeApp *app); + +void +on_preferences_activate (GtkMenuItem *menuitem, FakeApp *app); + +void +on_quit_activate (GtkMenuItem *menuitem, FakeApp *app); + +void +on_about_activate (GtkMenuItem *menuitem, FakeApp *app); + +void +on_window_destroy (GtkObject *widget, FakeApp *app); + +gboolean +on_popup_menu_show (GtkWidget *widget, GdkEventButton *event, FakeApp *app); + +void +on_show_decorations_toggle (GtkMenuItem *menuitem, FakeApp *app); + +gboolean +on_delete_event_hide (GtkWidget *widget, GdkEvent *event, FakeApp *app); + +void +on_select_device (GtkMenuItem *menuitem, FakeApp *app); diff --git a/src/fakedev.h b/src/fakedev.h index 845016c..1339c28 100644 --- a/src/fakedev.h +++ b/src/fakedev.h @@ -42,7 +42,7 @@ struct FakeApp GtkWidget *debug_menu; GtkWidget *prefs_window; - GtkWidget *entry_display, *entry_server, *entry_options; + GtkWidget *entry_display, *entry_server, *entry_options, *entry_start; GtkWidget *about_window; int device_width; @@ -72,6 +72,10 @@ struct FakeApp pid_t xnest_pid; char *win_title; + char *start_cmd; + + int argc; + char **argv; }; struct FakeButton @@ -29,7 +29,7 @@ #define XNEST_BIN "/usr/X11R6/bin/Xnest" /* Used by the signal handler to detect which child has died */ -static pid_t xnest_pid; +pid_t xnest_pid; static gboolean key_event (GtkWidget *widget, GdkEventKey *event, FakeApp *app); @@ -57,40 +57,76 @@ fakeapp_new(void) glade = glade_xml_new (PKGDATADIR "/Xoo.glade", NULL, NULL); g_assert (glade != NULL); - glade_xml_signal_connect_data (glade, "on_send_signal_activate", (GCallback)on_send_signal_activate, app); - glade_xml_signal_connect_data (glade, "on_quit_activate", (GCallback)on_quit_activate, app); - glade_xml_signal_connect_data (glade, "on_about_activate", (GCallback)on_about_activate, app); - glade_xml_signal_connect_data (glade, "on_window_destroy", (GCallback)on_window_destroy, app); - glade_xml_signal_connect_data (glade, "on_popup_menu_show", (GCallback)on_popup_menu_show, app); - glade_xml_signal_connect_data (glade, "on_show_decorations_toggle", (GCallback)on_show_decorations_toggle, app); - glade_xml_signal_connect_data (glade, "on_delete_event_hide", (GCallback)on_delete_event_hide, app); + glade_xml_signal_connect_data (glade, "on_send_signal_activate", + (GCallback)on_send_signal_activate, app); + + glade_xml_signal_connect_data (glade, "on_quit_activate", + (GCallback)on_quit_activate, app); + + glade_xml_signal_connect_data (glade, "on_about_activate", + (GCallback)on_about_activate, app); + + glade_xml_signal_connect_data (glade, "on_window_destroy", + (GCallback)on_window_destroy, app); + + glade_xml_signal_connect_data (glade, "on_popup_menu_show", + (GCallback)on_popup_menu_show, app); + + glade_xml_signal_connect_data (glade, "on_show_decorations_toggle", + (GCallback)on_show_decorations_toggle, app); + + glade_xml_signal_connect_data (glade, "on_delete_event_hide", + (GCallback)on_delete_event_hide, app); + + glade_xml_signal_connect_data (glade, "on_select_device_activate", + (GCallback)on_select_device, app); + #if HAVE_GCONF - glade_xml_signal_connect_data (glade, "on_preferences_activate", (GCallback)on_preferences_activate, app); - glade_xml_signal_connect_data (glade, "on_prefs_apply_clicked", (GCallback)on_prefs_apply_clicked, app); - glade_xml_signal_connect_data (glade, "on_prefs_cancel_clicked", (GCallback)on_prefs_cancel_clicked, app); + glade_xml_signal_connect_data (glade, "on_preferences_activate", + (GCallback)on_preferences_activate, app); + + glade_xml_signal_connect_data (glade, "on_prefs_apply_clicked", + (GCallback)on_prefs_apply_clicked, app); + + glade_xml_signal_connect_data (glade, "on_prefs_cancel_clicked", + (GCallback)on_prefs_cancel_clicked, app); #else + gtk_widget_hide (glade_xml_get_widget (glade, "preferences")); + #endif app->window = glade_xml_get_widget (glade, "window"); app->fixed = glade_xml_get_widget (glade, "fixed"); gtk_fixed_set_has_window (GTK_FIXED (app->fixed), TRUE); + app->winnest = glade_xml_get_widget (glade, "winnest"); - g_signal_connect(app->window, "key-press-event", (GCallback)key_event, app); - g_signal_connect(app->window, "key-release-event", (GCallback)key_event, app); + + g_signal_connect(app->window, "key-press-event", + (GCallback)key_event, app); + + g_signal_connect(app->window, "key-release-event", + (GCallback)key_event, app); app->prefs_window = glade_xml_get_widget (glade, "prefswindow"); - gtk_window_set_transient_for (GTK_WINDOW (app->prefs_window), GTK_WINDOW (app->window)); + gtk_window_set_transient_for (GTK_WINDOW (app->prefs_window), + GTK_WINDOW (app->window)); + app->entry_display = glade_xml_get_widget (glade, "entry_display"); app->entry_server = glade_xml_get_widget (glade, "entry_server"); app->entry_options = glade_xml_get_widget (glade, "entry_options"); + app->entry_start = glade_xml_get_widget (glade, "entry_start"); app->debug_menu = glade_xml_get_widget (glade, "send_signal"); app->popupmenu = glade_xml_get_widget (glade, "popupmenu_menu"); app->about_window = glade_xml_get_widget (glade, "aboutwindow"); - gtk_window_set_transient_for (GTK_WINDOW (app->about_window), GTK_WINDOW (app->window)); - g_signal_connect_swapped (glade_xml_get_widget (glade, "button_about_close"), "clicked", G_CALLBACK (gtk_widget_hide), app->about_window); - + + gtk_window_set_transient_for (GTK_WINDOW (app->about_window), + GTK_WINDOW (app->window)); + + g_signal_connect_swapped (glade_xml_get_widget (glade, "button_about_close"), + "clicked", G_CALLBACK (gtk_widget_hide), + app->about_window); return app; } @@ -172,7 +208,9 @@ key_event (GtkWidget *widget, GdkEventKey *event, FakeApp *app) xevent.xkey.window = GDK_WINDOW_XWINDOW (app->winnest->window); xevent.xkey.root = GDK_WINDOW_XWINDOW (gdk_screen_get_root_window (gdk_drawable_get_screen (app->winnest->window))); xevent.xkey.time = event->time; + /* FIXME, the following might cause problems for non-GTK apps */ + xevent.xkey.x = 0; xevent.xkey.y = 0; xevent.xkey.x_root = 0; @@ -182,9 +220,12 @@ key_event (GtkWidget *widget, GdkEventKey *event, FakeApp *app) xevent.xkey.same_screen = TRUE; gdk_error_trap_push (); - XSendEvent (GDK_WINDOW_XDISPLAY (app->winnest->window), app->xnest_window, + XSendEvent (GDK_WINDOW_XDISPLAY + (app->winnest->window), app->xnest_window, False, NoEventMask, &xevent); + gdk_display_sync (gtk_widget_get_display (widget)); + if (gdk_error_trap_pop ()) { g_warning("X error on XSendEvent"); } @@ -242,6 +283,23 @@ fakeapp_start_server(FakeApp *app) } else { gtk_widget_set_sensitive (app->debug_menu, TRUE); } + + if (app->start_cmd) + { + pid = fork(); + switch (pid) { + case 0: + setenv("DISPLAY", app->xnest_dpy_name, 1); + execl("/bin/sh", "sh", "-c", app->start_cmd, 0); + g_warning( "Failed to Launch %s\n", app->start_cmd); + exit(1); + case -1: + g_warning("Failed to Launch %s\n", app->start_cmd); + break; + default: + break; + } + } return FALSE; } @@ -299,6 +357,9 @@ main(int argc, char **argv) app = fakeapp_new(); + app->argv = argv; + app->argc = argc; + #ifdef HAVE_GCONF /* Do this here so that command line argument override the GConf prefs */ gconf_prefs_init(app); diff --git a/src/prefs.c b/src/prefs.c index 22edad1..7e723e7 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -43,12 +43,21 @@ void gconf_prefs_init(FakeApp *app) { if (s != NULL && *s != '\0') { app->xnest_bin_options = s; } + + s = gconf_client_get_string (gconf, GCONF_START_CMD, NULL); + if (s != NULL && *s != '\0') { + app->start_cmd = s; + } + } void on_preferences_activate (GtkMenuItem *menuitem, FakeApp *app) { gtk_entry_set_text (GTK_ENTRY (app->entry_display), app->xnest_dpy_name); gtk_entry_set_text (GTK_ENTRY (app->entry_server), app->xnest_bin_path); gtk_entry_set_text (GTK_ENTRY (app->entry_options), app->xnest_bin_options ? app->xnest_bin_options : ""); + + gtk_entry_set_text (GTK_ENTRY (app->entry_start), app->start_cmd ? app->start_cmd : ""); + gtk_window_present (GTK_WINDOW (app->prefs_window)); } @@ -64,6 +73,9 @@ void on_prefs_apply_clicked (GtkWidget *widget, FakeApp *app) { s = gtk_entry_get_text (GTK_ENTRY (app->entry_options)); gconf_client_set_string (gconf, GCONF_SERVER_OPTIONS, s, NULL); + s = gtk_entry_get_text (GTK_ENTRY (app->entry_start)); + gconf_client_set_string (gconf, GCONF_START_CMD, s, NULL); + gconf_prefs_init (app); fakeapp_restart_server (app); diff --git a/src/prefs.h b/src/prefs.h index c30305a..3c30f88 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -4,6 +4,7 @@ #define GCONF_DISPLAY "/apps/Xoo/display" #define GCONF_SERVER "/apps/Xoo/xserver" #define GCONF_SERVER_OPTIONS "/apps/Xoo/xserver-options" +#define GCONF_START_CMD "/apps/Xoo/startup-command" void gconf_prefs_init(FakeApp *app); |