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; ecViewProjectSource = ecFirstLazarus + 512;
ecProjectOptions = ecFirstLazarus + 513; ecProjectOptions = ecFirstLazarus + 513;
ecProjectChangeBuildMode = ecFirstLazarus + 514; ecProjectChangeBuildMode = ecFirstLazarus + 514;
ecProjectResaveFormsWithI18n = ecFirstLazarus + 515;
// package menu // package menu
ecOpenPackage = ecFirstLazarus + 600; ecOpenPackage = ecFirstLazarus + 600;
@ -1906,7 +1907,7 @@ begin
end; end;
const const
IDEEditorCommandStrs: array[0..314] of TIdentMapEntry = ( IDEEditorCommandStrs: array[0..315] of TIdentMapEntry = (
// search // search
(Value: ecFind; Name: 'ecFind'), (Value: ecFind; Name: 'ecFind'),
(Value: ecFindAgain; Name: 'ecFindAgain'), (Value: ecFindAgain; Name: 'ecFindAgain'),
@ -2155,6 +2156,7 @@ const
(Value: ecViewProjectSource; Name: 'ecViewProjectSource'), (Value: ecViewProjectSource; Name: 'ecViewProjectSource'),
(Value: ecProjectOptions; Name: 'ecProjectOptions'), (Value: ecProjectOptions; Name: 'ecProjectOptions'),
(Value: ecProjectChangeBuildMode; Name: 'ecProjectChangeBuildMode'), (Value: ecProjectChangeBuildMode; Name: 'ecProjectChangeBuildMode'),
(Value: ecProjectResaveFormsWithI18n; Name: 'ecProjectResaveFormsWithI18n'),
// package menu // package menu
(Value: ecOpenPackage; Name: 'ecOpenPackage'), (Value: ecOpenPackage; Name: 'ecOpenPackage'),

View File

@ -637,6 +637,7 @@ begin
ecCloseProject : Result:= lisMenuCloseProject; ecCloseProject : Result:= lisMenuCloseProject;
ecSaveProject : Result:= lisMenuSaveProject; ecSaveProject : Result:= lisMenuSaveProject;
ecSaveProjectAs : Result:= lisMenuSaveProjectAs; ecSaveProjectAs : Result:= lisMenuSaveProjectAs;
ecProjectResaveFormsWithI18n: Result:= lisMenuResaveFormsWithI18n;
ecPublishProject : Result:= lisMenuPublishProject; ecPublishProject : Result:= lisMenuPublishProject;
ecProjectInspector : Result:= lisMenuProjectInspector; ecProjectInspector : Result:= lisMenuProjectInspector;
ecAddCurUnitToProj : Result:= lisMenuAddToProject; ecAddCurUnitToProj : Result:= lisMenuAddToProject;
@ -1277,6 +1278,7 @@ begin
ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecCloseProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]);
ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]);
ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]);
ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]);
ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]);
@ -1714,6 +1716,7 @@ begin
ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecCloseProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]);
ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]);
ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]);
ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]);
ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]); ecAddCurUnitToProj: SetSingle(VK_F11,[ssShift]);
@ -2339,6 +2342,7 @@ begin
ecCloseProject: SetSingle(VK_UNKNOWN,[]); ecCloseProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProject: SetSingle(VK_UNKNOWN,[]); ecSaveProject: SetSingle(VK_UNKNOWN,[]);
ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]); ecSaveProjectAs: SetSingle(VK_UNKNOWN,[]);
ecProjectResaveFormsWithI18n: SetSingle(VK_UNKNOWN,[]);
ecPublishProject: SetSingle(VK_UNKNOWN,[]); ecPublishProject: SetSingle(VK_UNKNOWN,[]);
ecProjectInspector: SetSingle(VK_UNKNOWN,[]); ecProjectInspector: SetSingle(VK_UNKNOWN,[]);
ecAddCurUnitToProj: SetSingle(VK_A,[ssAlt,ssMeta]); ecAddCurUnitToProj: SetSingle(VK_A,[ssAlt,ssMeta]);
@ -3025,6 +3029,8 @@ begin
AddDefault(C, 'Close project', lisKMCloseProject, ecCloseProject); AddDefault(C, 'Close project', lisKMCloseProject, ecCloseProject);
AddDefault(C, 'Save project', lisKMSaveProject, ecSaveProject); AddDefault(C, 'Save project', lisKMSaveProject, ecSaveProject);
AddDefault(C, 'Save project as', lisKMSaveProjectAs, ecSaveProjectAs); AddDefault(C, 'Save project as', lisKMSaveProjectAs, ecSaveProjectAs);
AddDefault(C, 'Resave forms with i18n', lisMenuResaveFormsWithI18n,
ecProjectResaveFormsWithI18n);
AddDefault(C, 'Publish project', lisKMPublishProject, ecPublishProject); AddDefault(C, 'Publish project', lisKMPublishProject, ecPublishProject);
AddDefault(C, 'Project Inspector', lisMenuProjectInspector, ecProjectInspector); AddDefault(C, 'Project Inspector', lisMenuProjectInspector, ecProjectInspector);
AddDefault(C, 'Add editor file to Project', lisMenuAddToProject, ecAddCurUnitToProj); AddDefault(C, 'Add editor file to Project', lisMenuAddToProject, ecAddCurUnitToProj);

