diff --git a/components/ideintf/idecommands.pas b/components/ideintf/idecommands.pas index a743c47f5d..8a775d1a44 100644 --- a/components/ideintf/idecommands.pas +++ b/components/ideintf/idecommands.pas @@ -302,6 +302,7 @@ const ecViewProjectSource = ecFirstLazarus + 512; ecProjectOptions = ecFirstLazarus + 513; ecProjectChangeBuildMode = ecFirstLazarus + 514; + ecProjectResaveFormsWithI18n = ecFirstLazarus + 515; // package menu ecOpenPackage = ecFirstLazarus + 600; @@ -1906,7 +1907,7 @@ begin end; const - IDEEditorCommandStrs: array[0..314] of TIdentMapEntry = ( + IDEEditorCommandStrs: array[0..315] of TIdentMapEntry = ( // search (Value: ecFind; Name: 'ecFind'), (Value: ecFindAgain; Name: 'ecFindAgain'), @@ -2155,6 +2156,7 @@ const (Value: ecViewProjectSource; Name: 'ecViewProjectSource'), (Value: ecProjectOptions; Name: 'ecProjectOptions'), (Value: ecProjectChangeBuildMode; Name: 'ecProjectChangeBuildMode'), + (Value: ecProjectResaveFormsWithI18n; Name: 'ecProjectResaveFormsWithI18n'), // package menu (Value: ecOpenPackage; Name: 'ecOpenPackage'), diff --git a/ide/keymapping.pp b/ide/keymapping.pp index a1a8edc5b3..37d46efeaf 100644 --- a/ide/keymapping.pp +++ b/ide/keymapping.pp @@ -637,6 +637,7 @@ begin ecCloseProject : Result:= lisMenuCloseProject; ecSaveProject : Result:= lisMenuSaveProject; ecSaveProjectAs : Result:= lisMenuSaveProjectAs; + ecProjectResaveFormsWithI18n: Result:= lisMenuResaveFormsWithI18n; ecPublishProject : Result:= lisMenuPublishProject; ecProjectInspector : Result:= lisMenuProjectInspector; ecAddCurUnitToProj : Result:= lisMenuAddToProject; @@ -1277,6 +1278,7 @@ begin ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); + ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); @@ -1714,6 +1716,7 @@ begin ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); + ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); @@ -2339,6 +2342,7 @@ begin ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); + ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecAddCurUnitToProj: SetSingle(VK_A,[ssAlt,ssMeta]); @@ -3025,6 +3029,8 @@ begin AddDefault(C, 'Close project', lisKMCloseProject, ecCloseProject); AddDefault(C, 'Save project', lisKMSaveProject, ecSaveProject); AddDefault(C, 'Save project as', lisKMSaveProjectAs, ecSaveProjectAs); + AddDefault(C, 'Resave forms with i18n', lisMenuResaveFormsWithI18n, + ecProjectResaveFormsWithI18n); AddDefault(C, 'Publish project', lisKMPublishProject, ecPublishProject); AddDefault(C, 'Project Inspector', lisMenuProjectInspector, ecProjectInspector); AddDefault(C, 'Add editor file to Project', lisMenuAddToProject, ecAddCurUnitToProj); diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index d8aaf37083..1b401ffab0 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -479,6 +479,7 @@ resourcestring lisMenuOpenRecentProject = 'Open Recent Project'; lisMenuSaveProject = 'Save Project'; lisMenuSaveProjectAs = 'Save Project As ...'; + lisMenuResaveFormsWithI18n = 'Resave forms with i18n'; lisMenuPublishProject = 'Publish Project ...'; lisPublishProject = 'Publish Project'; lisMenuProjectInspector = 'Project Inspector'; diff --git a/ide/main.pp b/ide/main.pp index a90a08fb1a..28fba56b0c 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -316,6 +316,7 @@ type procedure mnuCloseProjectClicked(Sender: TObject); procedure mnuSaveProjectClicked(Sender: TObject); procedure mnuSaveProjectAsClicked(Sender: TObject); + procedure mnuProjectResaveFormsWithI18n(Sender: TObject); procedure mnuPublishProjectClicked(Sender: TObject); procedure mnuProjectInspectorClicked(Sender: TObject); procedure mnuAddToProjectClicked(Sender: TObject); @@ -2719,6 +2720,7 @@ begin itmProjectClose.OnClick := @mnuCloseProjectClicked; itmProjectSave.OnClick := @mnuSaveProjectClicked; itmProjectSaveAs.OnClick := @mnuSaveProjectAsClicked; + itmProjectResaveFormsWithI18n.OnClick := @mnuProjectResaveFormsWithI18n; itmProjectPublish.OnClick := @mnuPublishProjectClicked; itmProjectInspector.OnClick := @mnuProjectInspectorClicked; itmProjectOptions.OnClick := @mnuProjectOptionsClicked; @@ -4021,6 +4023,29 @@ begin DoSaveProject([sfSaveAs]); end; +procedure TMainIDE.mnuProjectResaveFormsWithI18n(Sender: TObject); +var + AnUnitInfo: TUnitInfo; + LFMFileName: string; +begin + AnUnitInfo:=Project1.FirstPartOfProject; + while AnUnitInfo<>nil do + begin + if FileNameIsPascalSource(AnUnitInfo.Filename) then + begin + LFMFileName:=AnUnitInfo.UnitResourceFileformat.GetUnitResourceFilename(AnUnitInfo.Filename,true); + if FileExistsCached(LFMFileName) and (not AnUnitInfo.DisableI18NForLFM) then + if LazarusIDE.DoOpenEditorFile(AnUnitInfo.Filename,-1,-1,[ofAddToRecent])=mrOk then + begin + AnUnitInfo.Modified:=true; + LazarusIDE.DoSaveEditorFile(AnUnitInfo.Filename,[]); + //DebugLn(['TMainIDE.mnuProjectResaveFormsWithI18n Resaving form "',AnUnitInfo.Filename,'"']); + end; + end; + AnUnitInfo:=AnUnitInfo.NextPartOfProject; + end; +end; + procedure TMainIDE.mnuPublishProjectClicked(Sender: TObject); begin DoPublishProject([],true); @@ -5416,6 +5441,9 @@ begin MainIDEBar.itmFileSave.Enabled := ((SrcEdit<>nil) and SrcEdit.Modified) or ((AnUnitInfo<>nil) and AnUnitInfo.IsVirtual); MainIDEBar.itmFileExportHtml.Enabled := (SrcEdit<>nil); + MainIDEBar.itmProjectResaveFormsWithI18n.Enabled := (Project1<>nil) and (not Project1.IsVirtual) + and (Project1.EnableI18N) + and (Project1.EnableI18NForLFM); if UpdateSaveAll then MainIDEBar.itmFileSaveAll.Enabled := MainIDEBar.itmProjectSave.Enabled; end; diff --git a/ide/mainbar.pas b/ide/mainbar.pas index 5cd9ea7ee4..0b2d6c0132 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -263,6 +263,7 @@ type //itmProjectSaveSection: TIDEMenuSection; itmProjectSave: TIDEMenuCommand; itmProjectSaveAs: TIDEMenuCommand; + itmProjectResaveFormsWithI18n: TIDEMenuCommand; itmProjectPublish: TIDEMenuCommand; //itmProjectWindowSection: TIDEMenuSection; itmProjectInspector: TIDEMenuCommand; diff --git a/ide/mainbase.pas b/ide/mainbase.pas index 15854393f7..619bd5f1ae 100644 --- a/ide/mainbase.pas +++ b/ide/mainbase.pas @@ -1266,6 +1266,8 @@ begin ParentMI:=itmProjectSaveSection; CreateMenuItem(ParentMI,itmProjectSave,'itmProjectSave',lisMenuSaveProject, 'menu_project_save'); CreateMenuItem(ParentMI,itmProjectSaveAs,'itmProjectSaveAs',lisMenuSaveProjectAs, 'menu_project_saveas'); + CreateMenuItem(ParentMI, itmProjectResaveFormsWithI18n, 'itmProjectResaveFo' + +'rmsWithI18n', lisMenuResaveFormsWithI18n); CreateMenuItem(ParentMI,itmProjectPublish,'itmProjectPublish',lisMenuPublishProject); CreateMenuSeparatorSection(mnuProject,itmProjectWindowSection,'itmProjectWindowSection'); @@ -1646,6 +1648,7 @@ begin itmProjectClose.Command:=GetCommand(ecCloseProject); itmProjectSave.Command:=GetCommand(ecSaveProject); itmProjectSaveAs.Command:=GetCommand(ecSaveProjectAs); + itmProjectResaveFormsWithI18n.Command:=GetCommand(ecProjectResaveFormsWithI18n); itmProjectPublish.Command:=GetCommand(ecPublishProject); itmProjectInspector.Command:=GetCommand(ecProjectInspector); itmProjectOptions.Command:=GetCommand(ecProjectOptions);