project groups: added ide commands

git-svn-id: trunk@54383 -
This commit is contained in:
mattias 2017-03-11 09:33:56 +00:00
parent 8ea54156de
commit 2037baa360
10 changed files with 145 additions and 91 deletions

View File

@ -235,6 +235,10 @@ msgstr ""
msgid "Reload"
msgstr "Neu laden"
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr "Speichern unter ..."

View File

@ -234,6 +234,10 @@ msgstr ""
msgid "Reload"
msgstr "Recharger"
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr "Enregistrer sous..."

View File

@ -234,6 +234,10 @@ msgstr ""
msgid "Reload"
msgstr "Újratöltés"
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr "Mentés másként ..."

View File

@ -224,6 +224,10 @@ msgstr ""
msgid "Reload"
msgstr "Ricarica"
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr "Salva come ..."

View File

@ -219,6 +219,10 @@ msgstr ""
msgid "Reload"
msgstr ""
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr ""

View File

@ -234,6 +234,10 @@ msgstr ""
msgid "Reload"
msgstr "Перезагрузить"
#: projectgroupstrconst.lisprojectgroups
msgid "Project Groups"
msgstr ""
#: projectgroupstrconst.lisprojectgroupsaveascaption
msgid "Save As ..."
msgstr "Сохранить как ..."

View File

@ -210,35 +210,44 @@ var
IDEProjectGroupManager: TIDEProjectGroupManager;
ProjectGroupMenuRoot: TIDEMenuSection = nil;
ProjectGroupEditorMenuRoot: TIDEMenuSection = nil;
PGEditMenuSectionFiles, // e.g. sort files, clean up files
PGEditMenuSectionAddRemove, // e.g. add unit, add dependency
PGEditMenuSectionCompile, // e.g. build clean, create Makefile
PGEditMenuSectionUse, // Target up/down
PGEditMenuSectionMisc: TIDEMenuSection; // e.g. options
PGOpenRecentSubMenu: TIDEMenuSection;
const
ProjectGroupCmdCategoryName = 'ProjectGroups';
var
cmdOpenProjectGroup,
cmdSaveProjectGroup,
cmdSaveProjectGroupAs,
cmdCreateProjectGroup,
PGCmdCategory: TIDECommandCategory;
cmdTargetAdd,
cmdTargetRemove,
cmdTargetEarlier,
cmdTargetActivate,
cmdTargetLater,
cmdTargetCompile,
cmdTargetCompileClean,
cmdTargetCompileFromHere,
cmdTargetInstall,
cmdTargetOpen,
cmdTargetRun,
cmdTargetProperties,
cmdTargetUninstall,
cmdTargetCopyFilename: TIDEMenuCommand;
// IDE main bar menu items
CmdOpenProjectGroup: TIDECommand;
MnuCmdOpenProjectGroup: TIDEMenuCommand;
CmdSaveProjectGroup: TIDECommand;
MnuCmdSaveProjectGroup: TIDEMenuCommand;
CmdSaveProjectGroupAs: TIDECommand;
MnuCmdSaveProjectGroupAs: TIDEMenuCommand;
CmdNewProjectGroup: TIDECommand;
MnuCmdNewProjectGroup: TIDEMenuCommand;
OpenRecentProjectGroupSubMenu: TIDEMenuSection;
// editor menu items
MnuCmdTargetAdd,
MnuCmdTargetRemove,
MnuCmdTargetEarlier,
MnuCmdTargetActivate,
MnuCmdTargetLater,
MnuCmdTargetCompile,
MnuCmdTargetCompileClean,
MnuCmdTargetCompileFromHere,
MnuCmdTargetInstall,
MnuCmdTargetOpen,
MnuCmdTargetRun,
MnuCmdTargetProperties,
MnuCmdTargetUninstall,
MnuCmdTargetCopyFilename: TIDEMenuCommand;
function LoadXML(aFilename: string; Quiet: boolean): TXMLConfig;
function CreateXML(aFilename: string; Quiet: boolean): TXMLConfig;
@ -470,17 +479,17 @@ begin
i:=0;
while i<Options.RecentProjectGroups.Count do begin
aFilename:=Options.RecentProjectGroups[i];
if i<OpenRecentProjectGroupSubMenu.Count then begin
Item:=OpenRecentProjectGroupSubMenu[i];
if i<PGOpenRecentSubMenu.Count then begin
Item:=PGOpenRecentSubMenu[i];
Item.Caption:=aFilename;
end
else begin
Item:=RegisterIDEMenuCommand(OpenRecentProjectGroupSubMenu,'OpenRecentProjectGroup'+IntToStr(i),aFilename,@DoOpenRecentClick);
Item:=RegisterIDEMenuCommand(PGOpenRecentSubMenu,'OpenRecentProjectGroup'+IntToStr(i),aFilename,@DoOpenRecentClick);
end;
inc(i);
end;
while i<OpenRecentProjectGroupSubMenu.Count do
OpenRecentProjectGroupSubMenu[i].Free;
while i<PGOpenRecentSubMenu.Count do
PGOpenRecentSubMenu[i].Free;
end;
procedure TIDEProjectGroupManager.DoNewClick(Sender: TObject);
@ -492,7 +501,7 @@ begin
Exit;
FreeAndNil(FProjectGroup);
FProjectGroup:=TIDEProjectGroup.Create(nil);
cmdSaveProjectGroupAs.Enabled:=true;
MnuCmdSaveProjectGroupAs.Enabled:=true;
// add current project
AProject:=LazarusIDE.ActiveProject;
@ -592,7 +601,7 @@ begin
FProjectGroup.LoadFromFile(AOptions);
if not (pgloSkipDialog in AOptions) then
ShowProjectGroupEditor;
cmdSaveProjectGroupAs.Enabled:=true;
MnuCmdSaveProjectGroupAs.Enabled:=true;
end;
procedure TIDEProjectGroupManager.SaveProjectGroup;

View File

@ -376,7 +376,7 @@ procedure TProjectGroupEditorForm.AProjectGroupSaveUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=(FProjectGroup<>nil)
and (FProjectGroup.Modified or (FProjectGroup.FileName=''));
UpdateIDEMenuCommandFromAction(Sender,cmdSaveProjectGroup);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdSaveProjectGroup);
end;
procedure TProjectGroupEditorForm.ATargetEarlierExecute(Sender: TObject);
@ -411,7 +411,7 @@ begin
end;
end;
(Sender as TAction).Enabled:=I>0;
UpdateIDEMenuCommandFromAction(Sender,cmdTargetEarlier);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetEarlier);
end;
procedure TProjectGroupEditorForm.ATargetLaterExecute(Sender: TObject);
@ -447,7 +447,7 @@ begin
I:=PG.IndexOfTarget(T.Target);
end;
(Sender as TAction).Enabled:=(PG<>nil) and (I+1<PG.TargetCount);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetLater);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetLater);
end;
procedure TProjectGroupEditorForm.ATargetUninstallExecute(Sender: TObject);
@ -458,7 +458,7 @@ end;
procedure TProjectGroupEditorForm.ATargetUninstallUpdate(Sender: TObject);
begin
AllowPerform(taUninstall,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetUninstall);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetUninstall);
end;
procedure TProjectGroupEditorForm.FormCloseQuery(Sender: TObject;
@ -500,16 +500,16 @@ begin
if ProjectGroupEditorForm=nil then
ProjectGroupEditorForm:=Self;
PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items;
SetItem(cmdTargetAdd,@AProjectGroupAddExistingExecute);
SetItem(cmdTargetRemove,@AProjectGroupDeleteExecute);
SetItem(cmdTargetCompile,@ATargetCompileExecute);
SetItem(cmdTargetCompileClean,@ATargetCompileCleanExecute);
SetItem(cmdTargetCompileFromHere,@ATargetCompileFromHereExecute);
SetItem(cmdTargetInstall,@ATargetInstallExecute);
SetItem(cmdTargetUnInstall,@ATargetUnInstallExecute);
SetItem(cmdTargetLater,@ATargetLaterExecute);
SetItem(cmdTargetEarlier,@ATargetEarlierExecute);
SetItem(cmdTargetCopyFilename,@ATargetCopyFilenameExecute);
SetItem(MnuCmdTargetAdd,@AProjectGroupAddExistingExecute);
SetItem(MnuCmdTargetRemove,@AProjectGroupDeleteExecute);
SetItem(MnuCmdTargetCompile,@ATargetCompileExecute);
SetItem(MnuCmdTargetCompileClean,@ATargetCompileCleanExecute);
SetItem(MnuCmdTargetCompileFromHere,@ATargetCompileFromHereExecute);
SetItem(MnuCmdTargetInstall,@ATargetInstallExecute);
SetItem(MnuCmdTargetUninstall,@ATargetUnInstallExecute);
SetItem(MnuCmdTargetLater,@ATargetLaterExecute);
SetItem(MnuCmdTargetEarlier,@ATargetEarlierExecute);
SetItem(MnuCmdTargetCopyFilename,@ATargetCopyFilenameExecute);
end;
procedure TProjectGroupEditorForm.FormDestroy(Sender: TObject);
@ -782,7 +782,7 @@ Var
begin
T:=SelectedTarget;
(Sender as TAction).Enabled:=Assigned(T) and Not T.Active;
UpdateIDEMenuCommandFromAction(Sender,cmdTargetActivate);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetActivate);
end;
procedure TProjectGroupEditorForm.ATargetActivateExecute(Sender: TObject);
@ -817,7 +817,7 @@ end;
procedure TProjectGroupEditorForm.AProjectGroupSaveAsUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled:=(FProjectGroup<>nil);
UpdateIDEMenuCommandFromAction(Sender,cmdSaveProjectGroupAs);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdSaveProjectGroupAs);
end;
procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject);
@ -828,7 +828,7 @@ end;
procedure TProjectGroupEditorForm.ATargetCompileCleanUpdate(Sender: TObject);
begin
AllowPerform(taCompileClean,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompileClean);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetCompileClean);
end;
function TProjectGroupEditorForm.AllowPerform(ATargetAction: TPGTargetAction; AAction: TAction = Nil): Boolean;
@ -887,13 +887,13 @@ end;
procedure TProjectGroupEditorForm.ATargetCompileFromHereUpdate(Sender: TObject);
begin
AllowPerform(taCompileFromHere,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompile);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetCompile);
end;
procedure TProjectGroupEditorForm.ATargetCompileUpdate(Sender: TObject);
begin
AllowPerform(taCompile,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetCompile);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetCompile);
end;
procedure TProjectGroupEditorForm.AProjectGroupDeleteExecute(Sender: TObject);
@ -911,7 +911,7 @@ Var
begin
T:=SelectedTarget;
(Sender as TAction).Enabled:=(T<>nil) and (T<>ProjectGroup.CompileTarget) and Not T.Removed;
UpdateIDEMenuCommandFromAction(Sender,cmdTargetRemove);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetRemove);
end;
procedure TProjectGroupEditorForm.ATargetCopyFilenameExecute(Sender: TObject);
@ -937,7 +937,7 @@ begin
ND:=SelectedNodeData;
(Sender as TAction).Enabled:=(ND<>nil)
and ((ND.Target<>nil) or (ND.NodeType in [ntFile]));
UpdateIDEMenuCommandFromAction(Sender,cmdTargetCopyFilename);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetCopyFilename);
end;
procedure TProjectGroupEditorForm.ATargetInstallExecute(Sender: TObject);
@ -948,7 +948,7 @@ end;
procedure TProjectGroupEditorForm.ATargetInstallUpdate(Sender: TObject);
begin
AllowPerform(taInstall,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetInstall);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetInstall);
end;
procedure TProjectGroupEditorForm.ATargetOpenExecute(Sender: TObject);
@ -959,7 +959,7 @@ end;
procedure TProjectGroupEditorForm.ATargetOpenUpdate(Sender: TObject);
begin
AllowPerform(taOpen,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetOpen);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetOpen);
end;
procedure TProjectGroupEditorForm.ATargetPropertiesExecute(Sender: TObject);
@ -970,7 +970,7 @@ end;
procedure TProjectGroupEditorForm.ATargetPropertiesUpdate(Sender: TObject);
begin
AllowPerform(taSettings,Sender as Taction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetProperties);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetProperties);
end;
procedure TProjectGroupEditorForm.ATargetRunExecute(Sender: TObject);
@ -981,7 +981,7 @@ end;
procedure TProjectGroupEditorForm.ATargetRunUpdate(Sender: TObject);
begin
AllowPerform(taRun,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetRun);
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetRun);
end;
procedure TProjectGroupEditorForm.AProjectGroupSaveAsExecute(Sender: TObject);