View File

@ -479,6 +479,7 @@ resourcestring
lisMenuOpenRecentProject = 'Open Recent Project'; lisMenuOpenRecentProject = 'Open Recent Project';
lisMenuSaveProject = 'Save Project'; lisMenuSaveProject = 'Save Project';
lisMenuSaveProjectAs = 'Save Project As ...'; lisMenuSaveProjectAs = 'Save Project As ...';
lisMenuResaveFormsWithI18n = 'Resave forms with i18n';
lisMenuPublishProject = 'Publish Project ...'; lisMenuPublishProject = 'Publish Project ...';
lisPublishProject = 'Publish Project'; lisPublishProject = 'Publish Project';
lisMenuProjectInspector = 'Project Inspector'; lisMenuProjectInspector = 'Project Inspector';

View File

@ -316,6 +316,7 @@ type
procedure mnuCloseProjectClicked(Sender: TObject); procedure mnuCloseProjectClicked(Sender: TObject);
procedure mnuSaveProjectClicked(Sender: TObject); procedure mnuSaveProjectClicked(Sender: TObject);
procedure mnuSaveProjectAsClicked(Sender: TObject); procedure mnuSaveProjectAsClicked(Sender: TObject);
procedure mnuProjectResaveFormsWithI18n(Sender: TObject);
procedure mnuPublishProjectClicked(Sender: TObject); procedure mnuPublishProjectClicked(Sender: TObject);
procedure mnuProjectInspectorClicked(Sender: TObject); procedure mnuProjectInspectorClicked(Sender: TObject);
procedure mnuAddToProjectClicked(Sender: TObject); procedure mnuAddToProjectClicked(Sender: TObject);
@ -2719,6 +2720,7 @@ begin
itmProjectClose.OnClick := @mnuCloseProjectClicked; itmProjectClose.OnClick := @mnuCloseProjectClicked;
itmProjectSave.OnClick := @mnuSaveProjectClicked; itmProjectSave.OnClick := @mnuSaveProjectClicked;
itmProjectSaveAs.OnClick := @mnuSaveProjectAsClicked; itmProjectSaveAs.OnClick := @mnuSaveProjectAsClicked;
itmProjectResaveFormsWithI18n.OnClick := @mnuProjectResaveFormsWithI18n;
itmProjectPublish.OnClick := @mnuPublishProjectClicked; itmProjectPublish.OnClick := @mnuPublishProjectClicked;
itmProjectInspector.OnClick := @mnuProjectInspectorClicked; itmProjectInspector.OnClick := @mnuProjectInspectorClicked;
itmProjectOptions.OnClick := @mnuProjectOptionsClicked; itmProjectOptions.OnClick := @mnuProjectOptionsClicked;
@ -4021,6 +4023,29 @@ begin
DoSaveProject([sfSaveAs]); DoSaveProject([sfSaveAs]);
end; 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); procedure TMainIDE.mnuPublishProjectClicked(Sender: TObject);
begin begin
DoPublishProject([],true); DoPublishProject([],true);
@ -5416,6 +5441,9 @@ begin
MainIDEBar.itmFileSave.Enabled := ((SrcEdit<>nil) and SrcEdit.Modified) MainIDEBar.itmFileSave.Enabled := ((SrcEdit<>nil) and SrcEdit.Modified)
or ((AnUnitInfo<>nil) and AnUnitInfo.IsVirtual); or ((AnUnitInfo<>nil) and AnUnitInfo.IsVirtual);
MainIDEBar.itmFileExportHtml.Enabled := (SrcEdit<>nil); MainIDEBar.itmFileExportHtml.Enabled := (SrcEdit<>nil);
MainIDEBar.itmProjectResaveFormsWithI18n.Enabled := (Project1<>nil) and (not Project1.IsVirtual)
and (Project1.EnableI18N)
and (Project1.EnableI18NForLFM);
if UpdateSaveAll then if UpdateSaveAll then
MainIDEBar.itmFileSaveAll.Enabled := MainIDEBar.itmProjectSave.Enabled; MainIDEBar.itmFileSaveAll.Enabled := MainIDEBar.itmProjectSave.Enabled;
end; end;

