[gnome-control-center] details: Split default apps as a separate panel
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] details: Split default apps as a separate panel
- Date: Wed, 24 May 2017 13:58:23 +0000 (UTC)
commit 1154658cd96e709d90a3af02a94a294ee5a236ac
Author: Mohammed Sadiq <sadiq sadiqpk org>
Date: Tue May 23 16:45:08 2017 +0530
details: Split default apps as a separate panel
https://bugzilla.gnome.org/show_bug.cgi?id=779216
panels/info/Makefile.am | 2 +
panels/info/cc-info-default-apps-panel.c | 214 ++++++++++++++++++++++++++++++
panels/info/cc-info-default-apps-panel.h | 36 +++++
panels/info/cc-info-panel.c | 123 +-----------------
panels/info/info-default-apps.ui | 202 ++++++++++++++++++++++++++++
panels/info/info.gresource.xml | 1 +
panels/info/info.ui | 202 +----------------------------
7 files changed, 459 insertions(+), 321 deletions(-)
---
diff --git a/panels/info/Makefile.am b/panels/info/Makefile.am
index 4314def..547c9a5 100644
--- a/panels/info/Makefile.am
+++ b/panels/info/Makefile.am
@@ -23,6 +23,8 @@ libinfo_la_SOURCES = \
cc-info-panel.h \
cc-info-overview-panel.c \
cc-info-overview-panel.h \
+ cc-info-default-apps-panel.c \
+ cc-info-default-apps-panel.h \
gsd-disk-space-helper.h \
gsd-disk-space-helper.c \
info-cleanup.h \
diff --git a/panels/info/cc-info-default-apps-panel.c b/panels/info/cc-info-default-apps-panel.c
new file mode 100644
index 0000000..e417ff4
--- /dev/null
+++ b/panels/info/cc-info-default-apps-panel.c
@@ -0,0 +1,214 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2017 Mohammed Sadiq <sadiq sadiqpk org>
+ * Copyright (C) 2010 Red Hat, Inc
+ * Copyright (C) 2008 William Jon McCann <jmccann redhat com>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <config.h>
+
+#include "cc-info-panel.h"
+#include "cc-info-resources.h"
+#include "info-cleanup.h"
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gio/gio.h>
+#include <gio/gunixmounts.h>
+#include <gio/gdesktopappinfo.h>
+
+#include <glibtop/fsusage.h>
+#include <glibtop/mountlist.h>
+#include <glibtop/mem.h>
+#include <glibtop/sysinfo.h>
+
+#ifdef GDK_WINDOWING_WAYLAND
+#include <gdk/gdkwayland.h>
+#endif
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif
+
+#include "gsd-disk-space-helper.h"
+
+#include "cc-info-default-apps-panel.h"
+
+typedef struct
+{
+ const char *content_type;
+ gint label_offset;
+ /* A pattern used to filter supported mime types
+ when changing preferred applications. NULL
+ means no other types should be changed */
+ const char *extra_type_filter;
+} DefaultAppData;
+
+struct _CcInfoDefaultAppsPanel
+{
+ GtkBox parent_instance;
+
+ GtkWidget *default_apps_grid;
+
+ GtkWidget *web_label;
+ GtkWidget *mail_label;
+ GtkWidget *calendar_label;
+ GtkWidget *music_label;
+ GtkWidget *video_label;
+ GtkWidget *photos_label;
+};
+
+
+G_DEFINE_TYPE (CcInfoDefaultAppsPanel, cc_info_default_apps_panel, GTK_TYPE_BOX)
+
+static void
+default_app_changed (GtkAppChooserButton *button,
+ CcInfoDefaultAppsPanel *self)
+{
+ GAppInfo *info;
+ GError *error = NULL;
+ DefaultAppData *app_data;
+ int i;
+
+ info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (button));
+ app_data = g_object_get_data (G_OBJECT (button), "cc-default-app-data");
+
+ if (g_app_info_set_as_default_for_type (info, app_data->content_type, &error) == FALSE)
+ {
+ g_warning ("Failed to set '%s' as the default application for '%s': %s",
+ g_app_info_get_name (info), app_data->content_type, error->message);
+ g_error_free (error);
+ error = NULL;
+ }
+ else
+ {
+ g_debug ("Set '%s' as the default handler for '%s'",
+ g_app_info_get_name (info), app_data->content_type);
+ }
+
+ if (app_data->extra_type_filter)
+ {
+ const char *const *mime_types;
+ GPatternSpec *pattern;
+
+ pattern = g_pattern_spec_new (app_data->extra_type_filter);
+ mime_types = g_app_info_get_supported_types (info);
+
+ for (i = 0; mime_types && mime_types[i]; i++)
+ {
+ if (!g_pattern_match_string (pattern, mime_types[i]))
+ continue;
+
+ if (g_app_info_set_as_default_for_type (info, mime_types[i], &error) == FALSE)
+ {
+ g_warning ("Failed to set '%s' as the default application for secondary "
+ "content type '%s': %s",
+ g_app_info_get_name (info), mime_types[i], error->message);
+ g_error_free (error);
+ }
+ else
+ {
+ g_debug ("Set '%s' as the default handler for '%s'",
+ g_app_info_get_name (info), mime_types[i]);
+ }
+ }
+
+ g_pattern_spec_free (pattern);
+ }
+
+ g_object_unref (info);
+}
+
+#define OFFSET(x) (G_STRUCT_OFFSET (CcInfoDefaultAppsPanel, x))
+#define WIDGET_FROM_OFFSET(x) (G_STRUCT_MEMBER (GtkWidget*, self, x))
+
+static void
+info_panel_setup_default_app (CcInfoDefaultAppsPanel *self,
+ DefaultAppData *data,
+ guint left_attach,
+ guint top_attach)
+{
+ GtkWidget *button;
+ GtkWidget *label;
+
+ button = gtk_app_chooser_button_new (data->content_type);
+ g_object_set_data (G_OBJECT (button), "cc-default-app-data", data);
+
+ gtk_app_chooser_button_set_show_default_item (GTK_APP_CHOOSER_BUTTON (button), TRUE);
+ gtk_grid_attach (GTK_GRID (self->default_apps_grid), button, left_attach, top_attach,
+ 1, 1);
+ g_signal_connect (G_OBJECT (button), "changed",
+ G_CALLBACK (default_app_changed), self);
+ gtk_widget_show (button);
+
+ label = WIDGET_FROM_OFFSET (data->label_offset);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
+}
+
+static DefaultAppData preferred_app_infos[] = {
+ /* for web, we need to support text/html,
+ application/xhtml+xml and x-scheme-handler/https,
+ hence the "*" pattern
+ */
+ { "x-scheme-handler/http", OFFSET (web_label), "*" },
+ { "x-scheme-handler/mailto", OFFSET (mail_label), NULL },
+ { "text/calendar", OFFSET (calendar_label), NULL },
+ { "audio/x-vorbis+ogg", OFFSET (music_label), "audio/*" },
+ { "video/x-ogm+ogg", OFFSET (video_label), "video/*" },
+ { "image/jpeg", OFFSET (photos_label), "image/*" }
+};
+
+static void
+info_panel_setup_default_apps (CcInfoDefaultAppsPanel *self)
+{
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS (preferred_app_infos); i++)
+ {
+ info_panel_setup_default_app (self, &preferred_app_infos[i],
+ 1, i);
+ }
+}
+
+static void
+cc_info_default_apps_panel_class_init (CcInfoDefaultAppsPanelClass *klass)
+{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/control-center/info/info-default-apps.ui");
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, default_apps_grid);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, web_label);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, mail_label);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, calendar_label);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, music_label);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, video_label);
+ gtk_widget_class_bind_template_child (widget_class, CcInfoDefaultAppsPanel, photos_label);
+}
+
+static void
+cc_info_default_apps_panel_init (CcInfoDefaultAppsPanel *self)
+{
+ gtk_widget_init_template (GTK_WIDGET (self));
+
+ info_panel_setup_default_apps (self);
+}
+
+GtkWidget *
+cc_info_default_apps_panel_new (void)
+{
+ return g_object_new (CC_TYPE_INFO_DEFAULT_APPS_PANEL,
+ NULL);
+}
diff --git a/panels/info/cc-info-default-apps-panel.h b/panels/info/cc-info-default-apps-panel.h
new file mode 100644
index 0000000..cafdbe4
--- /dev/null
+++ b/panels/info/cc-info-default-apps-panel.h
@@ -0,0 +1,36 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
+ *
+ * Copyright (C) 2017 Mohammed Sadiq <sadiq sadiqpk org>
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef CC_INFO_DEFAULT_APPS_PANEL_H
+#define CC_INFO_DEFAULT_APPS_PANEL_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define CC_TYPE_INFO_DEFAULT_APPS_PANEL (cc_info_default_apps_panel_get_type ())
+
+G_DECLARE_FINAL_TYPE (CcInfoDefaultAppsPanel, cc_info_default_apps_panel, CC, INFO_DEFAULT_APPS_PANEL,
GtkBox)
+
+GtkWidget *cc_info_default_apps_panel_new (void);
+
+
+G_END_DECLS
+
+#endif /* CC_INFO_DEFAULT_APPS_PANEL_H */
diff --git a/panels/info/cc-info-panel.c b/panels/info/cc-info-panel.c
index 6def9b3..0df2f02 100644
--- a/panels/info/cc-info-panel.c
+++ b/panels/info/cc-info-panel.c
@@ -22,6 +22,7 @@
#include "cc-info-panel.h"
#include "cc-info-overview-panel.h"
+#include "cc-info-default-apps-panel.h"
#include "cc-info-resources.h"
#include "info-cleanup.h"
@@ -64,16 +65,6 @@ CC_PANEL_REGISTER (CcInfoPanel, cc_info_panel)
#define INFO_PANEL_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_INFO_PANEL, CcInfoPanelPrivate))
-typedef struct
-{
- const char *content_type;
- const char *label;
- /* A pattern used to filter supported mime types
- when changing preferred applications. NULL
- means no other types should be changed */
- const char *extra_type_filter;
-} DefaultAppData;
-
struct _CcInfoPanelPrivate
{
GtkBuilder *builder;
@@ -120,6 +111,7 @@ cc_info_panel_class_init (CcInfoPanelClass *klass)
object_class->finalize = cc_info_panel_finalize;
g_type_ensure (CC_TYPE_INFO_OVERVIEW_PANEL);
+ g_type_ensure (CC_TYPE_INFO_DEFAULT_APPS_PANEL);
}
static void
@@ -149,116 +141,6 @@ on_section_changed (GtkTreeSelection *selection,
gtk_tree_path_free (path);
}
-
-static void
-default_app_changed (GtkAppChooserButton *button,
- CcInfoPanel *self)
-{
- GAppInfo *info;
- GError *error = NULL;
- DefaultAppData *app_data;
- int i;
-
- info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (button));
- app_data = g_object_get_data (G_OBJECT (button), "cc-default-app-data");
-
- if (g_app_info_set_as_default_for_type (info, app_data->content_type, &error) == FALSE)
- {
- g_warning ("Failed to set '%s' as the default application for '%s': %s",
- g_app_info_get_name (info), app_data->content_type, error->message);
- g_error_free (error);
- error = NULL;
- }
- else
- {
- g_debug ("Set '%s' as the default handler for '%s'",
- g_app_info_get_name (info), app_data->content_type);
- }
-
- if (app_data->extra_type_filter)
- {
- const char *const *mime_types;
- GPatternSpec *pattern;
-
- pattern = g_pattern_spec_new (app_data->extra_type_filter);
- mime_types = g_app_info_get_supported_types (info);
-
- for (i = 0; mime_types && mime_types[i]; i++)
- {
- if (!g_pattern_match_string (pattern, mime_types[i]))
- continue;
-
- if (g_app_info_set_as_default_for_type (info, mime_types[i], &error) == FALSE)
- {
- g_warning ("Failed to set '%s' as the default application for secondary "
- "content type '%s': %s",
- g_app_info_get_name (info), mime_types[i], error->message);
- g_error_free (error);
- }
- else
- {
- g_debug ("Set '%s' as the default handler for '%s'",
- g_app_info_get_name (info), mime_types[i]);
- }
- }
-
- g_pattern_spec_free (pattern);
- }
-
- g_object_unref (info);
-}
-
-static void
-info_panel_setup_default_app (CcInfoPanel *self,
- DefaultAppData *data,
- guint left_attach,
- guint top_attach)
-{
- GtkWidget *button;
- GtkWidget *grid;
- GtkWidget *label;
-
- grid = WID ("default_apps_grid");
-
- button = gtk_app_chooser_button_new (data->content_type);
- g_object_set_data (G_OBJECT (button), "cc-default-app-data", data);
-
- gtk_app_chooser_button_set_show_default_item (GTK_APP_CHOOSER_BUTTON (button), TRUE);
- gtk_grid_attach (GTK_GRID (grid), button, left_attach, top_attach,
- 1, 1);
- g_signal_connect (G_OBJECT (button), "changed",
- G_CALLBACK (default_app_changed), self);
- gtk_widget_show (button);
-
- label = WID(data->label);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), button);
-}
-
-static DefaultAppData preferred_app_infos[] = {
- /* for web, we need to support text/html,
- application/xhtml+xml and x-scheme-handler/https,
- hence the "*" pattern
- */
- { "x-scheme-handler/http", "web-label", "*" },
- { "x-scheme-handler/mailto", "mail-label", NULL },
- { "text/calendar", "calendar-label", NULL },
- { "audio/x-vorbis+ogg", "music-label", "audio/*" },
- { "video/x-ogm+ogg", "video-label", "video/*" },
- { "image/jpeg", "photos-label", "image/*" }
-};
-
-static void
-info_panel_setup_default_apps (CcInfoPanel *self)
-{
- int i;
-
- for (i = 0; i < G_N_ELEMENTS(preferred_app_infos); i++)
- {
- info_panel_setup_default_app (self, &preferred_app_infos[i],
- 1, i);
- }
-}
-
static char **
remove_elem_from_str_array (char **v,
const char *s)
@@ -825,6 +707,5 @@ cc_info_panel_init (CcInfoPanel *self)
info_panel_setup_selector (self);
info_panel_setup_overview (self);
- info_panel_setup_default_apps (self);
info_panel_setup_media (self);
}
diff --git a/panels/info/info-default-apps.ui b/panels/info/info-default-apps.ui
new file mode 100644
index 0000000..c8f91a1
--- /dev/null
+++ b/panels/info/info-default-apps.ui
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <template class="CcInfoDefaultAppsPanel" parent="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="border_width">20</property>
+ <property name="spacing">10</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="default_apps_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="web_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Web</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="mail_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Mail</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="left_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="calendar_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Calendar</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="left_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="music_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">M_usic</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="left_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="video_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Video</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="left_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label25">
+ <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="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label26">
+ <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="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label27">
+ <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="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label28">
+ <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="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label29">
+ <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="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="photos_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">_Photos</property>
+ <property name="use_underline">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="left_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label33">
+ <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="top_attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </template>
+</interface>
diff --git a/panels/info/info.gresource.xml b/panels/info/info.gresource.xml
index d371dbc..ae80be4 100644
--- a/panels/info/info.gresource.xml
+++ b/panels/info/info.gresource.xml
@@ -3,6 +3,7 @@
<gresource prefix="/org/gnome/control-center/info">
<file preprocess="xml-stripblanks">info.ui</file>
<file preprocess="xml-stripblanks">info-overview.ui</file>
+ <file preprocess="xml-stripblanks">info-default-apps.ui</file>
<file>GnomeLogoVerticalMedium.svg</file>
</gresource>
</gresources>
diff --git a/panels/info/info.ui b/panels/info/info.ui
index d0843e8..a050230 100644
--- a/panels/info/info.ui
+++ b/panels/info/info.ui
@@ -206,207 +206,9 @@
</packing>
</child>
<child>
- <object class="GtkBox" id="default_apps_container">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="border_width">20</property>
- <property name="spacing">10</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkGrid" id="default_apps_grid">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="column_spacing">12</property>
- <property name="row_spacing">12</property>
- <child>
- <object class="GtkLabel" id="web-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Web</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="mail-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Mail</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="calendar-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Calendar</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="music-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">M_usic</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="video-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Video</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label25">
- <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="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label26">
- <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="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label27">
- <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="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label28">
- <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="top_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label29">
- <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="top_attach">4</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="photos-label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">_Photos</property>
- <property name="use_underline">True</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="left_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label33">
- <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="top_attach">5</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <object class="CcInfoDefaultAppsPanel" id="default_apps_container">
+ <property name="visible">true</property>
</object>
- <packing>
- <property name="position">1</property>
- </packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label3">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]