import "ide"
-// *** Color Schemes ***
-
-// *** The Old Color Scheme that was causing me auras and ophtalmic migraines -- Uncomment at your own risk! ***
-/*
-FontResource panelFont { $"Courier New", 10 };
-FontResource codeFont { $"Courier New", 10 };
-Color selectionColor = Color { 10, 36, 106 };
-Color selectionText = white;
-Color viewsBackground = white;
-Color viewsText = black;
-Color outputBackground = white;
-Color outputText = black;
-Color projectViewBackground = white;
-Color projectViewText = black;
-Color codeEditorBG = white;
-Color codeEditorFG = black;
-Color marginColor = Color {230, 230, 230};
-Color selectedMarginColor = Color {200, 200, 200};
-Color lineNumbersColor = Color {60, 60, 60};
-SyntaxColorScheme colorScheme
-{
- keywordColors = [ blue, blue ];
- commentColor = dimGray;
- charLiteralColor = crimson;
- stringLiteralColor = crimson;
- preprocessorColor = green;
- numberColor = teal;
-};
-*/
-
-// The new nice dark scheme -- so peaceful on my brain
-
-FontResource panelFont { $"Courier New", 10 };
-FontResource codeFont { $"Courier New", 10 };
-/*
-FontResource panelFont { $"Consolas", 12 };
-FontResource codeFont { $"Consolas", 12 };
-*/
-Color selectionColor = lightYellow;
-Color selectionText = Color { 30, 40, 50 };
-Color viewsBackground = Color { 30, 40, 50 };
-Color viewsText = lightGray;
-Color outputBackground = black;
-Color outputText = lime;
-Color projectViewBackground = Color { 30, 40, 50 };
-Color projectViewText = lightGray;
-Color codeEditorBG = black;
-Color codeEditorFG = ivory;
-Color marginColor = Color {24, 24, 24};
-Color selectedMarginColor = Color {64, 64, 64};
-Color lineNumbersColor = Color {160, 160, 160};
-SyntaxColorScheme colorScheme
-{
- keywordColors = [ skyBlue, skyBlue ];
- commentColor = Color { 125, 125, 125 };
- charLiteralColor = Color { 245, 50, 245 };
- stringLiteralColor = Color { 245, 50, 245 };
- preprocessorColor = { 120, 220, 140 };
- numberColor = Color { 0, 192, 192 };
-};
-
-// *********************
-
import "findCtx"
import "findExp"
import "findParams"
// Check if it contains any code
if((!body.compound.declarations || !body.compound.declarations->count) && (!body.compound.statements || body.compound.statements->count <= 1))
{
- Class moduleClass = eSystem_FindClass(object.instance._class.module, "Module");
+ // Class moduleClass = eSystem_FindClass(object.instance._class.module, "Module");
Statement stmt = body.compound.statements ? body.compound.statements->first : null;
Type dataType = method.dataType;
Type returnType = dataType.returnType;
confirmation = false;
// Check if default function should be calling base class:
- if(object.instance._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction
+ if(object.instance._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction
{
if(returnType.kind != voidType)
{
class CodeEditor : Window
{
- background = marginColor;
+ background = colorScheme.marginColor;
borderStyle = sizableDeep;
hasMaximize = true;
hasMinimize = true;
bool inUseDebug;
OpenedFileInfo openedFileInfo;
- FontResource font { codeFont.faceName, codeFont.size };
+ FontResource font { codeFont.faceName, codeFont.size, codeFont.bold, codeFont.italic };
saveDialog = codeEditorFileDialog;
Designer designer { codeEditor = this, visible = false, saveDialog = codeEditorFormFileDialog };
freeCaret = ideSettings.useFreeCaret, caretFollowsScrolling = ideSettings.caretFollowsScrolling,
tabKey = true, smartHome = true;
tabSelection = true, /*maxLineSize = 65536, */parent = this, hasHorzScroll = true, hasVertScroll = true;
- selectionColor = selectionColor, selectionText = selectionText,
- background = codeEditorBG, foreground = codeEditorFG, syntaxColorScheme = colorScheme,
+ selectionColor = colorScheme.selectionColor, selectionText = colorScheme.selectionText,
+ background = colorScheme.codeEditorBG, foreground = colorScheme.codeEditorFG, syntaxColorScheme = colorScheme.syntaxColors,
font = font, borderStyle = none;
anchor = Anchor { left = 0, right = 0, top = 0, bottom = 0 };
display.FontExtent(font, ")", 1, &parW, null);
string[0] = 0;
- if(editor.functionType)
+ if(editor.functionType && type.kind == functionType)
{
PrintType(type.returnType, string, true, true);
display.FontExtent(font, string, strlen(string), &functionW, null);
display.FontExtent(font, ")", 1, &parW, null);
string[0] = 0;
- if(editor.functionType && type)
+ if(editor.functionType && type && type.kind == functionType)
{
PrintType(type.returnType, string, true, true);
display.FontExtent(font, string, strlen(string), &functionW, null);
int line = editBox.lineNumber + 1;
if(projectView)
{
- CompilerConfig compiler = ideSettings.GetCompilerConfig(ide.workspace.compiler);
+ CompilerConfig compiler = ideConfig.compilers.GetCompilerConfig(ide.workspace.activeCompiler);
ProjectConfig config = projectView.project.config;
int bitDepth = ide.workspace.bitDepth;
bool useValgrind = ide.workspace.useValgrind;
if(!parentClosing)
{
if(ide.workspace && fileName)
- ide.workspace.UpdateOpenedFileInfo(fileName, closed);
+ ide.workspace.UpdateOpenedFileInfo(fileName, closed, false);
if(inUseDebug && !debugClosing)
{
debugClosing = true;
void OnDestroy(void)
{
ObjectInfo oClass, next;
- Class windowClass = eSystem_FindClass(this.privateModule, "ecere::gui::Window");
+ // Class windowClass = eSystem_FindClass(this.privateModule, "ecere::gui::Window");
FreeType(this.functionType);
FreeType(this.instanceType);
classes.Delete(oClass);
}
- if(windowClass && windowClass.data)
- UnapplySkin(windowClass);
-
FreeParser();
if(sheet.codeEditor == this)
sprintf(message, $"The document %s was modified by another application.\n"
"Would you like to reload it and lose your changes?", fileName);
- if(MessageBox { type = yesNo, master = /*parent = */parent, text = $"Document has been modified",
+ if(MessageBox { creationActivation = flash, type = yesNo, master = /*parent = */parent, text = $"Document has been modified",
contents = message }.Modal() == yes)
reload = true;
}
void OnRedraw(Surface surface)
{
// Line Numbers
- surface.SetBackground(marginColor);
+ surface.SetBackground(colorScheme.marginColor);
surface.Area(0, 0, editBox.anchor.left.distance, clientSize.h - 1);
if(ideSettings.showLineNumbers)
{
currentLineNumber = editBox.scroll.y / spaceH + 1;
sprintf(lineFormat, " %%%du", maxLineNumberLength);
- surface.SetForeground(lineNumbersColor);
+ surface.SetForeground(colorScheme.lineNumbersColor);
for(i = 0; i < editBox.clientSize.h - 4; i += spaceH)
{
// Highlight current line
if(editBox.lineNumber == currentLineNumber - 1)
{
- surface.SetBackground(selectedMarginColor);
+ surface.SetBackground(colorScheme.selectedMarginColor);
surface.Area(0, i, editBox.anchor.left.distance, i+spaceH-1);
- surface.SetBackground(marginColor);
+ surface.SetBackground(colorScheme.marginColor);
}
sprintf(lineText, lineFormat, currentLineNumber);
if(currentLineNumber <= editBox.numLines)
void ModifyCode()
{
+ fixCaret = true;
selected.modified = true;
selected.oClass.modified = true;
****************************************************************************/
void FreeParser()
{
+ {
+ Class windowClass = eSystem_FindClass(privateModule, "ecere::gui::Window");
+ if(windowClass && windowClass.data)
+ UnapplySkin(windowClass);
+ }
+
SetCurrentNameSpace(null);
- if(ast != null)
+ if(ast)
{
FreeASTTree(ast);
ast = null;
}
- this.defines.Free(FreeModuleDefine);
- this.imports.Free(FreeModuleImport); // Moved this after FreeAST because Debug printing causes ModuleImports to be created
+ defines.Free(FreeModuleDefine);
+ imports.Free(FreeModuleImport); // Moved this after FreeAST because Debug printing causes ModuleImports to be created
- FreeExcludedSymbols(this.excludedSymbols);
- FreeContext(this.globalContext);
+ FreeExcludedSymbols(excludedSymbols);
+ FreeContext(globalContext);
FreeIncludeFiles();
- FreeGlobalData(&this.globalData);
+ FreeGlobalData(&globalData);
FindCtx_Terminate();
FindParams_Terminate();
SetPrivateModule(null);
}
+ // Note: This code should probably be merged with FreeParser()
+ if(ast)
+ {
+ FreeASTTree(ast);
+ ast = null;
+ //SetAST(null);
+ }
+ defines.Free(FreeModuleDefine);
+ imports.Free(FreeModuleImport);
+
+ FreeContext(this.globalContext);
+ FreeExcludedSymbols(this.excludedSymbols);
+
+ FreeIncludeFiles();
+ FreeGlobalData(&this.globalData);
+
if(this.privateModule)
{
FreeTypeData(this.privateModule);
delete this.privateModule;
- this.privateModule = null;
}
}
#endif
Project project;
- // This temporarily fixes issue with 2 overrides in release mode with VC6 (only happens with both ecere.dll and ide.exe compiled in release mode)
+ // This temporarily fixes issue with 2 overrides in release mode with VC6 (only happens with both ecere.dll and ecere-ide.exe compiled in release mode)
if(reentrant) return;
reentrant = true;
editBox.GetSelPos(&l1, &y1, &x1, &l2, &y2, &x2, false);
- FindCtx_Terminate();
- FindParams_Terminate();
-
- SetGlobalData(&globalData);
- SetGlobalContext(globalContext);
- SetExcludedSymbols(&excludedSymbols);
- SetTopContext(globalContext);
- SetCurrentContext(globalContext);
- SetDefines(&defines);
- SetImports(&imports);
- SetCurrentNameSpace(null);
-
/*
sprintf(command, "C:\\Program Files\\Microsoft Visual Studio\\VC98\\Bin\\cl "
"/nologo /D \"MSC\" /D \"WIN32\" /D \"NDEBUG\" /D \"_WINDOWS\" /D \"_MBCS\" "
this.oClass = null;
}
- {
- Class windowClass = eSystem_FindClass(this.privateModule, "ecere::gui::Window");
- if(windowClass && windowClass.data)
- UnapplySkin(windowClass);
- }
-
designer = backDesigner;
SetEchoOn(true);
fileInput = editFile = EditBoxStream { editBox = editBox };
SetFileInput(fileInput);
- if(ast)
- {
- FreeASTTree(ast);
- ast = null;
- //SetAST(null);
- }
- defines.Free(FreeModuleDefine);
- imports.Free(FreeModuleImport);
-
- FreeContext(this.globalContext);
- FreeExcludedSymbols(this.excludedSymbols);
-
- FreeIncludeFiles();
- FreeGlobalData(&this.globalData);
+ FreeParser();
- if(this.privateModule)
- {
- FreeTypeData(this.privateModule);
- delete this.privateModule;
- }
+ SetGlobalData(&globalData);
+ SetGlobalContext(globalContext);
+ SetExcludedSymbols(&excludedSymbols);
+ SetTopContext(globalContext);
+ SetCurrentContext(globalContext);
+ SetDefines(&defines);
+ SetImports(&imports);
#ifdef _TIMINGS
startTime = GetTime();
if(ide.workspace)
{
- CompilerConfig compiler = ideSettings.GetCompilerConfig(ide.workspace.compiler);
+ CompilerConfig compiler = ideConfig.compilers.GetCompilerConfig(ide.workspace.activeCompiler);
SetTargetBits(ide.workspace.bitDepth ? ide.workspace.bitDepth : GetHostBits());
delete compiler;
}
// TODO: Get symbolsDir from project settings instead...
if(ide.projectView)
{
- CompilerConfig compiler = ideSettings.GetCompilerConfig(ide.workspace.compiler);
+ CompilerConfig compiler = ideConfig.compilers.GetCompilerConfig(ide.workspace.activeCompiler);
ProjectConfig config = project.config;
int bitDepth = ide.workspace.bitDepth;
DirExpression objDir = project.GetObjDir(compiler, config, bitDepth);
SetSymbolsDir(objDir.dir);
+ SetDefaultNameSpace(project.GetDefaultNameSpace(config));
ide.SetPath(true, compiler, config, bitDepth);
delete objDir;
}
SetIncludeDirs(null);
SetSysIncludeDirs(null);
+ SetDefaultNameSpace(null);
}
{
{
Property prop = (Property) curMember;
Class propertyClass = prop.dataTypeClass;
- bool variable = false;
+ bool variable = true;
if(!propertyClass)
propertyClass = prop.dataTypeClass = eSystem_FindClass(this.privateModule, prop.dataTypeString);
ObjectInfo check;
if(!strcmp(name, "this"))
{
- char * name = computed.member.member.string;
- ObjectInfo check;
- for(check = classObject.instances.first; check; check = check.next)
- if(check.name && !strcmp(name, check.name))
- {
- if(prop.Set)
- ((void (*)(void *, void *))(void *)prop.Set)(control, check.instance);
- variable = false;
- break;
- }
+ if(computed.member.member)
+ {
+ char * name = computed.member.member.string;
+ ObjectInfo check;
+ for(check = classObject.instances.first; check; check = check.next)
+ if(check.name && !strcmp(name, check.name))
+ {
+ if(prop.Set)
+ ((void (*)(void *, void *))(void *)prop.Set)(control, check.instance);
+ variable = false;
+ break;
+ }
+ }
}
else
{
{
Map<String, bool> i18nStrings = object.i18nStrings;
bool i18n = true;
- if(i18nStrings && i18nStrings.GetAtPosition(prop.name, false))
+ if(i18nStrings && i18nStrings.GetAtPosition(prop.name, false, null))
i18n = false;
f.Printf("%s\"", i18n ? "$" : "");
}
else
{
- Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
+ // Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
// ADDING METHOD HERE
f.Printf("\n ");
f.Printf(")\n");
f.Printf(" %c\n\n", OpenBracket);
- if(control._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction
+ if(control._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction
{
if(returnType.kind == classType && !strcmp(returnType._class.string, "bool"))
f.Printf(" return true;\n");
{
Map<String, bool> i18nStrings = classObject.i18nStrings;
bool i18n = true;
- if(i18nStrings && i18nStrings.GetAtPosition(prop.name, false))
+ if(i18nStrings && i18nStrings.GetAtPosition(prop.name, false, null))
i18n = false;
f.Printf("\n %s%s = %s\"", specify ? "property::" : "", prop.name, i18n ? "$" : "");
Type dataType = method.dataType;
Type returnType = dataType.returnType;
Type param;
- Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
+ // Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
f.Printf("\n\n");
f.Printf(" ");
f.Printf(")\n");
f.Printf(" %c\n\n", OpenBracket);
- if(test._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction
+ if(test._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction
{
if(returnType && returnType.kind == classType && !strcmp(returnType._class.string, "bool"))
f.Printf(" return true;\n");
Type dataType = method.dataType;
Type returnType = dataType.returnType;
Type param;
- Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
+ // Class moduleClass = eSystem_FindClass(this.privateModule, "Module");
if(insideDef.prev)
f.Printf("\n\n");
if(!_class ||
(
- (isInstance ? _class : _class.base)._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad] ||
+ (isInstance ? _class : _class.base)._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/ ||
(isInstance ? _class : _class.base)._vTbl[method.vid] == DummyMethod)) // Temp Check for DefaultFunction
{
if(returnType && returnType.kind == classType && !strcmp(returnType._class.string, "bool"))