(gnome_theme_installer_run): Open transfer dialog with transient parent

2006-11-13  Thomas Wood  <thos@gnome.org>

	(gnome_theme_installer_run): Open transfer dialog with transient
	parent set

	* gnome-theme-details.c: (remove_theme), (color_select),
	(toggle_color_scheme_key), (gnome_theme_details_init),
	(update_color_buttons_from_string),
	(gnome_theme_details_update_from_gconf):
	* gnome-theme-installer.c: (gnome_theme_install_from_uri),
	* gnome-theme-installer.h:
	* gnome-theme-manager.c: (free_all),
	(gnome_theme_manager_drag_data_received_cb), (main):
	* gnome-theme-manager.h:
	* gnome-theme-save.c: (save_dialog_response):
	* theme-properties.glade:

	- Add a colours tab to change gtk-color-scheme setting
This commit is contained in:
Thomas Wood 2006-11-13 16:01:42 +00:00 committed by Thomas Wood
parent 7d51fdd2f7
commit ce90ac9adc
8 changed files with 563 additions and 14 deletions

View file

@ -1,3 +1,22 @@
2006-11-13 Thomas Wood <thos@gnome.org>
(gnome_theme_installer_run): Open transfer dialog with transient
parent set
* gnome-theme-details.c: (remove_theme), (color_select),
(toggle_color_scheme_key), (gnome_theme_details_init),
(update_color_buttons_from_string),
(gnome_theme_details_update_from_gconf):
* gnome-theme-installer.c: (gnome_theme_install_from_uri),
* gnome-theme-installer.h:
* gnome-theme-manager.c: (free_all),
(gnome_theme_manager_drag_data_received_cb), (main):
* gnome-theme-manager.h:
* gnome-theme-save.c: (save_dialog_response):
* theme-properties.glade:
- Add a colours tab to change gtk-color-scheme setting
2006-10-27 Thomas Wood <thos@gnome.org>
* gnome-theme-installer.c: (transfer_done_cb): Hopefully fix bug

View file

