[gnome-control-center] info: Add panel chooser, graphics tab
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] info: Add panel chooser, graphics tab
- Date: Mon, 14 Feb 2011 22:19:17 +0000 (UTC)
commit c32ce5ee9d9e763f3ca780a464d7a19d7bfee3b7
Author: Colin Walters <walters verbum org>
Date: Thu Feb 10 14:13:28 2011 -0500
info: Add panel chooser, graphics tab
This is work towards implementing
http://live.gnome.org/Design/SystemSettings/SystemInformation
Implemented in this patch is some cleanup and parts of the
Graphics tab.
https://bugzilla.gnome.org/show_bug.cgi?id=642068
panels/info/Makefile.am | 1 +
panels/info/cc-info-panel.c | 372 +++++++++++++++-----
panels/info/info.ui | 834 +++++++++++++++++++++++++++----------------
3 files changed, 822 insertions(+), 385 deletions(-)
---
diff --git a/panels/info/Makefile.am b/panels/info/Makefile.am
index cc1733c..c359069 100644
--- a/panels/info/Makefile.am
+++ b/panels/info/Makefile.am
@@ -8,6 +8,7 @@ INCLUDES = \
-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-DGNOMECC_DATA_DIR="\"$(pkgdatadir)\"" \
-DDATADIR="\"$(datadir)\"" \
+ -DLIBEXECDIR="\"$(libexecdir)\"" \
$(NULL)
ccpanelsdir = $(PANELS_DIR)
diff --git a/panels/info/cc-info-panel.c b/panels/info/cc-info-panel.c
index 507816e..4c8ed3d 100644
--- a/panels/info/cc-info-panel.c
+++ b/panels/info/cc-info-panel.c
@@ -33,6 +33,9 @@
#include <glibtop/mem.h>
#include <glibtop/sysinfo.h>
+#define GNOME_SESSION_MANAGER_SCHEMA "org.gnome.desktop.session"
+#define KEY_SESSION_NAME "session-name"
+
#define WID(b, w) (GtkWidget *) gtk_builder_get_object (b, w)
G_DEFINE_DYNAMIC_TYPE (CcInfoPanel, cc_info_panel, CC_TYPE_PANEL)
@@ -46,6 +49,10 @@ struct _CcInfoPanelPrivate
char *gnome_version;
char *gnome_distributor;
char *gnome_date;
+
+ GDBusConnection *session_bus;
+ GDBusProxy *session_manager_proxy;
+ GSettings *session_settings;
};
typedef struct
@@ -162,6 +169,68 @@ load_gnome_version (char **version,
return ret;
};
+typedef struct
+{
+ char *regex;
+ char *replacement;
+} ReplaceStrings;
+
+static char *
+prettify_info (const char *info)
+{
+ char *pretty;
+ int i;
+ static const ReplaceStrings rs[] = {
+ { "Mesa DRI ", ""},
+ { "Intel[(]R[)]", "Intel<sup>\302\256</sup>"},
+ { "Core[(]TM[)]", "Core<sup>\342\204\242</sup>"},
+ { "Atom[(]TM[)]", "Atom<sup>\342\204\242</sup>"},
+ { "Graphics Controller", "Graphics"},
+ };
+
+ pretty = g_markup_escape_text (info, -1);
+
+ for (i = 0; i < G_N_ELEMENTS (rs); i++)
+ {
+ GError *error;
+ GRegex *re;
+ char *new;
+
+ error = NULL;
+
+ re = g_regex_new (rs[i].regex, 0, 0, &error);
+ if (re == NULL)
+ {
+ g_warning ("Error building regex: %s", error->message);
+ g_error_free (error);
+ continue;
+ }
+
+ new = g_regex_replace_literal (re,
+ pretty,
+ -1,
+ 0,
+ rs[i].replacement,
+ 0,
+ &error);
+
+ g_regex_unref (re);
+
+ if (error != NULL)
+ {
+ g_warning ("Error replacing %s: %s", rs[i].regex, error->message);
+ g_error_free (error);
+ continue;
+ }
+
+ g_free (pretty);
+ pretty = new;
+ }
+
+ return pretty;
+}
+
+
static char *
get_graphics_info_lspci (void)
{
@@ -169,6 +238,7 @@ get_graphics_info_lspci (void)
GRegex *re;
GMatchInfo *match_info;
char *output;
+ char *result;
GString *info;
info = g_string_new (NULL);
@@ -207,8 +277,10 @@ get_graphics_info_lspci (void)
out:
g_free (output);
+ result = prettify_info (info->str);
+ g_string_free (info, TRUE);
- return g_string_free (info, FALSE);
+ return result;
}
static char *
@@ -218,6 +290,7 @@ get_graphics_info_glxinfo (void)
GRegex *re;
GMatchInfo *match_info;
char *output;
+ char *result;
GString *info;
info = g_string_new (NULL);
@@ -255,83 +328,81 @@ get_graphics_info_glxinfo (void)
out:
g_free (output);
+ result = prettify_info (info->str);
+ g_string_free (info, TRUE);
- return g_string_free (info, FALSE);
+ return result;
}
-typedef struct
-{
- char *regex;
- char *replacement;
-} ReplaceStrings;
-
static char *
-prettify_info (const char *info)
+get_graphics_info (void)
{
- char *pretty;
- int i;
- static const ReplaceStrings rs[] = {
- { "Mesa DRI ", ""},
- { "Intel[(]R[)]", "Intel<sup>\302\256</sup>"},
- { "Core[(]TM[)]", "Core<sup>\342\204\242</sup>"},
- { "Atom[(]TM[)]", "Atom<sup>\342\204\242</sup>"},
- { "Graphics Controller", "Graphics"},
- };
+ gchar *info;
- pretty = g_markup_escape_text (info, -1);
-
- for (i = 0; i < G_N_ELEMENTS (rs); i++)
- {
- GError *error;
- GRegex *re;
- char *new;
-
- error = NULL;
+ info = get_graphics_info_glxinfo ();
+ if (info == NULL)
+ info = get_graphics_info_lspci ();
- re = g_regex_new (rs[i].regex, 0, 0, &error);
- if (re == NULL)
- {
- g_warning ("Error building regex: %s", error->message);
- g_error_free (error);
- continue;
- }
+ return info;
+}
- new = g_regex_replace_literal (re,
- pretty,
- -1,
- 0,
- rs[i].replacement,
- 0,
- &error);
+static gboolean
+get_is_graphics_accelerated (void)
+{
+ GError *error = NULL;
+ gchar *is_accelerated_binary;
+ gchar *argv[2];
+ gint estatus;
- g_regex_unref (re);
+ is_accelerated_binary = g_build_filename (LIBEXECDIR, "gnome-session-is-accelerated", NULL);
- if (error != NULL)
- {
- g_warning ("Error replacing %s: %s", rs[i].regex, error->message);
- g_error_free (error);
- continue;
- }
+ error = NULL;
+ argv[0] = is_accelerated_binary;
+ argv[G_N_ELEMENTS(argv)] = NULL;
- g_free (pretty);
- pretty = new;
- }
+ g_spawn_sync (NULL, argv, NULL, G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
+ NULL, NULL, NULL, NULL, &estatus, &error);
+ if (error != NULL || estatus != 0)
+ return FALSE;
+ else
+ return TRUE;
- return pretty;
}
static char *
-get_graphics_info (void)
+get_graphics_experience (CcInfoPanel *self)
{
- char *info;
+ GError *error = NULL;
+ GVariant *reply, *reply_bool;
+ gboolean is_fallback;
+ gchar *experience_str;
+
+ if (!(reply = g_dbus_connection_call_sync (self->priv->session_bus,
+ "org.gnome.SessionManager",
+ "/org/gnome/SessionManager",
+ "org.freedesktop.DBus.Properties",
+ "Get",
+ g_variant_new ("(ss)", "org.gnome.SessionManager", "fallback"),
+ (GVariantType*)"v",
+ 0,
+ -1,
+ NULL, &error)))
+ {
+ g_warning ("Failed to get fallback mode: %s", error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
- info = get_graphics_info_glxinfo ();
- if (info == NULL)
- info = get_graphics_info_lspci ();
+ g_variant_get (reply, "v", &reply_bool);
+ is_fallback = g_variant_get_boolean (reply_bool);
+ experience_str = g_strdup (is_fallback ? _("Fallback") : _("Default"));
+ g_variant_unref (reply_bool);
+ g_variant_unref (reply);
- return info;
+ return experience_str;
}
+
static void
cc_info_panel_get_property (GObject *object,
guint property_id,
@@ -602,32 +673,141 @@ get_cpu_info (const glibtop_sysinfo *info)
}
static void
-cc_info_panel_init (CcInfoPanel *self)
+on_section_changed (GtkTreeSelection *selection,
+ gpointer data)
{
- GError *error;
- GtkWidget *widget;
- gboolean res;
- glibtop_mem mem;
- const glibtop_sysinfo *info;
- char *text;
- char *pretty;
+ CcInfoPanel *self = CC_INFO_PANEL (data);
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ GtkTreePath *path;
+ gint *indices;
+ int index;
- self->priv = INFO_PANEL_PRIVATE (self);
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
- self->priv->builder = gtk_builder_new ();
+ path = gtk_tree_model_get_path (model, &iter);
- error = NULL;
- gtk_builder_add_from_file (self->priv->builder,
- GNOMECC_UI_DIR "/info.ui",
- &error);
+ indices = gtk_tree_path_get_indices (path);
+ index = indices[0];
- if (error != NULL)
+ if (index >= 0)
{
- g_warning ("Could not load interface file: %s", error->message);
- g_error_free (error);
- return;
+ g_object_set (G_OBJECT (WID (self->priv->builder, "notebook")),
+ "page", index, NULL);
}
+ gtk_tree_path_free (path);
+}
+
+static gboolean
+switch_fallback_get_mapping (GValue *value,
+ GVariant *variant,
+ gpointer data)
+{
+ const char *setting = g_variant_get_string (variant, NULL);
+ g_value_set_boolean (value, strcmp (setting, "gnome") != 0);
+ return TRUE;
+}
+
+static GVariant *
+switch_fallback_set_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer data)
+{
+ gboolean is_set = g_value_get_boolean (value);
+ return g_variant_new_string (is_set ? "gnome-fallback" : "gnome");
+}
+
+static void
+info_panel_setup_graphics (CcInfoPanel *self)
+{
+ GtkWidget *widget;
+ GtkSwitch *sw;
+ gchar *text;
+
+ text = get_graphics_info ();
+ widget = WID (self->priv->builder, "graphics_chipset_label");
+ gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
+ g_free (text);
+
+ text = NULL;
+ widget = WID (self->priv->builder, "graphics_driver_label");
+ gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
+ g_free (text);
+
+ text = get_graphics_experience (self);
+ widget = WID (self->priv->builder, "graphics_experience_label");
+ gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
+ g_free (text);
+
+ widget = WID (self->priv->builder, "graphics_fallback_switch_box");
+ sw = GTK_SWITCH (gtk_switch_new ());
+ g_settings_bind_with_mapping (self->priv->session_settings, KEY_SESSION_NAME,
+ sw, "active", 0,
+ switch_fallback_get_mapping,
+ switch_fallback_set_mapping, self, NULL);
+ gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (sw));
+ gtk_widget_show_all (GTK_WIDGET (sw));
+}
+
+static void
+info_panel_setup_selector (CcInfoPanel *self)
+{
+ GtkTreeView *view;
+ GtkListStore *model;
+ GtkTreeSelection *selection;
+ GtkTreeViewColumn *column;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
+ int section_name_column = 0;
+
+ view = GTK_TREE_VIEW (WID (self->priv->builder, "overview_treeview"));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+
+ model = gtk_list_store_new (1, G_TYPE_STRING);
+ gtk_tree_view_set_model (view, GTK_TREE_MODEL (model));
+ g_object_unref (model);
+
+ renderer = gtk_cell_renderer_text_new ();
+ g_object_set (renderer,
+ "width-chars", 20,
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
+ column = gtk_tree_view_column_new_with_attributes (_("Section"),
+ renderer,
+ "text", section_name_column,
+ NULL);
+ gtk_tree_view_append_column (view, column);
+
+
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, section_name_column,
+ _("Overview"),
+ -1);
+ gtk_tree_selection_select_iter (selection, &iter);
+
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, section_name_column,
+ _("Graphics"),
+ -1);
+
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (on_section_changed), self);
+ on_section_changed (selection, self);
+
+ gtk_widget_show_all (GTK_WIDGET (view));
+}
+
+static void
+info_panel_setup_overview (CcInfoPanel *self)
+{
+ GtkWidget *widget;
+ gboolean res;
+ glibtop_mem mem;
+ const glibtop_sysinfo *info;
+ char *text;
+
res = load_gnome_version (&self->priv->gnome_version,
&self->priv->gnome_distributor,
&self->priv->gnome_date);
@@ -649,9 +829,7 @@ cc_info_panel_init (CcInfoPanel *self)
widget = WID (self->priv->builder, "processor_label");
text = get_cpu_info (info);
- pretty = prettify_info (text);
- gtk_label_set_markup (GTK_LABEL (widget), pretty ? pretty : "");
- g_free (pretty);
+ gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
g_free (text);
widget = WID (self->priv->builder, "os_type_label");
@@ -665,16 +843,44 @@ cc_info_panel_init (CcInfoPanel *self)
g_free (text);
text = get_graphics_info ();
- pretty = prettify_info (text);
widget = WID (self->priv->builder, "graphics_label");
- gtk_label_set_markup (GTK_LABEL (widget), pretty ? pretty : "");
+ gtk_label_set_markup (GTK_LABEL (widget), text ? text : "");
g_free (text);
- g_free (pretty);
- widget = WID (self->priv->builder, "info_vbox");
+ widget = WID (self->priv->builder, "info_paned");
gtk_widget_reparent (widget, (GtkWidget *) self);
}
+static void
+cc_info_panel_init (CcInfoPanel *self)
+{
+ GError *error = NULL;
+
+ self->priv = INFO_PANEL_PRIVATE (self);
+
+ self->priv->builder = gtk_builder_new ();
+
+ self->priv->session_settings = g_settings_new (GNOME_SESSION_MANAGER_SCHEMA);
+
+ self->priv->session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+ g_assert (self->priv->session_bus);
+
+ gtk_builder_add_from_file (self->priv->builder,
+ GNOMECC_UI_DIR "/info.ui",
+ &error);
+
+ if (error != NULL)
+ {
+ g_warning ("Could not load interface file: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ info_panel_setup_selector (self);
+ info_panel_setup_overview (self);
+ info_panel_setup_graphics (self);
+}
+
void
cc_info_panel_register (GIOModule *module)
{
diff --git a/panels/info/info.ui b/panels/info/info.ui
index 66db5ee..f07eb63 100644
--- a/panels/info/info.ui
+++ b/panels/info/info.ui
@@ -4,351 +4,581 @@
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
- <object class="GtkVBox" id="info_vbox">
+ <object class="GtkHPaned" id="info_paned">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">10</property>
- <property name="spacing">12</property>
+ <property name="can_focus">True</property>
<child>
- <object class="GtkAlignment" id="alignment1">
+ <object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="top_padding">20</property>
<child>
- <object class="GtkVBox" id="vbox1">
+ <object class="GtkTreeView" id="overview_treeview">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">18</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1"/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="info_vbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">10</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
<child>
- <object class="GtkImage" id="system_image">
+ <object class="GtkAlignment" id="overview_container">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">GnomeLogoVerticalMedium.svg</property>
+ <property name="top_padding">20</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">18</property>
+ <child>
+ <object class="GtkImage" id="system_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="pixbuf">GnomeLogoVerticalMedium.svg</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="version_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">Version 3.0</property>
+ <property name="selectable">True</property>
+ <attributes>
+ <attribute name="scale" value="1.25"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">6</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Device name:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Memory:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Processor:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">OS type:</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Disk:</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entry1">
+ <property name="can_focus">True</property>
+ <property name="no_show_all">True</property>
+ <property name="invisible_char">â??</property>
+ <property name="width_chars">12</property>
+ <property name="invisible_char_set">True</property>
+ <property name="caps_lock_warning">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="memory_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">True</property>
+ </object>
+ <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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="processor_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="os_type_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">True</property>
+ </object>
+ <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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="disk_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <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">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <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">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Graphics:</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <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">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="graphics_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">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>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
</child>
- <child>
- <object class="GtkLabel" id="version_label">
+ <child type="tab">
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">Version 3.0</property>
- <property name="selectable">True</property>
- <attributes>
- <attribute name="scale" value="1.25"/>
- </attributes>
+ <property name="label" translatable="yes">page 1</property>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
<child>
- <object class="GtkTable" id="table1">
+ <object class="GtkHBox" id="graphics_detail_container">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="n_rows">6</property>
- <property name="n_columns">3</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">5</property>
- <child>
- <object class="GtkLabel" id="label1">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Device name:</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Memory:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Processor:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- </packing>
- </child>
<child>
- <object class="GtkLabel" id="label4">
+ <object class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">OS type:</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Disk:</property>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="entry1">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="invisible_char">â??</property>
- <property name="width_chars">12</property>
- <property name="caps_lock_warning">False</property>
+ <property name="top_padding">20</property>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Chipset:</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Driver:</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Experience:</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="graphics_chipset_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="graphics_driver_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">True</property>
+ </object>
+ <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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="graphics_experience_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">Unknown</property>
+ <property name="selectable">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>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <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">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"> </property>
+ </object>
+ <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">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Always Use Fallback:</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="graphics_fallback_switch_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </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>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
</object>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="memory_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">Unknown</property>
- <property name="selectable">True</property>
- </object>
- <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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="processor_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">Unknown</property>
- <property name="selectable">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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="os_type_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">Unknown</property>
- <property name="selectable">True</property>
- </object>
- <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>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="disk_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">Unknown</property>
- <property name="selectable">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <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">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <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">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label10">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label11">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Graphics:</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"> </property>
- </object>
- <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">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="graphics_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">Unknown</property>
- <property name="selectable">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>
- </packing>
+ <placeholder/>
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">page 2</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">page 3</property>
+ </object>
+ <packing>
<property name="position">2</property>
+ <property name="tab_fill">False</property>
</packing>
</child>
</object>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkHButtonBox" id="hbuttonbox1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="button1">
- <property name="label" translatable="yes">Update Available</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="no_show_all">True</property>
- <property name="use_action_appearance">False</property>
- </object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">0</property>
- <property name="secondary">True</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="more_info_button">
- <property name="label" translatable="yes">More Info</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="no_show_all">True</property>
- <property name="use_action_appearance">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
+ <placeholder/>
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">1</property>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
</packing>
</child>
</object>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]