IDE: added "Resave forms with i18n" function, which opens and resaves all project forms for which i18n was enabled in order to regenerate their translation tables

git-svn-id: trunk@52586 -
This commit is contained in:
maxim 2016-06-29 22:48:52 +00:00
parent 368c310784
commit 5ed0714686
6 changed files with 42 additions and 1 deletions

View File

@ -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'),

View File

@ -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);

View File

@ -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';

View File

@ -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;

View File

@ -263,6 +263,7 @@ type
//itmProjectSaveSection: TIDEMenuSection;
itmProjectSave: TIDEMenuCommand;
itmProjectSaveAs: TIDEMenuCommand;
itmProjectResaveFormsWithI18n: TIDEMenuCommand;
itmProjectPublish: TIDEMenuCommand;
//itmProjectWindowSection: TIDEMenuSection;
itmProjectInspector: TIDEMenuCommand;

View File

@ -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);