Beginnings of the theme-selector dialog.
typo fix in Flag.desktop
This commit is contained in:
parent
ed042b5ffb
commit
37c1bacac1
2 changed files with 152 additions and 2 deletions
|
@ -4,6 +4,7 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
static GtkWidget *w;
|
static GtkWidget *w;
|
||||||
|
GtkWidget *install_theme_file_sel;
|
||||||
extern gint pid;
|
extern gint pid;
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,7 +20,81 @@ auto_callback (GtkWidget *widget, gpointer data)
|
||||||
click_preview (widget,NULL);
|
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 *
|
GtkWidget *
|
||||||
make_main(void)
|
make_main(void)
|
||||||
{
|
{
|
||||||
|
@ -57,6 +132,7 @@ make_main(void)
|
||||||
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL);
|
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL);
|
||||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
||||||
button = gtk_button_new_with_label (_("Install new\ntheme..."));
|
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. */
|
/* FIXME: this needs ot actually do something. */
|
||||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
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);
|
item = gtk_list_item_new_with_label(te[i].name);
|
||||||
gtk_widget_show(item);
|
gtk_widget_show(item);
|
||||||
if (strcmp (d_theme, te[i].name) == 0) {
|
if (strcmp (d_theme, te[i].name) == 0) {
|
||||||
g_print ("woo hoo -- gotta match %s\n",te[i].name);
|
|
||||||
initial_theme = item;
|
initial_theme = item;
|
||||||
}
|
}
|
||||||
gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name));
|
gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name));
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
static GtkWidget *w;
|
static GtkWidget *w;
|
||||||
|
GtkWidget *install_theme_file_sel;
|
||||||
extern gint pid;
|
extern gint pid;
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,7 +20,81 @@ auto_callback (GtkWidget *widget, gpointer data)
|
||||||
click_preview (widget,NULL);
|
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 *
|
GtkWidget *
|
||||||
make_main(void)
|
make_main(void)
|
||||||
{
|
{
|
||||||
|
@ -57,6 +132,7 @@ make_main(void)
|
||||||
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL);
|
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (click_preview), NULL);
|
||||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
||||||
button = gtk_button_new_with_label (_("Install new\ntheme..."));
|
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. */
|
/* FIXME: this needs ot actually do something. */
|
||||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
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);
|
item = gtk_list_item_new_with_label(te[i].name);
|
||||||
gtk_widget_show(item);
|
gtk_widget_show(item);
|
||||||
if (strcmp (d_theme, te[i].name) == 0) {
|
if (strcmp (d_theme, te[i].name) == 0) {
|
||||||
g_print ("woo hoo -- gotta match %s\n",te[i].name);
|
|
||||||
initial_theme = item;
|
initial_theme = item;
|
||||||
}
|
}
|
||||||
gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name));
|
gtk_object_set_data(GTK_OBJECT(item), "name", g_strdup(te[i].name));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue