code dump. unfortunate lack of commits. rick click menu on files/folders. comparative...
[ede] / explorer / src / Explorer.ec
index 8bfeaa8..134b675 100644 (file)
@@ -14,22 +14,36 @@ 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<String> 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;
@@ -50,20 +64,49 @@ class Explorer : GuiApplication
          } 
          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(goPath);
+            }
+            for(c = 2; c < argc; c++)
+            {
+               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);
+            }
+         }
       }
       else if(searchPath)
       {
@@ -71,6 +114,15 @@ 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;
+         // delete comparedPaths;
+      }
       return true;
    }
 }
@@ -115,7 +167,7 @@ struct QuickPathTool
             delete original;
          }
       }
-      get { return path[0] ? path : null; }
+      get { return path[0] ? (char*)path : null; }
    }
    property bool { get { return path[0] != '\0'; } }
 };