X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=ede;a=blobdiff_plain;f=explorer%2Fsrc%2FExplorer.ec;h=6b9f872c7cc5540d2ee3a32e8ea22b3a7246acde;hp=8bfeaa86418390ccf03ca6bf2b54033e94b91be7;hb=bc25e0084823e36a8403b14a96985459328cbe3c;hpb=4943336814b7b33a190e420e7ed6014921522014 diff --git a/explorer/src/Explorer.ec b/explorer/src/Explorer.ec index 8bfeaa8..6b9f872 100644 --- a/explorer/src/Explorer.ec +++ b/explorer/src/Explorer.ec @@ -14,30 +14,45 @@ import "ExplorerWindow" #endif */ +DummyFileSystemCacheWindow dw;// { size = { 200, 200 } }; + + class Explorer : GuiApplication { //skin = "Acovel"; bool Init() { - QuickPathTool goPath { }; + int c, argc = this.argc; + int openArgsStartAt = 0; QuickPathTool searchPath { }; char * findWhat = null; + Array comparedPaths = null; SetLoggingMode(debug, null); + for(c = 1; c < argc; c++) + { + if(!strcmp(argv[c], "#")) + { + argc = c; + break; + } + } + if(argc > 1) { if(!strcmpi(argv[1], "go") && argc > 2) - goPath = argv[2]; + openArgsStartAt = 2; else if(!strcmpi(argv[1], "find") && argc > 2) { - char * unquoted; if(argv[2][0] == '\"') - StripQuotes(argv[2], unquoted); + { + findWhat = new char[strlen(argv[2])+1]; + StripQuotes(argv[2], findWhat); + } else - unquoted = argv[2]; - findWhat = CopyString(unquoted); + findWhat = CopyString(argv[2]); if(argc > 3) { if(!strcmpi(argv[3], "in") && argc > 4) @@ -47,23 +62,54 @@ class Explorer : GuiApplication } else searchPath = ""; // same - } + } else if(!strcmpi(argv[1], "search") && argc > 2) searchPath = argv[2]; + else if(!strcmpi(argv[1], "compare") && argc > 2) + { + QuickPathTool goPath { }; + comparedPaths = { }; + if(argc == 3) + { + goPath = ""; // current dir + comparedPaths.Add(CopyString((const char *)goPath)); // TODO: Review whether this gets freed? + } + for(c = 2; c < argc; c++) + { + const char * s; + goPath = argv[c]; + s = goPath; + if(s) + comparedPaths.Add(CopyString(s)); + } + if(comparedPaths.count < 2) + PrintLn("compare requires at least 2 existing directories to work."); + } else if(!strcmpi(argv[1], "image") && argc > 2) ; else if(!strcmpi(argv[1], "slides") && argc > 2) ; else - goPath = argv[1]; + openArgsStartAt = 1; } else - goPath = ""; - if(goPath) + openArgsStartAt = -1; + + if(openArgsStartAt) { - ExplorerWindow explorerWnd { }; - explorerWnd.Create(); - explorerWnd.GoTo(goPath, false, false); + QuickPathTool goPath { }; + for(c = openArgsStartAt; c < argc; c++) + { + goPath = openArgsStartAt == -1 ? "" : argv[c]; + if(goPath) + { + ExplorerWindow explorerWnd { }; + explorerWnd.Create(); + explorerWnd.location = goPath;//explorerWnd.GoTo(goPath, false, false); + } + if(openArgsStartAt == -1) + break; + } } else if(searchPath) { @@ -71,6 +117,21 @@ class Explorer : GuiApplication explorerWnd.Create(); //explorerWnd.SearchLocation(searchPath); } + else if(comparedPaths && comparedPaths.count > 1) + { + // compare /s1/library/dummies /s1/library/movies /s1/oldlib/movies "/home/redj/.gvfs/d02-2tb on kimji/library/movies" + ExplorerWindow explorerWnd { }; + explorerWnd.Create(); + explorerWnd.view.columnsCompareStyle = true; + explorerWnd.comparedLocations = comparedPaths; + comparedPaths = null; + // delete comparedPaths; + } + if(comparedPaths) + { + comparedPaths.Free(); + delete comparedPaths; + } return true; } } @@ -79,17 +140,20 @@ struct QuickPathTool { char path[MAX_LOCATION]; - property char * + property const char * { set { - char * unquoted; GetWorkingDir(path, MAX_LOCATION); if(value[0] == '\"') + { + char * unquoted = new char[strlen(value) + 1]; StripQuotes(value, unquoted); + PathCat(path, unquoted); + delete unquoted; + } else - unquoted = value; - PathCat(path, unquoted); + PathCat(path, value); if(!FileExists(path)) { // this incomplete functionality is not quite at it's place in this class @@ -100,7 +164,7 @@ struct QuickPathTool StripLastDirectory(path, path); if(FileExists(path)) { - // TODO: message location does not exist, + // TODO: message location does not exist, // this higher location exists though // go there? break; @@ -108,14 +172,14 @@ struct QuickPathTool } if(!len) { - // TODO: message location does not exist, + // TODO: message location does not exist, // unable to select alternate location } path[0] = '\0'; delete original; } } - get { return path[0] ? path : null; } + get { return path[0] ? (char*)path : null; } } property bool { get { return path[0] != '\0'; } } };