File 0002-Add-Appearance-settings-panel.patch of Package gnome-control-center-netbook
From 917936f3e36578f5c86bb3b56f89b5564bd0f246 Mon Sep 17 00:00:00 2001
From: Thomas Wood <thomas.wood@intel.com>
Date: Thu, 26 Aug 2010 15:34:15 +0100
Subject: [PATCH 02/13] Add Appearance settings panel
---
capplets/appearance/Makefile.am | 50 ++++++++-
capplets/appearance/appearance-desktop.c | 7 +
capplets/appearance/appearance-module.c | 42 +++++++
capplets/appearance/cc-appearance-panel.c | 184 +++++++++++++++++++++++++++++
capplets/appearance/cc-appearance-panel.h | 54 +++++++++
capplets/appearance/data/appearance.ui | 59 +++++-----
po/POTFILES.in | 1 +
7 files changed, 368 insertions(+), 29 deletions(-)
create mode 100644 capplets/appearance/appearance-module.c
create mode 100644 capplets/appearance/cc-appearance-panel.c
create mode 100644 capplets/appearance/cc-appearance-panel.h
diff --git a/capplets/appearance/Makefile.am b/capplets/appearance/Makefile.am
index cc42f54..7058368 100644
--- a/capplets/appearance/Makefile.am
+++ b/capplets/appearance/Makefile.am
@@ -29,7 +29,55 @@ gnome_appearance_properties_SOURCES = \
theme-util.c \
theme-util.h
-AM_CFLAGS = -DGNOME_DESKTOP_USE_UNSTABLE_API
+
+ccmodulesdir = $(EXTENSIONSDIR)
+ccmodules_LTLIBRARIES = libappearance.la
+
+libappearance_la_SOURCES = \
+ appearance.h \
+ appearance-desktop.c \
+ appearance-desktop.h \
+ appearance-font.c \
+ appearance-font.h \
+ appearance-main.c \
+ appearance-themes.c \
+ appearance-themes.h \
+ appearance-style.c \
+ appearance-style.h \
+ gnome-wp-info.c \
+ gnome-wp-info.h \
+ gnome-wp-item.c \
+ gnome-wp-item.h \
+ gnome-wp-xml.c \
+ gnome-wp-xml.h \
+ theme-installer.c \
+ theme-installer.h \
+ theme-save.c \
+ theme-save.h \
+ theme-util.c \
+ theme-util.h \
+ appearance-module.c \
+ cc-appearance-panel.h \
+ cc-appearance-panel.c \
+ $(NULL)
+
+libappearance_la_LDFLAGS = \
+ $(EXTENSION_LIBTOOL_FLAGS) \
+ $(NULL)
+
+libappearance_la_LIBADD = \
+ $(EXTENSION_LIBS) \
+ $(FONT_CAPPLET_LIBS) \
+ $(EXTENSION_COMMON_LIBS) \
+ $(NULL)
+
+libappearance_la_CFLAGS = \
+ $(EXTENSION_CFLAGS) \
+ $(EXTENSION_COMMON_CFLAGS) \
+ $(NULL)
+
+libappearance_la_LIBTOOLFLAGS = --tag=disable-static
+
gnome_appearance_properties_LDADD = \
$(top_builddir)/libwindow-settings/libgnome-window-settings.la \
diff --git a/capplets/appearance/appearance-desktop.c b/capplets/appearance/appearance-desktop.c
index 2ae6bd6..3c5e82e 100644
--- a/capplets/appearance/appearance-desktop.c
+++ b/capplets/appearance/appearance-desktop.c
@@ -1034,6 +1034,13 @@ static void
wp_select_after_realize (GtkWidget *widget,
AppearanceData *data)
{
+ static gboolean setup_done = FALSE;
+
+ if (setup_done)
+ return;
+
+ setup_done = TRUE;
+
GnomeWPItem *item;
g_idle_add (wp_load_stuffs, data);
diff --git a/capplets/appearance/appearance-module.c b/capplets/appearance/appearance-module.c
new file mode 100644
index 0000000..8aae2fd
--- /dev/null
+++ b/capplets/appearance/appearance-module.c
@@ -0,0 +1,42 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2010 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include <config.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gmodule.h>
+#include <gio/gio.h>
+
+#include "cc-appearance-panel.h"
+
+void
+g_io_module_load (GIOModule *module)
+{
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
+ cc_appearance_panel_register (module);
+}
+
+void
+g_io_module_unload (GIOModule *module)
+{
+}
diff --git a/capplets/appearance/cc-appearance-panel.c b/capplets/appearance/cc-appearance-panel.c
new file mode 100644
index 0000000..8f5b9f9
--- /dev/null
+++ b/capplets/appearance/cc-appearance-panel.c
@@ -0,0 +1,184 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright (C) 2010 Intel, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "config.h"
+
+#include "cc-appearance-panel.h"
+#include "appearance.h"
+#include "appearance-desktop.h"
+#include "appearance-font.h"
+#include "appearance-themes.h"
+#include "appearance-style.h"
+#include "theme-installer.h"
+#include "theme-thumbnail.h"
+#include "activate-settings-daemon.h"
+#include "capplet-util.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+#include <glib/gi18n-lib.h>
+
+#include <libgnomeui/gnome-desktop-thumbnail.h>
+
+#define CC_APPEARANCE_PANEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_APPEARANCE_PANEL, CcAppearancePanelPrivate))
+
+#define WID(s) GTK_WIDGET (gtk_builder_get_object (builder, s))
+
+struct CcAppearancePanelPrivate
+{
+ GtkWidget *notebook;
+ AppearanceData *data;
+};
+
+enum {
+ PROP_0,
+};
+
+static void cc_appearance_panel_class_init (CcAppearancePanelClass *klass);
+static void cc_appearance_panel_init (CcAppearancePanel *appearance_panel);
+static void cc_appearance_panel_finalize (GObject *object);
+
+G_DEFINE_DYNAMIC_TYPE (CcAppearancePanel, cc_appearance_panel, CC_TYPE_PANEL)
+
+static void
+setup_panel (CcAppearancePanel *panel,
+ gboolean is_active)
+{
+ static gboolean setup_done = FALSE;
+
+ if (is_active && !setup_done)
+ {
+ AppearanceData *data;
+ GtkWidget *w;
+ gchar *uifile;
+ GtkBuilder *ui;
+ GError *err = NULL;
+ gchar *objects[] = {"render_details", "main_notebook", "wp_style_liststore",
+ "wp_color_liststore", "toolbar_style_liststore", NULL};
+
+ /* set up the data */
+ uifile = g_build_filename (GNOMECC_GTKBUILDER_DIR, "appearance.ui",
+ NULL);
+ ui = gtk_builder_new ();
+ gtk_builder_add_objects_from_file (ui, uifile, objects, &err);
+ g_free (uifile);
+
+ if (err)
+ {
+ g_warning (_("Could not load user interface file: %s"), err->message);
+ g_error_free (err);
+ g_object_unref (ui);
+ }
+ else
+ {
+ data = g_new (AppearanceData, 1);
+ data->client = gconf_client_get_default ();
+ data->ui = ui;
+ data->thumb_factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
+ }
+
+ /* init tabs */
+ desktop_init (data, NULL);
+ font_init (data);
+
+ /* prepare the main window */
+ w = appearance_capplet_get_widget (data, "main_notebook");
+ gtk_widget_show_all (w);
+ gtk_container_add (GTK_CONTAINER (panel), w);
+
+ w = appearance_capplet_get_widget (data, "theme_vbox");
+ gtk_widget_destroy (w);
+
+ setup_done = TRUE;
+ }
+}
+
+static GObject *
+cc_appearance_panel_constructor (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties)
+{
+ CcAppearancePanel *appearance_panel;
+
+ appearance_panel = CC_APPEARANCE_PANEL (G_OBJECT_CLASS (cc_appearance_panel_parent_class)->constructor (type,
+ n_construct_properties,
+ construct_properties));
+
+ g_object_set (appearance_panel,
+ "display-name", _("Appearance"),
+ "id", "gnome-appearance-properties.desktop",
+ NULL);
+
+ return G_OBJECT (appearance_panel);
+}
+
+static void
+cc_appearance_panel_class_init (CcAppearancePanelClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->constructor = cc_appearance_panel_constructor;
+ object_class->finalize = cc_appearance_panel_finalize;
+
+ g_type_class_add_private (klass, sizeof (CcAppearancePanelPrivate));
+}
+
+static void
+cc_appearance_panel_class_finalize (CcAppearancePanelClass *klass)
+{
+}
+
+static void
+cc_appearance_panel_init (CcAppearancePanel *panel)
+{
+ panel->priv = CC_APPEARANCE_PANEL_GET_PRIVATE (panel);
+
+ g_signal_connect (panel, "active-changed", G_CALLBACK (setup_panel),
+ NULL);
+}
+
+static void
+cc_appearance_panel_finalize (GObject *object)
+{
+ CcAppearancePanel *appearance_panel;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (CC_IS_APPEARANCE_PANEL (object));
+
+ appearance_panel = CC_APPEARANCE_PANEL (object);
+
+ g_return_if_fail (appearance_panel->priv != NULL);
+
+ G_OBJECT_CLASS (cc_appearance_panel_parent_class)->finalize (object);
+}
+
+void
+cc_appearance_panel_register (GIOModule *module)
+{
+ cc_appearance_panel_register_type (G_TYPE_MODULE (module));
+ g_io_extension_point_implement (CC_PANEL_EXTENSION_POINT_NAME,
+ CC_TYPE_APPEARANCE_PANEL,
+ "appearance",
+ 10);
+}
diff --git a/capplets/appearance/cc-appearance-panel.h b/capplets/appearance/cc-appearance-panel.h
new file mode 100644
index 0000000..c27629c
--- /dev/null
+++ b/capplets/appearance/cc-appearance-panel.h
@@ -0,0 +1,54 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2010 Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef __CC_APPEARANCE_PANEL_H
+#define __CC_APPEARANCE_PANEL_H
+
+#include <gtk/gtk.h>
+#include "cc-panel.h"
+
+G_BEGIN_DECLS
+
+#define CC_TYPE_APPEARANCE_PANEL (cc_appearance_panel_get_type ())
+#define CC_APPEARANCE_PANEL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), CC_TYPE_APPEARANCE_PANEL, CcAppearancePanel))
+#define CC_APPEARANCE_PANEL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), CC_TYPE_APPEARANCE_PANEL, CcAppearancePanelClass))
+#define CC_IS_APPEARANCE_PANEL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), CC_TYPE_APPEARANCE_PANEL))
+#define CC_IS_APPEARANCE_PANEL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), CC_TYPE_APPEARANCE_PANEL))
+#define CC_APPEARANCE_PANEL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CC_TYPE_APPEARANCE_PANEL, CcAppearancePanelClass))
+
+typedef struct CcAppearancePanelPrivate CcAppearancePanelPrivate;
+
+typedef struct
+{
+ CcPanel parent;
+ CcAppearancePanelPrivate *priv;
+} CcAppearancePanel;
+
+typedef struct
+{
+ CcPanelClass parent_class;
+} CcAppearancePanelClass;
+
+GType cc_appearance_panel_get_type (void);
+void cc_appearance_panel_register (GIOModule *module);
+
+G_END_DECLS
+
+#endif /* __CC_APPEARANCE_PANEL_H */
diff --git a/capplets/appearance/data/appearance.ui b/capplets/appearance/data/appearance.ui
index 3ba17b3..751cb11 100644
--- a/capplets/appearance/data/appearance.ui
+++ b/capplets/appearance/data/appearance.ui
@@ -14,7 +14,7 @@
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <object class="GtkVBox" id="vbox7">
+ <object class="GtkVBox" id="render_details_vbox">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="orientation">vertical</property>
@@ -892,7 +892,7 @@
</child>
<child>
<object class="GtkHBox" id="hbox8">
- <property name="visible">True</property>
+ <property name="no_show_all">True</property>
<property name="spacing">24</property>
<child>
<object class="GtkHBox" id="hbox_style">
@@ -1034,7 +1034,7 @@
</child>
<child>
<object class="GtkLabel" id="label2">
- <property name="visible">True</property>
+ <property name="no_show_all">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1048,7 +1048,6 @@
<child>
<object class="GtkLinkButton" id="more_backgrounds_linkbutton">
<property name="label" translatable="yes">Get more backgrounds online</property>
- <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="no_show_all">True</property>
@@ -1129,7 +1128,7 @@
</packing>
</child>
<child>
- <object class="GtkVBox" id="fonts_vbox">
+ <object class="GtkVBox" id="font_vbox">
<property name="visible">True</property>
<property name="border_width">12</property>
<property name="orientation">vertical</property>
@@ -1174,32 +1173,32 @@
</child>
<child>
<object class="GtkFontButton" id="desktop_font">
- <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
+ <property name="no_show_all">True</property>
<property name="use_font">True</property>
</object>
<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="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<object class="GtkFontButton" id="window_title_font">
- <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
+ <property name="no_show_all">True</property>
<property name="use_font">True</property>
</object>
<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="top_attach">4</property>
+ <property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1214,15 +1213,15 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label31">
- <property name="visible">True</property>
+ <property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Des_ktop font:</property>
<property name="use_underline">True</property>
@@ -1230,15 +1229,15 @@
<property name="mnemonic_widget">desktop_font</property>
</object>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label30">
- <property name="visible">True</property>
+ <property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">_Window title font:</property>
<property name="use_underline">True</property>
@@ -1246,8 +1245,8 @@
<property name="mnemonic_widget">window_title_font</property>
</object>
<packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1262,8 +1261,8 @@
<property name="mnemonic_widget">monospace_font</property>
</object>
<packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
@@ -1625,9 +1624,6 @@
<row>
<col id="0" translatable="yes">Stretch</col>
</row>
- <row>
- <col id="0" translatable="yes">Span</col>
- </row>
</data>
</object>
<object class="GtkListStore" id="wp_color_liststore">
@@ -1681,7 +1677,7 @@
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <object class="GtkNotebook" id="notebook2">
+ <object class="GtkNotebook" id="theme_details_notebook">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -1776,6 +1772,7 @@
<child>
<object class="GtkHBox" id="color_scheme_message_hbox">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="no_show_all">True</property>
<property name="spacing">6</property>
<child>
<object class="GtkImage" id="image2">
@@ -2302,7 +2299,10 @@
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Small</property>
- <property name="use_markup">True</property>
+ <attributes>
+ <attribute name="style" value="normal"/>
+ <attribute name="scale" value="0.833000"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -2327,7 +2327,10 @@
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Large</property>
- <property name="use_markup">True</property>
+ <attributes>
+ <attribute name="style" value="normal"/>
+ <attribute name="scale" value="0.833000"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -2454,7 +2457,7 @@
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <object class="GtkTable" id="table3">
+ <object class="GtkTable" id="save_dialog_table">
<property name="visible">True</property>
<property name="border_width">6</property>
<property name="n_rows">3</property>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ff149bc..4296e9d 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -21,6 +21,7 @@ capplets/appearance/appearance-main.c
capplets/appearance/appearance-style.c
capplets/appearance/appearance-themes.c
[type: gettext/glade]capplets/appearance/data/appearance.ui
+capplets/appearance/cc-appearance-panel.c
capplets/appearance/data/gnome-appearance-properties.desktop.in.in
capplets/appearance/data/gnome-theme-installer.desktop.in.in
capplets/appearance/data/gnome-theme-package.xml.in
--
1.7.2.2