View File

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

View File

@ -1266,6 +1266,8 @@ begin
ParentMI:=itmProjectSaveSection; ParentMI:=itmProjectSaveSection;
CreateMenuItem(ParentMI,itmProjectSave,'itmProjectSave',lisMenuSaveProject, 'menu_project_save'); CreateMenuItem(ParentMI,itmProjectSave,'itmProjectSave',lisMenuSaveProject, 'menu_project_save');
CreateMenuItem(ParentMI,itmProjectSaveAs,'itmProjectSaveAs',lisMenuSaveProjectAs, 'menu_project_saveas'); CreateMenuItem(ParentMI,itmProjectSaveAs,'itmProjectSaveAs',lisMenuSaveProjectAs, 'menu_project_saveas');
CreateMenuItem(ParentMI, itmProjectResaveFormsWithI18n, 'itmProjectResaveFo'
+'rmsWithI18n', lisMenuResaveFormsWithI18n);
CreateMenuItem(ParentMI,itmProjectPublish,'itmProjectPublish',lisMenuPublishProject); CreateMenuItem(ParentMI,itmProjectPublish,'itmProjectPublish',lisMenuPublishProject);
CreateMenuSeparatorSection(mnuProject,itmProjectWindowSection,'itmProjectWindowSection'); CreateMenuSeparatorSection(mnuProject,itmProjectWindowSection,'itmProjectWindowSection');
@ -1646,6 +1648,7 @@ begin
itmProjectClose.Command:=GetCommand(ecCloseProject); itmProjectClose.Command:=GetCommand(ecCloseProject);
itmProjectSave.Command:=GetCommand(ecSaveProject); itmProjectSave.Command:=GetCommand(ecSaveProject);
itmProjectSaveAs.Command:=GetCommand(ecSaveProjectAs); itmProjectSaveAs.Command:=GetCommand(ecSaveProjectAs);
itmProjectResaveFormsWithI18n.Command:=GetCommand(ecProjectResaveFormsWithI18n);
itmProjectPublish.Command:=GetCommand(ecPublishProject); itmProjectPublish.Command:=GetCommand(ecPublishProject);
itmProjectInspector.Command:=GetCommand(ecProjectInspector); itmProjectInspector.Command:=GetCommand(ecProjectInspector);
itmProjectOptions.Command:=GetCommand(ecProjectOptions); itmProjectOptions.Command:=GetCommand(ecProjectOptions);