summaryrefslogtreecommitdiff
path: root/src/caja-file-management-properties.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/caja-file-management-properties.c')
-rw-r--r--src/caja-file-management-properties.c62
1 files changed, 58 insertions, 4 deletions
diff --git a/src/caja-file-management-properties.c b/src/caja-file-management-properties.c
index 9df0695b..24283611 100644
--- a/src/caja-file-management-properties.c
+++ b/src/caja-file-management-properties.c
@@ -43,6 +43,8 @@
#include <libcaja-private/caja-autorun.h>
+#include <libmate-desktop/mate-aboutdialog.h>
+
/* string enum preferences */
#define CAJA_FILE_MANAGEMENT_PROPERTIES_DEFAULT_VIEW_WIDGET "default_view_combobox"
#define CAJA_FILE_MANAGEMENT_PROPERTIES_ICON_VIEW_ZOOM_WIDGET "icon_view_zoom_combobox"
@@ -613,6 +615,51 @@ out:
g_free (x_content_type);
}
+static gulong extension_about_id = 0;
+
+static void
+extension_about_clicked (GtkButton *button, Extension *ext)
+{
+ MateAboutDialog *extension_about_dialog;
+
+ extension_about_dialog = mate_about_dialog_new();
+ mate_about_dialog_set_program_name (extension_about_dialog, ext->name != NULL ? ext->name : ext->filename);
+ mate_about_dialog_set_comments (extension_about_dialog, ext->description);
+ mate_about_dialog_set_logo_icon_name (extension_about_dialog, ext->icon != NULL ? ext->icon : "system-run");
+ mate_about_dialog_set_copyright (extension_about_dialog, ext->copyright);
+ mate_about_dialog_set_authors (extension_about_dialog, ext->author);
+ mate_about_dialog_set_version (extension_about_dialog, ext->version);
+ mate_about_dialog_set_website (extension_about_dialog, ext->website);
+ gtk_window_set_title (GTK_WINDOW(extension_about_dialog), _("About Extension"));
+ gtk_dialog_run (GTK_DIALOG (extension_about_dialog));
+ gtk_widget_destroy (extension_about_dialog);
+}
+
+static void
+extension_list_selection_changed (GtkTreeSelection *selection, GtkButton *about_button)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ Extension *ext;
+
+ gtk_widget_set_sensitive (about_button, FALSE);
+
+ if (extension_about_id > 0)
+ {
+ g_signal_handler_disconnect (about_button, extension_about_id);
+ extension_about_id = 0;
+ }
+
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+
+ gtk_tree_model_get (model, &iter, EXT_STRUCT_COLUMN, &ext, -1);
+ if (ext != NULL) {
+ gtk_widget_set_sensitive (about_button, TRUE);
+ extension_about_id = g_signal_connect (about_button, "clicked", G_CALLBACK (extension_about_clicked), ext);
+ }
+}
+
static void
extension_state_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
{
@@ -628,8 +675,6 @@ extension_state_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer
g_object_get (G_OBJECT (cell), "active", &new_state, NULL);
gtk_tree_model_get_iter_from_string (model, &iter, path_str);
-
-
new_state ^= 1;
if (&iter != NULL)
@@ -762,16 +807,18 @@ caja_file_management_properties_dialog_setup_extension_page (GtkBuilder *builder
GtkCellRendererToggle *toggle;
GtkListStore *store;
GtkTreeView *view;
+ GtkTreeSelection *selection;
GtkTreeIter iter;
GtkIconTheme *icon_theme;
GdkPixbuf *ext_pixbuf_icon;
+ GtkButton *about_button;
gchar *ext_text_info;
GList *extensions;
int i;
-
+
extensions = caja_extensions_get_list ();
-
+
view = GTK_TREE_VIEW (
gtk_builder_get_object (builder, "extension_view"));
store = GTK_LIST_STORE (
@@ -826,6 +873,13 @@ caja_file_management_properties_dialog_setup_extension_page (GtkBuilder *builder
if (ext_pixbuf_icon)
g_object_unref (ext_pixbuf_icon);
}
+
+ about_button = GTK_BUTTON (gtk_builder_get_object (builder, "about_extension_button"));
+ selection = gtk_tree_view_get_selection (view);
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ g_signal_connect (selection, "changed",
+ G_CALLBACK (extension_list_selection_changed),
+ about_button);
}
static void