[gnome-control-center/extensible-shell] shell: start the panel specified on the command line
- From: Thomas Wood <thos src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/extensible-shell] shell: start the panel specified on the command line
- Date: Wed, 24 Feb 2010 21:28:06 +0000 (UTC)
commit 23b6c8e7c77c5f0dae60c8d84abd38ec319193a9
Author: Thomas Wood <thomas wood intel com>
Date: Wed Feb 24 21:27:36 2010 +0000
shell: start the panel specified on the command line
Start the panel specified by the .desktop file.
shell/control-center.c | 105 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 81 insertions(+), 24 deletions(-)
---
diff --git a/shell/control-center.c b/shell/control-center.c
index 059c212..fd79b5e 100644
--- a/shell/control-center.c
+++ b/shell/control-center.c
@@ -431,29 +431,12 @@ fill_model (ShellData *data)
}
static void
-item_activated_cb (GtkIconView *icon_view,
- GtkTreePath *path,
- ShellData *data)
+activate_panel (const gchar *id,
+ const gchar *exec,
+ ShellData *data)
{
- GtkTreeModel *model;
- GtkTreeIter iter;
- gchar *name, *exec, *id;
CcPanel *panel;
- /* get exec */
- model = gtk_icon_view_get_model (icon_view);
-
- /* get the iter and ensure it is valid */
- if (!gtk_tree_model_get_iter (model, &iter, path))
- return;
-
- gtk_tree_model_get (model, &iter, COL_NAME, &name, COL_EXEC, &exec, COL_ID, &id, -1);
-
- g_debug ("activated id: '%s'", id);
-
- g_free (data->current_title);
- data->current_title = name;
-
/* first look for a panel module */
panel = g_hash_table_lookup (data->panels, id);
if (panel != NULL)
@@ -463,14 +446,17 @@ item_activated_cb (GtkIconView *icon_view,
gtk_widget_show_all (GTK_WIDGET (panel));
cc_panel_set_active (panel, TRUE);
- gtk_notebook_insert_page (GTK_NOTEBOOK (data->notebook), GTK_WIDGET (panel), NULL,
- CAPPLET_PAGE);
+ gtk_notebook_insert_page (GTK_NOTEBOOK (data->notebook), GTK_WIDGET (panel),
+ NULL, CAPPLET_PAGE);
gtk_notebook_set_current_page (GTK_NOTEBOOK (data->notebook), CAPPLET_PAGE);
- gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (data->builder, "label-title")),
+ gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (data->builder,
+ "label-title")),
data->current_title);
- gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (data->builder, "title-alignment")));
+
+ gtk_widget_show (GTK_WIDGET (gtk_builder_get_object (data->builder,
+ "title-alignment")));
}
else
{
@@ -479,6 +465,33 @@ item_activated_cb (GtkIconView *icon_view,
g_spawn_command_line_async (exec, NULL);
}
+}
+
+static void
+item_activated_cb (GtkIconView *icon_view,
+ GtkTreePath *path,
+ ShellData *data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *name, *exec, *id;
+
+ /* get exec */
+ model = gtk_icon_view_get_model (icon_view);
+
+ /* get the iter and ensure it is valid */
+ if (!gtk_tree_model_get_iter (model, &iter, path))
+ return;
+
+ gtk_tree_model_get (model, &iter, COL_NAME, &name, COL_EXEC, &exec, COL_ID, &id, -1);
+
+ g_debug ("activated id: '%s'", id);
+
+ g_free (data->current_title);
+ data->current_title = name;
+
+ activate_panel (id, exec, data);
+
g_free (id);
g_free (exec);
}
@@ -636,6 +649,50 @@ main (int argc, char **argv)
gtk_widget_show_all (data->window);
+ if (argc == 2)
+ {
+ GtkTreeIter iter;
+ gboolean iter_valid;
+ gchar *start_id;
+ gchar *name;
+
+ start_id = argv[1];
+
+ iter_valid = gtk_tree_model_get_iter_first (data->store, &iter);
+
+ while (iter_valid)
+ {
+ gchar *id;
+
+ /* find the details for this item */
+ gtk_tree_model_get (data->store, &iter,
+ COL_NAME, &name,
+ COL_ID, &id,
+ -1);
+ if (id && !strcmp (id, start_id))
+ {
+ g_free (id);
+ break;
+ }
+ else
+ {
+ g_free (id);
+ g_free (name);
+
+ name = NULL;
+ id = NULL;
+ }
+
+
+ iter_valid = gtk_tree_model_iter_next (data->store, &iter);
+ }
+
+ g_free (data->current_title);
+ data->current_title = name;
+
+ activate_panel (start_id, start_id, data);
+ }
+
gtk_main ();
g_free (data->filter_string);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]