X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=blobdiff_plain;f=explorer%2Fsrc%2FExplorerWindow.ec;h=c5573728b79bcfc7a02b460f24753cea346d43fc;hp=13406f12607486aab13265fdb439ff50414fa056;hb=6873f3a9950231d117b4ba693783e015f1abe7c5;hpb=d08903b5256a932439c7d23e0f51e5b357539d70 diff --git a/explorer/src/ExplorerWindow.ec b/explorer/src/ExplorerWindow.ec index 13406f1..c557372 100644 --- a/explorer/src/ExplorerWindow.ec +++ b/explorer/src/ExplorerWindow.ec @@ -129,33 +129,56 @@ class ExplorerWindow : Window { char * home = getenv("HOME"); if(home && home[0] && FileExists(home).isDirectory) - view.path = home; + GoToLocation(home, false, false); 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; + GoToLocation(newPath, false, false); delete newPath; break; } 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: @@ -211,7 +234,7 @@ class ExplorerWindow : Window bool NotifyModified(PathBox pathBox) { - view.path = pathBox.path; + GoToLocation(pathBox.path, false, false); return true; } }; @@ -276,35 +299,65 @@ 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); + GoToLocation(node.path, false, true); + 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 || @@ -315,8 +368,13 @@ class ExplorerWindow : Window sprintf(command, "ide %s", node.path); /*else sprintf(command, "%s", node.path);*/ - ShellOpen(command); + Execute(command); + #else + ShellOpen(node.path); + #endif } + else if(node.type.isFolder && tree.visible) + tree.SelectLocation(node.path); return true; } }; @@ -337,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 @@ -421,34 +472,13 @@ class ExplorerWindow : Window lastViewId = viewId; }*/ - /*void GoToLocation(char * location) + void GoToLocation(char * location, bool viewIsAtLocation, bool treeIsAtLocation) { - int c; - char * temp; - char step[MAX_LOCATION]; - - StringArray steps { growingFactor = 4 }; - ExplorerFileBranch last = null; - - temp = CopyString(location); - while(strlen(temp)) - { - GetLastDirectory(temp, step); - StripLastDirectory(temp, temp); - steps.Add(CopyString(step)); - } - - for(c = steps._count - 1; c >= 0; c--) - { - last = tree.Find(steps._[c], last); - if(!last) - break; - tree.Select(last); - } - - delete temp; - delete steps; - }*/ + if(!viewIsAtLocation) + view.path = location; + if(tree.visible && !treeIsAtLocation) + tree.SelectLocation(location); + } /*void SearchLocation(char * location) { @@ -460,6 +490,7 @@ class ExplorerWindow : Window { //userMode = true; addressBar.path = view.path; + tree.path = "/"; // this should be available as a parameter return true; }