ProgramThread progThread { };
#endif
+ void ChangeState(DebuggerState value)
+ {
+ state = value;
+ if(ide) ide.AdjustDebugMenus();
+ }
+
void CleanUp()
{
// Stop(); // Don't need to call Stop here, because ~ProjectView() will call it explicitly.
targetDir = null;
targetFile = null;
- state = none;
+ ChangeState(none);
event = none;
breakType = none;
{
if(targetProcessId)
{
- ide.DebugUpdateMenus(running, true);
+ //ide.AdjustDebugMenus();
GdbDebugBreak(false);
}
}
}
}
- property bool isInDebugMode
- {
- get
- {
- if(state == running || state == stopped)
- return true;
- return false;
- }
- }
-
void Restart()
{
switch(state)
break;
case stopped:
GdbAbortExec();
+ case none:
+ case terminated:
+ if(!GdbInit())
+ break;
case loaded:
GdbExecRun();
break;
bool returnedExitCode = false;
char verboseExitCode[128];
- state = loaded;
+ ChangeState(loaded); // this state change seems to be superfluous, might be in case of gdb crash
targetProcessId = 0;
if(code)
}
}
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
#if defined(__unix__)
progThread.terminate = true;
if(ide)
{
- ide.DebugUpdateMenus(running, true);
+ //ide.AdjustDebugMenus();
ide.Update(null);
}
app.Unlock();
serialSemaphore.Wait();
else
{
- state = loaded;
+ ChangeState(loaded);
targetProcessId = 0;
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
}
app.Lock();
}
prjConfig = project.config;
- state = loaded;
+ ChangeState(loaded);
sentKill = false;
sentBreakInsert = false;
symbols = true;
if(!GdbTargetSet())
{
- //state = terminated;
- //ide.DebugUpdateMenus(loaded, false);
+ //ChangeState(terminated);
+ //ide.AdjustDebugMenus();
result = false;
}
}
}
gdbTimer.Stop();
- state = terminated;
+ ChangeState(terminated); // this state change seems to be superfluous, is it safety for something?
prjConfig = null;
if(ide.workspace)
ide.outputView.debugBox.Logf("Debugging stopped\n");
ClearBreakDisplay();
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
ide.Update(null);
#if defined(__unix__)
// Why was SelectFrame missing here?
SelectFrame(activeFrameLevel);
GoToStackFrameLine(activeFrameLevel, true);
- ide.DebugUpdateMenus(stopped, false);
+ //ide.AdjustDebugMenus();
ide.Activate();
ide.Update(null);
}
// Why was SelectFrame missing here?
SelectFrame(activeFrameLevel);
GoToStackFrameLine(activeFrameLevel, true);
- ide.DebugUpdateMenus(stopped, false);
+ //ide.AdjustDebugMenus();
ide.Activate();
ide.Update(null);
if(bp.type == BreakpointType::runToCursor)
{
if(state != terminated)
{
- state = terminated;
+ ChangeState(terminated);
targetProcessId = 0;
ClearBreakDisplay();
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
if(gdbHandle)
{
ide.outputView.debugBox.Logf("Debugging stopped\n");
ide.Update(null);
}
- //state = terminated;
+ //ChangeState(terminated);
}
}
if(sentKill)
{
sentKill = false;
- state = loaded;
+ ChangeState(loaded);
targetProcessId = 0;
if(outTokens.count > 1 && TokenizeListItem(outTokens[1], item))
{
}
else if(!strcmp(outTokens[0], "^exit"))
{
- state = terminated;
- ide.DebugUpdateMenus(loaded, false);
+ ChangeState(terminated);
+ //ide.AdjustDebugMenus();
// ide.outputView.debugBox.Logf("Exit\n");
- ide.Update(null);
+ //ide.Update(null);
gdbReady = true;
serialSemaphore.Release();
}
}
else if(!strcmp(item.value, "Cannot find bounds of current function"))
{
- state = stopped;
+ ChangeState(stopped);
gdbHandle.Printf("-exec-continue\n");
}
else if(!strcmp(item.value, "ptrace: No such process."))
{
- state = loaded;
+ ChangeState(loaded);
targetProcessId = 0;
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
}
else if(!strcmp(item.value, "Function \\\"WinMain\\\" not defined."))
{
}
else if(!strcmp(item.value, "You can't do that without a process to debug."))
{
- state = loaded;
+ ChangeState(loaded);
targetProcessId = 0;
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
}
else if(strstr(item.value, "No such file or directory."))
{
- state = loaded;
+ ChangeState(loaded);
targetProcessId = 0;
- ide.DebugUpdateMenus(loaded, false);
+ //ide.AdjustDebugMenus();
}
else
{
}
else if(!strcmp(outTokens[0], "*stopped"))
{
- state = stopped;
+ ChangeState(stopped);
if(outTokens.count > 1 && TokenizeListItem(outTokens[1], item))
{
}
event = stepEnd;
- ide.DebugUpdateMenus(stopped, false);
+ //ide.AdjustDebugMenus();
ide.Update(null);
}
else if(!strcmp(reason, "function-finished"))
}
event = functionEnd;
- ide.DebugUpdateMenus(stopped, false);
+ //ide.AdjustDebugMenus();
ide.Update(null);
}
else if(!strcmp(reason, "signal-received"))
case stop:
break;
default:
- ide.DebugUpdateMenus(stopped, false);
event = breakEvent;
- ide.Update(null);
+ //ide.AdjustDebugMenus(); ide.Update(null);
}
}
else
{
event = signal;
- ide.DebugUpdateMenus(stopped, false);
- ide.Update(null);
+ //ide.AdjustDebugMenus(); ide.Update(null);
}
}
else if(!strcmp(reason, "watchpoint-trigger"))
if(targetProcessId)
{
- state = running;
- ide.DebugUpdateMenus(running, false);
- ide.Update(null);
+ ChangeState(running);
+ //ide.AdjustDebugMenus(); ide.Update(null);
}
else if(!oldProcessID)
{
// TO VERIFY: The rest of this block has not been thoroughly tested in this particular location
gdbHandle.Printf("-gdb-exit\n");
gdbTimer.Stop();
- state = terminated; //loaded;
+ ChangeState(terminated); //loaded;
prjConfig = null;
if(ide.workspace)
ide.outputView.debugBox.Logf("Debugging stopped\n");
ClearBreakDisplay();
- ide.DebugUpdateMenus(loaded, false);
- ide.Update(null);
+ //ide.AdjustDebugMenus(); ide.Update(null);
#if defined(__unix__)
if(FileExists(progFifoPath)) //fileCreated)
hasHorzScroll = true;
hasMenuBar = true;
hasStatusBar = true;
- state = maximized;
#ifdef _DEBUG
//stayOnTop = true;
+ size = { 800, 600 };
+ anchor = { top = 0, right = 0, bottom = 0 };
+#else
+ state = maximized;
+ anchor = { left = 0, top = 0, right = 0, bottom = 0 };
#endif
- anchor = Anchor { left = 0, top = 0, right = 0, bottom = 0 };
menu = Menu { };
MenuItem * driverItems, * skinItems;
if(!ide.findInFilesDialog || !ide.findInFilesDialog.SearchAbort())
ide.ShowCodeEditor();
break;
- case ctrlC:
- ide.StopBuild(true);
+ case ctrlS:
+ ide.projectView.stopBuild = true;
break;
default:
{
ToolBox toolBox { parent = this };
Sheet sheet { parent = this };
- bool buildInProgress;
- bool stopBuild;
-
char * tmpPrjDir;
property char * tmpPrjDir { set { delete tmpPrjDir; if(value) tmpPrjDir = CopyString(value); } get { return tmpPrjDir; } };
{
if(projectView)
{
- if(findInFilesDialog)
- findInFilesDialog.SearchStop();
- projectView.visible = false;
- if(projectView.Destroy(0))
- MenuWindowCloseAll(null, 0);
+ if(!ide.DontTerminateDebugSession("Project Close"))
{
- char workingDir[MAX_LOCATION];
- GetWorkingDir(workingDir, MAX_LOCATION);
- findInFilesDialog.currentDirectory = workingDir;
+ if(findInFilesDialog)
+ findInFilesDialog.SearchStop();
+ projectView.visible = false;
+ if(projectView.Destroy(0))
+ MenuWindowCloseAll(null, 0);
+ {
+ char workingDir[MAX_LOCATION];
+ GetWorkingDir(workingDir, MAX_LOCATION);
+ findInFilesDialog.currentDirectory = workingDir;
+ }
}
}
return true;
{
if(projectView)
{
- debugStartResumeItem.disabled = true;
+ debugStartResumeItem.disabled = true; // a very rare exception to calling AdjustDebugMenus
if(!projectView.DebugStart())
- debugStartResumeItem.disabled = false;
+ debugStartResumeItem.disabled = false; // same exception
}
return true;
}
bool MenuDebugResume(MenuItem selection, Modifiers mods)
{
if(projectView)
- {
- /*if(projectView.IsProjectModified())
- {
- debugStartResumeItem.disabled = true;
- if(!projectView.DebugStart(null, null))
- debugStartResumeItem.disabled = false;
- }
- else*/
- projectView.DebugResume();
- }
+ projectView.DebugResume();
return true;
}
MenuItem debugRestartItem
projectView = null;
text = titleECEREIDE;
- UpdateDisabledMenus();
+ AdjustMenus();
viewProjectItem.disabled = true;
}
projectView.project = project;
SetText("%s - %s", project.topNode.name, titleECEREIDE);
- UpdateDisabledMenus();
- if(project.targetType == executable)
- DebugUpdateMenus(loaded, false);
- /*
- projectCloseItem.disabled = false;
- projectBuildItem.disabled = false;
- projectRebuildItem.disabled = false;
- projectRegenerateItem.disabled = false;
- projectCompileItem.disabled = false;
- projectLinkItem.disabled = false;
- projectCleanItem.disabled = false;
- viewProjectItem.disabled = false;
-
- if(project.config.targetType == executable)
- {
- projectRunItem.disabled = false;
- debugStartResumeItem.disabled = false;
- DebugUpdateMenus(loaded, false);
- }
- projectActiveConfigItem.disabled = false;
- projectSettingsItem.disabled = false;
- */
+ AdjustMenus();
ide.breakpointsView.LoadFromWorkspace();
ide.watchesView.LoadFromWorkspace();
if(this)
{
Window child;
- bool inDebugMode = debugger.isInDebugMode;
+ bool inDebugMode = debugger.isActive;
bool callStackVisible = expand ? false : callStackView.visible;
bool threadsVisible = expand ? false : threadsView.visible;
bool watchesVisible = expand ? false : watchesView.visible;
return false;
}
- void DisableBuildItems(bool disabled, bool debugStart)
- {
- if(projectView)
- {
- projectNewItem.disabled = disabled;
- projectOpenItem.disabled = disabled;
- projectCompileItem.disabled = disabled;
- projectRebuildItem.disabled = disabled;
- projectRegenerateItem.disabled = disabled;
- projectLinkItem.disabled = disabled;
- projectBuildItem.disabled = disabled;
- projectCleanItem.disabled = disabled;
- projectCloseItem.disabled = disabled;
- projectRunItem.disabled = disabled;
-
- debugStartResumeItem.disabled = debugStart;
- if(disabled)
- {
- debugRestartItem.disabled = true;
- debugBreakItem.disabled = true;
- debugStopItem.disabled = true;
- }
- /*else if(!debugStart)
- {
- debugRestartItem.disabled = false;
- debugBreakItem.disabled = false;
- debugStopItem.disabled = false;
- }*/
-
- buildInProgress = disabled;
- if(!disabled) stopBuild = false;
- }
- }
-
- void StopBuild(bool state)
- {
- stopBuild = state;
- }
-
bool ShouldStopBuild()
{
- return stopBuild;
+ return projectView.stopBuild;
}
void DocumentSaved(Window document, char * fileName)
}
}
- void UpdateDisabledMenus()
+ void AdjustMenus()
{
- projectQuickItem.disabled = (bool)projectView;
- projectAddItem.disabled = !projectView;
- projectCloseItem.disabled = !projectView;
-
- activeCompilerItem.disabled = !projectView;
- projectActiveConfigItem.disabled = !projectView;
- projectSettingsItem.disabled = !projectView;
-
- projectBrowseFolderItem.disabled = !projectView;
- projectRunItem.disabled = projectView && project.targetType != executable;
- projectBuildItem.disabled = !projectView;
- projectLinkItem.disabled = !projectView;
- projectRebuildItem.disabled = !projectView;
- projectCleanItem.disabled = !projectView;
- projectRegenerateItem.disabled = !projectView;
- projectCompileItem.disabled = !projectView;
-
- /* What is this? This completely ignore the debugger's state!
- debugStartResumeItem.disabled = !projectView; // && project.targetType == executable);
- debugRestartItem.disabled = true;
- debugBreakItem.disabled = true;
- debugStopItem.disabled = true;
-
- debugStepIntoItem.disabled = true;
- debugStepOverItem.disabled = true;
- debugStepOutItem.disabled = true;
- debugRunToCursorItem.disabled = true;
- debugSkipStepOverItem.disabled = true;
- debugSkipStepOutItem.disabled = true;
- debugSkipRunToCursorItem.disabled = true;
- */
- DebugUpdateMenus(ide.debugger.state, false);
+ // TODO: still a bit more clearing thing up, having things where they belong etc...
+ // remove duplication or superfluous action as much as possible...
+ // here and in AdjustBuildMenus
+
+ bool unavailable = !projectView;
+
+ projectQuickItem.disabled = !unavailable;
+
+ projectAddItem.disabled = unavailable;
+ projectCloseItem.disabled = unavailable;
+
+ activeCompilerItem.disabled = unavailable;
+ projectActiveConfigItem.disabled = unavailable;
+ projectSettingsItem.disabled = unavailable;
+
+ projectBrowseFolderItem.disabled = unavailable;
- viewProjectItem.disabled = !projectView;
+ projectRunItem.disabled = unavailable || !project || project.targetType != executable;
+ projectBuildItem.disabled = unavailable;
+ projectLinkItem.disabled = unavailable;
+ projectRebuildItem.disabled = unavailable;
+ projectCleanItem.disabled = unavailable;
+ projectRegenerateItem.disabled = unavailable;
+ projectCompileItem.disabled = unavailable;
+
+ AdjustDebugMenus();
+
+ viewProjectItem.disabled = unavailable;
}
-
- void DebugUpdateMenus(DebuggerState state, bool breaking)
+
+ void AdjustBuildMenus()
{
- debugStartResumeItem.text = (state == loaded) ? "Start" : "Resume";
- debugStartResumeItem.NotifySelect = (state == loaded) ? MenuDebugStart : MenuDebugResume;
- debugStartResumeItem.disabled = (state == running);
- debugBreakItem.disabled = (state != running || breaking);
- debugStopItem.disabled = (state == loaded);
- debugRestartItem.disabled = (state == loaded);
-
- debugStepIntoItem.disabled = (state == running);
- debugStepOverItem.disabled = (state == running);
- debugStepOutItem.disabled = (state == running) || (state == loaded);
- debugSkipStepOverItem.disabled = (state == running);
- debugSkipStepOutItem.disabled = (state == running) || (state == loaded);
+ bool unavailable = !projectView || !projectView.project || projectView.buildInProgress;
+
+ projectNewItem.disabled = unavailable;
+ projectOpenItem.disabled = unavailable;
+ projectCloseItem.disabled = unavailable;
+
+ projectRunItem.disabled = unavailable;
+ projectBuildItem.disabled = unavailable;
+ projectLinkItem.disabled = unavailable;
+ projectRebuildItem.disabled = unavailable;
+ projectCleanItem.disabled = unavailable;
+ projectRegenerateItem.disabled = unavailable;
+ projectCompileItem.disabled = unavailable;
+ }
+
+ void AdjustDebugMenus()
+ {
+ bool unavailable = !projectView || !projectView.project ||
+ projectView.project.targetType != executable ||
+ projectView.buildInProgress.actualBuild;
+ bool active = ide.debugger.isActive;
+ bool executing = ide.debugger.state == running;
+ //bool holding = ide.debugger.state == stopped;
+
+ debugStartResumeItem.disabled = unavailable || executing;
+
+ debugStartResumeItem.text = active ? "Resume" : "Start";
+ debugStartResumeItem.NotifySelect = active ? MenuDebugResume : MenuDebugStart;
+
+ debugBreakItem.disabled = unavailable || !executing;
+ debugStopItem.disabled = unavailable || !active;
+ debugRestartItem.disabled = unavailable || !active;
+
+ debugStepIntoItem.disabled = unavailable || executing;
+ debugStepOverItem.disabled = unavailable || executing;
+ debugStepOutItem.disabled = unavailable || executing || !active;
+ debugSkipStepOverItem.disabled = unavailable || executing;
+ debugSkipStepOutItem.disabled = unavailable || executing || !active;
if((Designer)GetActiveDesigner())
{
CodeEditor codeEditor = ((Designer)GetActiveDesigner()).codeEditor;
if(codeEditor)
{
- codeEditor.debugRunToCursor.disabled = (state == running);
- codeEditor.debugSkipRunToCursor.disabled = (state == running);
+ codeEditor.debugRunToCursor.disabled = unavailable || executing;
+ codeEditor.debugSkipRunToCursor.disabled = unavailable || executing;
}
}
}
sprintf(name, "Compile %s", node.name);
projectCompileItem =
{
- copyText = true, text = name, c, ctrlF7, disabled = buildInProgress;
+ copyText = true, text = name, c, ctrlF7, disabled = projectView.buildInProgress;
bool NotifySelect(MenuItem selection, Modifiers mods)
{
bool OnClose(bool parentClosing)
{
- //return !buildInProgress;
- if(buildInProgress)
+ //return !projectView.buildInProgress;
+ if(projectView && projectView.buildInProgress)
return false;
if(DontTerminateDebugSession("Close IDE"))
return false;
enum PrepareMakefileMethod { normal, force, forceExists };
-enum BuildType { build, rebuild, relink, run, debug };
+enum BuildType { build, rebuild, relink, run, start, restart };
+enum BuildState
+{
+ none, buildingMainProject, buildingSecondaryProject, compilingFile;
+
+ property bool { get { return this != none; } }
+ property bool actualBuild { get { return this == buildingMainProject || this == buildingSecondaryProject; } }
+};
class ProjectView : Window
{
saveDialog = projectFileDialog;
DataRow resourceRow;
- bool buildInProgress;
+ BuildState buildInProgress;
BitmapResource icons[NodeIcons];
Project project;
Workspace workspace;
bool drawingInProjectSettingsDialogHeader;
ProjectSettings projectSettingsDialog;
+ bool stopBuild;
+
ListBox fileList
{
multiSelect = true, fullRowSelect = false, hasVertScroll = true, hasHorzScroll = true;
ProjectNode node = (ProjectNode)row.tag;
if(node.type == NodeTypes::project || node.type == resources || node.type == file || node.type == folder)
{
+ bool buildMenuUnavailable = buildInProgress;
PopupMenu popupMenu;
Menu popupContent { };
{
//if(node == ((Project)workspace.projects.first).topNode)
{
- MenuItem { popupContent, "Build", b, NotifySelect = ProjectBuild }.disabled = buildInProgress;
- MenuItem { popupContent, "Relink", l, NotifySelect = ProjectLink }.disabled = buildInProgress;
- MenuItem { popupContent, "Rebuild", r, NotifySelect = ProjectRebuild }.disabled = buildInProgress;
- MenuItem { popupContent, "Clean", c, NotifySelect = ProjectClean }.disabled = buildInProgress;
- MenuItem { popupContent, "Regenerate Makefile", m, NotifySelect = ProjectRegenerate }.disabled = buildInProgress;
+ MenuItem { popupContent, "Build", b, NotifySelect = ProjectBuild }.disabled = buildMenuUnavailable;
+ MenuItem { popupContent, "Relink", l, NotifySelect = ProjectLink }.disabled = buildMenuUnavailable;
+ MenuItem { popupContent, "Rebuild", r, NotifySelect = ProjectRebuild }.disabled = buildMenuUnavailable;
+ MenuItem { popupContent, "Clean", c, NotifySelect = ProjectClean }.disabled = buildMenuUnavailable;
+ MenuItem { popupContent, "Regenerate Makefile", m, NotifySelect = ProjectRegenerate }.disabled = buildMenuUnavailable;
MenuDivider { popupContent };
}
MenuItem { popupContent, "New File...", l, Key { l, ctrl = true }, NotifySelect = ProjectNewFile };
MenuDivider { popupContent };
if(node != ((Project)workspace.projects.first).topNode)
{
- MenuItem { popupContent, "Remove project from workspace", r, NotifySelect = ProjectRemove }.disabled = buildInProgress;
+ MenuItem { popupContent, "Remove project from workspace", r, NotifySelect = ProjectRemove }.disabled = buildMenuUnavailable;
MenuDivider { popupContent };
}
MenuItem { popupContent, "Active Configuration...", s, Key { f5, alt = true } , NotifySelect = MenuConfig };
else if(node.type == file)
{
MenuItem { popupContent, "Open", o, NotifySelect = FileOpenFile };
- MenuItem { popupContent, "Compile", c, Key { f7, ctrl = true}, NotifySelect = FileCompile }.disabled = buildInProgress;
+ MenuItem { popupContent, "Compile", c, Key { f7, ctrl = true}, NotifySelect = FileCompile }.disabled = buildMenuUnavailable;
MenuDivider { popupContent };
MenuItem { popupContent, "Remove", r, NotifySelect = FileRemoveFile };
MenuDivider { popupContent };
}
prj.RotateActiveConfig(!key.shift);
if(prj == project)
- ide.UpdateDisabledMenus();
+ ide.AdjustMenus();
return false;
}
break;
DeleteFile(fileName);
}
- ide.StopBuild(false);
+ stopBuild = false;
// Check if we have to save
strcpy(fileName, prj.topNode.path);
{
if(!node.isExcluded)
{
- buildInProgress = true;
+ buildInProgress = compilingFile;
+ ide.AdjustBuildMenus();
//ide.outputView.ShowClearSelectTab(build);
// this stuff doesn't even appear
else
ide.outputView.buildBox.Logf("Compiling single file %s in project %s...\n", node.name, prj.name);
- ide.DisableBuildItems(true, false);
prj.Compile(node);
- ide.DisableBuildItems(false, false);
- buildInProgress = false;
+ buildInProgress = none;
+ ide.AdjustBuildMenus();
}
else
ide.outputView.buildBox.Logf("File %s is excluded from current build configuration.\n", node.name);
prj = node.project;
}
if(/*prj != project || */!prj.configIsInDebugSession || !ide.DontTerminateDebugSession("Project Build"))
- BuildInterrim(prj, build, false);
+ BuildInterrim(prj, build);
return true;
}
- bool BuildInterrim(Project prj, BuildType buildType, bool disableDebugStart)
+ bool BuildInterrim(Project prj, BuildType buildType)
{
if(ProjectPrepareForToolchain(prj, normal, true, true))
{
ide.outputView.buildBox.Logf("Building project %s using the %s configuration...\n", prj.name, prj.configName);
- return Build(prj, buildType, disableDebugStart);
+ return Build(prj, buildType);
}
return false;
}
ide.outputView.buildBox.Logf("Relinking project %s using the %s configuration...\n", prj.name, prj.configName);
if(prj.config)
prj.config.linkingModified = true;
- Build(prj, relink, false);
+ Build(prj, relink);
}
return true;
}
prj.config.compilingModified = true;
prj.config.makingModified = true;
}*/ // -- should this still be used depite the new solution of BuildType?
- Build(prj, rebuild, false);
+ Build(prj, rebuild);
}
return true;
}
{
ide.outputView.buildBox.Logf("Cleaning project %s using the %s configuration...\n", prj.name, prj.configName);
- buildInProgress = true;
- ide.DisableBuildItems(true, false);
+ buildInProgress = prj == project ? buildingMainProject : buildingSecondaryProject;
+ ide.AdjustBuildMenus();
prj.Clean();
- ide.DisableBuildItems(false, false);
- buildInProgress = false;
+ buildInProgress = none;
+ ide.AdjustBuildMenus();
}
return true;
}
bool MenuConfig(MenuItem selection, Modifiers mods)
{
if(ProjectActiveConfig { parent = parent.parent, master = parent, project = project }.Modal() == ok)
- ide.UpdateDisabledMenus();
+ ide.AdjustMenus();
return true;
}
projectSettingsDialog.Modal();
Update(null);
- ide.UpdateDisabledMenus();
+ ide.AdjustMenus();
return true;
}
}
*/
- bool Build(Project prj, BuildType buildType, bool disableDebugStart)
+ bool Build(Project prj, BuildType buildType)
{
bool result = true;
Window document;
- ide.StopBuild(false);
+ stopBuild = false;
for(document = master.firstChild; document; document = document.next)
{
if(document.modifiedDocument)
// In building, we want to stop if we're debugging the 'same' executable
if(buildType != run) ///* && prj == project*/ && prj.configIsInDebugSession)
{
- if(buildType == debug)
+ if(buildType == start || buildType == restart)
{
if(ide.debugger && ide.debugger.isPrepared)
{
delete objDir;
}
}
- buildInProgress = true;
- //if(prj == project) // Why did we put these here? There was nothing to prevent building an added project multiple times at once
- ide.DisableBuildItems(true, true);
+ buildInProgress = prj == project ? buildingMainProject : buildingSecondaryProject;
+ ide.AdjustBuildMenus();
+ if(buildType == start || buildType == restart) ide.AdjustDebugMenus();
result = prj.Build(buildType == run, null);
prj.config.symbolGenModified = false;
}
- //if(prj == project)
- ide.DisableBuildItems(false, disableDebugStart);
- buildInProgress = false;
+ buildInProgress = none;
+ ide.AdjustBuildMenus();
+ if(buildType == start || buildType == restart) ide.AdjustDebugMenus();
ide.workspace.modified = true;
if(ide.workspace.commandLineArgs)
//ide.debugger.GetCommandLineArgs(args);
strcpy(args, ide.workspace.commandLineArgs);
- if(ide.debugger.isInDebugMode)
+ if(ide.debugger.isActive)
project.Run(args);
/*else if(project.config.targetType == sharedLibrary || project.config.targetType == staticLibrary)
MessageBox { type = ok, text = "Run", contents = "Shared and static libraries cannot be run like executables." }.Modal();*/
- else if(BuildInterrim(project, run, false))
+ else if(BuildInterrim(project, run))
project.Run(args);
return true;
}
else if(project.debug ||
MessageBox { type = okCancel, text = "Starting Debug", contents = "Attempting to debug non-debug configuration\nProceed anyways?" }.Modal() == ok)
{
- if(/*!IsProjectModified() ||*/ BuildInterrim(project, debug, true))
+ if(/*!IsProjectModified() ||*/ BuildInterrim(project, start))
{
CompilerConfig compiler = ideSettings.GetCompilerConfig(ide.workspace.compiler);
if(compiler.type.isVC)
bool DebugRestart()
{
- if(/*!IsProjectModified() ||*/ BuildInterrim(project, debug, true))
+ if(/*!IsProjectModified() ||*/ BuildInterrim(project, restart))
{
ide.debugger.Restart();
return true;
bool DebugStepInto()
{
- if((ide.debugger.isInDebugMode) || (!buildInProgress && BuildInterrim(project, debug, true)))
+ if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start)))
ide.debugger.StepInto();
return true;
}
bool DebugStepOver(bool skip)
{
- if((ide.debugger.isInDebugMode) || (!buildInProgress && BuildInterrim(project, debug, true)))
+ if((ide.debugger.isActive) || (!buildInProgress && BuildInterrim(project, start)))
ide.debugger.StepOver(skip);
return true;
}