[gthumb] keep an extension in the disabled list soon after the activation
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] keep an extension in the disabled list soon after the activation
- Date: Sat, 7 Aug 2010 14:26:14 +0000 (UTC)
commit c9c4fc5997c1af8d7abb65bf946facea7120d8ae
Author: Paolo Bacchilega <paobac src gnome org>
Date: Fri Aug 6 18:04:07 2010 +0200
keep an extension in the disabled list soon after the activation
gthumb/dlg-extensions.c | 75 +++++++++++++++++++++++++++++++++++++---------
1 files changed, 60 insertions(+), 15 deletions(-)
---
diff --git a/gthumb/dlg-extensions.c b/gthumb/dlg-extensions.c
index 969222c..e42b374 100644
--- a/gthumb/dlg-extensions.c
+++ b/gthumb/dlg-extensions.c
@@ -33,13 +33,25 @@
#define GET_WIDGET(name) _gtk_builder_get_widget (data->builder, (name))
#define DEFAULT_ICON "application-x-executable"
+#define EXTENSION_CATEGORY_ALL "*"
+#define EXTENSION_CATEGORY_ENABLED "+"
+#define EXTENSION_CATEGORY_DISABLED "-"
+#define EXTENSION_CATEGORY_SEPARATOR "---"
+
+
+enum {
+ EXTENSION_DESCRIPTION_COLUMN,
+ EXTENSION_ORIGINAL_STATUS_COLUMN,
+ EXTENSION_COLUMNS
+};
enum {
CATEGORY_ID_COLUMN,
CATEGORY_NAME_COLUMN,
CATEGORY_ICON_COLUMN,
- CATEGORY_SEPARATOR_COLUMN
+ CATEGORY_SEPARATOR_COLUMN,
+ CATEGORY_COLUMNS
};
@@ -51,10 +63,10 @@ typedef struct {
static ExtensionCategory extension_category[] = {
- { "*", N_("All"), "folder" },
- { "+", N_("Enabled"), "folder" },
- { "-", N_("Disabled"), "folder" },
- { "---", NULL, NULL },
+ { EXTENSION_CATEGORY_ALL, N_("All"), "folder" },
+ { EXTENSION_CATEGORY_ENABLED, N_("Enabled"), "folder" },
+ { EXTENSION_CATEGORY_DISABLED, N_("Disabled"), "folder" },
+ { EXTENSION_CATEGORY_SEPARATOR, NULL, NULL },
{ "Browser", N_("Browser"), "folder" },
{ "Viewer", N_("Viewers"), "folder" },
{ "Metadata", N_("Metadata"), "folder" },
@@ -338,7 +350,7 @@ list_view_selection_changed_cb (GtkTreeSelection *treeselection,
if (! gtk_tree_selection_get_selected (treeselection, &model, &iter))
return;
- gtk_tree_model_get (model, &iter, 0, &description, -1);
+ gtk_tree_model_get (model, &iter, EXTENSION_DESCRIPTION_COLUMN, &description, -1);
extension = gth_extension_description_get_extension (description);
gtk_widget_set_sensitive (GET_WIDGET ("preferences_button"), (extension != NULL) && gth_extension_is_configurable (extension));
@@ -348,6 +360,30 @@ list_view_selection_changed_cb (GtkTreeSelection *treeselection,
static void
+reset_original_extension_status (DialogData *data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = GTK_TREE_MODEL (data->list_store);
+ if (! gtk_tree_model_get_iter_first (model, &iter))
+ return;
+
+ do {
+ GthExtensionDescription *description;
+
+ gtk_tree_model_get (model, &iter, EXTENSION_DESCRIPTION_COLUMN, &description, -1);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ EXTENSION_ORIGINAL_STATUS_COLUMN, gth_extension_description_is_active (description),
+ -1);
+
+ g_object_unref (description);
+ }
+ while (gtk_tree_model_iter_next (model, &iter));
+}
+
+
+static void
category_treeview_selection_changed_cb (GtkTreeSelection *treeselection,
gpointer user_data)
{
@@ -359,8 +395,10 @@ category_treeview_selection_changed_cb (GtkTreeSelection *treeselection,
if (! gtk_tree_selection_get_selected (treeselection, &model, &iter))
return;
+ reset_original_extension_status (data);
+
g_free (data->current_category);
- gtk_tree_model_get (model, &iter, 0, &data->current_category, -1);
+ gtk_tree_model_get (model, &iter, CATEGORY_ID_COLUMN, &data->current_category, -1);
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (data->model_filter));
}
@@ -449,17 +487,21 @@ category_model_visible_func (GtkTreeModel *model,
{
DialogData *data = user_data;
GthExtensionDescription *description;
+ gboolean original_status_is_active;
gboolean visible;
- if (strcmp (data->current_category, "*") == 0)
+ if (strcmp (data->current_category, EXTENSION_CATEGORY_ALL) == 0)
return TRUE;
- gtk_tree_model_get (model, iter, 0, &description, -1);
+ gtk_tree_model_get (model, iter,
+ EXTENSION_DESCRIPTION_COLUMN, &description,
+ EXTENSION_ORIGINAL_STATUS_COLUMN, &original_status_is_active,
+ -1);
visible = FALSE;
- if ((strcmp (data->current_category, "+") == 0) && gth_extension_description_is_active (description))
+ if ((strcmp (data->current_category, EXTENSION_CATEGORY_ENABLED) == 0) && original_status_is_active)
visible = TRUE;
- else if ((strcmp (data->current_category, "-") == 0) && ! gth_extension_description_is_active (description))
+ else if ((strcmp (data->current_category, EXTENSION_CATEGORY_DISABLED) == 0) && ! original_status_is_active)
visible = TRUE;
else
visible = g_strcmp0 (description->category, data->current_category) == 0;
@@ -496,7 +538,7 @@ dlg_extensions (GthBrowser *browser)
/* Set widgets data. */
- data->list_store = gtk_list_store_new (1, G_TYPE_OBJECT);
+ data->list_store = gtk_list_store_new (EXTENSION_COLUMNS, G_TYPE_OBJECT, G_TYPE_BOOLEAN);
data->model_filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (data->list_store), NULL);
data->list_view = gtk_tree_view_new_with_model (data->model_filter);
g_object_unref (data->model_filter);
@@ -526,19 +568,22 @@ dlg_extensions (GthBrowser *browser)
continue;
gtk_list_store_append (data->list_store, &iter);
- gtk_list_store_set (data->list_store, &iter, 0, description, -1);
+ gtk_list_store_set (data->list_store, &iter,
+ EXTENSION_DESCRIPTION_COLUMN, description,
+ EXTENSION_ORIGINAL_STATUS_COLUMN, gth_extension_description_is_active (description),
+ -1);
}
g_list_free (extensions);
/* the category list */
- data->current_category = g_strdup ("*");
+ data->current_category = g_strdup (EXTENSION_CATEGORY_ALL);
gtk_tree_selection_set_mode (GTK_TREE_SELECTION (gtk_tree_view_get_selection (GTK_TREE_VIEW (GET_WIDGET ("category_treeview")))), GTK_SELECTION_BROWSE);
for (i = 0; extension_category[i].id != NULL; i++) {
GtkTreeIter iter;
gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("category_liststore")), &iter);
- if (strcmp (extension_category[i].id, "---") == 0)
+ if (strcmp (extension_category[i].id, EXTENSION_CATEGORY_SEPARATOR) == 0)
gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("category_liststore")),
&iter,
CATEGORY_SEPARATOR_COLUMN, TRUE,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]