View File

@ -28,6 +28,7 @@ Resourcestring
lisTargetAdd = 'Add target';
lisTargetRemove = 'Remove target';
lisTargetCompile = 'Compile';
lisProjectGroups = 'Project Groups';
lisTargetCompileClean = 'Compile clean';
lisTargetCompileFromHere = 'Compile from here';
lisTargetInstall = 'Install';

View File

@ -5,10 +5,10 @@ unit RegProjectGroup;
interface
uses
Classes, SysUtils, ProjectGroupIntf, MenuIntf,
Classes, SysUtils, ProjectGroupIntf, MenuIntf, IDECommands,
ProjectGroupStrConst, ProjectGroup, ProjectGroupEditor;
procedure RegisterStandardProjectGroupMenuItems;
procedure RegisterProjectGroupEditorMenuItems;
procedure Register;
implementation
@ -16,43 +16,51 @@ implementation
const
ProjectGroupEditorMenuRootName = 'ProjectGroupEditorMenu';
procedure RegisterStandardProjectGroupMenuItems;
var
Section,Root : TIDEMenuSection;
begin
Root:=RegisterIDEMenuRoot(ProjectGroupEditorMenuRootName);
ProjectGroupMenuRoot:=Root;
PGEditMenuSectionFiles:=RegisterIDEMenuSection(Root,'File');
procedure RegisterProjectGroupEditorMenuItems;
Section:=RegisterIDEMenuSection(Root,'Compile');
PGEditMenuSectionCompile:=Section;
cmdTargetCompile:=RegisterIDEMenuCommand(Section,'TargetCompile',lisTargetCompile);
cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean);
cmdTargetCompileFromHere:=RegisterIDEMenuCommand(Section,'TargetCompileFromHere',lisTargetCompileFromHere);
procedure RegisterMenuCmd(out MenuCmd: TIDEMenuCommand;
Section: TIDEMenuSection; const Name, Caption: string);
begin
MenuCmd:=RegisterIDEMenuCommand(Section,Name,Caption);
end;
var
MnuRoot, MnuSection: TIDEMenuSection;
begin
MnuRoot:=RegisterIDEMenuRoot(ProjectGroupEditorMenuRootName);
ProjectGroupEditorMenuRoot:=MnuRoot;
PGEditMenuSectionFiles:=RegisterIDEMenuSection(MnuRoot,'File');
MnuSection:=RegisterIDEMenuSection(MnuRoot,'Compile');
PGEditMenuSectionCompile:=MnuSection;
RegisterMenuCmd(MnuCmdTargetCompile,MnuSection,'TargetCompile',lisTargetCompile);
RegisterMenuCmd(MnuCmdTargetCompileClean,MnuSection,'TargetCompileClean',lisTargetCompileClean);
RegisterMenuCmd(MnuCmdTargetCompileFromHere,MnuSection,'TargetCompileFromHere',lisTargetCompileFromHere);
// ToDo: clean ... -> clean up dialog
// ToDo: set build mode of all projects
Section:=RegisterIDEMenuSection(Root,'AddRemove');
PGEditMenuSectionAddRemove:=Section;
cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd);
cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);
MnuSection:=RegisterIDEMenuSection(MnuRoot,'AddRemove');
PGEditMenuSectionAddRemove:=MnuSection;
RegisterMenuCmd(MnuCmdTargetAdd,MnuSection,'TargetAdd',lisTargetAdd);
RegisterMenuCmd(MnuCmdTargetRemove,MnuSection,'TargetRemove',lisTargetRemove);
// ToDo: re-add
Section:=RegisterIDEMenuSection(Root,'Use');
PGEditMenuSectionUse:=Section;
cmdTargetInstall:=RegisterIDEMenuCommand(Section,'TargetInstall',lisTargetInstall);// ToDo
cmdTargetUninstall:=RegisterIDEMenuCommand(Section,'TargetUninstall',lisTargetUninstall);// ToDo
cmdTargetEarlier:=RegisterIDEMenuCommand(Section,'TargetEarlier',lisTargetEarlier);// ToDo: Ctrl+Up
cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down
cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate);
cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen);
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);
MnuSection:=RegisterIDEMenuSection(MnuRoot,'Use');
PGEditMenuSectionUse:=MnuSection;
RegisterMenuCmd(MnuCmdTargetInstall,MnuSection,'TargetInstall',lisTargetInstall);// ToDo
RegisterMenuCmd(MnuCmdTargetUninstall,MnuSection,'TargetUninstall',lisTargetUninstall);// ToDo
RegisterMenuCmd(MnuCmdTargetEarlier,MnuSection,'TargetEarlier',lisTargetEarlier);// ToDo: Ctrl+Up
RegisterMenuCmd(MnuCmdTargetLater,MnuSection,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down
RegisterMenuCmd(MnuCmdTargetActivate,MnuSection,'TargetActivate',lisTargetActivate);
RegisterMenuCmd(MnuCmdTargetOpen,MnuSection,'TargetOpen',lisTargetOpen);
RegisterMenuCmd(MnuCmdTargetRun,MnuSection,'TargetRun',lisTargetRun);
RegisterMenuCmd(MnuCmdTargetProperties,MnuSection,'TargetProperties',lisTargetProperties);
Section:=RegisterIDEMenuSection(Root,'Misc');
PGEditMenuSectionMisc:=Section;
MnuSection:=RegisterIDEMenuSection(MnuRoot,'Misc');
PGEditMenuSectionMisc:=MnuSection;
cmdTargetCopyFilename:=RegisterIDEMenuCommand(Section,'CopyFilename',lisTargetCopyFilename);
RegisterMenuCmd(MnuCmdTargetCopyFilename,MnuSection,'CopyFilename',lisTargetCopyFilename);
// ToDo: View source (project)
// ToDo: find in files
@ -62,23 +70,35 @@ begin
end;
procedure Register;
procedure RegisterMnuCmd(out Cmd: TIDECommand; out MenuCmd: TIDEMenuCommand;
Section: TIDEMenuSection; const Name, Caption: string;
const OnExecuteMethod: TNotifyEvent);
begin
Cmd:=RegisterIDECommand(PGCmdCategory,Name,Caption,OnExecuteMethod);
MenuCmd:=RegisterIDEMenuCommand(Section,Name,Caption,nil,nil,Cmd);
end;
begin
RegisterStandardProjectGroupMenuItems;
IDEProjectGroupManager:=TIDEProjectGroupManager.Create;
IDEProjectGroupManager.Options.LoadSafe;
cmdCreateProjectGroup:=RegisterIDEMenuCommand(itmProjectNewSection,
PGCmdCategory:=RegisterIDECommandCategory(nil,ProjectGroupCmdCategoryName,lisProjectGroups);
RegisterMnuCmd(CmdNewProjectGroup,MnuCmdNewProjectGroup,itmProjectNewSection,
'NewProjectGroup',lisNewProjectGroupMenuC,@IDEProjectGroupManager.DoNewClick);
cmdOpenProjectGroup:=RegisterIDEMenuCommand(itmProjectOpenSection,
RegisterMnuCmd(CmdOpenProjectGroup,MnuCmdOpenProjectGroup,itmProjectOpenSection,
'OpenProjectGroup',lisOpenProjectGroup,@IDEProjectGroupManager.DoOpenClick);
OpenRecentProjectGroupSubMenu:=RegisterIDESubMenu(itmProjectOpenSection,
PGOpenRecentSubMenu:=RegisterIDESubMenu(itmProjectOpenSection,
'OpenRecentProjectGroup',lisOpenRecentProjectGroup);
cmdSaveProjectGroup:=RegisterIDEMenuCommand(itmProjectSaveSection,
RegisterMnuCmd(CmdSaveProjectGroup,MnuCmdSaveProjectGroup,itmProjectSaveSection,
'SaveProjectGroup',lisSaveProjectGroup,@IDEProjectGroupManager.DoSaveClick);
cmdSaveProjectGroup.Enabled:=false;
cmdSaveProjectGroupAs:=RegisterIDEMenuCommand(itmProjectSaveSection,
MnuCmdSaveProjectGroup.Enabled:=false;
RegisterMnuCmd(CmdSaveProjectGroupAs,MnuCmdSaveProjectGroupAs,itmProjectSaveSection,
'SaveProjectGroupAs',lisSaveProjectGroupAs,@IDEProjectGroupManager.DoSaveAsClick);
cmdSaveProjectGroupAs.Enabled:=false;
MnuCmdSaveProjectGroupAs.Enabled:=false;
RegisterProjectGroupEditorMenuItems;
IDEProjectGroupManager.UpdateRecentProjectGroupMenu;