[gedit/wip/browser-menu] Handle open in terminal action
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/browser-menu] Handle open in terminal action
- Date: Thu, 18 Apr 2013 18:42:26 +0000 (UTC)
commit f8d39fee86824a18418bfc1850832846a4e4f08b
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Thu Apr 18 20:42:10 2013 +0200
Handle open in terminal action
plugins/filebrowser/gedit-file-browser-plugin.c | 33 ++++++-------------
plugins/filebrowser/gedit-file-browser-widget.c | 42 ++++++++++++++++++++++++-
plugins/filebrowser/gedit-file-browser-widget.h | 2 ++
3 files changed, 53 insertions(+), 24 deletions(-)
---
diff --git a/plugins/filebrowser/gedit-file-browser-plugin.c b/plugins/filebrowser/gedit-file-browser-plugin.c
index 30fa726..81f054b 100644
--- a/plugins/filebrowser/gedit-file-browser-plugin.c
+++ b/plugins/filebrowser/gedit-file-browser-plugin.c
@@ -440,35 +440,18 @@ get_terminal (GeditFileBrowserPlugin *plugin)
}
static void
-on_action_open_terminal (GtkAction *action,
- GeditFileBrowserPlugin *plugin)
+open_in_terminal (GeditFileBrowserWidget *widget,
+ GFile *location,
+ GeditFileBrowserPlugin *plugin)
{
- GeditFileBrowserPluginPrivate *priv = plugin->priv;
- GFile *file;
-
- GtkTreeIter iter;
- GeditFileBrowserStore *store;
-
- /* Get the current directory */
- if (!gedit_file_browser_widget_get_selected_directory (priv->tree_widget, &iter))
- return;
-
- store = gedit_file_browser_widget_get_browser_store (priv->tree_widget);
- gtk_tree_model_get (GTK_TREE_MODEL (store),
- &iter,
- GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
- &file,
- -1);
-
- if (file)
+ if (location)
{
gchar *terminal;
gchar *local;
gchar *argv[2];
terminal = get_terminal (plugin);
-
- local = g_file_get_path (file);
+ local = g_file_get_path (location);
argv[0] = terminal;
argv[1] = NULL;
@@ -484,7 +467,6 @@ on_action_open_terminal (GtkAction *action,
g_free (terminal);
g_free (local);
- g_object_unref (file);
}
}
/*
@@ -573,6 +555,11 @@ gedit_file_browser_plugin_activate (GeditWindowActivatable *activatable)
G_CALLBACK (on_confirm_no_trash_cb),
priv->window);
+ g_signal_connect (priv->tree_widget,
+ "open-in-terminal",
+ G_CALLBACK (open_in_terminal),
+ priv->window);
+
/*g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW
(gedit_file_browser_widget_get_browser_view
(priv->tree_widget))),
diff --git a/plugins/filebrowser/gedit-file-browser-widget.c b/plugins/filebrowser/gedit-file-browser-widget.c
index 85264a9..080ce85 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.c
+++ b/plugins/filebrowser/gedit-file-browser-widget.c
@@ -81,6 +81,7 @@ enum
ERROR,
CONFIRM_DELETE,
CONFIRM_NO_TRASH,
+ OPEN_IN_TERMINAL,
NUM_SIGNALS
};
@@ -236,6 +237,9 @@ static void change_show_binary_state (GSimpleAction *action,
static void bookmark_open_activated (GSimpleAction *action,
GVariant *parameter,
gpointer user_data);
+static void open_in_terminal_activated (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data);
G_DEFINE_DYNAMIC_TYPE (GeditFileBrowserWidget, gedit_file_browser_widget, GTK_TYPE_GRID)
@@ -480,6 +484,18 @@ gedit_file_browser_widget_class_init (GeditFileBrowserWidgetClass *klass)
1,
G_TYPE_POINTER);
+ signals[OPEN_IN_TERMINAL] =
+ g_signal_new ("open-in-terminal",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GeditFileBrowserWidgetClass, open_in_terminal),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_FILE);
+
/* Bind class to template */
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/gedit/plugins/file-browser/ui/gedit-file-browser-widget.ui");
@@ -935,7 +951,7 @@ static GActionEntry browser_entries[] = {
{ "delete", delete_activated },
{ "refresh_view", refresh_view_activated },
{ "view_folder", view_folder_activated },
- //{ "open_in_terminal", open_in_terminal_activated },
+ { "open_in_terminal", open_in_terminal_activated },
{ "show_hidden", activate_toggle, NULL, "false", change_show_hidden_state },
{ "show_binary", activate_toggle, NULL, "false", change_show_binary_state },
{ "bookmark_open", bookmark_open_activated },
@@ -2932,6 +2948,30 @@ bookmark_open_activated (GSimpleAction *action,
}
}
+static void
+open_in_terminal_activated (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ GeditFileBrowserWidget *widget = GEDIT_FILE_BROWSER_WIDGET (user_data);
+ GtkTreeIter iter;
+ GFile *file;
+
+ /* Get the current directory */
+ if (!gedit_file_browser_widget_get_selected_directory (widget, &iter))
+ return;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (widget->priv->file_store),
+ &iter,
+ GEDIT_FILE_BROWSER_STORE_COLUMN_LOCATION,
+ &file,
+ -1);
+
+ g_signal_emit (widget, signals[OPEN_IN_TERMINAL], 0, file);
+
+ g_object_unref (file);
+}
+
void
_gedit_file_browser_widget_register_type (GTypeModule *type_module)
{
diff --git a/plugins/filebrowser/gedit-file-browser-widget.h b/plugins/filebrowser/gedit-file-browser-widget.h
index 24785f9..0df4910 100644
--- a/plugins/filebrowser/gedit-file-browser-widget.h
+++ b/plugins/filebrowser/gedit-file-browser-widget.h
@@ -68,6 +68,8 @@ struct _GeditFileBrowserWidgetClass
GList *list);
gboolean (* confirm_no_trash) (GeditFileBrowserWidget *widget,
GList *list);
+ void (* open_in_terminal) (GeditFileBrowserWidget *widget,
+ GFile *location);
};
GType gedit_file_browser_widget_get_type (void) G_GNUC_CONST;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]