diff --git a/RedPandaIDE/project.cpp b/RedPandaIDE/project.cpp index 0dbb036a..3e5665f8 100644 --- a/RedPandaIDE/project.cpp +++ b/RedPandaIDE/project.cpp @@ -715,6 +715,102 @@ void Project::loadLayout() } +void Project::loadOptions() +{ + mIniFile->beginGroup("Project"); + mName = mIniFile->value("name", "").toString(); + mOptions.icon = mIniFile->value("icon", "").toString(); + mOptions.version = mIniFile->value("Ver", 0).toInt(); + if (mOptions.version > 0) { // ver > 0 is at least a v5 project + if (mOptions.version < 2) { + mOptions.version = 2; + QMessageBox::information(pMainWindow, + tr("Settings need update"), + tr("The compiler settings format of Dev-C++ has changed.") + +"

" + +tr("Please update your settings at Project >> Project Options >> Compiler and save your project."), + QMessageBox::Ok); + } + + mOptions.type = static_cast(mIniFile->value("type", 0).toInt()); + mOptions.compilerCmd = mIniFile->value("Compiler", "").toString(); + mOptions.cppCompilerCmd = mIniFile->value("CppCompiler", "").toString(); + fOptions.LinkerCmd := ReadString('Project', 'Linker', ''); + fOptions.ObjFiles.DelimitedText := ReadString('Project', 'ObjFiles', ''); + fOptions.Libs.DelimitedText := ReadString('Project', 'Libs', ''); + fOptions.Includes.DelimitedText := ReadString('Project', 'Includes', ''); + fOptions.PrivateResource := ReadString('Project', 'PrivateResource', ''); + fOptions.ResourceIncludes.DelimitedText := ReadString('Project', 'ResourceIncludes', ''); + fOptions.MakeIncludes.DelimitedText := ReadString('Project', 'MakeIncludes', ''); + fOptions.UseGpp := ReadBool('Project', 'IsCpp', FALSE); + fOptions.ExeOutput := ReadString('Project', 'ExeOutput', ''); + fOptions.ObjectOutput := ReadString('Project', 'ObjectOutput', ''); + fOptions.LogOutput := ReadString('Project', 'LogOutput', ''); + fOptions.LogOutputEnabled := ReadBool('Project', 'LogOutputEnabled', FALSE); + fOptions.OverrideOutput := ReadBool('Project', 'OverrideOutput', FALSE); + fOptions.OverridenOutput := ReadString('Project', 'OverrideOutputName', ''); + fOptions.HostApplication := ReadString('Project', 'HostApplication', ''); + fOptions.UseCustomMakefile := ReadBool('Project', 'UseCustomMakefile', FALSE); + fOptions.CustomMakefile := ReadString('Project', 'CustomMakefile', ''); + fOptions.UsePrecompiledHeader := ReadBool('Project', 'UsePrecompiledHeader', FALSE); + fOptions.PrecompiledHeader := ReadString('Project', 'PrecompiledHeader', ''); + fOptions.CmdLineArgs := ReadString('Project', 'CommandLine', ''); + fFolders.CommaText := ReadString('Project', 'Folders', ''); + fOptions.IncludeVersionInfo := ReadBool('Project', 'IncludeVersionInfo', False); + fOptions.SupportXPThemes := ReadBool('Project', 'SupportXPThemes', False); + fOptions.CompilerSet := ReadInteger('Project', 'CompilerSet', devCompilerSets.DefaultSetIndex); + if (fOptions.CompilerSet >= devCompilerSets.Count) or (fOptions.CompilerSet < 0) then begin // TODO: change from indices to names + MessageDlg(Lang[ID_MSG_COMPILERNOTFOUND], mtError, [mbOk], 0); + fOptions.CompilerSet := devCompilerSets.DefaultSetIndex; + Modified := True; + end; + fOptions.CompilerOptions := ReadString('Project', 'CompilerSettings', ''); + fOptions.StaticLink := ReadBool('Project','StaticLink',True); + fOptions.AddCharset := ReadBool('Project','AddCharset',True); + fOptions.UseUTF8 := ReadBool('Project','UseUTF8',False); + fOptions.VersionInfo.Major := ReadInteger('VersionInfo', 'Major', 0); + fOptions.VersionInfo.Minor := ReadInteger('VersionInfo', 'Minor', 1); + fOptions.VersionInfo.Release := ReadInteger('VersionInfo', 'Release', 1); + fOptions.VersionInfo.Build := ReadInteger('VersionInfo', 'Build', 1); + fOptions.VersionInfo.LanguageID := ReadInteger('VersionInfo', 'LanguageID', $0409); + fOptions.VersionInfo.CharsetID := ReadInteger('VersionInfo', 'CharsetID', $04E4); + fOptions.VersionInfo.CompanyName := ReadString('VersionInfo', 'CompanyName', ''); + fOptions.VersionInfo.FileVersion := ReadString('VersionInfo', 'FileVersion', '0.1'); + fOptions.VersionInfo.FileDescription := ReadString('VersionInfo', 'FileDescription', + 'Developed using the Dev-C++ IDE'); + fOptions.VersionInfo.InternalName := ReadString('VersionInfo', 'InternalName', ''); + fOptions.VersionInfo.LegalCopyright := ReadString('VersionInfo', 'LegalCopyright', ''); + fOptions.VersionInfo.LegalTrademarks := ReadString('VersionInfo', 'LegalTrademarks', ''); + fOptions.VersionInfo.OriginalFilename := ReadString('VersionInfo', 'OriginalFilename', + ExtractFilename(Executable)); + fOptions.VersionInfo.ProductName := ReadString('VersionInfo', 'ProductName', Name); + fOptions.VersionInfo.ProductVersion := ReadString('VersionInfo', 'ProductVersion', '0.1.1.1'); + fOptions.VersionInfo.AutoIncBuildNr := ReadBool('VersionInfo', 'AutoIncBuildNr', False); + fOptions.VersionInfo.SyncProduct := ReadBool('VersionInfo', 'SyncProduct', False); + end else begin // dev-c < 4 + fOptions.Ver := -1; + if not ReadBool('Project', 'NoConsole', TRUE) then + fOptions.typ := dptCon + else if ReadBool('Project', 'IsDLL', FALSE) then + fOptions.Typ := dptDyn + else + fOptions.typ := dptGUI; + + fOptions.PrivateResource := ReadString('Project', 'PrivateResource', ''); + fOptions.ResourceIncludes.DelimitedText := ReadString('Project', 'ResourceIncludes', ''); + fOptions.ObjFiles.Add(ReadString('Project', 'ObjFiles', '')); + fOptions.Includes.Add(ReadString('Project', 'IncludeDirs', '')); + fOptions.CompilerCmd := ReadString('Project', 'CompilerOptions', ''); + fOptions.usegpp := ReadBool('Project', 'Use_GPP', FALSE); + fOptions.ExeOutput := ReadString('Project', 'ExeOutput', ''); + fOptions.ObjectOutput := ReadString('Project', 'ObjectOutput', ''); + fOptions.OverrideOutput := ReadBool('Project', 'OverrideOutput', FALSE); + fOptions.OverridenOutput := ReadString('Project', 'OverrideOutputName', ''); + fOptions.HostApplication := ReadString('Project', 'HostApplication', ''); + end; + end; +} + PCppParser Project::cppParser() { return mParser; diff --git a/RedPandaIDE/project.h b/RedPandaIDE/project.h index 87048e78..a3eb8dba 100644 --- a/RedPandaIDE/project.h +++ b/RedPandaIDE/project.h @@ -6,10 +6,10 @@ #include enum class ProjectType { - GUI, - Console, - StaticLib, - DynamicLib + GUI=0, + Console=1, + StaticLib=2, + DynamicLib=3 }; class Project; @@ -166,6 +166,7 @@ public: void incrementBuildNumber(); QString listUnitStr(const QChar& separator); void loadLayout(); // load all [UnitX] + void loadOptions(); int newUnit(bool newProject, PFolderNode parentNode, @@ -179,7 +180,6 @@ public: void saveUnitLayout(Editor* e, int index); // save single [UnitX] cursor positions PFolderNode makeProjectNode(); PFolderNode makeNewFileNode(const QString& s, bool isFolder, PFolderNode newParent); - void loadOptions(); void saveOptions(); bool saveUnits(); // procedure Open;