Partial revamp to use bonobo control instead of bug-prone custom socket;
2001-12-08 Richard Hestilow <hestilow@ximian.com> * Partial revamp to use bonobo control instead of bug-prone custom socket; also port away from libcapplet.
This commit is contained in:
parent
5146b73151
commit
bf1d38501d
10 changed files with 371 additions and 110 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-12-08 Richard Hestilow <hestilow@ximian.com>
|
||||
|
||||
* Partial revamp to use bonobo control instead of bug-prone
|
||||
custom socket; also port away from libcapplet.
|
||||
|
||||
2001-10-13 Bradford Hovinen <hovinen@ximian.com>
|
||||
|
||||
* lister.c (edit_file_to_use): Be paranoid about what we have read
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
SUBDIRS = control
|
||||
|
||||
cappletname = gtk-theme-selector
|
||||
cappletgroup = "Advanced/"
|
||||
bin_PROGRAMS = gtk-theme-selector-capplet
|
||||
|
@ -10,7 +12,6 @@ gtk_theme_selector_capplet_SOURCES = \
|
|||
lister.c \
|
||||
main.c \
|
||||
signals.c \
|
||||
demo.c \
|
||||
gui.c \
|
||||
install.c
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<oaf_info>
|
||||
|
||||
<oaf_server iid="OAFIID:GNOME_Theme_PreviewFactory" type="exe"
|
||||
location="gnome-theme-preview">
|
||||
<oaf_attribute name="repo_ids" type="stringv">
|
||||
<item value="IDL:Bonobo/GenericFactory:1.0"/>
|
||||
</oaf_attribute>
|
||||
<oaf_attribute name="name" type="string" value="GNOME Theme Preview Factory"/>
|
||||
<oaf_attribute name="description" type="string" value="Factory for gnome theme preview controls"/>
|
||||
</oaf_server>
|
||||
|
||||
<oaf_server iid="OAFIID:Bonobo_Sample_Entry" type="factory"
|
||||
location="OAFIID:Bonobo_Sample_ControlFactory">
|
||||
<oaf_attribute name="repo_ids" type="stringv">
|
||||
<item value="IDL:Bonobo/Unknown:1.0"/>
|
||||
<item value="IDL:Bonobo/Control:1.0"/>
|
||||
</oaf_attribute>
|
||||
<oaf_attribute name="name" type="string" value="Gnome Theme Preview"/>
|
||||
<oaf_attribute name="description" type="string" value="A preview for gtk themes"/>
|
||||
</oaf_server>
|
||||
|
||||
</oaf_info>
|
||||
|
20
capplets/theme-switcher/control/Makefile.am
Normal file
20
capplets/theme-switcher/control/Makefile.am
Normal file
|
@ -0,0 +1,20 @@
|
|||
bin_PROGRAMS = gnome-theme-preview
|
||||
|
||||
INCLUDES = \
|
||||
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
|
||||
-I$(top_srcdir) \
|
||||
@CONTROL_CFLAGS@
|
||||
|
||||
gnome_theme_preview_SOURCES = \
|
||||
control.c
|
||||
|
||||
gnome_theme_preview_LDADD = \
|
||||
@CONTROL_LIBS@
|
||||
|
||||
serverdir = $(libdir)/bonobo/servers
|
||||
server_in_files = GNOME_Theme_Preview.server.in
|
||||
server_DATA = $(server_in_files:.server.in=.server)
|
||||
|
||||
@INTLTOOL_SERVER_RULE@
|
||||
|
||||
EXTRA_DIST = $(server_in_files) $(server_DATA)
|
189
capplets/theme-switcher/control/control.c
Normal file
189
capplets/theme-switcher/control/control.c
Normal file
|
@ -0,0 +1,189 @@
|
|||
#include <config.h>
|
||||
#include <libbonoboui.h>
|
||||
|
||||
static gchar* current_theme = NULL;
|
||||
static gchar **new_rc_files = NULL;
|
||||
static gint new_count = 0;
|
||||
|
||||
#define GNOME_PAD_SMALL 4
|
||||
|
||||
static GtkWidget*
|
||||
create_form (void)
|
||||
{
|
||||
GtkWidget *widget, *table, *hbox;
|
||||
GtkWidget *scrolled_window, *menubar, *menu;
|
||||
GSList *group;
|
||||
gchar *titles[2] = {N_("One"),N_("Two")};
|
||||
/* just 8 short names that will serve as samples for titles in demo */
|
||||
gchar *row1[2] = {N_("Eenie"), N_("Meenie")};
|
||||
gchar *row2[2] = {N_("Mynie"), N_("Moe")};
|
||||
gchar *row3[2] = {N_("Catcha"), N_("Tiger")};
|
||||
gchar *row4[2] = {N_("By Its"), N_("Toe")};
|
||||
gchar **rc_files;
|
||||
gint rc_file_count;
|
||||
gchar *home_dir;
|
||||
gint i;
|
||||
|
||||
for (i=0;i<2;i++) {
|
||||
titles[i]=_(titles[i]);
|
||||
row1[i]=_(row1[i]);
|
||||
row2[i]=_(row2[i]);
|
||||
row3[i]=_(row3[i]);
|
||||
row4[i]=_(row4[i]);
|
||||
}
|
||||
|
||||
/* Strip out ~/.gtkrc from the set of initial default files.
|
||||
* to suppress reading of the previous rc file.
|
||||
*/
|
||||
|
||||
rc_files = gtk_rc_get_default_files();
|
||||
for (rc_file_count = 0; rc_files[rc_file_count]; rc_file_count++)
|
||||
/* Nothing */;
|
||||
|
||||
new_rc_files = g_new (gchar *, rc_file_count + 2);
|
||||
|
||||
home_dir = g_get_home_dir();
|
||||
new_count = 0;
|
||||
|
||||
for (i = 0; i<rc_file_count; i++)
|
||||
{
|
||||
if (strncmp (rc_files[i], home_dir, strlen (home_dir)) != 0)
|
||||
new_rc_files[new_count++] = g_strdup (rc_files[i]);
|
||||
}
|
||||
new_rc_files[new_count++] = NULL;
|
||||
new_rc_files[new_count] = NULL;
|
||||
|
||||
gtk_rc_set_default_files (new_rc_files);
|
||||
|
||||
table = gtk_table_new (5, 3, FALSE);
|
||||
|
||||
widget = gtk_label_new (_("Selected themes from above will be tested by previewing here."));
|
||||
gtk_label_set_justify (GTK_LABEL (widget), GTK_JUSTIFY_LEFT);
|
||||
gtk_table_attach (GTK_TABLE (table), widget, 0, 3, 0, 1, 0, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
|
||||
/* column one */
|
||||
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, 2, 3, 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, 3, 4, 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, 4, 5, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
|
||||
/* column two */
|
||||
|
||||
menubar = gtk_menu_bar_new();
|
||||
gtk_table_attach (GTK_TABLE (table), menubar, 1, 2, 2, 3, 0, 0, GNOME_PAD_SMALL, GNOME_PAD_SMALL);
|
||||
|
||||
widget = gtk_menu_item_new_with_label(_("Submenu"));
|
||||
gtk_menu_bar_append(GTK_MENU_BAR(menubar), widget);
|
||||
|
||||
menu = gtk_menu_new();
|
||||
gtk_menu_item_set_submenu(GTK_MENU_ITEM(widget), menu);
|
||||
widget = gtk_menu_item_new_with_label(_("Item 1"));
|
||||
gtk_menu_append(GTK_MENU(menu), widget);
|
||||
widget = gtk_menu_item_new_with_label(_("Another item"));
|
||||
gtk_menu_append(GTK_MENU(menu), widget);
|
||||
|
||||
|
||||
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, 3, 4, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
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, 4, 5, GTK_EXPAND | GTK_FILL, 0, 0, 0);
|
||||
|
||||
/* column three */
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table), scrolled_window, 2, 3, 2, 5, GTK_EXPAND | GTK_FILL, 0, GNOME_PAD_SMALL, 0);
|
||||
|
||||
widget = gtk_clist_new_with_titles (2, titles);
|
||||
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_container_add (GTK_CONTAINER (scrolled_window), widget);
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
static void
|
||||
get_prop_cb (BonoboPropertyBag *bag, BonoboArg *arg, guint arg_id,
|
||||
CORBA_Environment *ev, gpointer data)
|
||||
{
|
||||
BONOBO_ARG_SET_STRING (arg, current_theme);
|
||||
}
|
||||
|
||||
static void
|
||||
set_prop_cb (BonoboPropertyBag *bag, const BonoboArg *arg, guint arg_id,
|
||||
CORBA_Environment *ev, GtkWidget *form)
|
||||
{
|
||||
if (current_theme)
|
||||
g_free (current_theme);
|
||||
current_theme = g_strdup (BONOBO_ARG_GET_STRING (arg));
|
||||
g_print ("Set to: %s\n", current_theme);
|
||||
g_free (new_rc_files[new_count - 1]);
|
||||
new_rc_files[new_count - 1] = g_strdup (current_theme);
|
||||
gtk_rc_set_default_files (new_rc_files);
|
||||
gtk_rc_reparse_all_for_settings (gtk_settings_get_default (), TRUE);
|
||||
gtk_widget_reset_rc_styles (form);
|
||||
}
|
||||
|
||||
BonoboObject *
|
||||
gnome_theme_preview_new (void)
|
||||
{
|
||||
BonoboPropertyBag *pb;
|
||||
BonoboControl *control;
|
||||
GtkWidget *form;
|
||||
|
||||
form = create_form ();
|
||||
gtk_widget_show_all (form);
|
||||
|
||||
control = bonobo_control_new (form);
|
||||
pb = bonobo_property_bag_new (get_prop_cb, set_prop_cb, form);
|
||||
bonobo_property_bag_add (pb, "theme", 0, BONOBO_ARG_STRING, NULL,
|
||||
"The currently previewed theme",
|
||||
BONOBO_PROPERTY_READABLE |
|
||||
BONOBO_PROPERTY_WRITEABLE);
|
||||
bonobo_control_set_properties (control, BONOBO_OBJREF (pb), NULL);
|
||||
bonobo_object_unref (BONOBO_OBJECT (pb));
|
||||
|
||||
return BONOBO_OBJECT (control);
|
||||
}
|
||||
|
||||
static BonoboObject *
|
||||
control_factory (BonoboGenericFactory *factory, const char *id, gpointer data)
|
||||
{
|
||||
BonoboObject *object = NULL;
|
||||
|
||||
g_return_val_if_fail (id != NULL, NULL);
|
||||
|
||||
if (!strcmp (id, "OAFIID:GNOME_Theme_Preview"))
|
||||
object = gnome_theme_preview_new ();
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
BONOBO_ACTIVATION_FACTORY ("OAFIID:GNOME_Theme_PreviewFactory",
|
||||
"gnome-theme-preview", VERSION,
|
||||
control_factory, NULL);
|
||||
|
|
@ -7,6 +7,7 @@
|
|||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <fcntl.h>
|
||||
#include <bonobo.h>
|
||||
|
||||
typedef struct _theme_entry
|
||||
{
|
||||
|
@ -61,8 +62,6 @@ make_main(void);
|
|||
void
|
||||
update_theme_entries(GtkWidget *disp_list);
|
||||
void
|
||||
signal_apply_theme(GtkWidget *widget);
|
||||
void
|
||||
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
||||
void
|
||||
set_tmp_rc(void);
|
||||
|
@ -72,14 +71,6 @@ void
|
|||
test_theme(gchar *theme, gchar *font);
|
||||
gchar *
|
||||
install_theme(gchar *file);
|
||||
gint
|
||||
do_demo(int argc, char **argv);
|
||||
void
|
||||
send_socket(void);
|
||||
void
|
||||
send_reread(void);
|
||||
|
||||
|
||||
extern GtkWidget *preview_socket;
|
||||
extern gint prog_fd;
|
||||
extern GtkWidget *preview_control;
|
||||
extern gchar gtkrc_tmp[1024];
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <fcntl.h>
|
||||
#include <bonobo.h>
|
||||
|
||||
typedef struct _theme_entry
|
||||
{
|
||||
|
@ -61,8 +62,6 @@ make_main(void);
|
|||
void
|
||||
update_theme_entries(GtkWidget *disp_list);
|
||||
void
|
||||
signal_apply_theme(GtkWidget *widget);
|
||||
void
|
||||
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
||||
void
|
||||
set_tmp_rc(void);
|
||||
|
@ -72,14 +71,6 @@ void
|
|||
test_theme(gchar *theme, gchar *font);
|
||||
gchar *
|
||||
install_theme(gchar *file);
|
||||
gint
|
||||
do_demo(int argc, char **argv);
|
||||
void
|
||||
send_socket(void);
|
||||
void
|
||||
send_reread(void);
|
||||
|
||||
|
||||
extern GtkWidget *preview_socket;
|
||||
extern gint prog_fd;
|
||||
extern GtkWidget *preview_control;
|
||||
extern gchar gtkrc_tmp[1024];
|
||||
|
|
|
@ -4,9 +4,10 @@
|
|||
#endif
|
||||
|
||||
#include "da.h"
|
||||
#include "capplet-widget.h"
|
||||
#include <signal.h>
|
||||
|
||||
GtkWidget *preview_control;
|
||||
|
||||
static gboolean ignore_change = FALSE;
|
||||
|
||||
static GtkWidget *install_theme_file_sel;
|
||||
|
@ -38,6 +39,21 @@ click_revert(GtkWidget *widget, gpointer data);
|
|||
static void
|
||||
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
||||
gpointer data);
|
||||
static void
|
||||
state_changed (gboolean state);
|
||||
static void
|
||||
response_cb (GtkDialog *dialog, GtkResponseType response, gpointer data);
|
||||
|
||||
void
|
||||
send_reread(void)
|
||||
{
|
||||
if (!(current_theme && current_theme->rc))
|
||||
return;
|
||||
|
||||
bonobo_widget_set_property (BONOBO_WIDGET (preview_control),
|
||||
"theme", TC_CORBA_string,
|
||||
gtkrc_tmp, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
auto_callback (GtkWidget *widget, gpointer data)
|
||||
|
@ -45,7 +61,7 @@ auto_callback (GtkWidget *widget, gpointer data)
|
|||
if (ignore_change == FALSE) {
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,7 +69,7 @@ static void
|
|||
font_callback (GtkWidget *widget, gchar *font, gpointer data)
|
||||
{
|
||||
if (ignore_change == FALSE) {
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
}
|
||||
|
@ -62,7 +78,7 @@ static void
|
|||
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
if (ignore_change == FALSE) {
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
if (!GTK_TOGGLE_BUTTON (font_cbox)->active)
|
||||
|
@ -170,16 +186,6 @@ install_theme_callback (GtkWidget *widget, gpointer data)
|
|||
|
||||
}
|
||||
|
||||
static gint
|
||||
delete_capplet (GtkWidget *widget, GdkEvent *event, gpointer data)
|
||||
{
|
||||
/* We don't want the toplevel window destroyed until
|
||||
* our child exits.
|
||||
*/
|
||||
close(prog_fd);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
make_main(void)
|
||||
{
|
||||
|
@ -188,9 +194,16 @@ make_main(void)
|
|||
GtkWidget *frame, *button;
|
||||
GtkWidget *button_vbox;
|
||||
gboolean default_used;
|
||||
BonoboUIContainer *container;
|
||||
|
||||
capplet_widget = capplet_widget_new();
|
||||
gtk_container_set_border_width(GTK_CONTAINER(capplet_widget), 5);
|
||||
capplet_widget = gtk_dialog_new_with_buttons (_("Gtk+ Theme Selector"),
|
||||
NULL, -1,
|
||||
GTK_STOCK_HELP, GTK_RESPONSE_HELP,
|
||||
GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
NULL);
|
||||
gtk_dialog_set_response_sensitive (GTK_DIALOG (capplet_widget),
|
||||
GTK_RESPONSE_APPLY, FALSE);
|
||||
|
||||
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||
|
@ -310,23 +323,17 @@ make_main(void)
|
|||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
preview_socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(frame), preview_socket);
|
||||
container = bonobo_ui_container_new ();
|
||||
preview_control = bonobo_widget_new_control ("OAFIID:GNOME_Theme_Preview",
|
||||
BONOBO_OBJREF (container));
|
||||
bonobo_object_unref (BONOBO_OBJECT (container));
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(frame), preview_control);
|
||||
update_theme_entries(theme_list);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "help",
|
||||
GTK_SIGNAL_FUNC (click_help), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "try",
|
||||
GTK_SIGNAL_FUNC (click_try), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "ok",
|
||||
GTK_SIGNAL_FUNC (click_ok), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "revert",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "cancel",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "delete_event",
|
||||
GTK_SIGNAL_FUNC (delete_capplet), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (capplet_widget), box);
|
||||
g_signal_connect (G_OBJECT (capplet_widget), "response", response_cb, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (capplet_widget)->vbox), box,
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
last_theme = NULL;
|
||||
|
||||
|
@ -390,7 +397,7 @@ click_try(GtkWidget *widget, gpointer data)
|
|||
use_theme(rc, NULL);
|
||||
}
|
||||
gdk_error_trap_push ();
|
||||
signal_apply_theme(widget);
|
||||
signal_apply_theme(capplet_widget);
|
||||
gdk_flush();
|
||||
/* system(cmd); */
|
||||
gdk_error_trap_pop ();
|
||||
|
@ -489,9 +496,9 @@ click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
|||
current_theme = gtk_clist_get_row_data (GTK_CLIST (clist), row);
|
||||
|
||||
if (initial_theme)
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
else
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), FALSE);
|
||||
state_changed (FALSE);
|
||||
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (NULL,NULL);
|
||||
|
@ -614,3 +621,24 @@ update_theme_entries(GtkWidget *disp_list)
|
|||
if (current_theme == NULL)
|
||||
;
|
||||
}
|
||||
|
||||
static void
|
||||
response_cb (GtkDialog *dialog, GtkResponseType response, gpointer data)
|
||||
{
|
||||
switch (response)
|
||||
{
|
||||
case GTK_RESPONSE_NONE:
|
||||
case GTK_RESPONSE_CLOSE:
|
||||
gtk_main_quit ();
|
||||
break;
|
||||
case GTK_RESPONSE_APPLY:
|
||||
click_ok (NULL, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void state_changed (gboolean state)
|
||||
{
|
||||
gtk_dialog_set_response_sensitive (GTK_DIALOG (capplet_widget),
|
||||
GTK_RESPONSE_APPLY, state);
|
||||
}
|
||||
|
|
|
@ -4,9 +4,10 @@
|
|||
#endif
|
||||
|
||||
#include "da.h"
|
||||
#include "capplet-widget.h"
|
||||
#include <signal.h>
|
||||
|
||||
GtkWidget *preview_control;
|
||||
|
||||
static gboolean ignore_change = FALSE;
|
||||
|
||||
static GtkWidget *install_theme_file_sel;
|
||||
|
@ -38,6 +39,21 @@ click_revert(GtkWidget *widget, gpointer data);
|
|||
static void
|
||||
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
||||
gpointer data);
|
||||
static void
|
||||
state_changed (gboolean state);
|
||||
static void
|
||||
response_cb (GtkDialog *dialog, GtkResponseType response, gpointer data);
|
||||
|
||||
void
|
||||
send_reread(void)
|
||||
{
|
||||
if (!(current_theme && current_theme->rc))
|
||||
return;
|
||||
|
||||
bonobo_widget_set_property (BONOBO_WIDGET (preview_control),
|
||||
"theme", TC_CORBA_string,
|
||||
gtkrc_tmp, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
auto_callback (GtkWidget *widget, gpointer data)
|
||||
|
@ -45,7 +61,7 @@ auto_callback (GtkWidget *widget, gpointer data)
|
|||
if (ignore_change == FALSE) {
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -53,7 +69,7 @@ static void
|
|||
font_callback (GtkWidget *widget, gchar *font, gpointer data)
|
||||
{
|
||||
if (ignore_change == FALSE) {
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
}
|
||||
|
@ -62,7 +78,7 @@ static void
|
|||
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
if (ignore_change == FALSE) {
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (widget,NULL);
|
||||
if (!GTK_TOGGLE_BUTTON (font_cbox)->active)
|
||||
|
@ -170,16 +186,6 @@ install_theme_callback (GtkWidget *widget, gpointer data)
|
|||
|
||||
}
|
||||
|
||||
static gint
|
||||
delete_capplet (GtkWidget *widget, GdkEvent *event, gpointer data)
|
||||
{
|
||||
/* We don't want the toplevel window destroyed until
|
||||
* our child exits.
|
||||
*/
|
||||
close(prog_fd);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
make_main(void)
|
||||
{
|
||||
|
@ -188,9 +194,16 @@ make_main(void)
|
|||
GtkWidget *frame, *button;
|
||||
GtkWidget *button_vbox;
|
||||
gboolean default_used;
|
||||
BonoboUIContainer *container;
|
||||
|
||||
capplet_widget = capplet_widget_new();
|
||||
gtk_container_set_border_width(GTK_CONTAINER(capplet_widget), 5);
|
||||
capplet_widget = gtk_dialog_new_with_buttons (_("Gtk+ Theme Selector"),
|
||||
NULL, -1,
|
||||
GTK_STOCK_HELP, GTK_RESPONSE_HELP,
|
||||
GTK_STOCK_APPLY, GTK_RESPONSE_APPLY,
|
||||
GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
|
||||
NULL);
|
||||
gtk_dialog_set_response_sensitive (GTK_DIALOG (capplet_widget),
|
||||
GTK_RESPONSE_APPLY, FALSE);
|
||||
|
||||
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||
|
@ -310,23 +323,17 @@ make_main(void)
|
|||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||
preview_socket = gtk_socket_new();
|
||||
gtk_container_add(GTK_CONTAINER(frame), preview_socket);
|
||||
container = bonobo_ui_container_new ();
|
||||
preview_control = bonobo_widget_new_control ("OAFIID:GNOME_Theme_Preview",
|
||||
BONOBO_OBJREF (container));
|
||||
bonobo_object_unref (BONOBO_OBJECT (container));
|
||||
|
||||
gtk_container_add(GTK_CONTAINER(frame), preview_control);
|
||||
update_theme_entries(theme_list);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "help",
|
||||
GTK_SIGNAL_FUNC (click_help), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "try",
|
||||
GTK_SIGNAL_FUNC (click_try), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "ok",
|
||||
GTK_SIGNAL_FUNC (click_ok), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "revert",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "cancel",
|
||||
GTK_SIGNAL_FUNC (click_revert), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "delete_event",
|
||||
GTK_SIGNAL_FUNC (delete_capplet), NULL);
|
||||
gtk_container_add (GTK_CONTAINER (capplet_widget), box);
|
||||
g_signal_connect (G_OBJECT (capplet_widget), "response", response_cb, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (capplet_widget)->vbox), box,
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
last_theme = NULL;
|
||||
|
||||
|
@ -390,7 +397,7 @@ click_try(GtkWidget *widget, gpointer data)
|
|||
use_theme(rc, NULL);
|
||||
}
|
||||
gdk_error_trap_push ();
|
||||
signal_apply_theme(widget);
|
||||
signal_apply_theme(capplet_widget);
|
||||
gdk_flush();
|
||||
/* system(cmd); */
|
||||
gdk_error_trap_pop ();
|
||||
|
@ -489,9 +496,9 @@ click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
|||
current_theme = gtk_clist_get_row_data (GTK_CLIST (clist), row);
|
||||
|
||||
if (initial_theme)
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
||||
state_changed (TRUE);
|
||||
else
|
||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), FALSE);
|
||||
state_changed (FALSE);
|
||||
|
||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||
click_preview (NULL,NULL);
|
||||
|
@ -614,3 +621,24 @@ update_theme_entries(GtkWidget *disp_list)
|
|||
if (current_theme == NULL)
|
||||
;
|
||||
}
|
||||
|
||||
static void
|
||||
response_cb (GtkDialog *dialog, GtkResponseType response, gpointer data)
|
||||
{
|
||||
switch (response)
|
||||
{
|
||||
case GTK_RESPONSE_NONE:
|
||||
case GTK_RESPONSE_CLOSE:
|
||||
gtk_main_quit ();
|
||||
break;
|
||||
case GTK_RESPONSE_APPLY:
|
||||
click_ok (NULL, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void state_changed (gboolean state)
|
||||
{
|
||||
gtk_dialog_set_response_sensitive (GTK_DIALOG (capplet_widget),
|
||||
GTK_RESPONSE_APPLY, state);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "capplet-widget.h"
|
||||
#include "da.h"
|
||||
|
||||
#define THEME_SWITCHER_VERSION "0.1"
|
||||
|
@ -12,33 +11,19 @@ int
|
|||
main(int argc, char **argv)
|
||||
{
|
||||
GtkWidget *w;
|
||||
gint child_pid;
|
||||
|
||||
bindtextdomain (PACKAGE, GNOMELOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
|
||||
set_tmp_rc();
|
||||
child_pid = do_demo(argc, argv);
|
||||
switch (gnome_capplet_init ("gtk-theme-selector",
|
||||
THEME_SWITCHER_VERSION, argc, argv, NULL, 0, NULL)) {
|
||||
case -1:
|
||||
exit (1);
|
||||
case 1:
|
||||
return 0;
|
||||
}
|
||||
|
||||
gnome_program_init ("gtk-theme-selector", THEME_SWITCHER_VERSION,
|
||||
LIBGNOMEUI_MODULE, argc, argv, NULL);
|
||||
|
||||
w = make_main();
|
||||
gtk_widget_show_all(w);
|
||||
send_socket();
|
||||
|
||||
gtk_main();
|
||||
/* This doesn't work any more -- why? */
|
||||
#if 0
|
||||
/* Pause here until our child exits and the socket can be safely
|
||||
* destroyed
|
||||
*/
|
||||
if (child_pid > 0)
|
||||
waitpid(child_pid, NULL, 0);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue