ide: improved quick project menu item enabling/disabling.
authorRejean Loyer <rejean.loyer@gmail.com>
Thu, 5 Apr 2012 18:33:35 +0000 (14:33 -0400)
committerRejean Loyer <rejean.loyer@gmail.com>
Thu, 5 Apr 2012 22:21:21 +0000 (18:21 -0400)
ide/src/designer/CodeEditor.ec
ide/src/ide.ec

index 62d73f1..fca3fd6 100644 (file)
@@ -1989,7 +1989,6 @@ class CodeEditor : Window
       {
          if(ide.workspace && fileName)
             ide.workspace.UpdateOpenedFileInfo(fileName, closed);
-         
          if(inUseDebug && !debugClosing)
          {
             debugClosing = true;
@@ -2015,6 +2014,7 @@ class CodeEditor : Window
                //formEditor.Destroy(0);
             }*/
          }
+         ide.AdjustFileMenus();
       }
       return true;
    }
index fd33f37..d76f2d7 100644 (file)
@@ -779,7 +779,7 @@ class IDEWorkSpace : Window
       }
       MenuItem projectQuickItem
       {
-         projectMenu, $"Quick...", q, f7;
+         projectMenu, $"Quick...", q, f7, disabled = true;
          bool NotifySelect(MenuItem selection, Modifiers mods)
          {
             if(!projectView)
@@ -1495,6 +1495,7 @@ class IDEWorkSpace : Window
    {
       ideSettings.AddRecentFile(fileName);
       ide.UpdateRecentMenus();
+      ide.AdjustFileMenus();
       settingsContainer.Save();
    }
 
@@ -1543,8 +1544,6 @@ class IDEWorkSpace : Window
    {
       bool unavailable = !project;
 
-      projectQuickItem.disabled           = !unavailable;
-
       projectAddItem.disabled             = unavailable;
       toolBar.buttonAddProject.disabled   = unavailable;
 
@@ -1556,10 +1555,32 @@ class IDEWorkSpace : Window
 
       viewProjectItem.disabled            = unavailable;
 
+      AdjustFileMenus();
       AdjustBuildMenus();
       AdjustDebugMenus();
    }
 
+   property bool hasOpenedCodeEditors
+   {
+      get
+      {
+         Window w;
+         for(w = firstChild; w; w = w.next)
+            if(w._class == class(CodeEditor) &&
+                  w.isDocument && !w.closing && w.visible && w.created &&
+                  w.fileName && w.fileName[0])
+               return true;
+         return false;
+      }
+   }
+
+   void AdjustFileMenus()
+   {
+      bool unavailable = project != null || !hasOpenedCodeEditors; // are they supported source code (ec, c, cpp, etc) ?
+
+      projectQuickItem.disabled           = unavailable;
+   }
+
    void AdjustBuildMenus()
    {
       bool unavailable = project && projectView.buildInProgress;
@@ -1872,7 +1893,7 @@ class IDEWorkSpace : Window
                }
             }
             else
-               return document;
+               return null;
          }
          else if(openMethod == add)
          {
@@ -2034,6 +2055,7 @@ class IDEWorkSpace : Window
          else
             ideSettings.AddRecentFile(document.fileName);
          ide.UpdateRecentMenus();
+         ide.AdjustFileMenus();
          settingsContainer.Save();
          
          return document;