project groups: copy file name action

git-svn-id: trunk@50398 -
This commit is contained in:
mattias 2015-11-18 15:53:42 +00:00
parent 933b0120fb
commit 4cf9502f8f
4 changed files with 85 additions and 15 deletions

View File

@ -192,7 +192,8 @@ var
cmdTargetOpen, cmdTargetOpen,
cmdTargetRun, cmdTargetRun,
cmdTargetProperties, cmdTargetProperties,
cmdTargetUninstall: TIDEMenuCommand; cmdTargetUninstall,
cmdTargetCopyFilename: TIDEMenuCommand;
OpenRecentProjectGroupSubMenu: TIDEMenuSection; OpenRecentProjectGroupSubMenu: TIDEMenuSection;

View File

@ -970,16 +970,58 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
OnExecute = ATargetOpenExecute OnExecute = ATargetOpenExecute
OnUpdate = ATargetOpenUpdate OnUpdate = ATargetOpenUpdate
end end
object ATargetCopyFilename: TAction
Category = 'TargetAction'
Caption = 'Copy Filename'
OnExecute = ATargetCopyFilenameExecute
OnUpdate = ATargetCopyFilenameUpdate
end
end end
object PopupMenuTree: TPopupMenu object PopupMenuTree: TPopupMenu
Images = ImageListMain Images = ImageListMain
left = 208 left = 208
top = 152 top = 152
object PMICopyFilenameMenuItem: TMenuItem object PMICopyFilenameMenuItem: TMenuItem
Caption = 'Copy Filename' Action = ATargetCopyFilename
end end
object PMIRunMenuItem: TMenuItem object PMIRunMenuItem: TMenuItem
Action = ATargetRun Action = ATargetRun
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
000004733AFF21824FFF638272FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFF7ACFA4FF2C8C5AFF3D7659FFAEAEAEFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFF82D8ACFF76D6A6FF3C9D6AFF27744CFFACAEADFF000000000000
0000000000000000000000000000000000000000000000000000000000000000
000009773FFF83DBAEFF1FC671FF72DEA7FF4BB27FFF177445FFA8ADAAFF0000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFF83DCAFFF11C369FF1ACC73FF69DFA3FF5AC28DFF137643FF9EA7
A3FF000000000000000000000000000000000000000000000000000000000000
000004733AFFA9DCC1FF10BD65FF11C167FF13C269FF59D395FF67C998FF167C
47FF889C92FF0000000000000000000000000000000000000000000000000000
000004733AFFA9DCC1FF0DB35EFF0EB660FF0EB660FF0DB45FFF47C484FF70CA
9CFF1D824DFF678C79FF00000000000000000000000000000000000000000000
000004733AFFA9DCC1FF0CAA58FF12AE5EFF15AF60FF16AD61FF13AA5DFF3AB6
77FF75C79DFF288957FF4E8367FF000000000000000000000000000000000000
000004733AFFA9DCC1FF2EAD6BFF2BAD6AFF27AB68FF22A964FF1CA55FFF41B2
78FF78C69FFF298858FF678C79FF000000000000000000000000000000000000
000004733AFFA9DCC1FF36AD70FF32AC6DFF2DAA6AFF28A866FF58BC89FF78C5
9DFF1F804EFF839A8EFF00000000000000000000000000000000000000000000
000004733AFFA9DCC1FF3EB176FF3AAF73FF36AE70FF6FC598FF71BF97FF187B
49FFA6B0ABFF0000000000000000000000000000000000000000000000000000
000004733AFFA9DCC1FF45B47BFF47B47CFF82CCA6FF67B68CFF177745FFC1C5
C3FF000000000000000000000000000000000000000000000000000000000000
000004733AFFA5DABFFF57BB87FF90D2B0FF5BAB82FF23774CFFD4D5D4FF0000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFFA9DCC1FF9BD5B7FF4C9F73FF3D7D5CFF00000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFFA4D9BEFF3D9366FF5F8873FF0000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000004733AFF2D8859FF859C90FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
end end
object PMICompile: TMenuItem object PMICompile: TMenuItem
Action = ATargetCompile Action = ATargetCompile

View File

@ -14,9 +14,9 @@ interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus, Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
ActnList, LCLProc, LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf, ActnList, LCLProc, Clipbrd, LazIDEIntf, PackageIntf, ProjectIntf,
MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils, LazLogger, ProjectGroupIntf, MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils,
ProjectGroupStrConst, ProjectGroup; LazLogger, ProjectGroupStrConst, ProjectGroup;
type type
TNodeType = (ntUnknown, TNodeType = (ntUnknown,
@ -45,6 +45,7 @@ type
{ TProjectGroupEditorForm } { TProjectGroupEditorForm }
TProjectGroupEditorForm = class(TForm) TProjectGroupEditorForm = class(TForm)
ATargetCopyFilename: TAction;
AProjectGroupAddExisting: TAction; AProjectGroupAddExisting: TAction;
ATargetCompile: TAction; ATargetCompile: TAction;
ATargetCompileClean: TAction; ATargetCompileClean: TAction;
@ -99,6 +100,8 @@ type
procedure ATargetCompileUpdate(Sender: TObject); procedure ATargetCompileUpdate(Sender: TObject);
procedure AProjectGroupDeleteExecute(Sender: TObject); procedure AProjectGroupDeleteExecute(Sender: TObject);
procedure AProjectGroupDeleteUpdate(Sender: TObject); procedure AProjectGroupDeleteUpdate(Sender: TObject);
procedure ATargetCopyFilenameExecute(Sender: TObject);
procedure ATargetCopyFilenameUpdate(Sender: TObject);
procedure ATargetInstallExecute(Sender: TObject); procedure ATargetInstallExecute(Sender: TObject);
procedure ATargetInstallUpdate(Sender: TObject); procedure ATargetInstallUpdate(Sender: TObject);
procedure ATargetOpenExecute(Sender: TObject); procedure ATargetOpenExecute(Sender: TObject);
@ -499,6 +502,7 @@ begin
SetItem(cmdTargetUnInstall,@ATargetUnInstallExecute); SetItem(cmdTargetUnInstall,@ATargetUnInstallExecute);
SetItem(cmdTargetLater,@ATargetLaterExecute); SetItem(cmdTargetLater,@ATargetLaterExecute);
SetItem(cmdTargetEarlier,@ATargetEarlierExecute); SetItem(cmdTargetEarlier,@ATargetEarlierExecute);
SetItem(cmdTargetCopyFilename,@ATargetCopyFilenameExecute);
end; end;
procedure TProjectGroupEditorForm.FormDestroy(Sender: TObject); procedure TProjectGroupEditorForm.FormDestroy(Sender: TObject);
@ -718,8 +722,8 @@ procedure TProjectGroupEditorForm.AProjectGroupDeleteExecute(Sender: TObject);
Var Var
T: TPGCompileTarget; T: TPGCompileTarget;
begin begin
if FProjectGroup=nil then exit;
T:=SelectedTarget; T:=SelectedTarget;
if T=nil then exit;
FProjectGroup.RemoveTarget(T); FProjectGroup.RemoveTarget(T);
end; end;
@ -727,12 +731,36 @@ procedure TProjectGroupEditorForm.AProjectGroupDeleteUpdate(Sender: TObject);
Var Var
T: TPGCompileTarget; T: TPGCompileTarget;
begin begin
if FProjectGroup=nil then exit;
T:=SelectedTarget; T:=SelectedTarget;
(Sender as TAction).Enabled:=(T<>Nil) and (T<>ProjectGroup.CompileTarget) and Not T.Removed; (Sender as TAction).Enabled:=(T<>Nil) and (T<>ProjectGroup.CompileTarget) and Not T.Removed;
UpdateIDEMenuCommandFromAction(Sender,cmdTargetRemove); UpdateIDEMenuCommandFromAction(Sender,cmdTargetRemove);
end; end;
procedure TProjectGroupEditorForm.ATargetCopyFilenameExecute(Sender: TObject);
var
ND: TNodeData;
aFilename: String;
begin
ND:=SelectedNodeData;
if ND=nil then exit;
if ND.Target<>nil then
aFilename:=ND.Target.Filename
else if ND.NodeType=ntFile then
aFilename:=ND.Value
else
exit;
Clipboard.AsText:=aFilename;
end;
procedure TProjectGroupEditorForm.ATargetCopyFilenameUpdate(Sender: TObject);
var
ND: TNodeData;
begin
ND:=SelectedNodeData;
(Sender as TAction).Enabled:=(ND<>nil) and (ND.NodeType in [ntTarget,ntProjectGroup,ntFile]);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetCopyFilename);
end;
procedure TProjectGroupEditorForm.ATargetInstallExecute(Sender: TObject); procedure TProjectGroupEditorForm.ATargetInstallExecute(Sender: TObject);
begin begin
Perform(taInstall); Perform(taInstall);
@ -740,7 +768,7 @@ end;
procedure TProjectGroupEditorForm.ATargetInstallUpdate(Sender: TObject); procedure TProjectGroupEditorForm.ATargetInstallUpdate(Sender: TObject);
begin begin
AllowPerform(taInstall,Sender as Taction); AllowPerform(taInstall,Sender as TAction);
UpdateIDEMenuCommandFromAction(Sender,cmdTargetInstall); UpdateIDEMenuCommandFromAction(Sender,cmdTargetInstall);
end; end;
@ -793,7 +821,7 @@ begin
For I:=0 to TVPG.Items.Count-1 do For I:=0 to TVPG.Items.Count-1 do
begin begin
N:=TVPG.Items[I]; N:=TVPG.Items[I];
TNodeData(N.Data).Free; // Would be nide to have a FreeAndNilData method in TTreeNode. TNodeData(N.Data).Free; // Would be nice to have a FreeAndNilData method in TTreeNode.
N.Data:=Nil; N.Data:=Nil;
end; end;
end; end;

View File

@ -34,12 +34,11 @@ begin
cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean);// ToDo cmdTargetCompileClean:=RegisterIDEMenuCommand(Section,'TargetCompileClean',lisTargetCompileClean);// ToDo
// ToDo: clean ... -> clean up dialog // ToDo: clean ... -> clean up dialog
// ToDo: compile all from here // ToDo: compile all from here
// ToDo: compile all clean from here
// ToDo: set build mode of all projects // ToDo: set build mode of all projects
Section:=RegisterIDEMenuSection(Root,'AddRemove'); Section:=RegisterIDEMenuSection(Root,'AddRemove');
PGEditMenuSectionAddRemove:=Section; PGEditMenuSectionAddRemove:=Section;
cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd);// ToDo cmdTargetAdd:=RegisterIDEMenuCommand(Section,'TargetAdd',lisTargetAdd);
cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);// ToDo cmdTargetRemove:=RegisterIDEMenuCommand(Section,'TargetRemove',lisTargetRemove);// ToDo
Section:=RegisterIDEMenuSection(Root,'Use'); Section:=RegisterIDEMenuSection(Root,'Use');
@ -48,17 +47,17 @@ begin
cmdTargetUninstall:=RegisterIDEMenuCommand(Section,'TargetUninstall',lisTargetUninstall);// ToDo cmdTargetUninstall:=RegisterIDEMenuCommand(Section,'TargetUninstall',lisTargetUninstall);// ToDo
cmdTargetEarlier:=RegisterIDEMenuCommand(Section,'TargetEarlier',lisTargetEarlier);// ToDo: Ctrl+Up cmdTargetEarlier:=RegisterIDEMenuCommand(Section,'TargetEarlier',lisTargetEarlier);// ToDo: Ctrl+Up
cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down cmdTargetLater:=RegisterIDEMenuCommand(Section,'TargetLater',lisTargetLater);// ToDo: Ctrl+Down
cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate);// ToDo cmdTargetActivate:=RegisterIDEMenuCommand(Section,'TargetActivate',lisTargetActivate);
cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen);// ToDo cmdTargetOpen:=RegisterIDEMenuCommand(Section,'TargetOpen',lisTargetOpen);
// ToDo: Save // ToDo: Save
// ToDo: Close (package editor) // ToDo: Close (package editor)
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);// ToDo cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo
Section:=RegisterIDEMenuSection(Root,'Misc'); Section:=RegisterIDEMenuSection(Root,'Misc');
PGEditMenuSectionMisc:=Section; PGEditMenuSectionMisc:=Section;
// ToDo: Copy filename cmdTargetCopyFilename:=RegisterIDEMenuCommand(Section,'CopyFilename',lisTargetCopyFilename);
// ToDo: View source (project) // ToDo: View source (project)
// ToDo: find in files // ToDo: find in files