[gnome-builder] project-tree: allow creating files/folders with "Files" selected
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] project-tree: allow creating files/folders with "Files" selected
- Date: Sat, 11 Apr 2015 21:39:52 +0000 (UTC)
commit c73d3a76c03bb7505294a9ba2adcd9849b55f3e4
Author: Christian Hergert <christian hergert me>
Date: Sat Apr 11 14:39:19 2015 -0700
project-tree: allow creating files/folders with "Files" selected
src/project-tree/gb-project-tree-actions.c | 52 ++++++++++++++++++++++-----
src/project-tree/gb-project-tree-builder.c | 8 ++++
2 files changed, 50 insertions(+), 10 deletions(-)
---
diff --git a/src/project-tree/gb-project-tree-actions.c b/src/project-tree/gb-project-tree-actions.c
index 2f2ad2d..21abcfd 100644
--- a/src/project-tree/gb-project-tree-actions.c
+++ b/src/project-tree/gb-project-tree-actions.c
@@ -221,10 +221,23 @@ gb_project_tree_actions_open_containing_folder (GSimpleAction *action,
if (!(selected = gb_tree_get_selected (GB_TREE (self))) ||
!(item = gb_tree_node_get_item (selected)) ||
- !IDE_IS_PROJECT_FILE (item) ||
- !(file = ide_project_file_get_file (IDE_PROJECT_FILE (item))))
+ !(IDE_IS_PROJECT_FILE (item) || IDE_IS_PROJECT_FILES (item)))
return;
+ if (IDE_IS_PROJECT_FILES (item))
+ {
+ IdeContext *context;
+ IdeVcs *vcs;
+
+ context = ide_object_get_context (IDE_OBJECT (item));
+ vcs = ide_context_get_vcs (context);
+ file = ide_vcs_get_working_directory (vcs);
+ }
+ else if (!(file = ide_project_file_get_file (IDE_PROJECT_FILE (item))))
+ {
+ return;
+ }
+
gb_file_manager_show (file, NULL);
}
@@ -347,7 +360,8 @@ gb_project_tree_actions_new (GbProjectTree *self,
GObject *item;
GtkPopover *popover;
IdeProjectFile *project_file;
- GFile *file;
+ GFile *file = NULL;
+ gboolean is_dir;
g_assert (GB_IS_PROJECT_TREE (self));
g_assert ((file_type == G_FILE_TYPE_DIRECTORY) ||
@@ -356,16 +370,34 @@ gb_project_tree_actions_new (GbProjectTree *self,
again:
if (!(selected = gb_tree_get_selected (GB_TREE (self))) ||
!(item = gb_tree_node_get_item (selected)) ||
- !IDE_IS_PROJECT_FILE (item) ||
- !(project_file = IDE_PROJECT_FILE (item)) ||
- !(file = ide_project_file_get_file (project_file)))
+ !(IDE_IS_PROJECT_FILES (item) || IDE_IS_PROJECT_FILE (item)))
return;
+ if (IDE_IS_PROJECT_FILE (item))
+ {
+ if (!(project_file = IDE_PROJECT_FILE (item)) ||
+ !(file = ide_project_file_get_file (project_file)))
+ return;
+ is_dir = project_file_is_directory (item);
+ }
+ else if (IDE_IS_PROJECT_FILES (item))
+ {
+ IdeContext *context;
+ IdeVcs *vcs;
+
+ context = ide_object_get_context (IDE_OBJECT (item));
+ vcs = ide_context_get_vcs (context);
+ file = ide_vcs_get_working_directory (vcs);
+ is_dir = TRUE;
+ }
+
+ g_assert (G_IS_FILE (file));
+
/*
* If this item is an IdeProjectFile and not a directory, then we really
* want to create a sibling.
*/
- if (!project_file_is_directory (item))
+ if (!is_dir)
{
GtkTreePath *path;
@@ -487,10 +519,10 @@ gb_project_tree_actions_update (GbProjectTree *self)
item = gb_tree_node_get_item (selection);
action_set (group, "new-file",
- "enabled", IDE_IS_PROJECT_FILE (item),
+ "enabled", (IDE_IS_PROJECT_FILE (item) || IDE_IS_PROJECT_FILES (item)),
NULL);
action_set (group, "new-directory",
- "enabled", IDE_IS_PROJECT_FILE (item),
+ "enabled", (IDE_IS_PROJECT_FILE (item) || IDE_IS_PROJECT_FILES (item)),
NULL);
action_set (group, "open",
"enabled", !project_file_is_directory (item),
@@ -499,7 +531,7 @@ gb_project_tree_actions_update (GbProjectTree *self)
"enabled", !project_file_is_directory (item),
NULL);
action_set (group, "open-containing-folder",
- "enabled", IDE_IS_PROJECT_FILE (item),
+ "enabled", (IDE_IS_PROJECT_FILE (item) || IDE_IS_PROJECT_FILES (item)),
NULL);
IDE_EXIT;
diff --git a/src/project-tree/gb-project-tree-builder.c b/src/project-tree/gb-project-tree-builder.c
index 5002aa2..338624a 100644
--- a/src/project-tree/gb-project-tree-builder.c
+++ b/src/project-tree/gb-project-tree-builder.c
@@ -306,6 +306,14 @@ gb_project_tree_builder_node_popup (GbTreeBuilder *builder,
submenu = gtk_application_get_menu_by_id (app, "gb-project-tree-new");
g_menu_prepend_section (menu, NULL, G_MENU_MODEL (submenu));
}
+ else if (IDE_IS_PROJECT_FILES (item))
+ {
+ submenu = gtk_application_get_menu_by_id (app, "gb-project-tree-open-containing");
+ g_menu_prepend_section (menu, NULL, G_MENU_MODEL (submenu));
+
+ submenu = gtk_application_get_menu_by_id (app, "gb-project-tree-new");
+ g_menu_prepend_section (menu, NULL, G_MENU_MODEL (submenu));
+ }
submenu = gtk_application_get_menu_by_id (app, "gb-project-tree-display-options");
g_menu_append_section (menu, NULL, G_MENU_MODEL (submenu));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]