- // TODO: in case we want SimpleLauncherApplet to be configurable, this method
- // should return a gtk_menu_item that would be included in home settings
- // menu. Method should make sure that when we activate that item, a
- // corresponding dialog appears.
- return 0;
+ myParent = parent; // FIXME: Ugly piece of code :(
+
+ GtkWidget *menuItem = gtk_menu_item_new_with_label("Launcher settings...");
+
+ g_signal_connect(menuItem, "activate", G_CALLBACK(_run_dialog), this);
+
+ return menuItem;
+}
+
+void SimpleLauncherApplet::_run_dialog(GtkMenuItem *, void *self) {
+ ((SimpleLauncherApplet *)self)->runDialog();
+}
+
+void SimpleLauncherApplet::runDialog() {
+ LauncherItems newItems = myItems;
+
+ updateItems(newItems); // User requested 'settings', let's give her the latest stuff :)
+
+ SLAList list(SL_APPLET_ICON_SIZE, newItems);
+
+ GtkDialog *dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Launcher Settings", myParent, (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), "OK", GTK_RESPONSE_OK, "Cancel", GTK_RESPONSE_CANCEL, NULL));
+
+ gtk_container_add(GTK_CONTAINER(dialog->vbox), list.getWidget());
+
+ gtk_widget_set_size_request(GTK_WIDGET(dialog), 540, 257);
+
+ int response = gtk_dialog_run(dialog);
+
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+
+ switch (response) {
+ case GTK_RESPONSE_OK:
+ myItems = newItems;
+ saveConfig(); // save it immediately!
+ updateWidget();
+ break;
+
+ case GTK_RESPONSE_CANCEL:
+ break;
+
+ default:
+ ; // FIXME: do I want to do anything in here?
+ }