From 31d368a4d8465d1d528f79f931c8a29e34895d81 Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 26 May 2005 15:54:02 +0000 Subject: [PATCH] changed OI SHow Hints option to resource string, added TProjectDescriptor.DoInitDescriptor git-svn-id: trunk@7203 - --- ide/environmentopts.pp | 5 ++-- ide/lazarusidestrconsts.pas | 1 + ide/main.pp | 36 ++++++++++++++++++----- ide/project.pp | 54 ++++++++++++++++++---------------- ideintf/projectintf.pas | 44 +++++++++++++++++++++++---- lcl/interfaces/gtk/gtkproc.inc | 5 +++- 6 files changed, 102 insertions(+), 43 deletions(-) diff --git a/ide/environmentopts.pp b/ide/environmentopts.pp index 939bab54f1..dceaaedded 100644 --- a/ide/environmentopts.pp +++ b/ide/environmentopts.pp @@ -3938,14 +3938,13 @@ begin MaxValue:=100; end; - OIShowHintCheckBox :=TCheckBox.Create(Self); + OIShowHintCheckBox:=TCheckBox.Create(Self); with OIShowHintCheckBox do begin Name := 'OIShowHintCheckBox'; Parent := OIMiscGroupBox; Left := 6; Top := 33; - Height := 25; - Caption := 'Show hints'; + Caption := lisShowHintsInObjectInspector; end; OIDefaultItemHeightLabel:=TLabel.Create(Self); diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 55b9bbae78..553e7e1168 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -728,6 +728,7 @@ resourcestring dlgOIMiscellaneous = 'Miscellaneous'; dlgOIItemHeight = 'Item height'; + lisShowHintsInObjectInspector = 'Show hints in Object Inspector'; dlgEnvColors = 'Colors'; dlgEnvBackupHelpNote = 'Notes: Project files are all files in the project directory'; diff --git a/ide/main.pp b/ide/main.pp index 9ce131bf2a..a2d4d8271d 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -523,7 +523,8 @@ type function CloseDesignerForm(AnUnitInfo: TUnitInfo): TModalResult; // methods for creating a project - function CreateProjectObject(ProjectDesc: TProjectDescriptor): TProject; + function CreateProjectObject(ProjectDesc, + FallbackProjectDesc: TProjectDescriptor): TProject; procedure OnLoadProjectInfoFromXMLConfig(TheProject: TProject; XMLConfig: TXMLConfig); procedure OnSaveProjectInfoToXMLConfig(TheProject: TProject; @@ -4289,9 +4290,19 @@ begin Result:=mrOk; end; -function TMainIDE.CreateProjectObject(ProjectDesc: TProjectDescriptor): TProject; +function TMainIDE.CreateProjectObject(ProjectDesc, + FallbackProjectDesc: TProjectDescriptor): TProject; begin Result:=TProject.Create(ProjectDesc); + // custom initialization + if ProjectDesc.InitProject(Result)<>mrOk then begin + Result.Free; + Result:=nil; + if FallbackProjectDesc=nil then exit; + Result:=TProject.Create(FallbackProjectDesc); + FallbackProjectDesc.InitProject(Result); + end; + Result.OnFileBackup:=@DoBackupFile; Result.OnLoadProjectInfo:=@OnLoadProjectInfoFromXMLConfig; Result.OnSaveProjectInfo:=@OnSaveProjectInfoToXMLConfig; @@ -5620,7 +5631,10 @@ function TMainIDE.DoNewProject(ProjectDesc: TProjectDescriptor):TModalResult; var i:integer; Begin DebugLn('TMainIDE.DoNewProject A'); - Result:=mrCancel; + + // init the descriptor (it can now ask the user for options) + Result:=ProjectDesc.InitDescriptor; + if Result<>mrOk then exit; // invalidate cached substituted macros IncreaseCompilerParseStamp; @@ -5649,7 +5663,7 @@ Begin // create new project (TProject will automatically create the mainunit) - Project1:=CreateProjectObject(ProjectDesc); + Project1:=CreateProjectObject(ProjectDesc,ProjectDescriptorProgram); Project1.BeginUpdate(true); try Project1.CompilerOptions.CompilerPath:='$(CompPath)'; @@ -5659,7 +5673,9 @@ Begin // add and load default required packages PkgBoss.AddDefaultDependencies(Project1); - ProjectDesc.CreateStartFiles(Project1); + if ProjectDesc.CreateStartFiles(Project1)<>mrOk then begin + debugln('TMainIDE.DoNewProject ProjectDesc.CreateStartFiles failed'); + end; // rebuild codetools defines RescanCompilerDefines(true); @@ -5896,7 +5912,8 @@ begin writeln('TMainIDE.DoOpenProjectFile B'); {$ENDIF} {$IFDEF IDE_MEM_CHECK}CheckHeapWrtMemCnt('TMainIDE.DoOpenProjectFile B');{$ENDIF} - Project1:=CreateProjectObject(ProjectDescriptorProgram); + Project1:=CreateProjectObject(ProjectDescriptorProgram, + ProjectDescriptorProgram); Project1.BeginUpdate(true); try if ProjInspector<>nil then ProjInspector.LazProject:=Project1; @@ -6106,7 +6123,7 @@ begin ExpandFilename(ExtractFilePath(ProgramBuf.Filename)); // create a new project - Project1:=CreateProjectObject(NewProjectDesc); + Project1:=CreateProjectObject(NewProjectDesc,ProjectDescriptorProgram); Project1.BeginUpdate(true); try if ProjInspector<>nil then ProjInspector.LazProject:=Project1; @@ -7287,7 +7304,7 @@ begin // create a new project debugln('TMainIDE.DoConvertDelphiProject creating new project ...'); NewProjectDesc:=TProjectEmptyProgramDescriptor.Create; - Project1:=CreateProjectObject(NewProjectDesc); + Project1:=CreateProjectObject(NewProjectDesc,ProjectDescriptorApplication); Project1.BeginUpdate(true); try if ProjInspector<>nil then ProjInspector.LazProject:=Project1; @@ -11542,6 +11559,9 @@ end. { ============================================================================= $Log$ + Revision 1.866 2005/05/26 15:54:02 mattias + changed OI SHow Hints option to resource string, added TProjectDescriptor.DoInitDescriptor + Revision 1.865 2005/05/21 15:38:07 mattias fixed some typos diff --git a/ide/project.pp b/ide/project.pp index 4147986af7..a982381efd 100644 --- a/ide/project.pp +++ b/ide/project.pp @@ -308,8 +308,8 @@ type constructor Create; override; function GetLocalizedName: string; override; function GetLocalizedDescription: string; override; - procedure InitProject(AProject: TLazProject); override; - procedure CreateStartFiles(AProject: TLazProject); override; + function InitProject(AProject: TLazProject): TModalResult; override; + function CreateStartFiles(AProject: TLazProject): TModalResult; override; end; { TProjectProgramDescriptor } @@ -319,8 +319,8 @@ type constructor Create; override; function GetLocalizedName: string; override; function GetLocalizedDescription: string; override; - procedure InitProject(AProject: TLazProject); override; - procedure CreateStartFiles(AProject: TLazProject); override; + function InitProject(AProject: TLazProject): TModalResult; override; + function CreateStartFiles(AProject: TLazProject): TModalResult; override; end; { TProjectManualProgramDescriptor } @@ -332,8 +332,8 @@ type constructor Create; override; function GetLocalizedName: string; override; function GetLocalizedDescription: string; override; - procedure InitProject(AProject: TLazProject); override; - procedure CreateStartFiles(AProject: TLazProject); override; + function InitProject(AProject: TLazProject): TModalResult; override; + function CreateStartFiles(AProject: TLazProject): TModalResult; override; property AddMainSource: boolean read FAddMainSource write FAddMainSource; end; @@ -1210,9 +1210,6 @@ begin fTargetFileExt := GetDefaultExecutableExt; Title := ''; fUnitList := TList.Create; // list of TUnitInfo - - // custom initialization - ProjectDescription.InitProject(Self); end; {------------------------------------------------------------------------------ @@ -3001,13 +2998,14 @@ begin Result:=Format(lisProgramAFreepascalProgramTheProgramFileIsAutomatic, [#13]); end; -procedure TProjectProgramDescriptor.InitProject(AProject: TLazProject); +function TProjectProgramDescriptor.InitProject(AProject: TLazProject + ): TModalResult; var le: String; NewSource: String; MainFile: TLazProjectFile; begin - inherited InitProject(AProject); + Result:=inherited InitProject(AProject); MainFile:=AProject.CreateProjectFile('project1.lpr'); MainFile.IsPartOfProject:=true; @@ -3030,10 +3028,11 @@ begin AProject.MainFile.SetSourceText(NewSource); end; -procedure TProjectProgramDescriptor.CreateStartFiles(AProject: TLazProject); +function TProjectProgramDescriptor.CreateStartFiles(AProject: TLazProject + ): TModalResult; begin - LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1, - [ofProjectLoading,ofRegularFile]); + Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1, + [ofProjectLoading,ofRegularFile]); end; { TProjectApplicationDescriptor } @@ -3054,13 +3053,14 @@ begin Result:=Format(lisApplicationAGraphicalLclFreepascalProgramTheProgra, [#13]); end; -procedure TProjectApplicationDescriptor.InitProject(AProject: TLazProject); +function TProjectApplicationDescriptor.InitProject( + AProject: TLazProject): TModalResult; var le: string; NewSource: String; MainFile: TLazProjectFile; begin - inherited InitProject(AProject); + Result:=inherited InitProject(AProject); MainFile:=AProject.CreateProjectFile('project1.lpr'); MainFile.IsPartOfProject:=true; @@ -3092,10 +3092,10 @@ begin AProject.LazCompilerOptions.Win32GraphicApp:=true; end; -procedure TProjectApplicationDescriptor.CreateStartFiles(AProject: TLazProject - ); +function TProjectApplicationDescriptor.CreateStartFiles(AProject: TLazProject + ): TModalResult; begin - LazarusIDE.DoNewEditorFile(FileDescriptorForm,'','', + Result:=LazarusIDE.DoNewEditorFile(FileDescriptorForm,'','', [nfIsPartOfProject,nfOpenInEditor,nfCreateDefaultSrc]); end; @@ -3121,13 +3121,14 @@ begin Result:=Format(lisCustomProgramAFreepascalProgram, [#13]) end; -procedure TProjectManualProgramDescriptor.InitProject(AProject: TLazProject); +function TProjectManualProgramDescriptor.InitProject(AProject: TLazProject + ): TModalResult; var le: string; NewSource: String; MainFile: TLazProjectFile; begin - inherited InitProject(AProject); + Result:=inherited InitProject(AProject); if AddMainSource then begin MainFile:=AProject.CreateProjectFile('project1.pas'); @@ -3152,11 +3153,11 @@ begin end; end; -procedure TProjectManualProgramDescriptor.CreateStartFiles(AProject: TLazProject - ); +function TProjectManualProgramDescriptor.CreateStartFiles(AProject: TLazProject + ): TModalResult; begin - LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1, - [ofProjectLoading,ofRegularFile]); + Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1, + [ofProjectLoading,ofRegularFile]); end; { TProjectEmptyProgramDescriptor } @@ -3171,6 +3172,9 @@ end. { $Log$ + Revision 1.183 2005/05/26 15:54:02 mattias + changed OI SHow Hints option to resource string, added TProjectDescriptor.DoInitDescriptor + Revision 1.182 2005/03/23 10:45:05 mattias fixed ambigious with ambiguous diff --git a/ideintf/projectintf.pas b/ideintf/projectintf.pas index 43a483d608..7c2f87bedf 100644 --- a/ideintf/projectintf.pas +++ b/ideintf/projectintf.pas @@ -22,7 +22,7 @@ unit ProjectIntf; interface uses - Classes, SysUtils, LCLProc, FileUtil, NewItemIntf; + Classes, SysUtils, LCLProc, FileUtil, Controls, Forms, NewItemIntf; const FileDescGroupName = 'File'; @@ -420,29 +420,40 @@ type ); TProjectFlags = set of TProjectFlag; + { TProjectDescriptor + - to show an option dialog to the user override the DoInitDescriptor + - to initialize project compiler settings and paths override InitProject + - to create files on creation override CreateStartFiles + } + TProjectDescriptor = class(TPersistent) private FDefaultExt: string; FFlags: TProjectFlags; + FInitialized: boolean; FName: string; FReferenceCount: integer; FVisibleInNewDialog: boolean; protected procedure SetName(const AValue: string); virtual; procedure SetFlags(const AValue: TProjectFlags); virtual; + procedure SetInitialized; + function DoInitDescriptor: TModalResult; virtual;// put here option dialogs public constructor Create; virtual; function GetLocalizedName: string; virtual; function GetLocalizedDescription: string; virtual; procedure Release; procedure Reference; - procedure InitProject(AProject: TLazProject); virtual; - procedure CreateStartFiles(AProject: TLazProject); virtual; + function InitDescriptor: TModalResult; + function InitProject(AProject: TLazProject): TModalResult; virtual; + function CreateStartFiles(AProject: TLazProject): TModalResult; virtual; public property Name: string read FName write SetName; property VisibleInNewDialog: boolean read FVisibleInNewDialog write FVisibleInNewDialog; property Flags: TProjectFlags read FFlags write SetFlags; property DefaultExt: string read FDefaultExt write FDefaultExt; + property Initialized: boolean read FInitialized; end; TProjectDescriptorClass = class of TProjectDescriptor; @@ -830,6 +841,16 @@ begin FFlags:=AValue; end; +procedure TProjectDescriptor.SetInitialized; +begin + FInitialized:=true; +end; + +function TProjectDescriptor.DoInitDescriptor: TModalResult; +begin + Result:=mrOk; +end; + procedure TProjectDescriptor.SetName(const AValue: string); begin if FName=AValue then exit; @@ -868,15 +889,26 @@ begin inc(FReferenceCount); end; -procedure TProjectDescriptor.InitProject(AProject: TLazProject); +function TProjectDescriptor.InitDescriptor: TModalResult; +begin + if not Initialized then begin + Result:=DoInitDescriptor; + SetInitialized; + end else + Result:=mrOk; +end; + +function TProjectDescriptor.InitProject(AProject: TLazProject): TModalResult; begin AProject.Title:='project1'; AProject.Flags:=Flags; + Result:=mrOk; end; -procedure TProjectDescriptor.CreateStartFiles(AProject: TLazProject); +function TProjectDescriptor.CreateStartFiles(AProject: TLazProject + ): TModalResult; begin - + Result:=mrOk; end; { TLazProject } diff --git a/lcl/interfaces/gtk/gtkproc.inc b/lcl/interfaces/gtk/gtkproc.inc index 48c5aaf74d..a3b150239f 100644 --- a/lcl/interfaces/gtk/gtkproc.inc +++ b/lcl/interfaces/gtk/gtkproc.inc @@ -476,7 +476,7 @@ begin descent^ := PANGO_DESCENT(extents) div PANGO_SCALE; end; -{$EndIf} +{$EndIf Gtk2} procedure BeginGDKErrorTrap; begin @@ -8204,6 +8204,9 @@ end; { ============================================================================= $Log$ + Revision 1.358 2005/05/26 15:54:02 mattias + changed OI SHow Hints option to resource string, added TProjectDescriptor.DoInitDescriptor + Revision 1.357 2005/05/21 19:27:41 marc * fixed synedit navigation on OSX