X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=blobdiff_plain;f=explorer%2Fsrc%2FExplorerWindow.ec;h=a2968e9adc0f77f2cdbb459f6a8d79e0c620c49b;hp=6d6ee59fd4e4c348c2dce90670400c7a1d746268;hb=24b868250f4615a32c8c92ab337f5867523d12c9;hpb=5b04f13e5356bc8f52a8b5bccdd6fc3c097ff76a diff --git a/explorer/src/ExplorerWindow.ec b/explorer/src/ExplorerWindow.ec index 6d6ee59..a2968e9 100644 --- a/explorer/src/ExplorerWindow.ec +++ b/explorer/src/ExplorerWindow.ec @@ -16,7 +16,11 @@ enum ExplorerToolId class ExplorerWindow : Window { +#ifdef _DEBUG + text = "Ecere Explorer (Debug)"; +#else text = "Ecere Explorer"; +#endif background = activeBorder; borderStyle = sizable; hasMaximize = true; @@ -121,11 +125,23 @@ class ExplorerWindow : Window case goBack: case goForward: break; + case goHome: + { + char * home = getenv("HOME"); + if(home && home[0] && FileExists(home).isDirectory) + view.path = home; + break; + } case goUp: { char * path = view.path; - char * newPath = new char[strlen(path)]; + char * newPath = new char[strlen(path)+1]; StripLastDirectory(path, newPath); + if(!newPath[0]) + { + newPath[0] = '/'; + newPath[1] = 0; + } view.path = newPath; delete newPath; break; @@ -133,13 +149,36 @@ class ExplorerWindow : Window case panelTree: // TODO TOFIX : need to fix Stacker for this to work tree.visible = button.checked; + split.visible = button.checked; + if(button.checked) + { + split.rightPane = view; + view.anchor = { top = 0, bottom = 0, right = 0 }; + tree.SelectLocation(view.path); + } + else + { + split.rightPane = null; + view.anchor = { left = 0, top = 0, bottom = 0, right = 0 }; + } //search.visible = !button.checked; panels.size = { panels.size.w, panels.size.h }; // TOFIX : another Stacker fix needed break; case panelSearch: // TODO TOFIX : need to fix Stacker for this to work //search.visible = button.checked; - tree.visible = !button.checked; + tree.visible = false; //!button.checked; + split.visible = false; //!button.checked; + if(false/*button.checked*/) + { + split.rightPane = view; + view.anchor = { top = 0, bottom = 0, right = 0 }; + } + else + { + split.rightPane = null; + view.anchor = { left = 0, top = 0, bottom = 0, right = 0 }; + } panels.size = { panels.size.w, panels.size.h }; // TOFIX : another Stacker fix needed break; case refresh: @@ -260,28 +299,84 @@ class ExplorerWindow : Window panels, this; };*/ - /*Tree*/FileSystemBox tree; - /*{ + Window hack + { panels, this; - size = { w = 240 }; anchor.top = 0; anchor.bottom = 0; - navigateFolders = true; + anchor.right = 0; + borderStyle = deep; + }; + + /*Tree*/FileSystemBox tree//; + { + hack, this; + size = { w = 240 }; + borderStyle = none; + visible = false; + /*anchor.top = 0; + anchor.bottom = 0;*/ + anchor = { left = 0, top = 0, bottom = 0 }; + treeBranches = true; foldersOnly = true; - borderStyle = none; + autoLoad = false; + + bool NotifyNodeSelect(FileSystemBox box, FileSystemNode node) + { + char p[MAX_LOCATION]; + node.GetPath(p); + view.path = node.path; + return true; + } + }; + + PaneSplitter split + { + hack, this; visible = false; - };*/ + leftPane = tree;//, rightPane = view; + split = 300; + }; FileSystemBox view { - panels, this; - anchor.top = 0; + hack, this; + borderStyle = none; + /*anchor.top = 0; anchor.bottom = 0; - anchor.right = 0; + anchor.right = 0;*/ + anchor = { left = 0, top = 0, bottom = 0, right = 0 }; + locationBox = addressBar; navigateFolders = true; - borderStyle = none; + multiSelect = true; + autoLoad = false; + + bool NotifyNodeOpen(FileSystemBox box, FileSystemNode node) + { + if(node.type.isFile) + { + #ifndef __WIN32__ + char command[MAX_LOCATION]; + /*_FileType t = node.type; + if(t == ewsFile || t == epjFile || + t == ecFile || t == ehFile || + t == cppFile || t == hppFile || + t == cFile || t == hFile || + t == textFile || t == webFile)*/ + sprintf(command, "ide %s", node.path); + /*else + sprintf(command, "%s", node.path);*/ + Execute(command); + #else + ShellOpen(node.path); + #endif + } + else if(node.type.isFolder && tree.visible) + tree.SelectLocation(node.path); + return true; + } }; /*ExplorerSearch search @@ -300,13 +395,6 @@ class ExplorerWindow : Window parent = deep, master = this; tabCycle = true; anchor = Anchor { top = 0, bottom = 0, right = 0 }; - }; - - SplitWindow split - { - deep, this; - leftPane = tree, rightPane = viewHolder; - split = 300; };*/ // Preview / Showcase @@ -423,6 +511,7 @@ class ExplorerWindow : Window { //userMode = true; addressBar.path = view.path; + tree.path = "/"; // this should be available as a parameter return true; }