projectgroups: menu item Options, switch show target filenames

git-svn-id: trunk@61510 -
This commit is contained in:
mattias 2019-07-02 15:27:36 +00:00
parent 61add3f64e
commit 05fe93aa61
16 changed files with 99 additions and 29 deletions

View File

@ -175,6 +175,10 @@ msgstr "Projektgruppe öffnen ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Aktuelle Projektgruppe öffnen" msgstr "Aktuelle Projektgruppe öffnen"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Anderes Projekt" msgstr "Anderes Projekt"

View File

@ -170,6 +170,10 @@ msgstr "Ouvrir le groupe de projets..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Ouvrir un groupe de projets récent" msgstr "Ouvrir un groupe de projets récent"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Autre projet" msgstr "Autre projet"

View File

@ -174,6 +174,10 @@ msgstr "Projektcsoport megnyitása ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Legutóbbi projektcsoport megnyitása" msgstr "Legutóbbi projektcsoport megnyitása"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Projekt megnyitása" msgstr "Projekt megnyitása"

View File

@ -170,6 +170,10 @@ msgstr "Apri gruppo di progetti ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Apri gruppo di progetti recente" msgstr "Apri gruppo di progetti recente"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Altro progetto" msgstr "Altro progetto"

View File

@ -175,6 +175,10 @@ msgstr "Atverti projekto grupę…"
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Atverti paskiausiai naudotą projekto grupę" msgstr "Atverti paskiausiai naudotą projekto grupę"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Kitas projektas" msgstr "Kitas projektas"

View File

@ -157,6 +157,10 @@ msgstr ""
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "" msgstr ""
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "" msgstr ""

View File

@ -170,6 +170,10 @@ msgstr "Abrir Grupo Projeto ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Abrir Grupo Projeto Recente" msgstr "Abrir Grupo Projeto Recente"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Outro Projeto" msgstr "Outro Projeto"

View File

@ -170,6 +170,10 @@ msgstr "Открыть группу проектов ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Открыть недавнюю группу проектов" msgstr "Открыть недавнюю группу проектов"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Другой проект" msgstr "Другой проект"

View File

@ -171,6 +171,10 @@ msgstr "Відкрити групу проектів ..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "Відкрити нещодавню групу проектів" msgstr "Відкрити нещодавню групу проектів"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "Інший проект" msgstr "Інший проект"

View File

@ -175,6 +175,10 @@ msgstr "打开工程组..."
msgid "Open Recent Project Group" msgid "Open Recent Project Group"
msgstr "打开最近工程组" msgstr "打开最近工程组"
#: projectgroupstrconst.lisoptions
msgid "Options"
msgstr ""
#: projectgroupstrconst.lisotherproject #: projectgroupstrconst.lisotherproject
msgid "Other Project" msgid "Other Project"
msgstr "其他工程" msgstr "其他工程"

View File

@ -13,7 +13,7 @@ uses
// LCL // LCL
Forms, StdCtrls, Dialogs, Forms, StdCtrls, Dialogs,
// LazUtils // LazUtils
LazFileCache, LazFileUtils, LazFileCache, LazFileUtils, LazLoggerBase,
// IdeIntf // IdeIntf
IDEOptionsIntf, IDEOptEditorIntf, ProjectGroup; IDEOptionsIntf, IDEOptEditorIntf, ProjectGroup;
@ -61,10 +61,10 @@ var
begin begin
Opts:=IDEProjectGroupManager.Options; Opts:=IDEProjectGroupManager.Options;
OpenLastGroupOnStartCheckBox.Checked:=Opts.OpenLastGroupOnStart;
FLastOpenLastGroupOnStart:=Opts.OpenLastGroupOnStart; FLastOpenLastGroupOnStart:=Opts.OpenLastGroupOnStart;
ShowTargetPathsCheckBox.Checked:=Opts.ShowTargetPaths; OpenLastGroupOnStartCheckBox.Checked:=FLastOpenLastGroupOnStart;
FLastShowTargetPaths:=Opts.ShowTargetPaths; FLastShowTargetPaths:=Opts.ShowTargetPaths;
ShowTargetPathsCheckBox.Checked:=FLastShowTargetPaths;
end; end;
procedure TProjGrpOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions); procedure TProjGrpOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
@ -77,8 +77,8 @@ begin
if Opts.Modified then begin if Opts.Modified then begin
Opts.SaveSafe; Opts.SaveSafe;
if IDEProjectGroupManager.Editor<>nil then if IDEProjectGroupManager.OnEditorOptionsChanged<>nil then
IDEProjectGroupManager.Editor.Invalidate; IDEProjectGroupManager.OnEditorOptionsChanged(true,true);
end; end;
end; end;

View File

@ -199,11 +199,14 @@ type
destructor Destroy; override; destructor Destroy; override;
end; end;
TEditorOptionsChangedEvent = procedure(Colors, NodeTexts: boolean) of object;
{ TIDEProjectGroupManager } { TIDEProjectGroupManager }
TIDEProjectGroupManager = Class(TProjectGroupManager) TIDEProjectGroupManager = Class(TProjectGroupManager)
private private
FIdleConnected: boolean; FIdleConnected: boolean;
FOnEditorOptionsChanged: TEditorOptionsChangedEvent;
FUndoList: TObjectList; // list of TPGUndoItem FUndoList: TObjectList; // list of TPGUndoItem
FRedoList: TObjectList; // list of TPGUndoItem FRedoList: TObjectList; // list of TPGUndoItem
FOptions: TIDEProjectGroupOptions; FOptions: TIDEProjectGroupOptions;
@ -240,6 +243,7 @@ type
public public
property Options: TIDEProjectGroupOptions read FOptions; property Options: TIDEProjectGroupOptions read FOptions;
property IdleConnected: boolean read FIdleConnected write SetIdleConnected; property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
property OnEditorOptionsChanged: TEditorOptionsChangedEvent read FOnEditorOptionsChanged write FOnEditorOptionsChanged;
end; end;
TEditProjectGroupHandler = procedure(Sender: TObject; AProjectGroup: TProjectGroup); TEditProjectGroupHandler = procedure(Sender: TObject; AProjectGroup: TProjectGroup);
@ -295,6 +299,7 @@ var
MnuCmdTargetCopyFilename: TIDEMenuCommand; MnuCmdTargetCopyFilename: TIDEMenuCommand;
MnuCmdProjGrpUndo: TIDEMenuCommand; MnuCmdProjGrpUndo: TIDEMenuCommand;
MnuCmdProjGrpRedo: TIDEMenuCommand; MnuCmdProjGrpRedo: TIDEMenuCommand;
MnuCmdProjGrpOptions: TIDEMenuCommand;
function LoadXML(aFilename: string; Quiet: boolean): TXMLConfig; function LoadXML(aFilename: string; Quiet: boolean): TXMLConfig;
function CreateXML(aFilename: string; Quiet: boolean): TXMLConfig; function CreateXML(aFilename: string; Quiet: boolean): TXMLConfig;

View File

@ -977,6 +977,9 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
object PMIRedo: TMenuItem object PMIRedo: TMenuItem
Action = AProjectGroupRedo Action = AProjectGroupRedo
end end
object PMIOptions: TMenuItem
Action = AProjectGroupOptions
end
end end
object ActionListMain: TActionList object ActionListMain: TActionList
Images = ImageListMain Images = ImageListMain
@ -1111,6 +1114,11 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
OnExecute = AProjectGroupRedoExecute OnExecute = AProjectGroupRedoExecute
OnUpdate = AProjectGroupRedoUpdate OnUpdate = AProjectGroupRedoUpdate
end end
object AProjectGroupOptions: TAction
Category = 'ProjectGroupActions'
Caption = 'Options'
OnExecute = AProjectGroupOptionsExecute
end
end end
object PopupMenuTree: TPopupMenu object PopupMenuTree: TPopupMenu
Images = ImageListMain Images = ImageListMain

View File

