Index: main.c =================================================================== RCS file: /cvs/gpe/base/gpe-conf/main.c,v retrieving revision 1.70 diff -u -r1.70 main.c --- main.c 16 Oct 2004 16:03:42 -0000 1.70 +++ main.c 26 Oct 2004 14:52:24 -0000 @@ -125,7 +125,9 @@ { &Unimplemented_Build_Objects, &Unimplemented_Free_Objects, &Unimplemented_Save, &Unimplemented_Restore , "Task nameserver" ,"task_nameserver","Task for changing nameserver", PREFIX "/share/pixmaps/gpe-config-admin.png"}, { &Unimplemented_Build_Objects, &Unimplemented_Free_Objects, &Unimplemented_Save, &Unimplemented_Restore , - "Task sound" ,"task_sound","Command line task saving/restoring sound settings.", PREFIX "/share/pixmaps/gpe-config-admin.png"} + "Task sound" ,"task_sound","Command line task saving/restoring sound settings.", PREFIX "/share/pixmaps/gpe-config-admin.png"}, + { &Unimplemented_Build_Objects, &Unimplemented_Free_Objects, &Unimplemented_Save, &Unimplemented_Restore , + "Task background image" ,"task_background","Only select background image.", PREFIX "/share/pixmaps/gpe-config-admin.png"} }; struct gpe_icon my_icons[] = { @@ -235,10 +237,24 @@ void initwindow() { - // main window + gint size_x, size_y; + + /* screen layout detection */ + size_x = gdk_screen_width(); + size_y = gdk_screen_height(); + + + /* main window */ self.w = mainw = gtk_window_new(GTK_WINDOW_TOPLEVEL); - wstyle = self.w->style; gtk_widget_set_usize(GTK_WIDGET(self.w),240, 310); + + if ((size_x > 640) && (size_y > 480)) + { + gtk_window_set_type_hint(GTK_WINDOW(self.w), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_default_size(GTK_WINDOW(self.w), 420, 460); + } + + wstyle = self.w->style; gtk_signal_connect (GTK_OBJECT(self.w), "delete-event", (GtkSignalFunc) gtk_main_quit, NULL); @@ -337,18 +353,27 @@ fprintf(stderr,_("'task_sound' needs (s)ave/(r)estore as argument.\n")); exit(0); } + if (!strcmp(argv[1], "task_background")) + { + special_flag = TRUE; + standalone = TRUE; + task_change_background_image(); + exit(0); + } } /* If no task? - start applet */ if (!handled) { self.cur_applet = -1; - self.applet = NULL; if (!standalone) + self.applet = NULL; + + if (!standalone) { initwindow(); self.vbox = gtk_vbox_new(FALSE,0); - gtk_container_add(GTK_CONTAINER(self.w),self.vbox); + gtk_container_add(GTK_CONTAINER(self.w), self.vbox); make_container(); Index: network.c =================================================================== RCS file: /cvs/gpe/base/gpe-conf/network.c,v retrieving revision 1.38 diff -u -r1.38 network.c --- network.c 16 Oct 2004 16:03:42 -0000 1.38 +++ network.c 26 Oct 2004 14:52:24 -0000 @@ -475,7 +475,7 @@ GTK_RESPONSE_REJECT, NULL); - gtk_window_set_default_size(GTK_WINDOW(dialog), 200, 290); + gtk_window_set_default_size(GTK_WINDOW(dialog), 220, 320); btnok = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK); Index: theme.c =================================================================== RCS file: /cvs/gpe/base/gpe-conf/theme.c,v retrieving revision 1.49 diff -u -r1.49 theme.c --- theme.c 22 Sep 2004 16:50:01 -0000 1.49 +++ theme.c 26 Oct 2004 14:52:28 -0000 @@ -128,9 +128,57 @@ /* prefer xst */ if (!access(CMD_XST,X_OK)) use_xst = TRUE; - else - if (!access(CMD_GCONF,X_OK)) - use_gconf = TRUE; + /* to be extended in future */ +} + +void +task_change_background_image(void) +{ + GtkWidget *filesel, *feedbackdlg; + + Theme_Build_Objects(); + filesel = gtk_file_selection_new(_("Choose backgound image")); + gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(filesel), FALSE); + + if (gtk_dialog_run(GTK_DIALOG(filesel)) == GTK_RESPONSE_OK) + { + int ec = 0; + const gchar *file = + gtk_file_selection_get_filename (GTK_FILE_SELECTION(filesel)); + + gtk_widget_hide(filesel); + ec = access(file, R_OK); + if (ec) + feedbackdlg = gtk_message_dialog_new(GTK_WINDOW(filesel), + GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, + _("You are not allowed to read this file, choose another.")); + else + { + gchar *confstr = NULL; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self.rbImgCent))) + confstr = g_strdup_printf("img-centered:%s", file); + else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self.rbImgStr))) + confstr = g_strdup_printf("img-stretched:%s", file); + else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self.rbImgTiled))) + confstr = g_strdup_printf("img-tiled:%s", file); + if (confstr != NULL) + { + gchar *p = g_strdup_printf (CMD_XST " write %s%s str '%s'", + KEY_MATCHBOX, "Background", confstr); + system(p); + g_free(p); + g_free(confstr); + } + + feedbackdlg = gtk_message_dialog_new(GTK_WINDOW(filesel), + GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, + "%s\n%s",_("Succesfully changed background image."), + _("Use \"Look and Feel\" setup tool to change details.")); + } + gtk_dialog_run(GTK_DIALOG(feedbackdlg)); + gtk_widget_destroy(feedbackdlg); + } + gtk_widget_destroy(filesel); } gboolean Index: theme.h =================================================================== RCS file: /cvs/gpe/base/gpe-conf/theme.h,v retrieving revision 1.5 diff -u -r1.5 theme.h --- theme.h 28 Feb 2003 20:58:45 -0000 1.5 +++ theme.h 26 Oct 2004 14:52:28 -0000 @@ -4,8 +4,9 @@ GtkWidget *Theme_Build_Objects(); void Theme_Save(); void Theme_Restore(); +void task_change_background_image(void); -// definitions taken from mbdesktop.h +/* definitions taken from mbdesktop.h */ enum { BG_SOLID = 1, BG_TILED_PXM, Index: suid.c =================================================================== RCS file: /cvs/gpe/base/gpe-conf/suid.c,v retrieving revision 1.53 diff -u -r1.53 suid.c --- suid.c 25 Oct 2004 16:19:42 -0000 1.53 +++ suid.c 26 Oct 2004 14:52:28 -0000 @@ -376,6 +376,7 @@ } else if (strcmp (cmd, "XCAL") == 0) // runs screen calibration tool { + fscanf (in, "%100s", arg2); system ("/usr/bin/xtscal"); } else if (strcmp (cmd, "STZO") == 0) // changes the timezone setting