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
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue