From 8d3b3406e65f5ad2d6fcb26554ea37fb0a54398a Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 18 Jun 2010 07:49:33 +0000 Subject: [PATCH] IDE: option to disable i18n for lfm files of project git-svn-id: trunk@26167 - --- ide/frames/project_i18n_options.lfm | 49 ++++++++++++++++++++--------- ide/frames/project_i18n_options.pas | 14 +++++++++ ide/lazarusidestrconsts.pas | 10 ++++++ ide/main.pp | 5 +-- ide/project.pp | 40 +++++++++++++++++++---- ide/sourceeditor.pp | 16 ++++++++-- 6 files changed, 109 insertions(+), 25 deletions(-) diff --git a/ide/frames/project_i18n_options.lfm b/ide/frames/project_i18n_options.lfm index 622a64029c..79154eac4e 100644 --- a/ide/frames/project_i18n_options.lfm +++ b/ide/frames/project_i18n_options.lfm @@ -1,40 +1,43 @@ inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame - Height = 177 + Height = 242 Width = 438 - ClientHeight = 177 + ClientHeight = 242 ClientWidth = 438 + OnClick = FrameClick TabOrder = 0 DesignLeft = 467 DesignTop = 355 object EnableI18NCheckBox: TCheckBox[0] Left = 0 - Height = 17 + Height = 22 Top = 0 Width = 438 Align = alTop Caption = 'Enable i18n' OnChange = EnableI18NCheckBoxChange + ParentShowHint = False + ShowHint = True TabOrder = 0 end object I18NGroupBox: TGroupBox[1] AnchorSideTop.Side = asrBottom AnchorSideRight.Side = asrBottom Left = 0 - Height = 73 - Top = 23 + Height = 112 + Top = 28 Width = 438 Align = alTop AutoSize = True BorderSpacing.Top = 6 Caption = 'i18n Options' - ClientHeight = 55 - ClientWidth = 434 + ClientHeight = 94 + ClientWidth = 430 TabOrder = 1 object PoOutDirLabel: TLabel Left = 6 - Height = 14 + Height = 18 Top = 6 - Width = 103 + Width = 134 BorderSpacing.Around = 6 Caption = 'PO Output Directory:' ParentColor = False @@ -45,13 +48,15 @@ inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame AnchorSideTop.Side = asrBottom AnchorSideRight.Control = POOutDirButton Left = 6 - Height = 21 - Top = 26 - Width = 398 + Height = 27 + Top = 30 + Width = 394 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 BorderSpacing.Top = 6 BorderSpacing.Bottom = 6 + ParentShowHint = False + ShowHint = True TabOrder = 0 Text = 'POOutDirEdit' end @@ -61,9 +66,9 @@ inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame AnchorSideRight.Side = asrBottom AnchorSideBottom.Control = POOutDirEdit AnchorSideBottom.Side = asrBottom - Left = 404 - Height = 21 - Top = 26 + Left = 400 + Height = 27 + Top = 30 Width = 24 Anchors = [akTop, akRight, akBottom] BorderSpacing.Right = 6 @@ -71,5 +76,19 @@ inherited ProjectI18NOptionsFrame: TProjectI18NOptionsFrame OnClick = POOutDirButtonClick TabOrder = 1 end + object PoForFormsCheckBox: TCheckBox + AnchorSideLeft.Control = PoOutDirLabel + AnchorSideTop.Control = POOutDirEdit + AnchorSideTop.Side = asrBottom + Left = 6 + Height = 22 + Top = 72 + Width = 171 + BorderSpacing.Top = 15 + Caption = 'PoForFormsCheckBox' + ParentShowHint = False + ShowHint = True + TabOrder = 2 + end end end diff --git a/ide/frames/project_i18n_options.pas b/ide/frames/project_i18n_options.pas index 5033740fbc..0a86df1f48 100644 --- a/ide/frames/project_i18n_options.pas +++ b/ide/frames/project_i18n_options.pas @@ -15,10 +15,12 @@ type TProjectI18NOptionsFrame = class(TAbstractIDEOptionsEditor) EnableI18NCheckBox: TCheckBox; I18NGroupBox: TGroupBox; + PoForFormsCheckBox: TCheckBox; POOutDirButton: TButton; POOutDirEdit: TEdit; PoOutDirLabel: TLabel; procedure EnableI18NCheckBoxChange(Sender: TObject); + procedure FrameClick(Sender: TObject); procedure POOutDirButtonClick(Sender: TObject); private FProject: TProject; @@ -42,6 +44,11 @@ begin Enablei18nInfo(EnableI18NCheckBox.Checked); end; +procedure TProjectI18NOptionsFrame.FrameClick(Sender: TObject); +begin + +end; + procedure TProjectI18NOptionsFrame.POOutDirButtonClick(Sender: TObject); var NewDirectory: string; @@ -67,8 +74,13 @@ end; procedure TProjectI18NOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog); begin EnableI18NCheckBox.Caption := rsEnableI18n; + EnableI18NCheckBox.Hint:=lisEnableInternationalizationAndTranslationSupport; I18NGroupBox.Caption := rsI18nOptions; PoOutDirLabel.Caption := rsPOOutputDirectory; + POOutDirEdit.Hint:=lisDirectoryWhereTheIDEPutsThePoFiles; + PoForFormsCheckBox.Caption:=lisCreateUpdatePoFileWhenSavingALfmFile; + PoForFormsCheckBox.Hint:= + lisYouCanDisableThisForIndividualFormsViaThePopupMenu; end; procedure TProjectI18NOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); @@ -83,6 +95,7 @@ begin AFilename:=CreateRelativePath(AFilename,FProject.ProjectDirectory); POOutDirEdit.Text := AFilename; EnableI18NCheckBox.Checked := Enablei18n; + PoForFormsCheckBox.Checked:=EnableI18NForLFM; Enablei18nInfo(Enablei18n); end; end; @@ -98,6 +111,7 @@ begin AFilename:=AppendPathDelim(ProjectDirectory)+AFilename; POOutputDirectory := AFilename; EnableI18N := EnableI18NCheckBox.Checked; + EnableI18NForLFM := PoForFormsCheckBox.Checked; end; end; diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index c3b8aa225a..616c197d75 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -1951,8 +1951,17 @@ resourcestring dlgPOMisc = 'Miscellaneous'; dlgPOI18n = 'i18n'; rsEnableI18n = 'Enable i18n'; + lisEnableInternationalizationAndTranslationSupport = 'Enable internationaliza' + +'tion and translation support'; rsI18nOptions = 'i18n Options'; rsPOOutputDirectory = 'PO Output Directory:'; + lisDirectoryWhereTheIDEPutsThePoFiles = 'Directory where the IDE puts the .' + +'po files'; + lisCreateUpdatePoFileWhenSavingALfmFile = 'Create/update .po file when ' + +'saving a lfm file'; + lisYouCanDisableThisForIndividualFormsViaThePopupMenu = 'You can disable ' + +'this for individual forms via the popup menu in the source editor, file ' + +'settings, i18n for lfm strings'; rsIncludeVersionInfoInExecutable = 'Include Version Info in executable'; rsVersionNumbering = 'Version numbering'; rsMajorVersion = '&Major version:'; @@ -2153,6 +2162,7 @@ resourcestring uemReadOnly = 'Read Only'; uemShowLineNumbers = 'Show Line Numbers'; uemShowUnitInfo = 'Unit Info'; + lisDisableI18NForLFM = 'Disable I18N for LFM'; uemDebugWord = 'Debug'; uemToggleBreakpoint = '&Toggle Breakpoint'; uemEvaluateModify = '&Evaluate/Modify...'; diff --git a/ide/main.pp b/ide/main.pp index cefaa3ab7f..d1862bcb0e 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -3848,7 +3848,7 @@ begin CurFilename:=AnUnitInfo.Filename; if (not AnUnitInfo.IsVirtual) and FilenameIsPascalSource(CurFilename) then begin - // check .lst file + // check .lrt file LRTFilename:=ChangeFileExt(CurFilename,'.lrt'); if FileExistsCached(LRTFilename) and ((not POFileAgeValid) or (FileAgeCached(LRTFilename)>POFileAge)) then @@ -5134,7 +5134,8 @@ begin BinCompStream.Position:=0; Writer:=CreateLRSWriter(BinCompStream,DestroyDriver); // used to save lrt files - HasI18N:=AnUnitInfo.IsPartOfProject and AnUnitInfo.Project.EnableI18N; + HasI18N:=AnUnitInfo.IsPartOfProject and (not AnUnitInfo.DisableI18NForLFM) + and AnUnitInfo.Project.EnableI18N and AnUnitInfo.Project.EnableI18NForLFM; if (not HasI18N) and (UnitOwners<>nil) then begin for i:=0 to UnitOwners.Count-1 do begin if TObject(UnitOwners[i]) is TLazPackage then begin diff --git a/ide/project.pp b/ide/project.pp index 5be0295b86..dbf5ee91cf 100644 --- a/ide/project.pp +++ b/ide/project.pp @@ -245,6 +245,7 @@ type private FCustomDefaultHighlighter: boolean; FDefaultSyntaxHighlighter: TLazSyntaxHighlighter; + FDisableI18NForLFM: boolean; FEditorInfoList: TUnitEditorInfoList; FAutoReferenceSourceDir: boolean; fAutoRevertLockCount: integer;// =0 means, codetools can auto update from disk @@ -310,6 +311,7 @@ type procedure SetBuildFileIfActive(const AValue: boolean); procedure SetDefaultSyntaxHighlighter(const AValue: TLazSyntaxHighlighter); procedure SetDirectives(const AValue: TStrings); + procedure SetDisableI18NForLFM(const AValue: boolean); procedure SetFileReadOnly(const AValue: Boolean); procedure SetComponent(const AValue: TComponent); procedure SetLoaded(const AValue: Boolean); @@ -432,6 +434,7 @@ type property CustomDefaultHighlighter: boolean read FCustomDefaultHighlighter write FCustomDefaultHighlighter; property Directives: TStrings read FDirectives write SetDirectives; + property DisableI18NForLFM: boolean read FDisableI18NForLFM write SetDisableI18NForLFM; property FileReadOnly: Boolean read fFileReadOnly write SetFileReadOnly; property FirstRequiredComponent: TUnitComponentDependency read FFirstRequiredComponent; @@ -672,6 +675,7 @@ type FActiveWindowIndexAtStart: integer; FEditorInfoList: TUnitEditorInfoList; FAutoCreateForms: boolean; + FEnableI18NForLFM: boolean; FTmpAutoCreatedForms: TStrings; // temporary, used to apply auto create forms changes FAutoOpenDesignerFormsDisabled: boolean; FBookmarks: TProjectBookmarkList; @@ -735,24 +739,25 @@ type function JumpHistoryCheckPosition( APosition:TProjectJumpHistoryPosition): boolean; function OnUnitFileBackup(const Filename: string): TModalResult; + procedure ClearSourceDirectories; + procedure EmbeddedObjectModified(Sender: TObject); procedure OnLoadSaveFilename(var AFilename: string; Load: boolean); procedure OnUnitNameChange(AnUnitInfo: TUnitInfo; const OldUnitName, NewUnitName: string; CheckIfAllowed: boolean; var Allowed: boolean); procedure SetAutoOpenDesignerFormsDisabled(const AValue: boolean); procedure SetCompilerOptions(const AValue: TProjectCompilerOptions); + procedure SetEnableI18N(const AValue: boolean); + procedure SetEnableI18NForLFM(const AValue: boolean); procedure SetMainProject(const AValue: boolean); + procedure SetMainUnitID(const AValue: Integer); + procedure SetPOOutputDirectory(const AValue: string); procedure SetSkipCheckLCLInterfaces(const AValue: boolean); procedure SetTargetFilename(const NewTargetFilename: string); - procedure SetEnableI18N(const AValue: boolean); - procedure SetPOOutputDirectory(const AValue: string); - procedure SetMainUnitID(const AValue: Integer); + procedure SourceDirectoriesChanged(Sender: TObject); procedure UpdateProjectDirectory; procedure UpdateSessionFilename; procedure UpdateSourceDirectories; - procedure ClearSourceDirectories; - procedure SourceDirectoriesChanged(Sender: TObject); - procedure EmbeddedObjectModified(Sender: TObject); protected function GetMainFile: TLazProjectFile; override; function GetMainFileID: Integer; override; @@ -952,6 +957,7 @@ type property DefineTemplates: TProjectDefineTemplates read FDefineTemplates; property Destroying: boolean read fDestroying; property EnableI18N: boolean read FEnableI18N write SetEnableI18N; + property EnableI18NForLFM: boolean read FEnableI18NForLFM write SetEnableI18NForLFM; property FirstAutoRevertLockedUnit: TUnitInfo read GetFirstAutoRevertLockedUnit; property FirstLoadedUnit: TUnitInfo read GetFirstLoadedUnit; property FirstPartOfProject: TUnitInfo read GetFirstPartOfProject; @@ -1514,6 +1520,7 @@ begin fComponentResourceName := ''; FComponentState := wsNormal; FDefaultSyntaxHighlighter := lshText; + FDisableI18NForLFM:=false; FCustomDefaultHighlighter := False; FEditorInfoList.ClearEachInfo; fFilename := ''; @@ -1589,6 +1596,8 @@ begin if SaveSession and Assigned(Project.OnSaveUnitSessionInfo) then Project.OnSaveUnitSessionInfo(Self); + if IsPartOfProject and SaveData then + XMLConfig.SetDeleteValue(Path+'DisableI18NForLFM/Value',FDisableI18NForLFM,false); // context data (project/session) if (IsPartOfProject and SaveData) @@ -1662,6 +1671,7 @@ begin if fComponentName='' then fComponentName:=XMLConfig.GetValue(Path+'FormName/Value',''); FComponentState := TWindowState(XMLConfig.GetValue(Path+'ComponentState/Value',0)); + FDisableI18NForLFM:=XMLConfig.GetValue(Path+'DisableI18NForLFM/Value',false); HasResources:=XMLConfig.GetValue(Path+'HasResources/Value',false); FResourceBaseClass:=StrToComponentBaseClass( XMLConfig.GetValue(Path+'ResourceBaseClass/Value','')); @@ -2313,6 +2323,13 @@ begin FDirectives:=AValue; end; +procedure TUnitInfo.SetDisableI18NForLFM(const AValue: boolean); +begin + if FDisableI18NForLFM=AValue then exit; + FDisableI18NForLFM:=AValue; + Modified:=true; +end; + procedure TUnitInfo.SetFileReadOnly(const AValue: Boolean); begin if fFileReadOnly=AValue then exit; @@ -2643,6 +2660,7 @@ begin // i18n xmlconfig.SetDeleteValue(Path+'i18n/EnableI18N/Value', EnableI18N, false); + xmlconfig.SetDeleteValue(Path+'i18n/EnableI18N/LFM', EnableI18NForLFM, true); xmlconfig.SetDeleteValue(Path+'i18n/OutDir/Value', SwitchPathDelims(CreateRelativePath(POOutputDirectory,ProjectDirectory), fCurStorePathDelim) , @@ -3102,6 +3120,7 @@ begin EnableI18N := POOutputDirectory <> ''; end else begin EnableI18N := xmlconfig.GetValue(Path+'i18n/EnableI18N/Value', False); + EnableI18NForLFM := xmlconfig.GetValue(Path+'i18n/EnableI18N/LFM', True); POOutputDirectory := SwitchPathDelims( xmlconfig.GetValue(Path+'i18n/OutDir/Value', ''),fPathDelimChanged); end; @@ -3384,6 +3403,8 @@ begin FActiveWindowIndexAtStart := -1; FSkipCheckLCLInterfaces:=false; FAutoOpenDesignerFormsDisabled := false; + FEnableI18N:=false; + FEnableI18NForLFM:=true; FBookmarks.Clear; FCompilerOptions.Clear; FDefineTemplates.Clear; @@ -4811,6 +4832,13 @@ begin inherited SetLazCompilerOptions(AValue); end; +procedure TProject.SetEnableI18NForLFM(const AValue: boolean); +begin + if FEnableI18NForLFM=AValue then exit; + FEnableI18NForLFM:=AValue; + Modified:=true; +end; + procedure TProject.SetMainProject(const AValue: boolean); begin if MainProject=AValue then exit; diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index 0debbe0a2a..e04860bcfa 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -610,6 +610,7 @@ type procedure ShowUnitInfo(Sender: TObject); procedure SrcPopUpMenuPopup(Sender: TObject); procedure ToggleLineNumbersClicked(Sender: TObject); + procedure ToggleI18NForLFMClicked(Sender: TObject); procedure InsertCharacter(const C: TUTF8Char); procedure SrcEditMenuCopyToNewWindowClicked(Sender: TObject); procedure SrcEditMenuCopyToExistingWindowClicked(Sender: TObject); @@ -1181,6 +1182,7 @@ var SrcEditMenuMoveEditorLast: TIDEMenuCommand; SrcEditMenuReadOnly: TIDEMenuCommand; SrcEditMenuShowLineNumbers: TIDEMenuCommand; + SrcEditMenuDisableI18NForLFM: TIDEMenuCommand; SrcEditMenuShowUnitInfo: TIDEMenuCommand; SrcEditMenuEditorProperties: TIDEMenuCommand; {$IFnDEF SingleSrcWindow} @@ -1328,6 +1330,8 @@ begin SrcEditMenuShowLineNumbers:=RegisterIDEMenuCommand(AParent, 'ShowLineNumbers',uemShowLineNumbers); SrcEditMenuShowLineNumbers.ShowAlwaysCheckable:=true; + SrcEditMenuDisableI18NForLFM:=RegisterIDEMenuCommand(AParent, + 'DisableI18NForLFM',lisDisableI18NForLFM); SrcEditMenuShowUnitInfo:=RegisterIDEMenuCommand(AParent,'ShowUnitInfo', uemShowUnitInfo); SrcEditSubMenuHighlighter:=RegisterIDESubMenu(AParent,'Highlighter', @@ -5166,9 +5170,11 @@ begin SrcEditMenuPaste.Enabled := not ASrcEdit.ReadOnly; // Readonly, ShowLineNumbers - SrcEditMenuReadOnly.MenuItem.Checked:=ASrcEdit.ReadOnly; - SrcEditMenuShowLineNumbers.MenuItem.Checked := + SrcEditMenuReadOnly.Checked:=ASrcEdit.ReadOnly; + SrcEditMenuShowLineNumbers.Checked := EditorComp.Gutter.LineNumberPart.Visible; + SrcEditMenuDisableI18NForLFM.Visible:=false; + UpdateHighlightMenuItems; UpdateLineEndingMenuItems; UpdateEncodingMenuItems; @@ -5405,6 +5411,7 @@ begin SrcEditMenuReadOnly.OnClick:=@ReadOnlyClicked; SrcEditMenuShowLineNumbers.OnClick:=@ToggleLineNumbersClicked; + SrcEditMenuDisableI18NForLFM.OnClick:=@ToggleI18NForLFMClicked; SrcEditMenuShowUnitInfo.OnClick:=@ShowUnitInfo; SrcEditMenuEditorProperties.OnClick:=@EditorPropertiesClicked; @@ -6352,6 +6359,11 @@ begin EditorOpts.Save; end; +procedure TSourceNotebook.ToggleI18NForLFMClicked(Sender: TObject); +begin + +end; + Procedure TSourceNotebook.OpenAtCursorClicked(Sender: TObject); begin if assigned(Manager) and Assigned(Manager.OnOpenFileAtCursorClicked) then