[gnome-builder] tree: add "Open With" -> "Source Code Editor"
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] tree: add "Open With" -> "Source Code Editor"
- Date: Thu, 9 Apr 2015 00:09:51 +0000 (UTC)
commit 7839e5fdf40a0fc3ea7ae45b1c793f347b643c97
Author: Christian Hergert <christian hergert me>
Date: Wed Apr 8 13:41:04 2015 -0700
tree: add "Open With" -> "Source Code Editor"
src/editor/gb-editor-workspace-actions.c | 40 ++++++++++++++++++++++++++++++
src/workbench/gb-workbench.c | 18 +++++++++++++
src/workbench/gb-workbench.h | 2 +
3 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/src/editor/gb-editor-workspace-actions.c b/src/editor/gb-editor-workspace-actions.c
index ae898d7..e077ade 100644
--- a/src/editor/gb-editor-workspace-actions.c
+++ b/src/editor/gb-editor-workspace-actions.c
@@ -149,6 +149,45 @@ gb_editor_workspace_tree_actions_open (GSimpleAction *action,
}
static void
+gb_editor_workspace_tree_actions_open_with_editor (GSimpleAction *action,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GbEditorWorkspace *self = user_data;
+ GbTreeNode *selected;
+ GObject *item;
+
+ g_assert (GB_IS_EDITOR_WORKSPACE (self));
+
+ if (!(selected = gb_tree_get_selected (self->project_tree)) ||
+ !(item = gb_tree_node_get_item (selected)))
+ return;
+
+ item = gb_tree_node_get_item (selected);
+
+ if (IDE_IS_PROJECT_FILE (item))
+ {
+ GbWorkbench *workbench;
+ GFileInfo *file_info;
+ GFile *file;
+
+ file_info = ide_project_file_get_file_info (IDE_PROJECT_FILE (item));
+ if (!file_info)
+ return;
+
+ if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY)
+ return;
+
+ file = ide_project_file_get_file (IDE_PROJECT_FILE (item));
+ if (!file)
+ return;
+
+ workbench = gb_widget_get_workbench (GTK_WIDGET (self));
+ gb_workbench_open_with_editor (workbench, file);
+ }
+}
+
+static void
gb_editor_workspace_tree_actions_open_containing_folder (GSimpleAction *action,
GVariant *variant,
gpointer user_data)
@@ -184,6 +223,7 @@ static const GActionEntry GbEditorWorkspaceActions[] = {
static const GActionEntry GbEditorWorkspaceTreeActions[] = {
{ "open", gb_editor_workspace_tree_actions_open },
+ { "open-with-editor", gb_editor_workspace_tree_actions_open_with_editor },
{ "open-containing-folder", gb_editor_workspace_tree_actions_open_containing_folder },
{ "refresh", gb_editor_workspace_tree_actions_refresh },
{ "collapse-all-nodes", gb_editor_workspace_tree_actions_collapse_all_nodes },
diff --git a/src/workbench/gb-workbench.c b/src/workbench/gb-workbench.c
index e3b58a8..4076fdb 100644
--- a/src/workbench/gb-workbench.c
+++ b/src/workbench/gb-workbench.c
@@ -602,6 +602,24 @@ gb_workbench_open (GbWorkbench *self,
g_object_ref (self));
}
+void
+gb_workbench_open_with_editor (GbWorkbench *self,
+ GFile *file)
+{
+ IdeBufferManager *buffer_manager;
+ IdeProject *project;
+ g_autoptr(IdeFile) idefile = NULL;
+
+ g_return_if_fail (GB_IS_WORKBENCH (self));
+ g_return_if_fail (self->unloading == FALSE);
+ g_return_if_fail (self->context);
+
+ buffer_manager = ide_context_get_buffer_manager (self->context);
+ project = ide_context_get_project (self->context);
+ idefile = ide_project_get_project_file (project, file);
+ ide_buffer_manager_load_file_async (buffer_manager, idefile, FALSE, NULL, NULL, NULL, NULL);
+}
+
/**
* gb_workbench_get_command_manager:
* @self: A #GbWorkbench.
diff --git a/src/workbench/gb-workbench.h b/src/workbench/gb-workbench.h
index dc72648..ddc86e9 100644
--- a/src/workbench/gb-workbench.h
+++ b/src/workbench/gb-workbench.h
@@ -46,6 +46,8 @@ void gb_workbench_set_active_workspace (GbWorkbench *self,
void gb_workbench_add_temporary_buffer (GbWorkbench *self);
void gb_workbench_open (GbWorkbench *self,
GFile *file);
+void gb_workbench_open_with_editor (GbWorkbench *self,
+ GFile *file);
void gb_workbench_open_uri_list (GbWorkbench *self,
const gchar * const *uri_list);
GbCommandManager *gb_workbench_get_command_manager (GbWorkbench *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]