mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 14:29:36 +02:00
project groups: dockable editor
git-svn-id: trunk@50338 -
This commit is contained in:
parent
d93436b400
commit
5b690a20f0
@ -116,18 +116,13 @@ type
|
|||||||
procedure SaveProjectGroup; override;
|
procedure SaveProjectGroup; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TEditProjectGroupOption = (epgoReusewindow);
|
TEditProjectGroupHandler = procedure(Sender: TObject; AProjectGroup: TProjectGroup);
|
||||||
TEditProjectGroupOptions = Set of TEditProjectGroupOption;
|
|
||||||
|
|
||||||
TEditProjectGroupHandler = procedure(AProjectGroup: TProjectGroup;
|
|
||||||
Options: TEditProjectGroupOptions);
|
|
||||||
// Method variant.
|
// Method variant.
|
||||||
TEditProjectGroupEvent = procedure(AProjectGroup: TProjectGroup;
|
TEditProjectGroupEvent = procedure(Sender: TObject; AProjectGroup: TProjectGroup) of object;
|
||||||
Options: TEditProjectGroupOptions) of object;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
OnEditProjectGroup: TEditProjectGroupHandler; // Takes precedence
|
OnShowProjectGroupEditor: TEditProjectGroupHandler; // Takes precedence
|
||||||
OnEditProjectGroupEvent: TEditProjectGroupEvent;
|
OnShowProjectGroupEditorEvent: TEditProjectGroupEvent; // method variant
|
||||||
|
|
||||||
IDEProjectGroupManager: TIDEProjectGroupManager;
|
IDEProjectGroupManager: TIDEProjectGroupManager;
|
||||||
// Project group editor(s). Should probably move to MenuIntf
|
// Project group editor(s). Should probably move to MenuIntf
|
||||||
@ -203,10 +198,10 @@ begin
|
|||||||
Result:=Assigned(FProjectGroup);
|
Result:=Assigned(FProjectGroup);
|
||||||
if Result then
|
if Result then
|
||||||
begin
|
begin
|
||||||
if Assigned(OnEditProjectGroup) then
|
if Assigned(OnShowProjectGroupEditor) then
|
||||||
OnEditProjectGroup(FProjectGroup,[])
|
OnShowProjectGroupEditor(FProjectGroup,FProjectGroup)
|
||||||
else if Assigned(OnEditProjectGroupEvent) then
|
else if Assigned(OnShowProjectGroupEditorEvent) then
|
||||||
OnEditProjectGroupEvent(FProjectGroup,[])
|
OnShowProjectGroupEditorEvent(FProjectGroup,FProjectGroup)
|
||||||
else
|
else
|
||||||
Result:=False;
|
Result:=False;
|
||||||
end;
|
end;
|
||||||
|
@ -7,7 +7,7 @@ object ProjectGroupEditorForm: TProjectGroupEditorForm
|
|||||||
ClientHeight = 358
|
ClientHeight = 358
|
||||||
ClientWidth = 646
|
ClientWidth = 646
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnShow = FormShow
|
OnDestroy = FormDestroy
|
||||||
LCLVersion = '1.5'
|
LCLVersion = '1.5'
|
||||||
object TBProjectGroup: TToolBar
|
object TBProjectGroup: TToolBar
|
||||||
Left = 0
|
Left = 0
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
{
|
||||||
|
Todo:
|
||||||
|
- close windows on IDE close
|
||||||
|
- activate project when project is opened
|
||||||
|
- deactivate project when project is closed
|
||||||
|
- make dockable
|
||||||
|
}
|
||||||
unit ProjectGroupEditor;
|
unit ProjectGroupEditor;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
@ -6,8 +13,8 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, Menus,
|
||||||
ActnList, LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf, MenuIntf,
|
ActnList, LCLProc, LazIDEIntf, PackageIntf, ProjectIntf, ProjectGroupIntf,
|
||||||
IDEDialogs, LazFileUtils,
|
MenuIntf, IDEDialogs, IDEWindowIntf, LazFileUtils, LazLogger,
|
||||||
ProjectGroupStrConst, ProjectGroup;
|
ProjectGroupStrConst, ProjectGroup;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -107,7 +114,7 @@ type
|
|||||||
procedure ATargetUninstallUpdate(Sender: TObject);
|
procedure ATargetUninstallUpdate(Sender: TObject);
|
||||||
procedure DoFileNameChange(Sender: TObject);
|
procedure DoFileNameChange(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormDestroy(Sender: TObject);
|
||||||
procedure TVPGDblClick(Sender: TObject);
|
procedure TVPGDblClick(Sender: TObject);
|
||||||
private
|
private
|
||||||
FProjectGroup: TProjectGroup;
|
FProjectGroup: TProjectGroup;
|
||||||
@ -149,6 +156,7 @@ type
|
|||||||
protected
|
protected
|
||||||
procedure Localize;
|
procedure Localize;
|
||||||
procedure ShowProjectGroup;
|
procedure ShowProjectGroup;
|
||||||
|
procedure UpdateShowing; override;
|
||||||
public
|
public
|
||||||
property ProjectGroup: TProjectGroup Read FProjectGroup Write SetProjectGroup;
|
property ProjectGroup: TProjectGroup Read FProjectGroup Write SetProjectGroup;
|
||||||
property ActiveTarget: TCompileTarget Read GetActiveTarget;
|
property ActiveTarget: TCompileTarget Read GetActiveTarget;
|
||||||
@ -156,7 +164,13 @@ type
|
|||||||
|
|
||||||
var
|
var
|
||||||
ProjectGroupEditorForm: TProjectGroupEditorForm;
|
ProjectGroupEditorForm: TProjectGroupEditorForm;
|
||||||
|
ProjectGroupEditorCreator: TIDEWindowCreator; // set by RegProjectGroup.Register
|
||||||
|
|
||||||
|
const
|
||||||
|
ProjectGroupEditorName = 'ProjectGroupEditor';
|
||||||
|
procedure ShowProjectGroupEditor(Sender: TObject; AProjectGroup: TProjectGroup);
|
||||||
|
procedure CreateProjectGroupEditor(Sender: TObject; aFormName: string;
|
||||||
|
var AForm: TCustomForm; DoDisableAutoSizing: boolean);
|
||||||
procedure SetProjectGroupEditorCallBack;
|
procedure SetProjectGroupEditorCallBack;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -208,25 +222,31 @@ const
|
|||||||
piTargetCount = 0;
|
piTargetCount = 0;
|
||||||
piActiveTarget = 1;
|
piActiveTarget = 1;
|
||||||
|
|
||||||
procedure EditProjectGroup(AProjectGroup: TProjectGroup; Options: TEditProjectGroupOptions);
|
procedure ShowProjectGroupEditor(Sender: TObject; AProjectGroup: TProjectGroup);
|
||||||
begin
|
begin
|
||||||
if epgoReusewindow in Options then
|
IDEWindowCreators.ShowForm(ProjectGroupEditorCreator.FormName,true);
|
||||||
begin
|
if AProjectGroup<>nil then
|
||||||
If Not Assigned(ProjectGroupEditorForm) then
|
|
||||||
ProjectGroupEditorForm:=TProjectGroupEditorForm.Create(Application);
|
|
||||||
ProjectGroupEditorForm.ProjectGroup:=AProjectGroup;
|
ProjectGroupEditorForm.ProjectGroup:=AProjectGroup;
|
||||||
ProjectGroupEditorForm.Show;
|
end;
|
||||||
end else
|
|
||||||
With TProjectGroupEditorForm.Create(Nil) do
|
procedure CreateProjectGroupEditor(Sender: TObject; aFormName: string;
|
||||||
begin
|
var AForm: TCustomForm; DoDisableAutoSizing: boolean);
|
||||||
ProjectGroup:=AProjectGroup;
|
begin
|
||||||
Show;
|
if CompareText(aFormName,ProjectGroupEditorName)<>0 then begin
|
||||||
end;
|
DebugLn(['ERROR: CreateProjectGroupEditor: there is already a form with this name']);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
IDEWindowCreators.CreateForm(AForm,TProjectGroupEditorForm,DoDisableAutoSizing,
|
||||||
|
LazarusIDE.OwningComponent);
|
||||||
|
AForm.Name:=aFormName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure SetProjectGroupEditorCallBack;
|
procedure SetProjectGroupEditorCallBack;
|
||||||
begin
|
begin
|
||||||
OnEditProjectGroup:=@EditProjectGroup;
|
ProjectGroupEditorCreator:=IDEWindowCreators.Add(ProjectGroupEditorName,
|
||||||
|
@CreateProjectGroupEditor,nil,
|
||||||
|
'30%','30%','+30%','+40%','ProjectGroupEditor',alNone);
|
||||||
|
OnShowProjectGroupEditor:=@ShowProjectGroupEditor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectGroupEditorForm }
|
{ TProjectGroupEditorForm }
|
||||||
@ -423,6 +443,8 @@ procedure TProjectGroupEditorForm.FormCreate(Sender: TObject);
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
if ProjectGroupEditorForm=nil then
|
||||||
|
ProjectGroupEditorForm:=Self;
|
||||||
PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items;
|
PGEditMenuSectionMisc.MenuItem:=PopupMenuMore.Items;
|
||||||
SetItem(cmdTargetAdd,@AProjectGroupAddExistingExecute);
|
SetItem(cmdTargetAdd,@AProjectGroupAddExistingExecute);
|
||||||
SetItem(cmdTargetRemove,@AProjectGroupDeleteExecute);
|
SetItem(cmdTargetRemove,@AProjectGroupDeleteExecute);
|
||||||
@ -434,9 +456,10 @@ begin
|
|||||||
SetItem(cmdTargetEarlier,@ATargetEarlierExecute);
|
SetItem(cmdTargetEarlier,@ATargetEarlierExecute);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FormShow(Sender: TObject);
|
procedure TProjectGroupEditorForm.FormDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
Localize;
|
if ProjectGroupEditorForm=Self then
|
||||||
|
ProjectGroupEditorForm:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.TVPGDblClick(Sender: TObject);
|
procedure TProjectGroupEditorForm.TVPGDblClick(Sender: TObject);
|
||||||
@ -853,6 +876,13 @@ begin
|
|||||||
SBPG.Panels[piTargetCount].Text:=Format(lisTargetCount,[FProjectGroup.TargetCount]);
|
SBPG.Panels[piTargetCount].Text:=Format(lisTargetCount,[FProjectGroup.TargetCount]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectGroupEditorForm.UpdateShowing;
|
||||||
|
begin
|
||||||
|
inherited UpdateShowing;
|
||||||
|
if IsVisible then
|
||||||
|
Localize;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillProjectGroupNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillProjectGroupNode(AParent: TTreeNode;
|
||||||
AProjectGroup: TProjectGroup; out TargetNodes: TTargetNodes);
|
AProjectGroup: TProjectGroup; out TargetNodes: TTargetNodes);
|
||||||
Const
|
Const
|
||||||
|
@ -54,6 +54,10 @@ begin
|
|||||||
// ToDo: Close (package editor)
|
// ToDo: Close (package editor)
|
||||||
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);// ToDo
|
cmdTargetRun:=RegisterIDEMenuCommand(Section,'TargetRun',lisTargetRun);// ToDo
|
||||||
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo
|
cmdTargetProperties:=RegisterIDEMenuCommand(Section,'TargetProperties',lisTargetProperties);// ToDo
|
||||||
|
|
||||||
|
Section:=RegisterIDEMenuSection(Root,'Misc');
|
||||||
|
PGEditMenuSectionMisc:=Section;
|
||||||
|
|
||||||
// ToDo: Copy filename
|
// ToDo: Copy filename
|
||||||
// ToDo: View source (project)
|
// ToDo: View source (project)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user