diff options
Diffstat (limited to 'capplet')
-rw-r--r-- | capplet/gsm-properties-dialog.c | 118 | ||||
-rw-r--r-- | capplet/gsp-app.c | 53 | ||||
-rw-r--r-- | capplet/gsp-app.h | 5 | ||||
-rw-r--r-- | capplet/gsp-keyfile.h | 1 |
4 files changed, 76 insertions, 101 deletions
diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c index 69fe3fe..cb314c5 100644 --- a/capplet/gsm-properties-dialog.c +++ b/capplet/gsm-properties-dialog.c @@ -69,8 +69,7 @@ struct _GsmPropertiesDialog }; enum { - STORE_COL_VISIBLE = 0, - STORE_COL_ENABLED, + STORE_COL_ENABLED = 0, STORE_COL_GICON, STORE_COL_DESCRIPTION, STORE_COL_APP, @@ -102,6 +101,8 @@ find_by_app (GtkTreeModel *model, g_object_unref (iter_app); return TRUE; } + + g_object_unref (iter_app); } while (gtk_tree_model_iter_next (model, iter)); return FALSE; @@ -112,14 +113,12 @@ _fill_iter_from_app (GtkListStore *list_store, GtkTreeIter *iter, GspApp *app) { - gboolean hidden; gboolean enabled; GIcon *icon; const char *description; const char *app_name; - hidden = gsp_app_get_hidden (app); - enabled = gsp_app_get_enabled (app); + enabled = !gsp_app_get_hidden (app); icon = gsp_app_get_icon (app); description = gsp_app_get_description (app); app_name = gsp_app_get_name (app); @@ -150,7 +149,6 @@ _fill_iter_from_app (GtkListStore *list_store, } gtk_list_store_set (list_store, iter, - STORE_COL_VISIBLE, !hidden, STORE_COL_ENABLED, enabled, STORE_COL_GICON, icon, STORE_COL_DESCRIPTION, description, @@ -196,13 +194,13 @@ _app_added (GsmPropertiesDialog *dialog, GspApp *app, GspAppManager *manager) { + (void) manager; append_app (dialog, app); } static void -_app_removed (GsmPropertiesDialog *dialog, - GspApp *app, - GspAppManager *manager) +remove_app (GsmPropertiesDialog *dialog, + GspApp *app) { GtkTreeIter iter; @@ -218,6 +216,15 @@ _app_removed (GsmPropertiesDialog *dialog, } static void +_app_removed (GsmPropertiesDialog *dialog, + GspApp *app, + GspAppManager *manager) +{ + (void) manager; + remove_app (dialog, app); +} + +static void populate_model (GsmPropertiesDialog *dialog) { GSList *apps; @@ -263,10 +270,9 @@ on_startup_enabled_toggled (GtkCellRendererToggle *cell_renderer, -1); active = gtk_cell_renderer_toggle_get_active (cell_renderer); - active = !active; if (app) { - gsp_app_set_enabled (app, active); + gsp_app_set_hidden (app, active); g_object_unref (app); } } @@ -462,34 +468,11 @@ on_row_activated (GtkTreeView *tree_view, } static void -update_tree_view (GsmPropertiesDialog *dialog) -{ - GSList *apps; - GSList *l; - gboolean show_hidden; - GspApp *app; - - show_hidden = g_settings_get_boolean (dialog->settings, SPC_SHOW_HIDDEN_KEY); - - apps = gsp_app_manager_get_apps (dialog->manager); - for (l = apps; l != NULL; l = l->next) { - app = GSP_APP (l->data); - if (gsp_app_get_nodisplay(app)) { - if (show_hidden) { - _app_added (dialog, app, dialog->manager); - }else{ - _app_removed (dialog, app, dialog->manager); - } - } - } - g_slist_free (apps); -} - -static void -on_show_hidden_clicked (GtkWidget *widget, +on_show_hidden_toggled (GtkToggleButton *togglebutton, GsmPropertiesDialog *dialog) { - update_tree_view (dialog); + (void) togglebutton; + gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (dialog->tree_filter)); } static void @@ -499,11 +482,41 @@ on_save_session_clicked (GtkWidget *widget, g_debug ("Session saving is not implemented yet!"); } +static gboolean +visible_func (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + gboolean visible = FALSE; + GtkToggleButton *toggle_button = data;; + GspApp *app; + gboolean show_hidden; + + show_hidden = gtk_toggle_button_get_active (toggle_button); + + gtk_tree_model_get (model, iter, + STORE_COL_APP, &app, + -1); + + if (app) { + gboolean nodisplay; + + nodisplay = gsp_app_get_nodisplay (app); + visible = show_hidden || !nodisplay; + g_object_unref (app); + } else { + visible = show_hidden; + } + + return visible; +} + static void setup_dialog (GsmPropertiesDialog *dialog) { GtkTreeView *treeview; GtkWidget *button; + GtkToggleButton *toggle_button; GtkTreeModel *tree_filter; GtkTreeViewColumn *column; GtkCellRenderer *renderer; @@ -518,9 +531,20 @@ setup_dialog (GsmPropertiesDialog *dialog) _("_Close"), "window-close", GTK_RESPONSE_CLOSE); + dialog->settings = g_settings_new (SPC_CONFIG_SCHEMA); + + toggle_button = GTK_TOGGLE_BUTTON (gtk_builder_get_object (dialog->xml, + CAPPLET_SHOW_HIDDEN_WIDGET_NAME)); + + g_settings_bind (dialog->settings, SPC_SHOW_HIDDEN_KEY, + toggle_button, "active", G_SETTINGS_BIND_DEFAULT); + + g_signal_connect (toggle_button, "toggled", + G_CALLBACK (on_show_hidden_toggled), + dialog); + dialog->list_store = gtk_list_store_new (NUMBER_OF_COLUMNS, G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, G_TYPE_ICON, G_TYPE_STRING, G_TYPE_OBJECT, @@ -530,8 +554,7 @@ setup_dialog (GsmPropertiesDialog *dialog) g_object_unref (dialog->list_store); dialog->tree_filter = tree_filter; - gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (tree_filter), - STORE_COL_VISIBLE); + gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (tree_filter), visible_func, toggle_button, NULL); treeview = GTK_TREE_VIEW (gtk_builder_get_object (dialog->xml, CAPPLET_TREEVIEW_WIDGET_NAME)); @@ -660,8 +683,6 @@ setup_dialog (GsmPropertiesDialog *dialog) dialog); - dialog->settings = g_settings_new (SPC_CONFIG_SCHEMA); - button = GTK_WIDGET (gtk_builder_get_object (dialog->xml, CAPPLET_REMEMBER_WIDGET_NAME)); @@ -669,17 +690,6 @@ setup_dialog (GsmPropertiesDialog *dialog) button, "active", G_SETTINGS_BIND_DEFAULT); button = GTK_WIDGET (gtk_builder_get_object (dialog->xml, - CAPPLET_SHOW_HIDDEN_WIDGET_NAME)); - - g_settings_bind (dialog->settings, SPC_SHOW_HIDDEN_KEY, - button, "active", G_SETTINGS_BIND_DEFAULT); - - g_signal_connect (button, - "clicked", - G_CALLBACK (on_show_hidden_clicked), - dialog); - - button = GTK_WIDGET (gtk_builder_get_object (dialog->xml, CAPPLET_SAVE_WIDGET_NAME)); g_signal_connect (button, "clicked", @@ -694,7 +704,7 @@ setup_dialog (GsmPropertiesDialog *dialog) G_CALLBACK (_app_removed), dialog); populate_model (dialog); - update_tree_view (dialog); + gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (dialog->tree_filter)); } static GObject * diff --git a/capplet/gsp-app.c b/capplet/gsp-app.c index 169701f..0c310b0 100644 --- a/capplet/gsp-app.c +++ b/capplet/gsp-app.c @@ -42,11 +42,10 @@ #define GSP_APP_SAVE_DELAY 2 #define GSP_ASP_SAVE_MASK_HIDDEN 0x0001 -#define GSP_ASP_SAVE_MASK_ENABLED 0x0002 -#define GSP_ASP_SAVE_MASK_NAME 0x0004 -#define GSP_ASP_SAVE_MASK_EXEC 0x0008 -#define GSP_ASP_SAVE_MASK_COMMENT 0x0010 -#define GSP_ASP_SAVE_MASK_DELAY 0x0020 +#define GSP_ASP_SAVE_MASK_NAME 0x0002 +#define GSP_ASP_SAVE_MASK_EXEC 0x0004 +#define GSP_ASP_SAVE_MASK_COMMENT 0x0008 +#define GSP_ASP_SAVE_MASK_DELAY 0x0010 #define GSP_ASP_SAVE_MASK_ALL 0xffff typedef struct { @@ -55,7 +54,6 @@ typedef struct { gboolean hidden; gboolean nodisplay; - gboolean enabled; char *name; char *exec; @@ -343,10 +341,7 @@ _gsp_app_user_equal_system (GspApp *app, if (gsp_key_file_get_boolean (keyfile, G_KEY_FILE_DESKTOP_KEY_HIDDEN, - FALSE) != priv->hidden || - gsp_key_file_get_boolean (keyfile, - GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, - TRUE) != priv->enabled) { + FALSE) != priv->hidden) { g_free (path); g_key_file_free (keyfile); return FALSE; @@ -472,12 +467,6 @@ _gsp_app_save (gpointer data) priv->hidden); } - if (priv->save_mask & GSP_ASP_SAVE_MASK_ENABLED) { - gsp_key_file_set_boolean (keyfile, - GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, - priv->enabled); - } - if (priv->save_mask & GSP_ASP_SAVE_MASK_NAME) { gsp_key_file_set_locale_string (keyfile, G_KEY_FILE_DESKTOP_KEY_NAME, @@ -589,21 +578,9 @@ gsp_app_get_hidden (GspApp *app) return priv->hidden; } -gboolean -gsp_app_get_enabled (GspApp *app) -{ - GspAppPrivate *priv; - - g_return_val_if_fail (GSP_IS_APP (app), FALSE); - - priv = gsp_app_get_instance_private (app); - - return priv->enabled; -} - void -gsp_app_set_enabled (GspApp *app, - gboolean enabled) +gsp_app_set_hidden (GspApp *app, + gboolean hidden) { GspAppPrivate *priv; @@ -611,12 +588,12 @@ gsp_app_set_enabled (GspApp *app, priv = gsp_app_get_instance_private (app); - if (enabled == priv->enabled) { + if (hidden == priv->hidden) { return; } - priv->enabled = enabled; - priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED; + priv->hidden = hidden; + priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN; _gsp_app_queue_save (app); _gsp_app_emit_changed (app); @@ -963,9 +940,6 @@ gsp_app_new (const char *path, priv->hidden = gsp_key_file_get_boolean (keyfile, G_KEY_FILE_DESKTOP_KEY_HIDDEN, FALSE); - priv->enabled = gsp_key_file_get_boolean (keyfile, - GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED, - TRUE); priv->nodisplay = gsp_key_file_get_boolean (keyfile, G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, FALSE); @@ -1114,7 +1088,6 @@ gsp_app_create (const char *name, priv->basename, NULL); priv->hidden = FALSE; - priv->enabled = TRUE; priv->nodisplay = FALSE; if (!gsm_util_text_is_blank (name)) { @@ -1214,12 +1187,6 @@ gsp_app_copy_desktop_file (const char *uri) priv->save_mask |= GSP_ASP_SAVE_MASK_HIDDEN; } - if (!priv->enabled) { - changed = TRUE; - priv->enabled = TRUE; - priv->save_mask |= GSP_ASP_SAVE_MASK_ENABLED; - } - if (changed) { _gsp_app_queue_save (app); } diff --git a/capplet/gsp-app.h b/capplet/gsp-app.h index 8bc2700..f327d72 100644 --- a/capplet/gsp-app.h +++ b/capplet/gsp-app.h @@ -58,10 +58,9 @@ const char *gsp_app_get_basename (GspApp *app); const char *gsp_app_get_path (GspApp *app); gboolean gsp_app_get_hidden (GspApp *app); +void gsp_app_set_hidden (GspApp *app, + gboolean hidden); -gboolean gsp_app_get_enabled (GspApp *app); -void gsp_app_set_enabled (GspApp *app, - gboolean enabled); gboolean gsp_app_get_nodisplay (GspApp *app); const char *gsp_app_get_name (GspApp *app); diff --git a/capplet/gsp-keyfile.h b/capplet/gsp-keyfile.h index 97f135f..aecd2ef 100644 --- a/capplet/gsp-keyfile.h +++ b/capplet/gsp-keyfile.h @@ -33,7 +33,6 @@ extern "C" { #endif -#define GSP_KEY_FILE_DESKTOP_KEY_AUTOSTART_ENABLED "X-MATE-Autostart-enabled" #define GSP_KEY_FILE_DESKTOP_KEY_DELAY "X-MATE-Autostart-Delay" void gsp_key_file_populate (GKeyFile *keyfile); |