From 8552d0330579909b187d218e030005d9914f7503 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 13 Jan 2015 18:57:06 +0300 Subject: [PATCH] project items reading is working: --- src/dlangide/ui/wspanel.d | 16 ++++++++++++++++ src/dlangide/workspace/project.d | 14 ++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/dlangide/ui/wspanel.d b/src/dlangide/ui/wspanel.d index 56b1fe6..24a8e69 100644 --- a/src/dlangide/ui/wspanel.d +++ b/src/dlangide/ui/wspanel.d @@ -2,6 +2,7 @@ module dlangide.ui.wspanel; import dlangui.all; import dlangide.workspace.workspace; +import dlangide.workspace.project; class WorkspacePanel : VerticalLayout { protected Workspace _workspace; @@ -21,6 +22,20 @@ class WorkspacePanel : VerticalLayout { return _workspace; } + void addProjectItems(TreeItem root, ProjectItem items) { + for (int i = 0; i < items.childCount; i++) { + ProjectItem child = items.child(i); + if (child.isFolder) { + TreeItem p = root.newChild(child.filename, child.name, "folder"); + p.objectParam = child; + addProjectItems(p, child); + } else { + TreeItem p = root.newChild(child.filename, child.name, "text-plain"); + p.objectParam = child; + } + } + } + @property void workspace(Workspace w) { _workspace = w; _tree.requestLayout(); @@ -29,6 +44,7 @@ class WorkspacePanel : VerticalLayout { TreeItem root = _tree.items.newChild(w.filename, w.name, "project-development"); foreach(project; w.projects) { TreeItem p = root.newChild(project.filename, project.name, "project-open"); + addProjectItems(p, project.items); } } else { _tree.items.newChild("none", "New workspace"d, "project-development"); diff --git a/src/dlangide/workspace/project.d b/src/dlangide/workspace/project.d index 2aa9b4a..14f928d 100644 --- a/src/dlangide/workspace/project.d +++ b/src/dlangide/workspace/project.d @@ -66,7 +66,7 @@ class ProjectFolder : ProjectItem { } @property override bool isFolder() { - return false; + return true; } @property override int childCount() { return _children.count; @@ -78,13 +78,14 @@ class ProjectFolder : ProjectItem { void addChild(ProjectItem item) { _children.add(item); item._parent = this; - item._project = this; + item._project = _project; } bool loadDir(string path) { string src = relativeToAbsolutePath(path); - if (isDir(src) && exists(src)) { + if (exists(src) && isDir(src)) { ProjectFolder dir = new ProjectFolder(src); addChild(dir); + Log.d(" added project folder ", src); dir.loadItems(); return true; } @@ -92,9 +93,10 @@ class ProjectFolder : ProjectItem { } bool loadFile(string path) { string src = relativeToAbsolutePath(path); - if (isFile(src) && exists(src)) { + if (exists(src) && isFile(src)) { ProjectSourceFile f = new ProjectSourceFile(src); addChild(f); + Log.d(" added project file ", src); return true; } return false; @@ -196,6 +198,10 @@ class Project : WorkspaceItem { return buildNormalizedPath(_dir, path); } + @property ProjectFolder items() { + return _items; + } + @property Workspace workspace() { return _workspace; }