ide;ProjectView; added support for quickly switching active configuration for whole...
authorRejean Loyer <rejean.loyer@gmail.com>
Sat, 24 Aug 2013 14:59:35 +0000 (10:59 -0400)
committerJerome St-Louis <jerome@ecere.com>
Mon, 26 Aug 2013 03:11:07 +0000 (23:11 -0400)
ide/src/ide.ec
ide/src/project/Project.ec
ide/src/project/ProjectView.ec
ide/src/project/Workspace.ec

index a7d57ec..0b78bcf 100644 (file)
@@ -282,21 +282,7 @@ class IDEToolbar : ToolBar
       bool NotifySelect(DropBox dropBox, DataRow row, Modifiers mods)
       {
          if(row)
-         {
-            for(prj : ide.workspace.projects)
-            {
-               for(cfg : prj.configurations)
-               {
-                  if(cfg.name && !strcmp(cfg.name, row.string))
-                  {
-                     prj.config = cfg;
-                     break;
-                  }
-               }
-            }
-            ide.UpdateToolBarActiveConfigs(true);
-            ide.projectView.Update(null);
-         }
+            ide.workspace.SelectActiveConfig(row.string);
          return true;
       }
    };
index 570a243..9524d78 100644 (file)
@@ -1455,7 +1455,7 @@ private:
       }
    }
    
-   void RotateActiveConfig(bool forward)
+   void RotateActiveConfig(bool forward, bool syncAllProjects)
    {
       if(configurations.first && configurations.last != configurations.first)
       {
@@ -1475,10 +1475,15 @@ private:
                cfg.Prev();
          }
 
-         property::config = cfg.data;
-         ide.UpdateToolBarActiveConfigs(true);
-         ide.workspace.modified = true;
-         ide.projectView.Update(null);
+         if(syncAllProjects)
+            ide.workspace.SelectActiveConfig(cfg.data.name);
+         else
+         {
+            property::config = cfg.data;
+            ide.UpdateToolBarActiveConfigs(true);
+            ide.workspace.modified = true;
+            ide.projectView.Update(null);
+         }
       }
    }
 
index 89f9931..734fc73 100644 (file)
@@ -426,7 +426,9 @@ class ProjectView : Window
                   }
                   break;
                }
-               case Key { space, shift = true }:
+               case Key { space, false, true }:
+               case Key { space, true, true }:
+               case Key { space, true }:
                case space:
                {
                   if(node.type == NodeTypes::project)
@@ -440,7 +442,7 @@ class ProjectView : Window
                            break;
                         }
                      }
-                     prj.RotateActiveConfig(!key.shift);
+                     prj.RotateActiveConfig(!key.shift, key.ctrl);
                      if(prj == project)
                         ide.AdjustMenus();
                      return false;
index caf147d..521545f 100644 (file)
@@ -460,6 +460,30 @@ public:
       delete project;
    }
 
+   void SelectActiveConfig(char * configName)
+   {
+      bool change = false;
+      for(prj : ide.workspace.projects)
+      {
+         for(cfg : prj.configurations)
+         {
+            if(cfg.name && !strcmp(cfg.name, configName))
+            {
+               prj.config = cfg;
+               change = true;
+               break;
+            }
+         }
+      }
+      if(change)
+      {
+         modified = true;
+         ide.UpdateToolBarActiveConfigs(true);
+         ide.projectView.Update(null);
+         Save();
+      }
+   }
+
    bool FindPath(ProjectNode node, char * path)
    {
       if(node.type == file)