@ -46,6 +46,7 @@ static void load_theme_names (GtkTreeView *tree_view,
GList *theme_list,
const gchar *default_theme);
static char *path_to_theme_id (const char *path);
static void update_color_buttons_from_string (gchar *color_scheme);
static char *
@ -433,7 +434,7 @@ remove_theme(GtkWidget *button, gpointer data)
GTK_BUTTONS_OK_CANCEL,
_("Theme deleted succesfully. Please select another theme."));
gtk_list_store_remove (GTK_LIST_STORE(model), &iter);
gtk_dialog_run (info_dialog);
gtk_dialog_run (GTK_DIALOG (info_dialog));
} else {
info_dialog = gtk_message_dialog_new (NULL,
@ -441,7 +442,7 @@ remove_theme(GtkWidget *button, gpointer data)
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
_("Theme can not be deleted"));
gtk_dialog_run (info_dialog);
gtk_dialog_run (GTK_DIALOG (info_dialog));
}
gtk_widget_destroy (info_dialog);
gnome_vfs_uri_list_free (uri_list);
@ -451,6 +452,80 @@ remove_theme(GtkWidget *button, gpointer data)
}
}
void
color_select (GtkWidget *colorbutton, gpointer dialog)
{
GConfClient *client = NULL;
gchar *new_scheme;
GdkColor colors[6];
gchar *bg, *fg, *text, *base, *selected_fg, *selected_bg;
GtkWidget *widget;
widget = WID ("fg_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[0]);
widget = WID ("bg_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[1]);
widget = WID ("text_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[2]);
widget = WID ("base_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[3]);
widget = WID ("selected_fg_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[4]);
widget = WID ("selected_bg_colorbutton");
gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &colors[5]);
fg = g_strdup_printf ("fg_color:#%.4x%.4x%.4x\n", colors[0].red, colors[0].green, colors[0].blue);
bg = g_strdup_printf ("bg_color:#%.4x%.4x%.4x\n", colors[1].red, colors[1].green, colors[1].blue);
text = g_strdup_printf ("text_color:#%.4x%.4x%.4x\n", colors[2].red, colors[2].green, colors[2].blue);
base = g_strdup_printf ("base_color:#%.4x%.4x%.4x\n", colors[3].red, colors[3].green, colors[3].blue);
selected_fg = g_strdup_printf ("selected_fg_color:#%.4x%.4x%.4x\n", colors[4].red, colors[4].green, colors[4].blue);
selected_bg = g_strdup_printf ("selected_bg_color:#%.4x%.4x%.4x", colors[5].red, colors[5].green, colors[5].blue);
new_scheme = g_strconcat (fg, bg, text, base, selected_fg, selected_bg, NULL);
client = gconf_client_get_default ();
/* Currently we assume this has only been called when one of the colours has
* actually changed, so we don't check the original key first
*/
gconf_client_set_string (client, COLOR_SCHEME_KEY, new_scheme, NULL);
g_object_unref (G_OBJECT (client));
free_all (fg, bg, text, base, selected_fg, selected_bg, new_scheme, NULL);
}
void
toggle_color_scheme_key (GtkWidget *checkbutton, gpointer *data)
{
GConfClient *client = NULL;
gboolean use_theme_colors;
GladeXML *dialog;
GtkWidget *widget;
GtkSettings *settings;
gchar *color_scheme = NULL;
dialog = gnome_theme_manager_get_theme_dialog ();
use_theme_colors = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton));
widget = WID ("color_scheme_table");
gtk_widget_set_sensitive (widget, !use_theme_colors);
if (use_theme_colors)
{
client = gconf_client_get_default ();
gconf_client_set_string (client, COLOR_SCHEME_KEY, "", NULL);
g_object_unref (G_OBJECT (client));
}
else
{
settings = gtk_settings_get_default ();
g_object_get (G_OBJECT (settings), "gtk-color-scheme", &color_scheme, NULL);
update_color_buttons_from_string (color_scheme);
g_free (color_scheme);
}
}
void
gnome_theme_details_init (void)
{
@ -492,6 +567,27 @@ gnome_theme_details_init (void)
widget = WID ("icon_install_button");
g_signal_connect (G_OBJECT (widget), "clicked", G_CALLBACK (gnome_theme_installer_run_cb), parent);
/* color preferences */
widget = WID ("fg_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("bg_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("text_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("base_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("selected_fg_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("selected_bg_colorbutton");
g_signal_connect (G_OBJECT (widget), "color_set", G_CALLBACK (color_select), dialog);
widget = WID ("use_theme_colors_checkbutton");
g_signal_connect (G_OBJECT (widget), "toggled", G_CALLBACK (toggle_color_scheme_key), parent);
gchar *color_scheme;
g_object_get (G_OBJECT (gtk_settings_get_default()), "gtk-color-scheme", &color_scheme, NULL);
update_color_buttons_from_string (color_scheme);
g_signal_connect (G_OBJECT (parent), "response", G_CALLBACK (cb_dialog_response), NULL);
g_signal_connect (G_OBJECT (parent), "delete-event", G_CALLBACK (gtk_true), NULL);
@ -717,15 +813,86 @@ update_list_something (GtkWidget *tree_view, const gchar *theme)
}
}
void
update_color_buttons_from_string (gchar *color_scheme)
{
GdkColor color_scheme_colors[6];
gchar **color_scheme_strings, **color_scheme_pair, *current_string;
gint i;
GtkWidget *widget;
GladeXML *dialog;
if (!color_scheme) return;
if (!strcmp (color_scheme, "")) return;
dialog = gnome_theme_manager_get_theme_dialog ();
/* The color scheme string consists of name:color pairs, seperated by
* newlines, so first we split the string up by new line */
color_scheme_strings = g_strsplit (color_scheme, "\n", 0);
/* loop through the name:color pairs, and save the colour if we recognise the name */
i = 0;
while ((current_string = color_scheme_strings[i++]))
{
color_scheme_pair = g_strsplit (current_string, ":", 0);
if (color_scheme_pair[0] == NULL)
continue;
g_strstrip (color_scheme_pair[0]);
g_strstrip (color_scheme_pair[1]);
if (!strcmp ("fg_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[0]);
else if (!strcmp ("bg_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[1]);
else if (!strcmp ("text_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[2]);
else if (!strcmp ("base_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[3]);
else if (!strcmp ("selected_fg_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[4]);
else if (!strcmp ("selected_bg_color", color_scheme_pair[0]))
gdk_color_parse (color_scheme_pair[1], &color_scheme_colors[5]);
g_strfreev (color_scheme_pair);
}
g_strfreev (color_scheme_strings);
/* not sure whether we need to do this, but it can't hurt */
for (i = 0; i < 6; i++)
gdk_colormap_alloc_color (gdk_colormap_get_system (), &color_scheme_colors[i], FALSE, TRUE);
/* now set all the buttons to the correct settings */
widget = WID ("fg_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[0]);
widget = WID ("bg_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[1]);
widget = WID ("text_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[2]);
widget = WID ("base_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[3]);
widget = WID ("selected_fg_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[4]);
widget = WID ("selected_bg_colorbutton");
gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &color_scheme_colors[5]);
}
void
gnome_theme_details_update_from_gconf (void)
{
GConfClient *client;
GladeXML *dialog;
GtkWidget *tree_view;
gchar *theme;
GtkWidget *tree_view, *widget;
gchar *theme = NULL;
GnomeWindowManager *window_manager = NULL;
GnomeWMSettings wm_settings;
gboolean use_theme_colors = TRUE;
gnome_theme_details_init ();
@ -750,6 +917,25 @@ gnome_theme_details_update_from_gconf (void)
tree_view = WID ("icon_theme_treeview");
theme = gconf_client_get_string (client, ICON_THEME_KEY, NULL);
update_list_something (tree_view, theme);
g_object_unref (client);
g_free (theme);
/* color preferences */
theme = gconf_client_get_string (client, COLOR_SCHEME_KEY, NULL);
if (theme)
{
use_theme_colors = !strcmp ("", theme);
update_color_buttons_from_string (theme);
g_free (theme);
}
widget = WID ("use_theme_colors_checkbutton");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), use_theme_colors);
widget = WID ("color_scheme_table");
gtk_widget_set_sensitive (widget, !use_theme_colors);
g_object_unref (client);
}

View file

@ -511,7 +511,7 @@ transfer_done_cb (GtkWidget *dlg, gchar *path)
}
void
gnome_theme_install_from_uri (gchar * theme_filename)
gnome_theme_install_from_uri (gchar * theme_filename, GtkWindow *parent)
{
GtkWidget *dlg;
gchar *filename, *path, *base;
@ -627,7 +627,7 @@ gnome_theme_install_from_uri (gchar * theme_filename)
target = g_list_append (NULL, gnome_vfs_uri_new (path));
dlg = file_transfer_dialog_new ();
dlg = file_transfer_dialog_new_with_parent (parent);
file_transfer_dialog_wrap_async_xfer (FILE_TRANSFER_DIALOG (dlg),
src, target,
GNOME_VFS_XFER_RECURSIVE,
@ -676,7 +676,7 @@ gnome_theme_installer_run (GtkWindow *parent, gchar *filename)
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
filename_selected = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
gnome_theme_install_from_uri (filename_selected);
gnome_theme_install_from_uri (filename_selected, parent);
g_free (filename_selected);
}

View file

@ -24,7 +24,7 @@
#include <gtk/gtk.h>
void gnome_theme_install_from_uri (gchar * filename);
void gnome_theme_install_from_uri (gchar * filename, GtkWindow *parent);
void gnome_theme_installer_run (GtkWindow *parent, gchar *filename);
void gnome_theme_installer_run_cb (GtkWidget *button, GtkWindow *parent_window);

View file

@ -117,6 +117,17 @@ typedef struct {
gboolean cancelled;
} PixbufAsyncData;
void free_all (gpointer a, ...)
{
va_list list;
gpointer tmp;
va_start (list, a);
while ((tmp = va_arg (list, gpointer)))
g_free(tmp);
va_end (list);
}
static void
pixbuf_async_func (GdkPixbuf *pixbuf,
gpointer data)
@ -1531,6 +1542,7 @@ gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, GdkDragContext *co
{
GList *uris;
gchar *filename = NULL;
GtkWidget *toplevel;
if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL))
return;
@ -1550,8 +1562,10 @@ gnome_theme_manager_drag_data_received_cb (GtkWidget *widget, GdkDragContext *co
gnome_vfs_uri_list_unref (uris);
}
gnome_theme_install_from_uri (filename);
toplevel = gtk_widget_get_toplevel (widget);
if (!GTK_WIDGET_TOPLEVEL (toplevel))
toplevel = NULL;
gnome_theme_install_from_uri (filename, GTK_WINDOW (toplevel));
g_free (filename);
}
@ -1620,7 +1634,7 @@ main (int argc, char *argv[])
NULL);
if (install_filename != NULL)
gnome_theme_install_from_uri (install_filename);
gnome_theme_install_from_uri (install_filename, NULL);
g_free (install_filename);
gtk_theme_default_name = get_default_string_from_key (GTK_THEME_KEY);

View file

@ -12,6 +12,7 @@
#define MONOSPACE_FONT_KEY "/desktop/gnome/interface/monospace_font_name"
#define BACKGROUND_KEY "/desktop/gnome/background/picture_filename"
#define LOCKDOWN_KEY "/desktop/gnome/lockdown/disable_theme_settings"
#define COLOR_SCHEME_KEY "/desktop/gnome/interface/gtk_color_scheme"
#define METACITY_THEME_DIR "/apps/metacity/general"
#define METACITY_THEME_KEY METACITY_THEME_DIR "/theme"
@ -80,6 +81,6 @@ void gnome_theme_manager_drag_data_received_cb (GtkWidget *widge
gpointer data);
void free_all (gpointer, ...);
#endif /* __GNOME_THEME_MANAGER_H__ */

View file

@ -279,7 +279,7 @@ save_dialog_response (GtkWidget *save_dialog,
theme_description = escape_string_and_dup (buffer_text);
g_free (buffer_text);
meta_theme_info = (GnomeThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info");
save_background = gtk_toggle_button_get_active (/*GTK_TOGGLE_BUTTON*/ (WID ("save_background_checkbutton")));
save_background = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (WID ("save_background_checkbutton")));
if (! save_theme_to_disk (meta_theme_info, theme_name, theme_description, save_background, &error))
{
goto out;

View file

@ -898,6 +898,7 @@
<child>
<widget class="GtkScrolledWindow" id="control_theme_swindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
@ -1125,6 +1126,334 @@
</packing>
</child>
<child>
<widget class="GtkVBox" id="vbox14">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="use_theme_colors_checkbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Use colors from the current theme</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkAlignment" id="alignment24">
<property name="visible">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xscale">1</property>
<property name="yscale">1</property>
<property name="top_padding">0</property>
<property name="bottom_padding">0</property>
<property name="left_padding">12</property>
<property name="right_padding">0</property>
<child>
<widget class="GtkTable" id="color_scheme_table">
<property name="border_width">12</property>
<property name="visible">True</property>
<property name="n_rows">4</property>
<property name="n_columns">3</property>
<property name="homogeneous">False</property>
<property name="row_spacing">12</property>
<property name="column_spacing">12</property>
<child>
<widget class="GtkLabel" id="label64">
<property name="visible">True</property>
<property name="label" translatable="yes">Text</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label65">
<property name="visible">True</property>
<property name="label" translatable="yes">Background</property>
<property name="use_underline">False</property>
<property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label66">
<property name="visible">True</property>
<property name="label" translatable="yes">Input</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label67">
<property name="visible">True</property>
<property name="label" translatable="yes">Selection</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="bg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="selected_fg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="selected_bg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="base_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="text_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkColorButton" id="fg_colorbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="use_alpha">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options"></property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label68">
<property name="visible">True</property>
<property name="label" translatable="yes">Normal</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="tab_expand">False</property>
<property name="tab_fill">True</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label69">
<property name="visible">True</property>
<property name="label" translatable="yes">Colours</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="type">tab</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="window_theme_hbox">
<property name="border_width">12</property>