static ProjectNode currentNode;
static Project project;
-static String MakeString(char * s, int len)
+static String MakeString(const char * s, int len, const char * switchToKeep, int lenSwitchToKeep)
{
String string = new char[len+1];
- memcpy(string, s, len);
- string[len] = 0;
+ if(s[0] == '-' && switchToKeep && switchToKeep[0])
+ {
+ if(strstr(s+1, switchToKeep) == s+1)
+ {
+ memcpy(string, s+lenSwitchToKeep+1, len-lenSwitchToKeep-1);
+ string[len-lenSwitchToKeep-1] = '\0';
+ }
+ else
+ delete string;
+ }
+ else
+ {
+ memcpy(string, s, len);
+ string[len] = '\0';
+ }
return string;
}
class StringListBox : EditBox
{
+ const char * switchToKeep;
+ int lenSwitchToKeep;
+
textHorzScroll = true;
property Array<String> strings
bool first = true;
for(item : value)
{
- if(!first)
- AddS(" ");
- AddS(item);
- first = false;
+ if(item)
+ {
+ if(!first)
+ AddS(" ");
+ AddS(item);
+ first = false;
+ }
}
}
}
{
Array<String> array { };
int c, start = 0;
- char * contents = property::contents;
+ const char * contents = property::contents;
+ char * s;
char ch;
bool quoted = false;
if(ch == ' ' && !quoted)
{
if(c - start)
- array.Add(MakeString(contents + start, c - start));
+ {
+ if((s = MakeString(contents + start, c - start, switchToKeep, lenSwitchToKeep)))
+ array.Add(s);
+ }
start = c + 1;
}
else if(ch == '\"')
}
}
if(c - start)
- array.Add(MakeString(contents + start, c - start));
+ {
+ if((s = MakeString(contents + start, c - start, switchToKeep, lenSwitchToKeep)))
+ array.Add(s);
+ }
return array;
}
}
minClientSize = { 650, 520 };
hasClose = true;
tabCycle = true;
- size = { 650, 520 };
property Project project
{
//char * s = PrintString("Project Settings - ", project.topNode.fileName);
//text = s;
char * projectName = new char[strlen(project.topNode.name) + 1];
- char * nodeName = currentNode && currentNode != project.topNode ? currentNode.name : "";
- char * config = buildTab.selectedConfigName;
- char * platform = buildTab.selectedPlatformName;
- char * label = new char[strlen(dialogTitle) + 3 + strlen(project.topNode.name) + 3 +
+ const char * nodeName = currentNode && currentNode != project.topNode ? currentNode.name : "";
+ const char * config = buildTab.selectedConfigName;
+ const char * platform = buildTab.selectedPlatformName;
+ char * label = new char[strlen(dialogTitle) + 3 + strlen(project.topNode.name) + 3 +
strlen(nodeName) + 2 + strlen(config) + 1 + strlen(platform) + 1 + 1];
strcpy(label, dialogTitle);
strcat(label, " - ");
{
UpdateDialogTitle();
prjTabControl.curTab = buildTab;
+
+ ((DirectoriesBox)buildTab.compilerTab.includeDirs.editor).baseBrowsePath = project.topNode.path;
+ ((DirectoriesBox)buildTab.linkerTab.libraryDirs.editor).baseBrowsePath = project.topNode.path;
+
return true;
}
}
-#define OPTION(x) ((uint)(&((ProjectOptions)0).x))
+#define OPTION(x) ((uint)(uintptr)(&((ProjectOptions)0).x))
// TOFIX: USING T INSTEAD OF Z HERE CAUSED US SOME CONFLICTS WITH T IN Array TEMPLATES
}
property bool visible { set { editor.visible = value; } get { return editor.visible; } }
- property Window parent { set { editor.parent = value; Window::parent = value; master = value; editor.id = (int64)this; } }
+ property Window parent { set { editor.parent = value; Window::parent = value; master = value; editor.id = (int64)(intptr)this; } }
property Point position { set { editor.position = value; } }
property Size size { set { editor.size = value; } }
property Anchor anchor { set { editor.anchor = value; } }
property Key hotKey { set { editor.hotKey = value; } }
- property char * text { set { editor.text = value; Window::text = value; } }
+ property const char * text { set { editor.caption = value; Window::caption = value; } }
uint option;
bool NotifySelect(MenuItem selection, Modifiers mods)
{
- OptionBox ob = (OptionBox)id;
+ OptionBox ob = (OptionBox)(intptr)id;
if(eClass_IsDerived(ob._class, class(CheckBoxForEnumOptionBox)))
{
Window slave;
return true;
}
};
-
+
bool Window::OptionBox_OnRightButtonDown(int x, int y, Modifiers mods)
{
- OptionBox ob = (OptionBox)id;
+ OptionBox ob = (OptionBox)(intptr)id;
GuiApplication app = ((GuiApplication)__thisModule.application);
Activate();
PopupMenu { null, this, menu = ob.clearMenu,
bool Window::OptionBox_OnKeyDown(Key key, unichar ch)
{
- OptionBox ob = (OptionBox)id;
+ OptionBox ob = (OptionBox)(intptr)id;
if(key == Key { del, ctrl = true } || key == Key { keyPadDelete, ctrl = true })
{
ob.Unset();
return false;
}
- return (((bool(*)(Window, Key, unichar)) ob.chainKeyDown)(this, key, ch);
+ return ob.chainKeyDown ? ((bool(*)(Window, Key, unichar)) ob.chainKeyDown)(this, key, ch) : true;
}
// code: 0 = not set anywhere, 1 = overridden here, 2 = inherited
break;
}
}
-
+
if(!c)
{
label = null;
buildTab = (BuildTab)buildTab.master;
if(buildTab) buildTab.modifiedDocument = true;
}
-
+
void Unset()
{
- char * platformName = platform ? platform.OnGetString(0,0,0) : null;
+ const char * platformName = platform ? platform.OnGetString(0,0,0) : null;
MarkBuildTabModified();
if(config)
void FigureOutInherited()
{
ProjectNode node;
- char * platformName = platform ? platform.OnGetString(0,0,0) : null;
+ const char * platformName = platform ? platform.OnGetString(0,0,0) : null;
bool skipped = false;
for(node = currentNode; node; node = node.parent)
{
skipped = true;
break;
}
- }
+ }
if(skipped && c.options && OptionSet(c.options))
{
void Retrieve()
{
- char * platformName = platform ? platform.OnGetString(0,0,0) : null;
+ const char * platformName = platform ? platform.OnGetString(0,0,0) : null;
MarkBuildTabModified();
if(config)
{
void Load()
{
ProjectNode node;
- char * platformName = platform ? platform.OnGetString(0,0,0) : null;
+ const char * platformName = platform ? platform.OnGetString(0,0,0) : null;
bool setAttribs = false;
for(node = currentNode; node; node = node.parent)
{
}
break;
}
- }
+ }
nodeConfig = c;
break;
{
bool NotifyModified(EditBox editBox)
{
- ((OptionBox)editBox.id).Retrieve();
+ ((OptionBox)(intptr)editBox.id).Retrieve();
return true;
}
bool NotifyModified(PathBox pathBox)
{
- ((OptionBox)pathBox.id).Retrieve();
+ FixPathOnPathBoxNotifyModified(pathBox);
+ ((OptionBox)(intptr)pathBox.id).Retrieve();
return true;
}
};
if(tempStrings)
{
- Array<String> ts = tempStrings;
while(it.Next())
{
String s = it.data;
bool found = false;
- for(i : tempStrings; !(caseSensitive ? strcmp : strcmpi)(i, s)) { found = true; break; }
+ for(i : tempStrings; i && s && !(caseSensitive ? strcmp : strcmpi)(i, s)) { found = true; break; }
if(found && (!configReplaces || platform)) // ADDED || platform here...
{
delete s;
{
if(mergeValues)
{
- Array<String> strings = options ? *((Array<String>*)((byte *)options + option) : null;
+ Array<String> strings = options ? *(Array<String>*)((byte *)options + option) : null;
if(strings)
{
if(!tempStrings)
for(s : strings)
{
bool found = false;
- for(i : tempStrings; !(caseSensitive ? strcmp : strcmpi)(i, s)) { found = true; break; }
+ for(i : tempStrings; i && s && !(caseSensitive ? strcmp : strcmpi)(i, s)) { found = true; break; }
if(!found) tempStrings.Add(s);
}
}
- }
+ }
else
{
SetStrings(options ? *(Array<String>*)((byte *)options + option) : null);
{
bool NotifyModified(EditBox editBox)
{
- ((OptionBox)editBox.id).Retrieve();
+ ((OptionBox)(intptr)editBox.id).Retrieve();
return true;
}
};
// NO VIRTUAL PROPERTIES YET...
Array<String> GetStrings() { return ((StringListBox)editor).strings; }
void SetStrings(Array<String> value) { ((StringListBox)editor).strings = value; }
+
+ property const char * switchToKeep { set { ((StringListBox)editor).switchToKeep = value; ((StringListBox)editor).lenSwitchToKeep = strlen(value); } };
}
class StringsArrayOptionBox : MultiStringOptionBox
{
editor = StringsBox
{
- bool OnCreate()
+ /*bool OnCreate()
{
project = ::project;
return true;
- }
+ }*/
bool NotifyModified(StringsBox stringsBox)
{
- ((OptionBox)stringsBox.id).Retrieve();
+ ((OptionBox)(intptr)stringsBox.id).Retrieve();
return true;
}
};
void SetStrings(Array<String> value) { ((StringsBox)editor).strings = value; }
}
-class DirsArrayOptionBox : MultiStringOptionBox
+bool eString_IsPathRelatedTo(char * path, char * to)
{
- editor = DirectoriesBox
+ if(path[0] && to[0])
{
- bool NotifyModified(DirectoriesBox dirsBox)
- {
- ((OptionBox)dirsBox.id).Retrieve();
- return true;
- }
-
- bool OnChangedDir(char * * directory)
+ char pathPart[MAX_FILENAME], pathRest[MAX_LOCATION] = "";
+ char toPart[MAX_FILENAME], toRest[MAX_LOCATION] = "";
+ SplitDirectory(path, pathPart, pathRest);
+ SplitDirectory(to, toPart, toRest);
+ if(!fstrcmp(pathPart, toPart))
{
- char fixedDirectory[MAX_LOCATION] = "";
- if(PathCat(fixedDirectory, *directory))
+ if(pathRest[0] && toRest[0])
{
- char cwdBackup[MAX_LOCATION];
- if(project)
- {
- GetWorkingDir(cwdBackup, sizeof(cwdBackup));
- ChangeWorkingDir(project.topNode.path);
- }
- FileFixCase(fixedDirectory);
- if(project)
- ChangeWorkingDir(cwdBackup);
- delete *directory;
- *directory = CopyString(fixedDirectory);
- return true;
+ SplitDirectory(pathRest, pathPart, pathRest);
+ SplitDirectory(toRest, toPart, toRest);
+ if(!fstrcmp(pathPart, toPart))
+ return true;
}
- return false;
}
+ }
+ return false;
+}
+
+static void FixPathOnPathBoxNotifyModified(PathBox pathBox)
+{
+ int len;
+ char path[MAX_LOCATION];
+ ValidPathBufCopy(path, pathBox.path);
+ len = strlen(path);
+ if(len && !(path[0] == '.' && (len == 1 || (len == 2 && path[1] == DIR_SEP) || (len > 1 && path[1] == '.'))))
+ {
+ char cwdBackup[MAX_LOCATION];
+ if(project)
+ {
+ GetWorkingDir(cwdBackup, sizeof(cwdBackup));
+ ChangeWorkingDir(project.topNode.path);
+ }
+ FileFixCase(path);
+ if(project)
+ ChangeWorkingDir(cwdBackup);
+ if(eString_IsPathRelatedTo(path, project.topNode.path))
+ MakePathRelative(path, project.topNode.path, path);
+ if(!path[0])
+ strcpy(path, ".");
+ len = strlen(path);
+ }
+ if(len>1 && path[len-1] == DIR_SEP)
+ path[--len] = '\0';
+ pathBox.path = path;
+}
+
+class DirsArrayOptionBox : MultiStringOptionBox
+{
+public:
+ property const char * switchToKeep { set { switchToKeep = value; lenSwitchToKeep = strlen(value); } };
+private:
+ const char * switchToKeep;
+ int lenSwitchToKeep;
- bool OnPrepareBrowseDir(char * * directory)
+ editor = DirectoriesBox
+ {
+ browseDialog = { };
+ bool NotifyModified(DirectoriesBox dirsBox)
{
- char dir[MAX_LOCATION];
- if(project)
+ const char * switchToKeep = ((DirsArrayOptionBox)(intptr)dirsBox.id).switchToKeep;
+ if(switchToKeep && switchToKeep[0])
{
- GetSystemPathBuffer(dir, project.topNode.path);
- if(*directory)
- PathCat(dir, *directory);
+ bool change = false;
+ int lenSwitchToKeep = ((DirsArrayOptionBox)(intptr)dirsBox.id).lenSwitchToKeep;
+ Array<String> dirs { };
+ Array<String> previousDirs = dirsBox.strings;
+ for(d : previousDirs)
+ {
+ int c;
+ char * buffer = new char[strlen(d)+64];
+ char * tokens[1024];
+ uint count;
+ strcpy(buffer, d);
+ count = Tokenize(buffer, sizeof(tokens)/sizeof(tokens[0]), tokens, (BackSlashEscaping)false);
+ for(c=0; c<count; c++)
+ {
+ if(tokens[c][0] == '-')
+ {
+ if(strstr(tokens[c]+1, switchToKeep) == tokens[c]+1)
+ tokens[c] += lenSwitchToKeep+1;
+ else
+ tokens[c][0] = '\0';
+ change = true;
+ }
+ dirs.Add(CopyString(tokens[c]));
+ }
+ delete buffer;
+ }
+ if(change)
+ dirsBox.strings = dirs;
+ dirs.Free();
+ delete dirs;
+ previousDirs.Free();
+ delete previousDirs;
}
- else if(*directory)
- strcpy(dir, *directory);
- else
- dir[0] = '\0';
-
- delete *directory;
- *directory = CopyString(dir);
-
- // GCC 4.4 bug: ----- path becomes *directory
- //strcpy(dir, path ? path : "");
+ ((OptionBox)(intptr)dirsBox.id).Retrieve();
return true;
}
- bool OnBrowsedDir(char * * directory)
+ bool NotifyPathBoxModified(DirectoriesBox dirsBox, PathBox pathBox)
{
- if(project)
- {
- char path[MAX_LOCATION];
- MakePathRelative(*directory, project.topNode.path, path);
- delete *directory;
- *directory = CopyString(path);
- }
+ FixPathOnPathBoxNotifyModified(pathBox);
return true;
}
};
bool NotifyClicked(Button button, int x, int y, Modifiers mods)
{
- ((OptionBox)button.id).Retrieve();
+ ((OptionBox)(intptr)button.id).Retrieve();
return true;
}
};
void RetrieveOption(ProjectOptions options, bool isCfgOrPlt)
{
bool checked = ((Button)editor).checked;
- *(SetBool*)((byte *)options + option) = checked ? true :
+ *(SetBool*)((byte *)options + option) = checked ? true :
((currentNode.parent || isCfgOrPlt) ? false : unset);
}
bool NotifyClicked(Button button, int x, int y, Modifiers mods)
{
- ((OptionBox)button.id).Retrieve();
+ ((OptionBox)(intptr)button.id).Retrieve();
{
Window slave;
for(slave = master.firstSlave; slave; slave = slave.nextSlave)
{
if(eClass_IsDerived(slave._class, class(CheckBoxForEnumOptionBox)) &&
- slave != (Window)button.id &&
- ((OptionBox)slave).option == ((OptionBox)button.id).option)
+ slave != (Window)(intptr)button.id &&
+ ((OptionBox)slave).option == ((OptionBox)(intptr)button.id).option)
((OptionBox)slave).Load();
}
}
{
bool NotifySelect(DropBox dropBox, DataRow row, Modifiers mods)
{
- ((OptionBox)dropBox.id).Retrieve();
+ ((OptionBox)(intptr)dropBox.id).Retrieve();
return true;
}
- };
+ };
void LoadOption(ProjectOptions options)
{
surface.LineStipple(0x5555);
surface.Rectangle(x1, y1, x2, y2);
- surface.LineStipple(0);
+ surface.LineStipple(0);
}
class BuildTab : Tab
ProjectNode lastSelectedNode;
- property char * selectedConfigName
+ property const char * selectedConfigName
{
get
{
SelectorButton button = (SelectorButton)configSelector.selectedButton;
if(button && button.id)
{
- ProjectConfig config = (ProjectConfig)button.id;
+ ProjectConfig config = (ProjectConfig)(intptr)button.id;
return config.name;
}
}
}
}
- property char * selectedPlatformName
+ property const char * selectedPlatformName
{
get
{
if(button && button.id)
{
Platform platform = (Platform)button.id;
- char * platformName = platform ? platform.OnGetString(0,0,0) : null; // all these platformName are leaking, no?
+ const char * platformName = platform ? platform.OnGetString(0,0,0) : null; // all these platformName are leaking, no?
return platformName;
}
}
}
return SelectorBar::OnKeyDown(key, ch);
}
-
+
bool OnActivate(bool active, Window previous, bool * goOnWithActivation, bool direct)
{
((BuildTab)master).labelConfigurations.Update(null);
config.options.debug = true;
config.options.optimization = none;
config.options.warnings = all;
- */
+ */
button =
{
- configSelector, renameable = true, master = this, text = config.name, id = (int64)config;
+ configSelector, renameable = true, master = this, text = config.name, id = (int64)(intptr)config;
NotifyClicked = ConfigClicked, OnRename = ConfigOnRename;
};
String msg = PrintString($"Are you sure you wish to delete the ", config.name, $" configuration?");
if(MessageBox { type = okCancel, text = title, contents = msg }.Modal() == ok)
{
- Iterator<Window> it { configSelector.controls };
+ //Iterator<Window> it { configSelector.controls };
ProjectConfig configToDelete = config;
/*
while(it.Next())
}
}
*/
- SelectorButton button = configSelector.FindButtonByID((int64)configToDelete);
+ SelectorButton button = configSelector.FindButtonByID((int64)(intptr)configToDelete);
if(button)
configSelector.RemoveButton(button);
return true;
}
};
-
+
Label labelPlatforms
{
this, anchor = { left = 8, top = 44 }, labeledWindow = platformSelector;
text = $"(Right click or press Ctrl-Del to revert an option to inherited value)", anchor = { top = 72, right = 16 }
};
- void FindUniqueConfigName(char * baseName, bool startWithNumber, char * output)
+ void FindUniqueConfigName(const char * baseName, bool startWithNumber, char * output)
{
int num = 0;
char tmp[MAX_F_STRING];
}
project.topNode.RenameConfig(config.name, *newName);
-
+
modifiedDocument = true;
return true;
}
{
if(!eClass_IsDerived(clickedButton._class, class(EditableSelectorButton)) || !((EditableSelectorButton)clickedButton).editBox)
{
- config = (ProjectConfig)clickedButton.id;
+ config = (ProjectConfig)(intptr)clickedButton.id;
// Load Settings Into Dialog
compilerTab.LoadSettings();
if(!node) node = project.topNode;
newNodeRes = node.isInResources;
-
+
currentNode = node;
if(!ignoreAsLastSelection)
lastSelectedNode = node;
}
else
{
- compilerTab.rightPaneHeader.id = (int64)node;
+ compilerTab.rightPaneHeader.id = (int64)(intptr)node;
compilerTab.rightPaneHeader.Update(null);
compilerTab.rightPaneHeader.visible = true;
}
{
- DataRow row = compilerTab.fileList.FindSubRow((int64)currentNode);
+ DataRow row = compilerTab.fileList.FindSubRow((int64)(intptr)currentNode);
if(row)
{
compilerTab.fileList.currentRow = row;
compilerTab.labelIncludeDirs.visible = !newNodeRes;
compilerTab.includeDirs.visible = !newNodeRes;
}
-
+
if(node == project.topNode)
{
compilerTab.objDir.visible = true;
void CreateConfigButtons()
{
- SelectorButton commonButton;
-
// Create Config Buttons
- commonButton = SelectorButton
+ SelectorButton
{
- configSelector, master = this, text = $"Common", id = (int64)null; font = { font.faceName, font.size, true };
+ configSelector, master = this, text = $"Common", id = 0; font = { font.faceName, font.size, true };
checked = true;
NotifyClicked = ConfigClicked;
};
-
+
config = null;
if(project.topNode.configurations)
{
EditableSelectorButton button
{
- configSelector, master = this, renameable = true, text = c.name, id = (int64)c;
+ configSelector, master = this, renameable = true, text = c.name, id = (int64)(intptr)c;
NotifyClicked = ConfigClicked, OnRename = ConfigOnRename;
};
}
}
}
-
+
void Init()
{
Platform p;
SelectorButton button;
activeConfigName = project.config ? CopyString(project.config.name) : null;
-
+
compilerTab.AddNode(project.topNode, null);
CreateConfigButtons();
{
SelectorButton button
{
- platformSelector, master = this, text = p.OnGetString(0,0,0), id = (int64)p;
+ platformSelector, master = this, text = p.OnGetString(0,0,0), id = (int64)p;
NotifyClicked = PlatformClicked;
};
}
while(it.Next())
{
SelectorButton configButton = (SelectorButton)it.data;
- ProjectConfig buttonConfig = (ProjectConfig)configButton.id;
+ ProjectConfig buttonConfig = (ProjectConfig)(intptr)configButton.id;
if(buttonConfig == project.config)
{
configButton.Activate();
configButton.checked = true;
- ConfigClicked(configButton, 0, 0, (Modifiers)null);
+ ConfigClicked(configButton, 0, 0, 0);
break;
}
}
while(it.Next())
{
Button button = (Button)it.data;
- ProjectConfig c = (ProjectConfig)button.id;
+ ProjectConfig c = (ProjectConfig)(intptr)button.id;
if(c && !strcmp(c.name, configName))
{
config = c;
bool NotifySelect(ListBox listBox, DataRow row, Modifiers mods)
{
BuildTab buildTab = (BuildTab)master;
- ProjectNode node = (ProjectNode)row.tag;
+ ProjectNode node = (ProjectNode)(intptr)row.tag;
buildTab.SelectNode(node, false);
return true;
}
}
};
- Window rightPane
+ Window rightPane
{
this, anchor = { left = 196, top = 0, right = 0, bottom = 0 }, background = formColor, tabCycle = true;
};
{
if(id)
{
+ void (* onDisplay)(void *, void *, void *, int, int, int, void *, uint, uint) = (void *)class(ProjectNode)._vTbl[__ecereVMethodID_class_OnDisplay];
+
ide.projectView.drawingInProjectSettingsDialogHeader = true;
- ((void (*)(void *, void *, void *, int, int, int, void *, uint, uint))(void *)class(ProjectNode)._vTbl[__ecereVMethodID_class_OnDisplay])(class(ProjectNode),
- (void *)id, surface, 8, 2, clientSize.w, ide.projectView, Alignment::left, DataDisplayFlags { selected = true });
+ if(onDisplay)
+ onDisplay(class(ProjectNode), (void *)(intptr)id, surface, 8, 2, clientSize.w, ide.projectView, Alignment::left, DataDisplayFlags { selected = true });
ide.projectView.drawingInProjectSettingsDialogHeader = false;
}
}
DirsArrayOptionBox includeDirs
{
rightPane, this, size = { 290, 22 }, anchor = { left = 8, top = 250, right = 8, bottom = 8 };
- text = $"Additional Include Directories", hotKey = altI, option = OPTION(includeDirs);
+ text = $"Additional Include Directories", hotKey = altI, option = OPTION(includeDirs), switchToKeep = "I";
};
CompilerTab()
{
DataRow row = addTo ? addTo.AddRow() : fileList.AddRow();
- row.tag = (int64)node;
+ row.tag = (int64)(intptr)node;
row.SetData(null, node);
- if(node.files && node.files.first && node.parent &&
- !(!node.parent.parent &&
- (!strcmpi(node.name, "notes") || !strcmpi(node.name, "sources") ||
+ if(node.files && node.files.first && node.parent &&
+ !(!node.parent.parent &&
+ (!strcmpi(node.name, "notes") || !strcmpi(node.name, "sources") ||
!strcmpi(node.name, "src") || !strcmpi(node.name, "tools"))))
row.collapsed = true;
else if(node.type == folder)
if(activeChild && activeChild.active)
{
Window control = activeChild;
- control.Deactivate();
+ control.Deactivate();
control.Activate();
}
}
this, position = { 8, 24 }, size = { 200, 22 };
text = $"Target Name", hotKey = altN, option = OPTION(targetFileName);
};
-
+
Label labelTargetType { this, position = { 216, 8 }, labeledWindow = targetType };
TargetTypeDB targetType
{
this, position = { 216, 24 }, size = { 120, 22 };
text = $"Target Type", hotKey = altT, option = OPTION(targetType);
};
-
+
Label labelTargetDirectory { this, position = { 344, 8 }, labeledWindow = targetDirectory };
PathOptionBox targetDirectory
{
StringArrayOptionBox libraries
{
this, size = { 290, 22 }, anchor = { left = 8, top = 66, right = 8 };
- text = $"Additional Libraries", hotKey = altL, option = OPTION(libraries);
+ text = $"Additional Libraries", hotKey = altL, option = OPTION(libraries), switchToKeep = "l";
configReplaces = true;
};
DirsArrayOptionBox libraryDirs
{
this, size = { 290, 22 }, anchor = { left = 8, top = 182, right = 8, bottom = 8 };
- text = $"Additional Library Directories", hotKey = altY, option = OPTION(libraryDirs);
+ text = $"Additional Library Directories", hotKey = altY, option = OPTION(libraryDirs), switchToKeep = "L";
};
bool OnCreate()
if(activeChild && activeChild.active)
{
Window control = activeChild;
- control.Deactivate();
+ control.Deactivate();
control.Activate();
}
}
Label labelPrebuildCommands { prebuildCommands.editor, labeledWindow = prebuildCommands, position = { 0, 6 }; };
StringsArrayOptionBox prebuildCommands
{
- this, size = { 290, 100 }, anchor = { left = 8, top = 8, right = 8, bottom = 0.5 };
+ this, size = { 290, 92 }, anchor = { left = 8, top = 8, right = 8, bottom = 200 };
text = $"Pre-build Commands", hotKey = altE, option = OPTION(prebuildCommands);
};
Label labelPostbuildCommands { postbuildCommands.editor, labeledWindow = postbuildCommands, position = { 0, 6 }; };
StringsArrayOptionBox postbuildCommands
{
- this, size = { 290 }, anchor = { left = 8, top = 0.5, right = 8, bottom = 8 };
+ this, size = { 290, 92 }, anchor = { left = 8, top = 100, right = 8, bottom = 100 };
text = $"Post-build Commands", hotKey = altT, option = OPTION(postbuildCommands);
};
+ Label labelInstallCommands { installCommands.editor, labeledWindow = installCommands, position = { 0, 6 }; };
+ StringsArrayOptionBox installCommands
+ {
+ this, size = { 290, 92 }, anchor = { left = 8, top = 200, right = 8, bottom = 8 };
+ text = $"Install Commands", hotKey = altT, option = OPTION(installCommands);
+ };
+
void LoadSettings()
{
- bool disabled = strlen(((BuildTab)master).selectedPlatformName) > 0;
OptionBox ob;
for(ob = (OptionBox)firstSlave; ob; ob = (OptionBox)ob.nextSlave)
if(eClass_IsDerived(ob._class, class(OptionBox)))
if(activeChild && activeChild.active)
{
Window control = activeChild;
- control.Deactivate();
+ control.Deactivate();
control.Activate();
}
}
+
+ void OnResize(int width, int height)
+ {
+ int h = (height - 8 * 4) / 3;
+ prebuildCommands.anchor = { left = 8, top = 8, right = 8, bottom = h * 2 + 8 * 3 };
+ postbuildCommands.anchor = { left = 8, top = h + 8 * 2, right = 8, bottom = h + 8 * 2 };
+ installCommands.anchor = { left = 8, top = h * 2 + 8 * 3, right = 8, bottom = 8 };
+ }
}