From 37c1bacac1cc713c038d2b36ee31ffb1bcc5737e Mon Sep 17 00:00:00 2001 From: Rosanna Yuen Date: Fri, 26 Feb 1999 17:24:10 +0000 Subject: [PATCH] Beginnings of the theme-selector dialog. typo fix in Flag.desktop --- capplets/theme-switcher/gui.c | 77 +++++++++++++++++++++++++++++- capplets/theme-switcher/gui.c-6060 | 77 +++++++++++++++++++++++++++++- 2 files changed, 152 insertions(+), 2 deletions(-) diff --git a/capplets/theme-switcher/gui.c b/capplets/theme-switcher/gui.c index 415ba171a..f83c72175 100644 --- a/capplets/theme-switcher/gui.c +++ b/capplets/theme-switcher/gui.c @@ -4,6 +4,7 @@ #include static GtkWidget *w; +GtkWidget *install_theme_file_sel; extern gint pid; @@ -19,7 +20,81 @@ auto_callback (GtkWidget *widget, gpointer data) click_preview (widget,NULL); } +static void +browse_dialog_ok (GtkWidget *widget, gpointer data) +{ + GtkWidget *filesel = gtk_widget_get_toplevel (widget); + install_theme (gtk_file_selection_get_filename (GTK_FILE_SELECTION (filesel))); + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); + gtk_widget_destroy (filesel); +} +static void +browse_dialog_close (GtkWidget *widget, gpointer data) +{ + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); + gtk_widget_destroy (gtk_widget_get_toplevel (widget)); +} +static void +browse_dialog_kill (GtkWidget *widget, gpointer data) +{ + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); +} +static void +install_theme_callback (GtkWidget *widget, gpointer data) +{ + GtkWidget *parent; + gtk_widget_set_sensitive (widget, FALSE); + + install_theme_file_sel = gtk_file_selection_new (_("Select a theme to install")); + gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (install_theme_file_sel)); + /* BEGIN UGLINESS. This code is stolen from gnome_dialog_set_parent. + * We want its functionality, but it takes a GnomeDialog as its argument. + * So we copy it )-: */ + parent = gtk_widget_get_toplevel (GTK_WIDGET (widget)); + gtk_window_set_transient_for (GTK_WINDOW(install_theme_file_sel), GTK_WINDOW (parent)); + + if ( gnome_preferences_get_dialog_centered() ) { + /* User wants us to center over parent */ + + gint x, y, w, h, dialog_x, dialog_y; + + if (GTK_WIDGET_VISIBLE(parent)) { + /* Throw out other positioning */ + gtk_window_set_position(GTK_WINDOW(install_theme_file_sel), + GTK_WIN_POS_NONE); + + gdk_window_get_origin (GTK_WIDGET(parent)->window, &x, &y); + gdk_window_get_size (GTK_WIDGET(parent)->window, &w, &h); + + /* The problem here is we don't know how big the dialog is. + So "centered" isn't really true. We'll go with + "kind of more or less on top" */ + dialog_x = x + w/4; + dialog_y = y + h/4; + + gtk_widget_set_uposition(GTK_WIDGET(install_theme_file_sel), + dialog_x, dialog_y); + } + } + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (install_theme_file_sel) + ->ok_button), "clicked", + (GtkSignalFunc) browse_dialog_ok, + widget); + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (install_theme_file_sel)->cancel_button), + "clicked", + GTK_SIGNAL_FUNC(browse_dialog_close), + widget); + gtk_signal_connect (GTK_OBJECT (install_theme_file_sel), "destroy", + GTK_SIGNAL_FUNC(browse_dialog_kill), + widget); + + if (gtk_grab_get_current ()) + gtk_grab_add (install_theme_file_sel); + + gtk_widget_show (install_theme_file_sel); + +} GtkWidget * make_main(void) { @@ -57,6 +132,7 @@ make_main(void) gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL); gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0); button = gtk_button_new_with_label (_("Install new\ntheme...")); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (install_theme_callback), NULL); /* FIXME: this needs ot actually do something. */ gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0); @@ -302,7 +378,6 @@ update_theme_entries(GtkWidget *disp_list) item = gtk_list_item_new_with_label(te[i].name); gtk_widget_show(item); if (strcmp (d_theme, te[i].name) == 0) { - g_print ("woo hoo -- gotta match %s\n",te[i].name); initial_theme = item; } gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name)); diff --git a/capplets/theme-switcher/gui.c-6060 b/capplets/theme-switcher/gui.c-6060 index 415ba171a..f83c72175 100644 --- a/capplets/theme-switcher/gui.c-6060 +++ b/capplets/theme-switcher/gui.c-6060 @@ -4,6 +4,7 @@ #include static GtkWidget *w; +GtkWidget *install_theme_file_sel; extern gint pid; @@ -19,7 +20,81 @@ auto_callback (GtkWidget *widget, gpointer data) click_preview (widget,NULL); } +static void +browse_dialog_ok (GtkWidget *widget, gpointer data) +{ + GtkWidget *filesel = gtk_widget_get_toplevel (widget); + install_theme (gtk_file_selection_get_filename (GTK_FILE_SELECTION (filesel))); + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); + gtk_widget_destroy (filesel); +} +static void +browse_dialog_close (GtkWidget *widget, gpointer data) +{ + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); + gtk_widget_destroy (gtk_widget_get_toplevel (widget)); +} +static void +browse_dialog_kill (GtkWidget *widget, gpointer data) +{ + gtk_widget_set_sensitive (GTK_WIDGET (data), TRUE); +} +static void +install_theme_callback (GtkWidget *widget, gpointer data) +{ + GtkWidget *parent; + gtk_widget_set_sensitive (widget, FALSE); + + install_theme_file_sel = gtk_file_selection_new (_("Select a theme to install")); + gtk_file_selection_hide_fileop_buttons (GTK_FILE_SELECTION (install_theme_file_sel)); + /* BEGIN UGLINESS. This code is stolen from gnome_dialog_set_parent. + * We want its functionality, but it takes a GnomeDialog as its argument. + * So we copy it )-: */ + parent = gtk_widget_get_toplevel (GTK_WIDGET (widget)); + gtk_window_set_transient_for (GTK_WINDOW(install_theme_file_sel), GTK_WINDOW (parent)); + + if ( gnome_preferences_get_dialog_centered() ) { + /* User wants us to center over parent */ + + gint x, y, w, h, dialog_x, dialog_y; + + if (GTK_WIDGET_VISIBLE(parent)) { + /* Throw out other positioning */ + gtk_window_set_position(GTK_WINDOW(install_theme_file_sel), + GTK_WIN_POS_NONE); + + gdk_window_get_origin (GTK_WIDGET(parent)->window, &x, &y); + gdk_window_get_size (GTK_WIDGET(parent)->window, &w, &h); + + /* The problem here is we don't know how big the dialog is. + So "centered" isn't really true. We'll go with + "kind of more or less on top" */ + dialog_x = x + w/4; + dialog_y = y + h/4; + + gtk_widget_set_uposition(GTK_WIDGET(install_theme_file_sel), + dialog_x, dialog_y); + } + } + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (install_theme_file_sel) + ->ok_button), "clicked", + (GtkSignalFunc) browse_dialog_ok, + widget); + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (install_theme_file_sel)->cancel_button), + "clicked", + GTK_SIGNAL_FUNC(browse_dialog_close), + widget); + gtk_signal_connect (GTK_OBJECT (install_theme_file_sel), "destroy", + GTK_SIGNAL_FUNC(browse_dialog_kill), + widget); + + if (gtk_grab_get_current ()) + gtk_grab_add (install_theme_file_sel); + + gtk_widget_show (install_theme_file_sel); + +} GtkWidget * make_main(void) { @@ -57,6 +132,7 @@ make_main(void) gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL); gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0); button = gtk_button_new_with_label (_("Install new\ntheme...")); + gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (install_theme_callback), NULL); /* FIXME: this needs ot actually do something. */ gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0); @@ -302,7 +378,6 @@ update_theme_entries(GtkWidget *disp_list) item = gtk_list_item_new_with_label(te[i].name); gtk_widget_show(item); if (strcmp (d_theme, te[i].name) == 0) { - g_print ("woo hoo -- gotta match %s\n",te[i].name); initial_theme = item; } gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name));