@ -22,7 +22,7 @@ uses
LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf, MenuIntf, IDEWindowIntf, LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf, MenuIntf, IDEWindowIntf,
IDEDialogs, IDEDialogs,
// ProjectGroups // ProjectGroups
ProjectGroupStrConst, ProjectGroup; ProjectGroupStrConst, ProjectGroup, PrjGrpOptionsFrm;
type type
TNodeType = ( TNodeType = (
@ -47,6 +47,7 @@ type
{ TProjectGroupEditorForm } { TProjectGroupEditorForm }
TProjectGroupEditorForm = class(TForm) TProjectGroupEditorForm = class(TForm)
AProjectGroupOptions: TAction;
AProjectGroupRedo: TAction; AProjectGroupRedo: TAction;
AProjectGroupUndo: TAction; AProjectGroupUndo: TAction;
AProjectGroupReload: TAction; AProjectGroupReload: TAction;
@ -69,6 +70,7 @@ type
AProjectGroupSave: TAction; AProjectGroupSave: TAction;
ActionListMain: TActionList; ActionListMain: TActionList;
ImageListMain: TImageList; ImageListMain: TImageList;
PMIOptions: TMenuItem;
PMIRedo: TMenuItem; PMIRedo: TMenuItem;
PMIUndo: TMenuItem; PMIUndo: TMenuItem;
PMICompileFromHere: TMenuItem; PMICompileFromHere: TMenuItem;
@ -104,6 +106,7 @@ type
procedure AProjectGroupAddExistingExecute(Sender: TObject); procedure AProjectGroupAddExistingExecute(Sender: TObject);
procedure AProjectGroupDeleteExecute(Sender: TObject); procedure AProjectGroupDeleteExecute(Sender: TObject);
procedure AProjectGroupDeleteUpdate(Sender: TObject); procedure AProjectGroupDeleteUpdate(Sender: TObject);
procedure AProjectGroupOptionsExecute(Sender: TObject);
procedure AProjectGroupRedoExecute(Sender: TObject); procedure AProjectGroupRedoExecute(Sender: TObject);
procedure AProjectGroupRedoUpdate(Sender: TObject); procedure AProjectGroupRedoUpdate(Sender: TObject);
procedure AProjectGroupReloadExecute(Sender: TObject); procedure AProjectGroupReloadExecute(Sender: TObject);
@ -154,6 +157,8 @@ type
FProjectGroupTVNode: TTreeNode; FProjectGroupTVNode: TTreeNode;
FActiveTarget: TPGCompileTarget; FActiveTarget: TPGCompileTarget;
// Project group callbacks // Project group callbacks
procedure IDEProjectGroupManagerEditorOptionsChanged(Colors,
NodeTexts: boolean);
procedure InitTVNode(Node: TTreeNode; Const ACaption: String; procedure InitTVNode(Node: TTreeNode; Const ACaption: String;
ANodeData: TNodeData); ANodeData: TNodeData);
procedure OnApplicationActivate(Sender: TObject); procedure OnApplicationActivate(Sender: TObject);
@ -206,6 +211,7 @@ type
public public
property ProjectGroup: TProjectGroup Read FProjectGroup Write SetProjectGroup; property ProjectGroup: TProjectGroup Read FProjectGroup Write SetProjectGroup;
property ActiveTarget: TPGCompileTarget Read GetActiveTarget; property ActiveTarget: TPGCompileTarget Read GetActiveTarget;
procedure UpdateNodeTexts;
end; end;
var var
@ -518,7 +524,9 @@ procedure TProjectGroupEditorForm.FormCreate(Sender: TObject);
begin begin
if ProjectGroupEditorForm=nil then if ProjectGroupEditorForm=nil then
ProjectGroupEditorForm:=Self; ProjectGroupEditorForm:=Self;
ProjectGroupManager.Editor:=Self; IDEProjectGroupManager.Editor:=Self;
IDEProjectGroupManager.OnEditorOptionsChanged:=@IDEProjectGroupManagerEditorOptionsChanged;
PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items; PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items;
SetItem(MnuCmdTargetAdd,@AProjectGroupAddExistingExecute); SetItem(MnuCmdTargetAdd,@AProjectGroupAddExistingExecute);
SetItem(MnuCmdTargetRemove,@AProjectGroupDeleteExecute); SetItem(MnuCmdTargetRemove,@AProjectGroupDeleteExecute);
@ -532,6 +540,7 @@ begin
SetItem(MnuCmdTargetCopyFilename,@ATargetCopyFilenameExecute); SetItem(MnuCmdTargetCopyFilename,@ATargetCopyFilenameExecute);
SetItem(MnuCmdProjGrpUndo,@AProjectGroupUndoExecute); SetItem(MnuCmdProjGrpUndo,@AProjectGroupUndoExecute);
SetItem(MnuCmdProjGrpRedo,@AProjectGroupRedoExecute); SetItem(MnuCmdProjGrpRedo,@AProjectGroupRedoExecute);
SetItem(MnuCmdProjGrpOptions,@AProjectGroupOptionsExecute);
LazarusIDE.AddHandlerOnIDEClose(@OnIDEClose); LazarusIDE.AddHandlerOnIDEClose(@OnIDEClose);
Application.AddOnActivateHandler(@OnApplicationActivate); Application.AddOnActivateHandler(@OnApplicationActivate);
@ -946,6 +955,11 @@ begin
UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetRemove); UpdateIDEMenuCommandFromAction(Sender,MnuCmdTargetRemove);
end; end;
procedure TProjectGroupEditorForm.AProjectGroupOptionsExecute(Sender: TObject);
begin
LazarusIDE.DoOpenIDEOptions(TProjGrpOptionsFrame);
end;
procedure TProjectGroupEditorForm.AProjectGroupRedoExecute(Sender: TObject); procedure TProjectGroupEditorForm.AProjectGroupRedoExecute(Sender: TObject);
begin begin
// ToDo // ToDo
@ -1174,6 +1188,13 @@ begin
Node.StateIndex:=-1; Node.StateIndex:=-1;
end; end;
procedure TProjectGroupEditorForm.IDEProjectGroupManagerEditorOptionsChanged(
Colors, NodeTexts: boolean);
begin
if Colors then Invalidate;
if NodeTexts then UpdateNodeTexts;
end;
procedure TProjectGroupEditorForm.OnApplicationActivate(Sender: TObject); procedure TProjectGroupEditorForm.OnApplicationActivate(Sender: TObject);
begin begin
if ProjectGroup<>nil then if ProjectGroup<>nil then
@ -1331,29 +1352,9 @@ begin
end; end;
function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string; function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string;
var
BaseDir: String;
begin begin
if (NodeData.Target<>nil) if NodeData=nil then exit('');
and (not IDEProjectGroupManager.Options.ShowTargetPaths) then Result:=DisplayFileName(NodeData.Target);
begin
if NodeData.Target.TargetType in [ttProject,ttPackage,ttProjectGroup] then
Result:=ExtractFileNameOnly(NodeData.Target.Filename)
else
Result:=ExtractFileName(NodeData.Target.Filename);
end else begin
Result:='';
if NodeData.ParentTarget<>nil then
BaseDir:=ExtractFilePath(NodeData.ParentTarget.Filename)
else
BaseDir:='';
if NodeData.Target<>nil then
Result:=NodeData.Target.Filename;
if Result='' then
Result:='?'
else
Result:=CreateRelativePath(Result,BaseDir);
end;
end; end;
procedure TProjectGroupEditorForm.ShowFileName; procedure TProjectGroupEditorForm.ShowFileName;
@ -1455,6 +1456,20 @@ begin
Localize; Localize;
end; end;
procedure TProjectGroupEditorForm.UpdateNodeTexts;
var
TVNode: TTreeNode;
begin
TVPG.BeginUpdate;
try
for TVNode in TVPG.Items do begin
TVNode.Text:=DisplayFileName(TVNode);
end;
finally
TVPG.EndUpdate;
end;
end;
procedure TProjectGroupEditorForm.FillProjectGroupNode(TVNode: TTreeNode; procedure TProjectGroupEditorForm.FillProjectGroupNode(TVNode: TTreeNode;
AProjectGroup: TProjectGroup); AProjectGroup: TProjectGroup);
Const Const

View File

@ -29,6 +29,7 @@ Resourcestring
lisTargetRemove = 'Remove target'; lisTargetRemove = 'Remove target';
lisUndo = 'Undo'; lisUndo = 'Undo';
lisRedo = 'Redo'; lisRedo = 'Redo';
lisOptions = 'Options';
lisTargetCompile = 'Compile'; lisTargetCompile = 'Compile';
lisProjectGroups = 'Project Groups'; lisProjectGroups = 'Project Groups';
lisTargetCompileClean = 'Compile clean'; lisTargetCompileClean = 'Compile clean';

View File

@ -70,6 +70,7 @@ begin
RegisterMenuCmd(MnuCmdTargetCopyFilename,MnuSection,'CopyFilename',lisTargetCopyFilename); RegisterMenuCmd(MnuCmdTargetCopyFilename,MnuSection,'CopyFilename',lisTargetCopyFilename);
RegisterMenuCmd(MnuCmdProjGrpUndo, MnuSection, 'Undo', lisUndo); RegisterMenuCmd(MnuCmdProjGrpUndo, MnuSection, 'Undo', lisUndo);
RegisterMenuCmd(MnuCmdProjGrpRedo, MnuSection, 'Redo', lisRedo); RegisterMenuCmd(MnuCmdProjGrpRedo, MnuSection, 'Redo', lisRedo);
RegisterMenuCmd(MnuCmdProjGrpOptions, MnuSection, 'Options', lisOptions);
// ToDo: View source (project) // ToDo: View source (project)
// ToDo: find in files // ToDo: find in files