cleaned up the interface some
dirtied up the code some
This commit is contained in:
parent
8b77425757
commit
b08f7c854e
10 changed files with 466 additions and 291 deletions
5
capplets/theme-switcher/.cvsignore
Normal file
5
capplets/theme-switcher/.cvsignore
Normal file
|
@ -0,0 +1,5 @@
|
|||
Makefile.in
|
||||
Makefile
|
||||
.deps
|
||||
.libs
|
||||
theme-selector-capplet
|
|
@ -64,13 +64,17 @@ click_entry(GtkWidget *widget, gpointer data);
|
|||
void
|
||||
delete_entry(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
update_theme_entries(GtkWidget *system_list, GtkWidget *user_list);
|
||||
update_theme_entries(GtkWidget *disp_list);
|
||||
void
|
||||
signal_apply_theme(GtkWidget *widget);
|
||||
void
|
||||
click_preview(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_apply(GtkWidget *widget, gpointer data);
|
||||
click_try(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_ok(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_revert(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
edit_file_to_use(gchar *file, gchar *theme);
|
||||
void
|
||||
|
@ -88,8 +92,11 @@ extern gchar *readme_current;
|
|||
extern GtkWidget *icon_display;
|
||||
extern GtkWidget *icon_current;
|
||||
extern GtkWidget *current_theme;
|
||||
extern GtkWidget *current_global_theme;
|
||||
extern GtkWidget *initial_theme;
|
||||
extern GtkWidget *last_theme;
|
||||
extern GtkWidget *system_list;
|
||||
extern GtkWidget *user_list;
|
||||
extern GtkWidget *preview_socket;
|
||||
extern GtkWidget *auto_preview;
|
||||
extern gint prog_fd;
|
||||
extern gchar gtkrc_tmp[1024];
|
||||
|
|
|
@ -64,13 +64,17 @@ click_entry(GtkWidget *widget, gpointer data);
|
|||
void
|
||||
delete_entry(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
update_theme_entries(GtkWidget *system_list, GtkWidget *user_list);
|
||||
update_theme_entries(GtkWidget *disp_list);
|
||||
void
|
||||
signal_apply_theme(GtkWidget *widget);
|
||||
void
|
||||
click_preview(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_apply(GtkWidget *widget, gpointer data);
|
||||
click_try(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_ok(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
click_revert(GtkWidget *widget, gpointer data);
|
||||
void
|
||||
edit_file_to_use(gchar *file, gchar *theme);
|
||||
void
|
||||
|
@ -88,8 +92,11 @@ extern gchar *readme_current;
|
|||
extern GtkWidget *icon_display;
|
||||
extern GtkWidget *icon_current;
|
||||
extern GtkWidget *current_theme;
|
||||
extern GtkWidget *current_global_theme;
|
||||
extern GtkWidget *initial_theme;
|
||||
extern GtkWidget *last_theme;
|
||||
extern GtkWidget *system_list;
|
||||
extern GtkWidget *user_list;
|
||||
extern GtkWidget *preview_socket;
|
||||
extern GtkWidget *auto_preview;
|
||||
extern gint prog_fd;
|
||||
extern gchar gtkrc_tmp[1024];
|
||||
|
|
|
@ -39,8 +39,13 @@ void demo_main(int argc, char **argv)
|
|||
{
|
||||
gchar buf[256];
|
||||
XID window;
|
||||
GtkWidget *w[NUM], *hb, *vb[5], *widg, *ww, *www, *l;
|
||||
int j, i;
|
||||
GtkWidget *widget, *table, *hbox;
|
||||
GSList *group;
|
||||
gchar *titles[2] = {"One","Two"};
|
||||
gchar *row1[2] = {"Eenie", "Meenie"};
|
||||
gchar *row2[2] = {"Mynie", "Moe"};
|
||||
gchar *row3[2] = {"Catcha", "Tiger"};
|
||||
gchar *row4[2] = {"By Its", "Toe"};
|
||||
|
||||
read(0, buf, 12);
|
||||
buf[12] = 0;
|
||||
|
@ -52,58 +57,64 @@ void demo_main(int argc, char **argv)
|
|||
gtk_rc_parse(gtkrc_tmp);
|
||||
|
||||
plug = gtk_plug_new(window);
|
||||
gtk_widget_show(plug);
|
||||
|
||||
hb = gtk_hbox_new(TRUE, 4);
|
||||
gtk_container_add(GTK_CONTAINER(plug), hb);
|
||||
gtk_widget_show(hb);
|
||||
table = gtk_table_new (4, 3, FALSE);
|
||||
gtk_container_add(GTK_CONTAINER(plug), table);
|
||||
|
||||
for(i=0; i<5;i++)
|
||||
{
|
||||
vb[i] = gtk_vbox_new(TRUE, 4);
|
||||
gtk_box_pack_start(GTK_BOX(hb), vb[i], TRUE, TRUE, 0);
|
||||
gtk_widget_show(vb[i]);
|
||||
}
|
||||
widget = gtk_label_new ("Selected themes from above will be tested by previewing here.");
|
||||
gtk_label_set_justify (GTK_LABEL (widget), GTK_JUSTIFY_LEFT);
|
||||
|
||||
j= 0;
|
||||
w[j++] = widg =
|
||||
gtk_button_new_with_label("A Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
w[j++] = widg =
|
||||
gtk_check_button_new_with_label("A Check Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
w[j++] = widg =
|
||||
gtk_radio_button_new_with_label(NULL, "A Radio Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
ww = gtk_menu_new();
|
||||
gtk_widget_show(ww);
|
||||
www = gtk_menu_item_new_with_label("Menu 1");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 2");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 3");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 4");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 5");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
w[j++] = widg =
|
||||
gtk_option_menu_new();
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(widg), ww);
|
||||
w[j++] = widg =
|
||||
gtk_gamma_curve_new();
|
||||
gtk_box_pack_start(GTK_BOX(vb[1]), widg , TRUE, TRUE, 0);
|
||||
/* column one */
|
||||
gtk_table_attach (GTK_TABLE (table), widget, 0, 3, 0, 1, 0, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
widget = gtk_button_new_with_label ("Sample Button");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
widget = gtk_check_button_new_with_label ("Sample Check Button");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, 0);
|
||||
widget = gtk_entry_new_with_max_length (50);
|
||||
gtk_entry_set_text (GTK_ENTRY (widget), "Sample Text Entry Field");
|
||||
gtk_widget_set_usize (widget, 70, -1);
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
|
||||
for (i=0; i< j; i++)
|
||||
gtk_widget_show(w[i]);
|
||||
/* column two */
|
||||
widget = gtk_radio_button_new_with_label (NULL, "Radio Button 1");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, GNOME_PAD_SMALL);
|
||||
|
||||
widget = gtk_radio_button_new_with_label (group, "Radio Button 2");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
widget = gtk_radio_button_new_with_label (group, "Radio Button 3");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
/* column three */
|
||||
widget = gtk_clist_new_with_titles (2, titles);
|
||||
// gtk_clist_set_border(GTK_CLIST(widget), GTK_SHADOW_OUT);
|
||||
gtk_clist_set_policy(GTK_CLIST(widget), GTK_POLICY_ALWAYS, GTK_POLICY_AUTOMATIC);
|
||||
gtk_clist_set_column_width (GTK_CLIST(widget), 0, 45);
|
||||
gtk_clist_set_column_width (GTK_CLIST(widget), 1, 45);
|
||||
gtk_clist_append (GTK_CLIST(widget), row1);
|
||||
gtk_clist_append (GTK_CLIST(widget), row2);
|
||||
gtk_clist_append (GTK_CLIST(widget), row3);
|
||||
gtk_clist_append (GTK_CLIST(widget), row4);
|
||||
gtk_widget_set_usize (widget, 160, -1);
|
||||
gtk_table_attach (GTK_TABLE (table), widget, 2, 3, 1, 4, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, 0);
|
||||
|
||||
gdk_input_add_full(0, GDK_INPUT_READ, demo_data_in, NULL, NULL);
|
||||
gtk_widget_show_all (plug);
|
||||
|
||||
gtk_main ();
|
||||
}
|
||||
|
|
|
@ -39,8 +39,13 @@ void demo_main(int argc, char **argv)
|
|||
{
|
||||
gchar buf[256];
|
||||
XID window;
|
||||
GtkWidget *w[NUM], *hb, *vb[5], *widg, *ww, *www, *l;
|
||||
int j, i;
|
||||
GtkWidget *widget, *table, *hbox;
|
||||
GSList *group;
|
||||
gchar *titles[2] = {"One","Two"};
|
||||
gchar *row1[2] = {"Eenie", "Meenie"};
|
||||
gchar *row2[2] = {"Mynie", "Moe"};
|
||||
gchar *row3[2] = {"Catcha", "Tiger"};
|
||||
gchar *row4[2] = {"By Its", "Toe"};
|
||||
|
||||
read(0, buf, 12);
|
||||
buf[12] = 0;
|
||||
|
@ -52,58 +57,64 @@ void demo_main(int argc, char **argv)
|
|||
gtk_rc_parse(gtkrc_tmp);
|
||||
|
||||
plug = gtk_plug_new(window);
|
||||
gtk_widget_show(plug);
|
||||
|
||||
hb = gtk_hbox_new(TRUE, 4);
|
||||
gtk_container_add(GTK_CONTAINER(plug), hb);
|
||||
gtk_widget_show(hb);
|
||||
table = gtk_table_new (4, 3, FALSE);
|
||||
gtk_container_add(GTK_CONTAINER(plug), table);
|
||||
|
||||
for(i=0; i<5;i++)
|
||||
{
|
||||
vb[i] = gtk_vbox_new(TRUE, 4);
|
||||
gtk_box_pack_start(GTK_BOX(hb), vb[i], TRUE, TRUE, 0);
|
||||
gtk_widget_show(vb[i]);
|
||||
}
|
||||
widget = gtk_label_new ("Selected themes from above will be tested by previewing here.");
|
||||
gtk_label_set_justify (GTK_LABEL (widget), GTK_JUSTIFY_LEFT);
|
||||
|
||||
j= 0;
|
||||
w[j++] = widg =
|
||||
gtk_button_new_with_label("A Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
w[j++] = widg =
|
||||
gtk_check_button_new_with_label("A Check Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
w[j++] = widg =
|
||||
gtk_radio_button_new_with_label(NULL, "A Radio Button");
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
ww = gtk_menu_new();
|
||||
gtk_widget_show(ww);
|
||||
www = gtk_menu_item_new_with_label("Menu 1");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 2");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 3");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 4");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
www = gtk_menu_item_new_with_label("Menu 5");
|
||||
gtk_widget_show(www);
|
||||
gtk_menu_append(GTK_MENU(ww), www);
|
||||
w[j++] = widg =
|
||||
gtk_option_menu_new();
|
||||
gtk_box_pack_start(GTK_BOX(vb[0]), widg , TRUE, TRUE, 0);
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(widg), ww);
|
||||
w[j++] = widg =
|
||||
gtk_gamma_curve_new();
|
||||
gtk_box_pack_start(GTK_BOX(vb[1]), widg , TRUE, TRUE, 0);
|
||||
/* column one */
|
||||
gtk_table_attach (GTK_TABLE (table), widget, 0, 3, 0, 1, 0, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
widget = gtk_button_new_with_label ("Sample Button");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
widget = gtk_check_button_new_with_label ("Sample Check Button");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, 0);
|
||||
widget = gtk_entry_new_with_max_length (50);
|
||||
gtk_entry_set_text (GTK_ENTRY (widget), "Sample Text Entry Field");
|
||||
gtk_widget_set_usize (widget, 70, -1);
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
|
||||
for (i=0; i< j; i++)
|
||||
gtk_widget_show(w[i]);
|
||||
/* column two */
|
||||
widget = gtk_radio_button_new_with_label (NULL, "Radio Button 1");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, GNOME_PAD_SMALL);
|
||||
|
||||
widget = gtk_radio_button_new_with_label (group, "Radio Button 2");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
widget = gtk_radio_button_new_with_label (group, "Radio Button 3");
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (widget));
|
||||
gtk_table_attach (GTK_TABLE (table), hbox, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
/* column three */
|
||||
widget = gtk_clist_new_with_titles (2, titles);
|
||||
// gtk_clist_set_border(GTK_CLIST(widget), GTK_SHADOW_OUT);
|
||||
gtk_clist_set_policy(GTK_CLIST(widget), GTK_POLICY_ALWAYS, GTK_POLICY_AUTOMATIC);
|
||||
gtk_clist_set_column_width (GTK_CLIST(widget), 0, 45);
|
||||
gtk_clist_set_column_width (GTK_CLIST(widget), 1, 45);
|
||||
gtk_clist_append (GTK_CLIST(widget), row1);
|
||||
gtk_clist_append (GTK_CLIST(widget), row2);
|
||||
gtk_clist_append (GTK_CLIST(widget), row3);
|
||||
gtk_clist_append (GTK_CLIST(widget), row4);
|
||||
gtk_widget_set_usize (widget, 160, -1);
|
||||
gtk_table_attach (GTK_TABLE (table), widget, 2, 3, 1, 4, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, 0);
|
||||
|
||||
gdk_input_add_full(0, GDK_INPUT_READ, demo_data_in, NULL, NULL);
|
||||
gtk_widget_show_all (plug);
|
||||
|
||||
gtk_main ();
|
||||
}
|
||||
|
|
|
@ -5,8 +5,11 @@ gchar *readme_current;
|
|||
GtkWidget *icon_display;
|
||||
GtkWidget *icon_current;
|
||||
GtkWidget *current_theme;
|
||||
GtkWidget *current_global_theme = NULL;
|
||||
GtkWidget *initial_theme = NULL;
|
||||
GtkWidget *last_theme;
|
||||
GtkWidget *system_list;
|
||||
GtkWidget *user_list;
|
||||
GtkWidget *preview_socket;
|
||||
gint prog_fd;
|
||||
gchar gtkrc_tmp[1024];
|
||||
GtkWidget *auto_preview;
|
||||
|
|
|
@ -5,8 +5,11 @@ gchar *readme_current;
|
|||
GtkWidget *icon_display;
|
||||
GtkWidget *icon_current;
|
||||
GtkWidget *current_theme;
|
||||
GtkWidget *current_global_theme = NULL;
|
||||
GtkWidget *initial_theme = NULL;
|
||||
GtkWidget *last_theme;
|
||||
GtkWidget *system_list;
|
||||
GtkWidget *user_list;
|
||||
GtkWidget *preview_socket;
|
||||
gint prog_fd;
|
||||
gchar gtkrc_tmp[1024];
|
||||
GtkWidget *auto_preview;
|
||||
|
|
|
@ -4,105 +4,112 @@
|
|||
|
||||
static GtkWidget *w;
|
||||
extern gint pid;
|
||||
|
||||
|
||||
void
|
||||
die_callback(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
kill (pid,9);
|
||||
}
|
||||
void
|
||||
auto_callback (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
make_main(void)
|
||||
{
|
||||
GtkWidget *evbox;
|
||||
GtkWidget *l1, *l2;
|
||||
GtkWidget *l2;
|
||||
GtkWidget *sw, *label, *socket;
|
||||
GtkWidget *box, *vbox, *hbox;
|
||||
GtkWidget *text, *frame, *button;
|
||||
GtkWidget *hbxo;
|
||||
|
||||
w = capplet_widget_new();
|
||||
gtk_container_border_width(GTK_CONTAINER(w), 0);
|
||||
|
||||
l1 = gtk_list_new();
|
||||
gtk_list_set_selection_mode(GTK_LIST(l1), GTK_SELECTION_SINGLE);
|
||||
gtk_container_border_width(GTK_CONTAINER(w), 5);
|
||||
|
||||
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||
frame = gtk_frame_new ("Available Themes");
|
||||
vbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_container_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
l2 = gtk_list_new();
|
||||
gtk_list_set_selection_mode(GTK_LIST(l2), GTK_SELECTION_SINGLE);
|
||||
hbxo = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_border_width (GTK_CONTAINER (hbxo), GNOME_PAD_SMALL);
|
||||
label = gtk_label_new ("Auto\nPreview");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
auto_preview = gtk_check_button_new ();
|
||||
|
||||
box = gtk_vbox_new(FALSE, 0);
|
||||
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (auto_preview), gnome_config_get_bool ("/theme-switcher-capplet/settings/auto=FALSE"));
|
||||
gtk_signal_connect (GTK_OBJECT (auto_preview), "toggled", GTK_SIGNAL_FUNC (auto_callback), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (auto_preview), label);
|
||||
gtk_box_pack_start (GTK_BOX (hbxo), auto_preview, FALSE, FALSE, 0);
|
||||
button = gtk_button_new_with_label ("Preview");
|
||||
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");
|
||||
|
||||
hbox = gtk_hbox_new(TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new("Installed System Themes");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_container_add(GTK_CONTAINER(sw), l1);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_ALWAYS);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new("Installed User Themes");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
||||
/* FIXME: this needs ot actually do something. */
|
||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_container_add(GTK_CONTAINER(sw), l2);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_ALWAYS);
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_widget_set_usize (sw, 120, -1);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_ALWAYS,
|
||||
GTK_POLICY_ALWAYS);
|
||||
gtk_widget_set_usize(sw, -1, 160);
|
||||
gtk_box_pack_start(GTK_BOX(box), sw, FALSE, FALSE, 0);
|
||||
|
||||
evbox = gtk_event_box_new();
|
||||
gtk_container_add(GTK_CONTAINER(sw), evbox);
|
||||
|
||||
socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), socket);
|
||||
/* gtk_widget_set_usize(socket, 640, 480);*/
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hbxo, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new ("Theme Information");
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_set_usize(vbox, 128, 128);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
icon_display = vbox;
|
||||
|
||||
evbox = gtk_viewport_new(NULL, NULL);
|
||||
gtk_widget_set_usize(evbox, 256, -1);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), evbox, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), evbox);
|
||||
gtk_container_border_width (GTK_CONTAINER (evbox), GNOME_PAD_SMALL);
|
||||
//gtk_widget_set_usize(evbox, 150, -1);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
text = gtk_xmhtml_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), text);
|
||||
/* gtk_box_pack_start(GTK_BOX(hbox), text, TRUE, TRUE, 0);*/
|
||||
|
||||
update_theme_entries(l1, l2);
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_border_width (GTK_CONTAINER (hbox), GNOME_PAD_SMALL);
|
||||
frame = gtk_frame_new ("Preview");
|
||||
gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
||||
/* in a gratuituous reuse of variable names... */
|
||||
sw = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (sw), GTK_SHADOW_IN);
|
||||
evbox = gtk_event_box_new();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), sw, TRUE, TRUE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(sw), evbox);
|
||||
socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), socket);
|
||||
update_theme_entries(l2);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "try",
|
||||
GTK_SIGNAL_FUNC (click_preview), NULL);
|
||||
GTK_SIGNAL_FUNC (click_try), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "ok",
|
||||
GTK_SIGNAL_FUNC (click_apply), NULL);
|
||||
GTK_SIGNAL_FUNC (click_ok), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "revert",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "cancel",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (w), box);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "destroy",
|
||||
(GtkSignalFunc) die_callback, NULL);
|
||||
|
||||
readme_display = text;
|
||||
readme_current = NULL;
|
||||
icon_current = NULL;
|
||||
current_theme = NULL;
|
||||
system_list = l1;
|
||||
user_list = l2;
|
||||
last_theme = NULL;
|
||||
system_list = l2;
|
||||
preview_socket = socket;
|
||||
|
||||
gtk_widget_realize(socket);
|
||||
|
@ -113,7 +120,7 @@ make_main(void)
|
|||
void
|
||||
click_update(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
update_theme_entries(system_list, user_list);
|
||||
update_theme_entries(system_list);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -121,23 +128,28 @@ click_preview(GtkWidget *widget, gpointer data)
|
|||
{
|
||||
gchar *rc;
|
||||
|
||||
widget = current_theme;
|
||||
if (!widget)
|
||||
if (current_theme == last_theme)
|
||||
return;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
last_theme = current_theme;
|
||||
if (!current_theme)
|
||||
return;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(current_theme), "rc");
|
||||
test_theme(rc);
|
||||
send_reread();
|
||||
}
|
||||
|
||||
void
|
||||
click_apply(GtkWidget *widget, gpointer data)
|
||||
click_try(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc;
|
||||
gchar *dir, cmd[10240];
|
||||
|
||||
if (current_theme == current_global_theme)
|
||||
return;
|
||||
widget = current_theme;
|
||||
if (!widget)
|
||||
return;
|
||||
current_global_theme = current_theme;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
dir = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "dir");
|
||||
|
||||
|
@ -153,19 +165,61 @@ click_apply(GtkWidget *widget, gpointer data)
|
|||
system(cmd);
|
||||
gdk_error_warnings = 1;
|
||||
}
|
||||
void
|
||||
click_ok(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
click_try (widget, data);
|
||||
gnome_config_set_bool ("/theme-switcher-capplet/settings/auto",GTK_TOGGLE_BUTTON (auto_preview)->active);
|
||||
gnome_config_set_string ("/theme-switcher-capplet/settings/theme", gtk_object_get_data (GTK_OBJECT (current_theme), "name"));
|
||||
gnome_config_sync ();
|
||||
}
|
||||
void
|
||||
click_revert(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc;
|
||||
gchar *dir, cmd[10240];
|
||||
|
||||
if ((current_global_theme == initial_theme) || (!current_global_theme))
|
||||
return;
|
||||
widget = initial_theme;
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
current_global_theme = widget;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
dir = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "dir");
|
||||
|
||||
/* hack for enlightenment only!!!! */
|
||||
/* FIXME: restart what ever windowmanager you have! */
|
||||
g_snprintf(cmd, sizeof(cmd), "eesh -e \"restart %s/e\"", dir);
|
||||
printf("%s\n", cmd);
|
||||
send_reread();
|
||||
use_theme(rc);
|
||||
gdk_error_warnings = 0;
|
||||
signal_apply_theme(widget);
|
||||
gdk_flush();
|
||||
system(cmd);
|
||||
gdk_error_warnings = 1;
|
||||
gtk_list_select_child (GTK_LIST (system_list), initial_theme);
|
||||
}
|
||||
void
|
||||
click_entry(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc, *name, *readme, *icon, *new_readme, buf[1024];
|
||||
gchar *rc, *name, *readme, *new_readme, buf[1024];
|
||||
FILE *f;
|
||||
|
||||
|
||||
name = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "name");
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
readme = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "readme");
|
||||
icon = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "icon");
|
||||
|
||||
/* boy is this hackish! */
|
||||
if (widget != initial_theme)
|
||||
gtk_list_item_deselect (GTK_LIST_ITEM (initial_theme));
|
||||
|
||||
if (initial_theme)
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (w), TRUE);
|
||||
else
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (w), FALSE);
|
||||
|
||||
if (readme_current)
|
||||
|
@ -195,19 +249,11 @@ click_entry(GtkWidget *widget, gpointer data)
|
|||
}
|
||||
readme_current = new_readme;
|
||||
}
|
||||
if (icon_current)
|
||||
gtk_widget_destroy(icon_current);
|
||||
icon_current = NULL;
|
||||
if (isfile(icon))
|
||||
{
|
||||
icon_current = gnome_pixmap_new_from_file(icon);
|
||||
if (icon_current)
|
||||
{
|
||||
gtk_container_add(GTK_CONTAINER(icon_display), icon_current);
|
||||
gtk_widget_show(icon_current);
|
||||
}
|
||||
}
|
||||
|
||||
current_theme = widget;
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -227,23 +273,37 @@ delete_entry(GtkWidget *widget, gpointer data)
|
|||
if (current_theme == widget)
|
||||
current_theme = NULL;
|
||||
}
|
||||
static gint sort_alpha(const void *a, const void *b)
|
||||
{
|
||||
GtkBin *A, *B;
|
||||
|
||||
A = GTK_BIN (a);
|
||||
B = GTK_BIN (b);
|
||||
|
||||
return strcmp((char *)GTK_LABEL (A->child)->label, (char *)GTK_LABEL (B->child)->label);
|
||||
}
|
||||
|
||||
void
|
||||
update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
||||
update_theme_entries(GtkWidget *disp_list)
|
||||
{
|
||||
ThemeEntry *te;
|
||||
gint num;
|
||||
GList *list;
|
||||
int i;
|
||||
GtkWidget *item;
|
||||
gchar *d_theme = gnome_config_get_string ("/theme-switcher-capplet/settings/theme=Default");
|
||||
|
||||
list = NULL;
|
||||
gtk_list_clear_items(GTK_LIST(system_list), 0, -1);
|
||||
gtk_list_clear_items(GTK_LIST(disp_list), 0, -1);
|
||||
te = list_system_themes(&num);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
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));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "rc", g_strdup(te[i].rc));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "dir", g_strdup(te[i].dir));
|
||||
|
@ -253,17 +313,18 @@ update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
|||
GTK_SIGNAL_FUNC(click_entry), NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(item), "destroy",
|
||||
GTK_SIGNAL_FUNC(delete_entry), NULL);
|
||||
list = g_list_append(list, item);
|
||||
list = g_list_insert_sorted(list, item, sort_alpha);
|
||||
}
|
||||
gtk_list_append_items(GTK_LIST(system_list), list);
|
||||
|
||||
list = NULL;
|
||||
gtk_list_clear_items(GTK_LIST(user_list), 0, -1);
|
||||
te = list_user_themes(&num);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
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));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "rc", g_strdup(te[i].rc));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "dir", g_strdup(te[i].dir));
|
||||
|
@ -273,9 +334,12 @@ update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
|||
GTK_SIGNAL_FUNC(click_entry), NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(item), "destroy",
|
||||
GTK_SIGNAL_FUNC(delete_entry), NULL);
|
||||
list = g_list_append(list, item);
|
||||
list = g_list_insert_sorted(list, item, sort_alpha);
|
||||
}
|
||||
gtk_list_append_items(GTK_LIST(user_list), list);
|
||||
|
||||
gtk_list_select_child (GTK_LIST (system_list), initial_theme);
|
||||
gtk_list_append_items(GTK_LIST(disp_list), list);
|
||||
|
||||
free_theme_list(te, num);
|
||||
g_free (d_theme);
|
||||
}
|
||||
|
|
|
@ -4,105 +4,112 @@
|
|||
|
||||
static GtkWidget *w;
|
||||
extern gint pid;
|
||||
|
||||
|
||||
void
|
||||
die_callback(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
kill (pid,9);
|
||||
}
|
||||
void
|
||||
auto_callback (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
make_main(void)
|
||||
{
|
||||
GtkWidget *evbox;
|
||||
GtkWidget *l1, *l2;
|
||||
GtkWidget *l2;
|
||||
GtkWidget *sw, *label, *socket;
|
||||
GtkWidget *box, *vbox, *hbox;
|
||||
GtkWidget *text, *frame, *button;
|
||||
GtkWidget *hbxo;
|
||||
|
||||
w = capplet_widget_new();
|
||||
gtk_container_border_width(GTK_CONTAINER(w), 0);
|
||||
|
||||
l1 = gtk_list_new();
|
||||
gtk_list_set_selection_mode(GTK_LIST(l1), GTK_SELECTION_SINGLE);
|
||||
gtk_container_border_width(GTK_CONTAINER(w), 5);
|
||||
|
||||
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||
frame = gtk_frame_new ("Available Themes");
|
||||
vbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_container_border_width (GTK_CONTAINER (vbox), GNOME_PAD_SMALL);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
l2 = gtk_list_new();
|
||||
gtk_list_set_selection_mode(GTK_LIST(l2), GTK_SELECTION_SINGLE);
|
||||
hbxo = gtk_vbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_border_width (GTK_CONTAINER (hbxo), GNOME_PAD_SMALL);
|
||||
label = gtk_label_new ("Auto\nPreview");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
auto_preview = gtk_check_button_new ();
|
||||
|
||||
box = gtk_vbox_new(FALSE, 0);
|
||||
gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (auto_preview), gnome_config_get_bool ("/theme-switcher-capplet/settings/auto=FALSE"));
|
||||
gtk_signal_connect (GTK_OBJECT (auto_preview), "toggled", GTK_SIGNAL_FUNC (auto_callback), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (auto_preview), label);
|
||||
gtk_box_pack_start (GTK_BOX (hbxo), auto_preview, FALSE, FALSE, 0);
|
||||
button = gtk_button_new_with_label ("Preview");
|
||||
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");
|
||||
|
||||
hbox = gtk_hbox_new(TRUE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, TRUE, TRUE, 0);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new("Installed System Themes");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_container_add(GTK_CONTAINER(sw), l1);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_ALWAYS);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new("Installed User Themes");
|
||||
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
|
||||
/* FIXME: this needs ot actually do something. */
|
||||
gtk_box_pack_start (GTK_BOX (hbxo), button, FALSE, FALSE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_container_add(GTK_CONTAINER(sw), l2);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_ALWAYS);
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_widget_set_usize (sw, 120, -1);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
|
||||
|
||||
sw = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_ALWAYS,
|
||||
GTK_POLICY_ALWAYS);
|
||||
gtk_widget_set_usize(sw, -1, 160);
|
||||
gtk_box_pack_start(GTK_BOX(box), sw, FALSE, FALSE, 0);
|
||||
|
||||
evbox = gtk_event_box_new();
|
||||
gtk_container_add(GTK_CONTAINER(sw), evbox);
|
||||
|
||||
socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), socket);
|
||||
/* gtk_widget_set_usize(socket, 640, 480);*/
|
||||
|
||||
hbox = gtk_hbox_new(FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), hbxo, FALSE, FALSE, 0);
|
||||
|
||||
frame = gtk_frame_new ("Theme Information");
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
gtk_widget_set_usize(vbox, 128, 128);
|
||||
gtk_container_add(GTK_CONTAINER(frame), vbox);
|
||||
icon_display = vbox;
|
||||
|
||||
evbox = gtk_viewport_new(NULL, NULL);
|
||||
gtk_widget_set_usize(evbox, 256, -1);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), evbox, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), evbox);
|
||||
gtk_container_border_width (GTK_CONTAINER (evbox), GNOME_PAD_SMALL);
|
||||
//gtk_widget_set_usize(evbox, 150, -1);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
text = gtk_xmhtml_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), text);
|
||||
/* gtk_box_pack_start(GTK_BOX(hbox), text, TRUE, TRUE, 0);*/
|
||||
|
||||
update_theme_entries(l1, l2);
|
||||
hbox = gtk_hbox_new (FALSE, GNOME_PAD_SMALL);
|
||||
gtk_container_border_width (GTK_CONTAINER (hbox), GNOME_PAD_SMALL);
|
||||
frame = gtk_frame_new ("Preview");
|
||||
gtk_box_pack_start(GTK_BOX(box), frame, TRUE, TRUE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
||||
/* in a gratuituous reuse of variable names... */
|
||||
sw = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (sw), GTK_SHADOW_IN);
|
||||
evbox = gtk_event_box_new();
|
||||
gtk_box_pack_start(GTK_BOX(hbox), sw, TRUE, TRUE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(sw), evbox);
|
||||
socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(evbox), socket);
|
||||
update_theme_entries(l2);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "try",
|
||||
GTK_SIGNAL_FUNC (click_preview), NULL);
|
||||
GTK_SIGNAL_FUNC (click_try), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "ok",
|
||||
GTK_SIGNAL_FUNC (click_apply), NULL);
|
||||
GTK_SIGNAL_FUNC (click_ok), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "revert",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "cancel",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (w), box);
|
||||
gtk_signal_connect (GTK_OBJECT (w), "destroy",
|
||||
(GtkSignalFunc) die_callback, NULL);
|
||||
|
||||
readme_display = text;
|
||||
readme_current = NULL;
|
||||
icon_current = NULL;
|
||||
current_theme = NULL;
|
||||
system_list = l1;
|
||||
user_list = l2;
|
||||
last_theme = NULL;
|
||||
system_list = l2;
|
||||
preview_socket = socket;
|
||||
|
||||
gtk_widget_realize(socket);
|
||||
|
@ -113,7 +120,7 @@ make_main(void)
|
|||
void
|
||||
click_update(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
update_theme_entries(system_list, user_list);
|
||||
update_theme_entries(system_list);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -121,23 +128,28 @@ click_preview(GtkWidget *widget, gpointer data)
|
|||
{
|
||||
gchar *rc;
|
||||
|
||||
widget = current_theme;
|
||||
if (!widget)
|
||||
if (current_theme == last_theme)
|
||||
return;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
last_theme = current_theme;
|
||||
if (!current_theme)
|
||||
return;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(current_theme), "rc");
|
||||
test_theme(rc);
|
||||
send_reread();
|
||||
}
|
||||
|
||||
void
|
||||
click_apply(GtkWidget *widget, gpointer data)
|
||||
click_try(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc;
|
||||
gchar *dir, cmd[10240];
|
||||
|
||||
if (current_theme == current_global_theme)
|
||||
return;
|
||||
widget = current_theme;
|
||||
if (!widget)
|
||||
return;
|
||||
current_global_theme = current_theme;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
dir = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "dir");
|
||||
|
||||
|
@ -153,19 +165,61 @@ click_apply(GtkWidget *widget, gpointer data)
|
|||
system(cmd);
|
||||
gdk_error_warnings = 1;
|
||||
}
|
||||
void
|
||||
click_ok(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
click_try (widget, data);
|
||||
gnome_config_set_bool ("/theme-switcher-capplet/settings/auto",GTK_TOGGLE_BUTTON (auto_preview)->active);
|
||||
gnome_config_set_string ("/theme-switcher-capplet/settings/theme", gtk_object_get_data (GTK_OBJECT (current_theme), "name"));
|
||||
gnome_config_sync ();
|
||||
}
|
||||
void
|
||||
click_revert(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc;
|
||||
gchar *dir, cmd[10240];
|
||||
|
||||
if ((current_global_theme == initial_theme) || (!current_global_theme))
|
||||
return;
|
||||
widget = initial_theme;
|
||||
if (!widget)
|
||||
return;
|
||||
|
||||
current_global_theme = widget;
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
dir = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "dir");
|
||||
|
||||
/* hack for enlightenment only!!!! */
|
||||
/* FIXME: restart what ever windowmanager you have! */
|
||||
g_snprintf(cmd, sizeof(cmd), "eesh -e \"restart %s/e\"", dir);
|
||||
printf("%s\n", cmd);
|
||||
send_reread();
|
||||
use_theme(rc);
|
||||
gdk_error_warnings = 0;
|
||||
signal_apply_theme(widget);
|
||||
gdk_flush();
|
||||
system(cmd);
|
||||
gdk_error_warnings = 1;
|
||||
gtk_list_select_child (GTK_LIST (system_list), initial_theme);
|
||||
}
|
||||
void
|
||||
click_entry(GtkWidget *widget, gpointer data)
|
||||
{
|
||||
gchar *rc, *name, *readme, *icon, *new_readme, buf[1024];
|
||||
gchar *rc, *name, *readme, *new_readme, buf[1024];
|
||||
FILE *f;
|
||||
|
||||
|
||||
name = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "name");
|
||||
rc = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "rc");
|
||||
readme = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "readme");
|
||||
icon = (gchar *)gtk_object_get_data(GTK_OBJECT(widget), "icon");
|
||||
|
||||
/* boy is this hackish! */
|
||||
if (widget != initial_theme)
|
||||
gtk_list_item_deselect (GTK_LIST_ITEM (initial_theme));
|
||||
|
||||
if (initial_theme)
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (w), TRUE);
|
||||
else
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (w), FALSE);
|
||||
|
||||
if (readme_current)
|
||||
|
@ -195,19 +249,11 @@ click_entry(GtkWidget *widget, gpointer data)
|
|||
}
|
||||
readme_current = new_readme;
|
||||
}
|
||||
if (icon_current)
|
||||
gtk_widget_destroy(icon_current);
|
||||
icon_current = NULL;
|
||||
if (isfile(icon))
|
||||
{
|
||||
icon_current = gnome_pixmap_new_from_file(icon);
|
||||
if (icon_current)
|
||||
{
|
||||
gtk_container_add(GTK_CONTAINER(icon_display), icon_current);
|
||||
gtk_widget_show(icon_current);
|
||||
}
|
||||
}
|
||||
|
||||
current_theme = widget;
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -227,23 +273,37 @@ delete_entry(GtkWidget *widget, gpointer data)
|
|||
if (current_theme == widget)
|
||||
current_theme = NULL;
|
||||
}
|
||||
static gint sort_alpha(const void *a, const void *b)
|
||||
{
|
||||
GtkBin *A, *B;
|
||||
|
||||
A = GTK_BIN (a);
|
||||
B = GTK_BIN (b);
|
||||
|
||||
return strcmp((char *)GTK_LABEL (A->child)->label, (char *)GTK_LABEL (B->child)->label);
|
||||
}
|
||||
|
||||
void
|
||||
update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
||||
update_theme_entries(GtkWidget *disp_list)
|
||||
{
|
||||
ThemeEntry *te;
|
||||
gint num;
|
||||
GList *list;
|
||||
int i;
|
||||
GtkWidget *item;
|
||||
gchar *d_theme = gnome_config_get_string ("/theme-switcher-capplet/settings/theme=Default");
|
||||
|
||||
list = NULL;
|
||||
gtk_list_clear_items(GTK_LIST(system_list), 0, -1);
|
||||
gtk_list_clear_items(GTK_LIST(disp_list), 0, -1);
|
||||
te = list_system_themes(&num);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
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));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "rc", g_strdup(te[i].rc));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "dir", g_strdup(te[i].dir));
|
||||
|
@ -253,17 +313,18 @@ update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
|||
GTK_SIGNAL_FUNC(click_entry), NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(item), "destroy",
|
||||
GTK_SIGNAL_FUNC(delete_entry), NULL);
|
||||
list = g_list_append(list, item);
|
||||
list = g_list_insert_sorted(list, item, sort_alpha);
|
||||
}
|
||||
gtk_list_append_items(GTK_LIST(system_list), list);
|
||||
|
||||
list = NULL;
|
||||
gtk_list_clear_items(GTK_LIST(user_list), 0, -1);
|
||||
te = list_user_themes(&num);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
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));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "rc", g_strdup(te[i].rc));
|
||||
gtk_object_set_data(GTK_OBJECT(item), "dir", g_strdup(te[i].dir));
|
||||
|
@ -273,9 +334,12 @@ update_theme_entries(GtkWidget *system_list, GtkWidget *user_list)
|
|||
GTK_SIGNAL_FUNC(click_entry), NULL);
|
||||
gtk_signal_connect(GTK_OBJECT(item), "destroy",
|
||||
GTK_SIGNAL_FUNC(delete_entry), NULL);
|
||||
list = g_list_append(list, item);
|
||||
list = g_list_insert_sorted(list, item, sort_alpha);
|
||||
}
|
||||
gtk_list_append_items(GTK_LIST(user_list), list);
|
||||
|
||||
gtk_list_select_child (GTK_LIST (system_list), initial_theme);
|
||||
gtk_list_append_items(GTK_LIST(disp_list), list);
|
||||
|
||||
free_theme_list(te, num);
|
||||
g_free (d_theme);
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ main(int argc, char **argv)
|
|||
|
||||
set_tmp_rc();
|
||||
do_demo(argc, argv);
|
||||
gnome_capplet_init ("DeskArt", NULL, argc, argv, 0, NULL);
|
||||
gnome_capplet_init ("theme-switcher-capplet", NULL, argc, argv, 0, NULL);
|
||||
|
||||
w = make_main();
|
||||
gtk_widget_show_all(w);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue