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>
|
2001-10-13 Bradford Hovinen <hovinen@ximian.com>
|
||||||
|
|
||||||
* lister.c (edit_file_to_use): Be paranoid about what we have read
|
* lister.c (edit_file_to_use): Be paranoid about what we have read
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
SUBDIRS = control
|
||||||
|
|
||||||
cappletname = gtk-theme-selector
|
cappletname = gtk-theme-selector
|
||||||
cappletgroup = "Advanced/"
|
cappletgroup = "Advanced/"
|
||||||
bin_PROGRAMS = gtk-theme-selector-capplet
|
bin_PROGRAMS = gtk-theme-selector-capplet
|
||||||
|
@ -10,7 +12,6 @@ gtk_theme_selector_capplet_SOURCES = \
|
||||||
lister.c \
|
lister.c \
|
||||||
main.c \
|
main.c \
|
||||||
signals.c \
|
signals.c \
|
||||||
demo.c \
|
|
||||||
gui.c \
|
gui.c \
|
||||||
install.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 <unistd.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <bonobo.h>
|
||||||
|
|
||||||
typedef struct _theme_entry
|
typedef struct _theme_entry
|
||||||
{
|
{
|
||||||
|
@ -61,8 +62,6 @@ make_main(void);
|
||||||
void
|
void
|
||||||
update_theme_entries(GtkWidget *disp_list);
|
update_theme_entries(GtkWidget *disp_list);
|
||||||
void
|
void
|
||||||
signal_apply_theme(GtkWidget *widget);
|
|
||||||
void
|
|
||||||
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
||||||
void
|
void
|
||||||
set_tmp_rc(void);
|
set_tmp_rc(void);
|
||||||
|
@ -72,14 +71,6 @@ void
|
||||||
test_theme(gchar *theme, gchar *font);
|
test_theme(gchar *theme, gchar *font);
|
||||||
gchar *
|
gchar *
|
||||||
install_theme(gchar *file);
|
install_theme(gchar *file);
|
||||||
gint
|
|
||||||
do_demo(int argc, char **argv);
|
|
||||||
void
|
|
||||||
send_socket(void);
|
|
||||||
void
|
|
||||||
send_reread(void);
|
|
||||||
|
|
||||||
|
extern GtkWidget *preview_control;
|
||||||
extern GtkWidget *preview_socket;
|
|
||||||
extern gint prog_fd;
|
|
||||||
extern gchar gtkrc_tmp[1024];
|
extern gchar gtkrc_tmp[1024];
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <bonobo.h>
|
||||||
|
|
||||||
typedef struct _theme_entry
|
typedef struct _theme_entry
|
||||||
{
|
{
|
||||||
|
@ -61,8 +62,6 @@ make_main(void);
|
||||||
void
|
void
|
||||||
update_theme_entries(GtkWidget *disp_list);
|
update_theme_entries(GtkWidget *disp_list);
|
||||||
void
|
void
|
||||||
signal_apply_theme(GtkWidget *widget);
|
|
||||||
void
|
|
||||||
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
edit_file_to_use(gchar *file, gchar *theme, gchar *font);
|
||||||
void
|
void
|
||||||
set_tmp_rc(void);
|
set_tmp_rc(void);
|
||||||
|
@ -72,14 +71,6 @@ void
|
||||||
test_theme(gchar *theme, gchar *font);
|
test_theme(gchar *theme, gchar *font);
|
||||||
gchar *
|
gchar *
|
||||||
install_theme(gchar *file);
|
install_theme(gchar *file);
|
||||||
gint
|
|
||||||
do_demo(int argc, char **argv);
|
|
||||||
void
|
|
||||||
send_socket(void);
|
|
||||||
void
|
|
||||||
send_reread(void);
|
|
||||||
|
|
||||||
|
extern GtkWidget *preview_control;
|
||||||
extern GtkWidget *preview_socket;
|
|
||||||
extern gint prog_fd;
|
|
||||||
extern gchar gtkrc_tmp[1024];
|
extern gchar gtkrc_tmp[1024];
|
||||||
|
|
|
@ -4,9 +4,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "da.h"
|
#include "da.h"
|
||||||
#include "capplet-widget.h"
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
GtkWidget *preview_control;
|
||||||
|
|
||||||
static gboolean ignore_change = FALSE;
|
static gboolean ignore_change = FALSE;
|
||||||
|
|
||||||
static GtkWidget *install_theme_file_sel;
|
static GtkWidget *install_theme_file_sel;
|
||||||
|
@ -38,6 +39,21 @@ click_revert(GtkWidget *widget, gpointer data);
|
||||||
static void
|
static void
|
||||||
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
||||||
gpointer data);
|
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
|
static void
|
||||||
auto_callback (GtkWidget *widget, gpointer data)
|
auto_callback (GtkWidget *widget, gpointer data)
|
||||||
|
@ -45,7 +61,7 @@ auto_callback (GtkWidget *widget, gpointer data)
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
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)
|
font_callback (GtkWidget *widget, gchar *font, gpointer data)
|
||||||
{
|
{
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
click_preview (widget,NULL);
|
||||||
}
|
}
|
||||||
|
@ -62,7 +78,7 @@ static void
|
||||||
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
||||||
{
|
{
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
click_preview (widget,NULL);
|
||||||
if (!GTK_TOGGLE_BUTTON (font_cbox)->active)
|
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 *
|
GtkWidget *
|
||||||
make_main(void)
|
make_main(void)
|
||||||
{
|
{
|
||||||
|
@ -188,9 +194,16 @@ make_main(void)
|
||||||
GtkWidget *frame, *button;
|
GtkWidget *frame, *button;
|
||||||
GtkWidget *button_vbox;
|
GtkWidget *button_vbox;
|
||||||
gboolean default_used;
|
gboolean default_used;
|
||||||
|
BonoboUIContainer *container;
|
||||||
|
|
||||||
capplet_widget = capplet_widget_new();
|
capplet_widget = gtk_dialog_new_with_buttons (_("Gtk+ Theme Selector"),
|
||||||
gtk_container_set_border_width(GTK_CONTAINER(capplet_widget), 5);
|
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);
|
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||||
|
@ -310,23 +323,17 @@ make_main(void)
|
||||||
frame = gtk_frame_new (NULL);
|
frame = gtk_frame_new (NULL);
|
||||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||||
preview_socket = gtk_socket_new();
|
container = bonobo_ui_container_new ();
|
||||||
gtk_container_add(GTK_CONTAINER(frame), preview_socket);
|
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);
|
update_theme_entries(theme_list);
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "help",
|
g_signal_connect (G_OBJECT (capplet_widget), "response", response_cb, NULL);
|
||||||
GTK_SIGNAL_FUNC (click_help), NULL);
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (capplet_widget)->vbox), box,
|
||||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "try",
|
TRUE, TRUE, 0);
|
||||||
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);
|
|
||||||
|
|
||||||
last_theme = NULL;
|
last_theme = NULL;
|
||||||
|
|
||||||
|
@ -390,7 +397,7 @@ click_try(GtkWidget *widget, gpointer data)
|
||||||
use_theme(rc, NULL);
|
use_theme(rc, NULL);
|
||||||
}
|
}
|
||||||
gdk_error_trap_push ();
|
gdk_error_trap_push ();
|
||||||
signal_apply_theme(widget);
|
signal_apply_theme(capplet_widget);
|
||||||
gdk_flush();
|
gdk_flush();
|
||||||
/* system(cmd); */
|
/* system(cmd); */
|
||||||
gdk_error_trap_pop ();
|
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);
|
current_theme = gtk_clist_get_row_data (GTK_CLIST (clist), row);
|
||||||
|
|
||||||
if (initial_theme)
|
if (initial_theme)
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
else
|
else
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), FALSE);
|
state_changed (FALSE);
|
||||||
|
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (NULL,NULL);
|
click_preview (NULL,NULL);
|
||||||
|
@ -614,3 +621,24 @@ update_theme_entries(GtkWidget *disp_list)
|
||||||
if (current_theme == NULL)
|
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
|
#endif
|
||||||
|
|
||||||
#include "da.h"
|
#include "da.h"
|
||||||
#include "capplet-widget.h"
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
GtkWidget *preview_control;
|
||||||
|
|
||||||
static gboolean ignore_change = FALSE;
|
static gboolean ignore_change = FALSE;
|
||||||
|
|
||||||
static GtkWidget *install_theme_file_sel;
|
static GtkWidget *install_theme_file_sel;
|
||||||
|
@ -38,6 +39,21 @@ click_revert(GtkWidget *widget, gpointer data);
|
||||||
static void
|
static void
|
||||||
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
click_entry(GtkWidget *clist, gint row, gint col, GdkEvent *event,
|
||||||
gpointer data);
|
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
|
static void
|
||||||
auto_callback (GtkWidget *widget, gpointer data)
|
auto_callback (GtkWidget *widget, gpointer data)
|
||||||
|
@ -45,7 +61,7 @@ auto_callback (GtkWidget *widget, gpointer data)
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
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)
|
font_callback (GtkWidget *widget, gchar *font, gpointer data)
|
||||||
{
|
{
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
click_preview (widget,NULL);
|
||||||
}
|
}
|
||||||
|
@ -62,7 +78,7 @@ static void
|
||||||
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
use_theme_font_callback (GtkWidget *widget, gpointer data)
|
||||||
{
|
{
|
||||||
if (ignore_change == FALSE) {
|
if (ignore_change == FALSE) {
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (widget,NULL);
|
click_preview (widget,NULL);
|
||||||
if (!GTK_TOGGLE_BUTTON (font_cbox)->active)
|
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 *
|
GtkWidget *
|
||||||
make_main(void)
|
make_main(void)
|
||||||
{
|
{
|
||||||
|
@ -188,9 +194,16 @@ make_main(void)
|
||||||
GtkWidget *frame, *button;
|
GtkWidget *frame, *button;
|
||||||
GtkWidget *button_vbox;
|
GtkWidget *button_vbox;
|
||||||
gboolean default_used;
|
gboolean default_used;
|
||||||
|
BonoboUIContainer *container;
|
||||||
|
|
||||||
capplet_widget = capplet_widget_new();
|
capplet_widget = gtk_dialog_new_with_buttons (_("Gtk+ Theme Selector"),
|
||||||
gtk_container_set_border_width(GTK_CONTAINER(capplet_widget), 5);
|
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);
|
box = gtk_vbox_new(FALSE, GNOME_PAD);
|
||||||
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
hbox = gtk_hbox_new(TRUE, GNOME_PAD);
|
||||||
|
@ -310,23 +323,17 @@ make_main(void)
|
||||||
frame = gtk_frame_new (NULL);
|
frame = gtk_frame_new (NULL);
|
||||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||||
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0);
|
||||||
preview_socket = gtk_socket_new();
|
container = bonobo_ui_container_new ();
|
||||||
gtk_container_add(GTK_CONTAINER(frame), preview_socket);
|
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);
|
update_theme_entries(theme_list);
|
||||||
|
|
||||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "help",
|
g_signal_connect (G_OBJECT (capplet_widget), "response", response_cb, NULL);
|
||||||
GTK_SIGNAL_FUNC (click_help), NULL);
|
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (capplet_widget)->vbox), box,
|
||||||
gtk_signal_connect (GTK_OBJECT (capplet_widget), "try",
|
TRUE, TRUE, 0);
|
||||||
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);
|
|
||||||
|
|
||||||
last_theme = NULL;
|
last_theme = NULL;
|
||||||
|
|
||||||
|
@ -390,7 +397,7 @@ click_try(GtkWidget *widget, gpointer data)
|
||||||
use_theme(rc, NULL);
|
use_theme(rc, NULL);
|
||||||
}
|
}
|
||||||
gdk_error_trap_push ();
|
gdk_error_trap_push ();
|
||||||
signal_apply_theme(widget);
|
signal_apply_theme(capplet_widget);
|
||||||
gdk_flush();
|
gdk_flush();
|
||||||
/* system(cmd); */
|
/* system(cmd); */
|
||||||
gdk_error_trap_pop ();
|
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);
|
current_theme = gtk_clist_get_row_data (GTK_CLIST (clist), row);
|
||||||
|
|
||||||
if (initial_theme)
|
if (initial_theme)
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), TRUE);
|
state_changed (TRUE);
|
||||||
else
|
else
|
||||||
capplet_widget_state_changed(CAPPLET_WIDGET (capplet_widget), FALSE);
|
state_changed (FALSE);
|
||||||
|
|
||||||
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
if (GTK_TOGGLE_BUTTON (auto_preview)->active)
|
||||||
click_preview (NULL,NULL);
|
click_preview (NULL,NULL);
|
||||||
|
@ -614,3 +621,24 @@ update_theme_entries(GtkWidget *disp_list)
|
||||||
if (current_theme == NULL)
|
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>
|
# include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "capplet-widget.h"
|
|
||||||
#include "da.h"
|
#include "da.h"
|
||||||
|
|
||||||
#define THEME_SWITCHER_VERSION "0.1"
|
#define THEME_SWITCHER_VERSION "0.1"
|
||||||
|
@ -12,33 +11,19 @@ int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
GtkWidget *w;
|
GtkWidget *w;
|
||||||
gint child_pid;
|
|
||||||
|
|
||||||
bindtextdomain (PACKAGE, GNOMELOCALEDIR);
|
bindtextdomain (PACKAGE, GNOMELOCALEDIR);
|
||||||
textdomain (PACKAGE);
|
textdomain (PACKAGE);
|
||||||
|
|
||||||
set_tmp_rc();
|
set_tmp_rc();
|
||||||
child_pid = do_demo(argc, argv);
|
|
||||||
switch (gnome_capplet_init ("gtk-theme-selector",
|
gnome_program_init ("gtk-theme-selector", THEME_SWITCHER_VERSION,
|
||||||
THEME_SWITCHER_VERSION, argc, argv, NULL, 0, NULL)) {
|
LIBGNOMEUI_MODULE, argc, argv, NULL);
|
||||||
case -1:
|
|
||||||
exit (1);
|
|
||||||
case 1:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
w = make_main();
|
w = make_main();
|
||||||
gtk_widget_show_all(w);
|
gtk_widget_show_all(w);
|
||||||
send_socket();
|
|
||||||
|
|
||||||
gtk_main();
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue