mirror of https://gitlab.com/basile.b/dexed.git
common project inspector + update init layout, close #69
This commit is contained in:
parent
f2de2bacff
commit
900d98e847
|
@ -2,206 +2,124 @@ inherited CEDubProjectEditorWidget: TCEDubProjectEditorWidget
|
||||||
Left = 771
|
Left = 771
|
||||||
Height = 424
|
Height = 424
|
||||||
Top = 245
|
Top = 245
|
||||||
Width = 411
|
Width = 402
|
||||||
Caption = 'Dub project editor'
|
Caption = 'Dub project editor'
|
||||||
ClientHeight = 424
|
ClientHeight = 424
|
||||||
ClientWidth = 411
|
ClientWidth = 402
|
||||||
inherited Back: TPanel
|
inherited Back: TPanel
|
||||||
Height = 424
|
Height = 424
|
||||||
Width = 411
|
Width = 402
|
||||||
ClientHeight = 424
|
ClientHeight = 424
|
||||||
ClientWidth = 411
|
ClientWidth = 402
|
||||||
inherited Content: TPanel
|
inherited Content: TPanel
|
||||||
Height = 388
|
Height = 388
|
||||||
Width = 411
|
Width = 402
|
||||||
ClientHeight = 388
|
ClientHeight = 388
|
||||||
ClientWidth = 411
|
ClientWidth = 402
|
||||||
object PageControl1: TPageControl[0]
|
object propTree: TTreeView[0]
|
||||||
Left = 4
|
Left = 4
|
||||||
Height = 380
|
Height = 352
|
||||||
Top = 4
|
Top = 4
|
||||||
Width = 403
|
Width = 394
|
||||||
ActivePage = TabSheet1
|
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 4
|
BorderSpacing.Around = 4
|
||||||
TabIndex = 0
|
DefaultItemHeight = 16
|
||||||
|
HideSelection = False
|
||||||
|
Images = imgList
|
||||||
|
ReadOnly = True
|
||||||
|
ScrollBars = ssAutoBoth
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object TabSheet1: TTabSheet
|
ToolTips = False
|
||||||
Caption = 'Inspector'
|
OnSelectionChanged = propTreeSelectionChanged
|
||||||
ClientHeight = 344
|
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoThemedDraw]
|
||||||
ClientWidth = 395
|
TreeLinePenStyle = psClear
|
||||||
object pnlToolBar1: TPanel
|
end
|
||||||
Left = 4
|
object Panel1: TPanel[1]
|
||||||
Height = 26
|
Left = 2
|
||||||
Top = 2
|
Height = 26
|
||||||
Width = 387
|
Top = 360
|
||||||
Align = alTop
|
Width = 398
|
||||||
BorderSpacing.Left = 2
|
Align = alBottom
|
||||||
BorderSpacing.Right = 2
|
BorderSpacing.Around = 2
|
||||||
BorderSpacing.Around = 2
|
BevelOuter = bvNone
|
||||||
BevelOuter = bvNone
|
ClientHeight = 26
|
||||||
ClientHeight = 26
|
ClientWidth = 398
|
||||||
ClientWidth = 387
|
TabOrder = 1
|
||||||
TabOrder = 0
|
object edProp: TEdit
|
||||||
object fltInspect: TTreeFilterEdit
|
Left = 2
|
||||||
Left = 30
|
Height = 22
|
||||||
Height = 22
|
Top = 2
|
||||||
Top = 2
|
Width = 366
|
||||||
Width = 355
|
Align = alClient
|
||||||
ButtonWidth = 23
|
BorderSpacing.Around = 2
|
||||||
NumGlyphs = 1
|
TabOrder = 0
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 2
|
|
||||||
MaxLength = 0
|
|
||||||
TabOrder = 0
|
|
||||||
FilteredTreeview = treeInspect
|
|
||||||
end
|
|
||||||
object btnRefresh: TBitBtn
|
|
||||||
Left = 0
|
|
||||||
Height = 26
|
|
||||||
Hint = 'refresh the files and configurations'
|
|
||||||
Top = 0
|
|
||||||
Width = 28
|
|
||||||
Align = alLeft
|
|
||||||
Layout = blGlyphBottom
|
|
||||||
OnClick = btnRefreshClick
|
|
||||||
Spacing = 0
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object treeInspect: TTreeView
|
|
||||||
Left = 4
|
|
||||||
Height = 308
|
|
||||||
Top = 32
|
|
||||||
Width = 387
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 4
|
|
||||||
DefaultItemHeight = 16
|
|
||||||
DragMode = dmAutomatic
|
|
||||||
HideSelection = False
|
|
||||||
Images = imgList
|
|
||||||
PopupMenu = contextMenu
|
|
||||||
ReadOnly = True
|
|
||||||
ScrollBars = ssAutoBoth
|
|
||||||
TabOrder = 1
|
|
||||||
ToolTips = False
|
|
||||||
OnDblClick = treeInspectDblClick
|
|
||||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoThemedDraw]
|
|
||||||
Items.Data = {
|
|
||||||
F9FFFFFF020002000000000000000000000000000000FFFFFFFF000000000000
|
|
||||||
0000000C000000536F757263652066696C6573010000000100000001000000FF
|
|
||||||
FFFFFF0000000000000000000E000000436F6E66696775726174696F6E73
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
object TabSheet2: TTabSheet
|
object btnAcceptProp: TSpeedButton
|
||||||
Caption = 'Editor'
|
Left = 370
|
||||||
ClientHeight = 344
|
Height = 26
|
||||||
ClientWidth = 395
|
Hint = 'accept property value'
|
||||||
object propTree: TTreeView
|
Top = 0
|
||||||
Left = 4
|
Width = 28
|
||||||
Height = 280
|
Align = alRight
|
||||||
Top = 32
|
Layout = blGlyphBottom
|
||||||
Width = 387
|
OnClick = btnAcceptPropClick
|
||||||
Align = alClient
|
ShowCaption = False
|
||||||
BorderSpacing.Around = 4
|
|
||||||
DefaultItemHeight = 16
|
|
||||||
HideSelection = False
|
|
||||||
Images = imgList
|
|
||||||
ReadOnly = True
|
|
||||||
ScrollBars = ssAutoBoth
|
|
||||||
TabOrder = 0
|
|
||||||
ToolTips = False
|
|
||||||
OnSelectionChanged = propTreeSelectionChanged
|
|
||||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoThemedDraw]
|
|
||||||
TreeLinePenStyle = psClear
|
|
||||||
end
|
|
||||||
object pnlToolBar: TPanel
|
|
||||||
Left = 4
|
|
||||||
Height = 26
|
|
||||||
Top = 2
|
|
||||||
Width = 387
|
|
||||||
Align = alTop
|
|
||||||
BorderSpacing.Left = 2
|
|
||||||
BorderSpacing.Right = 2
|
|
||||||
BorderSpacing.Around = 2
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 26
|
|
||||||
ClientWidth = 387
|
|
||||||
TabOrder = 1
|
|
||||||
object btnAddProp: TSpeedButton
|
|
||||||
Left = 0
|
|
||||||
Height = 26
|
|
||||||
Hint = 'add property'
|
|
||||||
Top = 0
|
|
||||||
Width = 28
|
|
||||||
Align = alLeft
|
|
||||||
Layout = blGlyphBottom
|
|
||||||
OnClick = btnAddPropClick
|
|
||||||
ShowCaption = False
|
|
||||||
end
|
|
||||||
object fltEdit: TTreeFilterEdit
|
|
||||||
Left = 58
|
|
||||||
Height = 22
|
|
||||||
Top = 2
|
|
||||||
Width = 327
|
|
||||||
ButtonWidth = 23
|
|
||||||
NumGlyphs = 1
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 2
|
|
||||||
MaxLength = 0
|
|
||||||
TabOrder = 0
|
|
||||||
FilteredTreeview = propTree
|
|
||||||
end
|
|
||||||
object btnDelProp: TSpeedButton
|
|
||||||
Left = 28
|
|
||||||
Height = 26
|
|
||||||
Hint = 'delete selected property'
|
|
||||||
Top = 0
|
|
||||||
Width = 28
|
|
||||||
Align = alLeft
|
|
||||||
Layout = blGlyphBottom
|
|
||||||
OnClick = btnDelPropClick
|
|
||||||
ShowCaption = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel1: TPanel
|
|
||||||
Left = 2
|
|
||||||
Height = 26
|
|
||||||
Top = 316
|
|
||||||
Width = 391
|
|
||||||
Align = alBottom
|
|
||||||
BorderSpacing.Around = 2
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 26
|
|
||||||
ClientWidth = 391
|
|
||||||
TabOrder = 2
|
|
||||||
object edProp: TEdit
|
|
||||||
Left = 2
|
|
||||||
Height = 22
|
|
||||||
Top = 2
|
|
||||||
Width = 359
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 2
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object btnAcceptProp: TSpeedButton
|
|
||||||
Left = 363
|
|
||||||
Height = 26
|
|
||||||
Hint = 'accept property value'
|
|
||||||
Top = 0
|
|
||||||
Width = 28
|
|
||||||
Align = alRight
|
|
||||||
Layout = blGlyphBottom
|
|
||||||
OnClick = btnAcceptPropClick
|
|
||||||
ShowCaption = False
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
inherited toolbar: TCEToolBar
|
inherited toolbar: TCEToolBar
|
||||||
Width = 403
|
Width = 394
|
||||||
|
object btnUpdate: TCEToolButton[0]
|
||||||
|
Left = 57
|
||||||
|
Hint = 'reload project'
|
||||||
|
Top = 0
|
||||||
|
Caption = 'btnUpdate'
|
||||||
|
OnClick = btnRefreshClick
|
||||||
|
resourceName = 'ARROW_UPDATE'
|
||||||
|
scaledSeparator = False
|
||||||
|
end
|
||||||
|
object btnDelProp: TCEToolButton[1]
|
||||||
|
Left = 29
|
||||||
|
Hint = 'delete property'
|
||||||
|
Top = 0
|
||||||
|
Caption = 'btnDelProp'
|
||||||
|
OnClick = btnDelPropClick
|
||||||
|
resourceName = 'TEXTFIELD_DELETE'
|
||||||
|
scaledSeparator = False
|
||||||
|
end
|
||||||
|
object btnAddProp: TCEToolButton[2]
|
||||||
|
Left = 1
|
||||||
|
Hint = 'add a property'
|
||||||
|
Top = 0
|
||||||
|
Caption = 'btnAddProp'
|
||||||
|
OnClick = btnAddPropClick
|
||||||
|
resourceName = 'TEXTFIELD_ADD'
|
||||||
|
scaledSeparator = False
|
||||||
|
end
|
||||||
|
object button3: TCEToolButton[3]
|
||||||
|
Left = 85
|
||||||
|
Height = 28
|
||||||
|
Top = 0
|
||||||
|
Width = 11
|
||||||
|
Caption = 'button3'
|
||||||
|
Style = tbsDivider
|
||||||
|
scaledSeparator = False
|
||||||
|
end
|
||||||
|
object fltEdit: TTreeFilterEdit[4]
|
||||||
|
Left = 96
|
||||||
|
Height = 26
|
||||||
|
Hint = 'filter properties'
|
||||||
|
Top = 2
|
||||||
|
Width = 296
|
||||||
|
ButtonWidth = 23
|
||||||
|
NumGlyphs = 1
|
||||||
|
Align = alRight
|
||||||
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
|
BorderSpacing.Around = 2
|
||||||
|
MaxLength = 0
|
||||||
|
TabOrder = 0
|
||||||
|
FilteredTreeview = propTree
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
inherited contextMenu: TPopupMenu
|
inherited contextMenu: TPopupMenu
|
||||||
|
|
|
@ -7,7 +7,8 @@ interface
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics,
|
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Graphics,
|
||||||
Dialogs, ExtCtrls, Menus, StdCtrls, Buttons, ComCtrls, xjsonparser, xfpjson,
|
Dialogs, ExtCtrls, Menus, StdCtrls, Buttons, ComCtrls, xjsonparser, xfpjson,
|
||||||
ce_widget, ce_common, ce_interfaces, ce_observer, ce_dubproject, ce_sharedres;
|
ce_widget, ce_common, ce_interfaces, ce_observer, ce_dubproject, ce_sharedres,
|
||||||
|
ce_dsgncontrols;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
@ -38,36 +39,25 @@ type
|
||||||
{ TCEDubProjectEditorWidget }
|
{ TCEDubProjectEditorWidget }
|
||||||
TCEDubProjectEditorWidget = class(TCEWidget, ICEProjectObserver)
|
TCEDubProjectEditorWidget = class(TCEWidget, ICEProjectObserver)
|
||||||
btnAcceptProp: TSpeedButton;
|
btnAcceptProp: TSpeedButton;
|
||||||
btnAddProp: TSpeedButton;
|
btnAddProp: TCEToolButton;
|
||||||
btnDelProp: TSpeedButton;
|
btnDelProp: TCEToolButton;
|
||||||
btnRefresh: TBitBtn;
|
btnUpdate: TCEToolButton;
|
||||||
edProp: TEdit;
|
edProp: TEdit;
|
||||||
fltEdit: TTreeFilterEdit;
|
fltEdit: TTreeFilterEdit;
|
||||||
imgList: TImageList;
|
imgList: TImageList;
|
||||||
MenuItem1: TMenuItem;
|
MenuItem1: TMenuItem;
|
||||||
PageControl1: TPageControl;
|
|
||||||
Panel1: TPanel;
|
Panel1: TPanel;
|
||||||
pnlToolBar: TPanel;
|
|
||||||
pnlToolBar1: TPanel;
|
|
||||||
propTree: TTreeView;
|
propTree: TTreeView;
|
||||||
fltInspect: TTreeFilterEdit;
|
|
||||||
treeInspect: TTreeView;
|
|
||||||
TabSheet1: TTabSheet;
|
|
||||||
TabSheet2: TTabSheet;
|
|
||||||
procedure btnAcceptPropClick(Sender: TObject);
|
procedure btnAcceptPropClick(Sender: TObject);
|
||||||
procedure btnAddPropClick(Sender: TObject);
|
procedure btnAddPropClick(Sender: TObject);
|
||||||
procedure btnDelPropClick(Sender: TObject);
|
procedure btnDelPropClick(Sender: TObject);
|
||||||
procedure btnRefreshClick(Sender: TObject);
|
procedure btnRefreshClick(Sender: TObject);
|
||||||
procedure MenuItem1Click(Sender: TObject);
|
procedure MenuItem1Click(Sender: TObject);
|
||||||
procedure propTreeSelectionChanged(Sender: TObject);
|
procedure propTreeSelectionChanged(Sender: TObject);
|
||||||
procedure treeInspectDblClick(Sender: TObject);
|
|
||||||
private
|
private
|
||||||
fSelectedNode: TTreeNode;
|
fSelectedNode: TTreeNode;
|
||||||
fProj: TCEDubProject;
|
fProj: TCEDubProject;
|
||||||
fNodeSources: TTreeNode;
|
|
||||||
fNodeConfig: TTreeNode;
|
|
||||||
procedure updateEditor;
|
procedure updateEditor;
|
||||||
procedure updateInspector;
|
|
||||||
procedure updateValueEditor;
|
procedure updateValueEditor;
|
||||||
procedure setJsonValueFromEditor;
|
procedure setJsonValueFromEditor;
|
||||||
procedure addProp(const propName: string; tpe: TJSONtype);
|
procedure addProp(const propName: string; tpe: TJSONtype);
|
||||||
|
@ -81,6 +71,7 @@ type
|
||||||
//
|
//
|
||||||
protected
|
protected
|
||||||
procedure SetVisible(value: boolean); override;
|
procedure SetVisible(value: boolean); override;
|
||||||
|
procedure setToolBarFlat(value: boolean); override;
|
||||||
public
|
public
|
||||||
constructor create(aOwner: TComponent); override;
|
constructor create(aOwner: TComponent); override;
|
||||||
end;
|
end;
|
||||||
|
@ -236,23 +227,23 @@ end;
|
||||||
constructor TCEDubProjectEditorWidget.create(aOwner: TComponent);
|
constructor TCEDubProjectEditorWidget.create(aOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
toolbarVisible:=false;
|
setToolBarVisible(true);
|
||||||
fNodeSources := treeInspect.Items[0];
|
|
||||||
fNodeConfig := treeInspect.Items[1];
|
|
||||||
//
|
|
||||||
AssignPng(btnAddProp, 'TEXTFIELD_ADD');
|
|
||||||
AssignPng(btnDelProp, 'TEXTFIELD_DELETE');
|
|
||||||
AssignPng(btnAcceptProp, 'ACCEPT');
|
AssignPng(btnAcceptProp, 'ACCEPT');
|
||||||
AssignPng(btnRefresh, 'ARROW_UPDATE');
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.SetVisible(value: boolean);
|
procedure TCEDubProjectEditorWidget.SetVisible(value: boolean);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
if not value then exit;
|
if not value then
|
||||||
//
|
exit;
|
||||||
updateEditor;
|
updateEditor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEDubProjectEditorWidget.setToolBarFlat(value: boolean);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
btnAcceptProp.Flat:=value;
|
||||||
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION ICEProjectObserver ----------------------------------------------------}
|
{$REGION ICEProjectObserver ----------------------------------------------------}
|
||||||
|
@ -264,7 +255,6 @@ begin
|
||||||
exit;
|
exit;
|
||||||
enabled := true;
|
enabled := true;
|
||||||
fProj := TCEDubProject(project.getProject);
|
fProj := TCEDubProject(project.getProject);
|
||||||
//
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.projChanged(project: ICECommonProject);
|
procedure TCEDubProjectEditorWidget.projChanged(project: ICECommonProject);
|
||||||
|
@ -277,7 +267,6 @@ begin
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
updateEditor;
|
updateEditor;
|
||||||
updateInspector;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.projClosing(project: ICECommonProject);
|
procedure TCEDubProjectEditorWidget.projClosing(project: ICECommonProject);
|
||||||
|
@ -289,7 +278,6 @@ begin
|
||||||
fProj := nil;
|
fProj := nil;
|
||||||
|
|
||||||
updateEditor;
|
updateEditor;
|
||||||
updateInspector;
|
|
||||||
enabled := false;
|
enabled := false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -300,7 +288,6 @@ begin
|
||||||
if project.getFormat <> pfDub then
|
if project.getFormat <> pfDub then
|
||||||
begin
|
begin
|
||||||
updateEditor;
|
updateEditor;
|
||||||
updateInspector;
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
fProj := TCEDubProject(project.getProject);
|
fProj := TCEDubProject(project.getProject);
|
||||||
|
@ -315,7 +302,6 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
updateEditor;
|
updateEditor;
|
||||||
updateInspector;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.projCompiling(project: ICECommonProject);
|
procedure TCEDubProjectEditorWidget.projCompiling(project: ICECommonProject);
|
||||||
|
@ -333,8 +319,9 @@ begin
|
||||||
fSelectedNode := nil;
|
fSelectedNode := nil;
|
||||||
btnDelProp.Enabled := false;
|
btnDelProp.Enabled := false;
|
||||||
btnAddProp.Enabled := false;
|
btnAddProp.Enabled := false;
|
||||||
if propTree.Selected.isNil then exit;
|
if propTree.Selected.isNil then
|
||||||
//
|
exit;
|
||||||
|
|
||||||
fSelectedNode := propTree.Selected;
|
fSelectedNode := propTree.Selected;
|
||||||
btnDelProp.Enabled := (fSelectedNode.Level > 0) and (fSelectedNode.Text <> 'name')
|
btnDelProp.Enabled := (fSelectedNode.Level > 0) and (fSelectedNode.Text <> 'name')
|
||||||
and fSelectedNode.data.isNotNil;
|
and fSelectedNode.data.isNotNil;
|
||||||
|
@ -344,8 +331,8 @@ end;
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.btnAcceptPropClick(Sender: TObject);
|
procedure TCEDubProjectEditorWidget.btnAcceptPropClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fSelectedNode.isNil then exit;
|
if fSelectedNode.isNil then
|
||||||
//
|
exit;
|
||||||
setJsonValueFromEditor;
|
setJsonValueFromEditor;
|
||||||
propTree.FullExpand;
|
propTree.FullExpand;
|
||||||
end;
|
end;
|
||||||
|
@ -354,8 +341,8 @@ procedure TCEDubProjectEditorWidget.btnAddPropClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
pnl: TCEDubProjectPropAddPanel;
|
pnl: TCEDubProjectPropAddPanel;
|
||||||
begin
|
begin
|
||||||
if fSelectedNode.isNil then exit;
|
if fSelectedNode.isNil then
|
||||||
//
|
exit;
|
||||||
pnl := TCEDubProjectPropAddPanel.construct(@addProp, TJSONData(fSelectedNode.Data));
|
pnl := TCEDubProjectPropAddPanel.construct(@addProp, TJSONData(fSelectedNode.Data));
|
||||||
pnl.ShowModal;
|
pnl.ShowModal;
|
||||||
pnl.Free;
|
pnl.Free;
|
||||||
|
@ -368,8 +355,8 @@ var
|
||||||
obj: TJSONObject;
|
obj: TJSONObject;
|
||||||
nod: TTreeNode;
|
nod: TTreeNode;
|
||||||
begin
|
begin
|
||||||
if fSelectedNode.isNil then exit;
|
if fSelectedNode.isNil then
|
||||||
//
|
exit;
|
||||||
fProj.beginModification;
|
fProj.beginModification;
|
||||||
if TJSONData(fSelectedNode.Data).JSONType = jtArray then
|
if TJSONData(fSelectedNode.Data).JSONType = jtArray then
|
||||||
begin
|
begin
|
||||||
|
@ -410,7 +397,7 @@ begin
|
||||||
if fSelectedNode.Text = 'name' then exit;
|
if fSelectedNode.Text = 'name' then exit;
|
||||||
if fSelectedNode.Data.isNil then exit;
|
if fSelectedNode.Data.isNil then exit;
|
||||||
if fSelectedNode.Parent.Data.isNil then exit;
|
if fSelectedNode.Parent.Data.isNil then exit;
|
||||||
//
|
|
||||||
fProj.beginModification;
|
fProj.beginModification;
|
||||||
prt := TJSONData(fSelectedNode.Parent.Data);
|
prt := TJSONData(fSelectedNode.Parent.Data);
|
||||||
if prt.JSONType = jtObject then
|
if prt.JSONType = jtObject then
|
||||||
|
@ -418,7 +405,7 @@ begin
|
||||||
else if prt.JSONType = jtArray then
|
else if prt.JSONType = jtArray then
|
||||||
TJSONArray(prt).Delete(fSelectedNode.Index);
|
TJSONArray(prt).Delete(fSelectedNode.Index);
|
||||||
fProj.endModification;
|
fProj.endModification;
|
||||||
//
|
|
||||||
updateValueEditor;
|
updateValueEditor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -444,10 +431,9 @@ var
|
||||||
vInt64: int64;
|
vInt64: int64;
|
||||||
vBool: boolean;
|
vBool: boolean;
|
||||||
begin
|
begin
|
||||||
if fSelectedNode.isNil then exit;
|
if fSelectedNode.isNil or fSelectedNode.Data.isNil or fProj.isNil then
|
||||||
if fSelectedNode.Data.isNil then exit;
|
exit;
|
||||||
if fProj.isNil then exit;
|
|
||||||
//
|
|
||||||
fProj.beginModification;
|
fProj.beginModification;
|
||||||
dat := TJSONData(fSelectedNode.Data);
|
dat := TJSONData(fSelectedNode.Data);
|
||||||
case dat.JSONType of
|
case dat.JSONType of
|
||||||
|
@ -479,7 +465,7 @@ begin
|
||||||
edProp.Clear;
|
edProp.Clear;
|
||||||
if fSelectedNode.isNil then exit;
|
if fSelectedNode.isNil then exit;
|
||||||
if fSelectedNode.Data.isNil then exit;
|
if fSelectedNode.Data.isNil then exit;
|
||||||
//
|
|
||||||
dat := TJSONData(fSelectedNode.Data);
|
dat := TJSONData(fSelectedNode.Data);
|
||||||
case dat.JSONType of
|
case dat.JSONType of
|
||||||
jtNumber:
|
jtNumber:
|
||||||
|
@ -546,84 +532,12 @@ begin
|
||||||
edProp.Clear;
|
edProp.Clear;
|
||||||
if fProj.isNil or fProj.json.isNil then
|
if fProj.isNil or fProj.json.isNil then
|
||||||
exit;
|
exit;
|
||||||
//
|
|
||||||
propTree.BeginUpdate;
|
propTree.BeginUpdate;
|
||||||
addPropsFrom(propTree.Items.Add(nil, 'project'), fProj.json);
|
addPropsFrom(propTree.Items.Add(nil, 'project'), fProj.json);
|
||||||
propTree.EndUpdate;
|
propTree.EndUpdate;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION Inspector -------------------------------------------------------------}
|
|
||||||
procedure TCEDubProjectEditorWidget.updateInspector;
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
j: integer;
|
|
||||||
node : TTreeNode;
|
|
||||||
begin
|
|
||||||
if fNodeConfig.isNil or fNodeSources.isNil then
|
|
||||||
exit;
|
|
||||||
//
|
|
||||||
fNodeConfig.DeleteChildren;
|
|
||||||
fNodeSources.DeleteChildren;
|
|
||||||
//
|
|
||||||
if fProj.isNil then
|
|
||||||
exit;
|
|
||||||
//
|
|
||||||
j := fProj.getActiveConfigurationIndex;
|
|
||||||
treeInspect.BeginUpdate;
|
|
||||||
for i:= 0 to fProj.configurationCount-1 do
|
|
||||||
begin
|
|
||||||
if i <> j then
|
|
||||||
begin
|
|
||||||
node := treeInspect.Items.AddChild(fNodeConfig, fProj.configurationName(i));
|
|
||||||
node.ImageIndex := 3;
|
|
||||||
node.SelectedIndex := 3;
|
|
||||||
node.StateIndex := 3;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
node := treeInspect.Items.AddChild(fNodeConfig, fProj.configurationName(i) +' (active)');
|
|
||||||
node.ImageIndex := 10;
|
|
||||||
node.SelectedIndex := 10;
|
|
||||||
node.StateIndex := 10;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
for i := 0 to fProj.sourcesCount-1 do
|
|
||||||
begin
|
|
||||||
node := treeInspect.Items.AddChild(fNodeSources, fProj.sourceRelative(i));
|
|
||||||
node.ImageIndex := 2;
|
|
||||||
node.SelectedIndex := 2;
|
|
||||||
node.StateIndex := 2;
|
|
||||||
end;
|
|
||||||
// first update or update cause by editor
|
|
||||||
if (not fNodeConfig.Expanded) and (not fNodeSources.Expanded) then
|
|
||||||
treeInspect.FullExpand;
|
|
||||||
treeInspect.EndUpdate;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEDubProjectEditorWidget.treeInspectDblClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
node: TTreeNode;
|
|
||||||
fname: string;
|
|
||||||
begin
|
|
||||||
if treeInspect.Selected.isNil then exit;
|
|
||||||
if fProj.isNil then exit;
|
|
||||||
node := treeInspect.Selected;
|
|
||||||
// open file
|
|
||||||
if node.Parent = fNodeSources then
|
|
||||||
begin
|
|
||||||
fname := fProj.sourceAbsolute(node.Index);
|
|
||||||
if isEditable(fname.extractFileExt) then
|
|
||||||
getMultiDocHandler.openDocument(fname);
|
|
||||||
end
|
|
||||||
// select active config
|
|
||||||
else if node.Parent = fNodeConfig then
|
|
||||||
begin
|
|
||||||
fProj.setActiveConfigurationIndex(node.Index);
|
|
||||||
fNodeConfig.Expand(true);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
{$ENDREGION}
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
|
@ -1430,12 +1430,13 @@ begin
|
||||||
topsplt := nil;
|
topsplt := nil;
|
||||||
end;
|
end;
|
||||||
fSymlWidg.showWidget;
|
fSymlWidg.showWidget;
|
||||||
// TODO-cdocking: Put the new unified project editors and inspectors to the right once done
|
|
||||||
// right
|
// right
|
||||||
DockMaster.GetAnchorSite(fProjWidg).Width := 190;
|
DockMaster.GetAnchorSite(fProjWidg).Width := 190;
|
||||||
DockMaster.GetAnchorSite(fPrjCfWidg).Width := 190;
|
DockMaster.GetAnchorSite(fDubProjWidg).Width := 190;
|
||||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), DockMaster.GetSite(fEditWidg), alRight);
|
DockMaster.ManualDock(DockMaster.GetAnchorSite(fProjWidg), DockMaster.GetSite(fEditWidg), alRight);
|
||||||
DockMaster.ManualDock(DockMaster.GetAnchorSite(fPrjCfWidg), DockMaster.GetAnchorSite(fProjWidg), alBottom, fProjWidg);
|
DockMaster.ManualDock(DockMaster.GetAnchorSite(fPrjGrpWidg), DockMaster.GetSite(fProjWidg), alBottom, fProjWidg);
|
||||||
|
DockMaster.ManualDock(DockMaster.GetAnchorSite(fDubProjWidg), DockMaster.GetAnchorSite(fProjWidg), alClient, fProjWidg);
|
||||||
|
fProjWidg.showWidget;
|
||||||
// close remaining and header to top
|
// close remaining and header to top
|
||||||
for i := 0 to fWidgList.Count-1 do
|
for i := 0 to fWidgList.Count-1 do
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -5,7 +5,7 @@ inherited CEProjectInspectWidget: TCEProjectInspectWidget
|
||||||
Width = 341
|
Width = 341
|
||||||
ActiveControl = Tree
|
ActiveControl = Tree
|
||||||
AllowDropFiles = True
|
AllowDropFiles = True
|
||||||
Caption = 'Native project inspector'
|
Caption = 'Project inspector'
|
||||||
ClientHeight = 258
|
ClientHeight = 258
|
||||||
ClientWidth = 341
|
ClientWidth = 341
|
||||||
OnDropFiles = FormDropFiles
|
OnDropFiles = FormDropFiles
|
||||||
|
@ -38,18 +38,14 @@ inherited CEProjectInspectWidget: TCEProjectInspectWidget
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
ToolTips = False
|
ToolTips = False
|
||||||
OnClick = TreeClick
|
OnClick = TreeClick
|
||||||
|
OnDeletion = TreeDeletion
|
||||||
OnKeyDown = TreeKeyDown
|
OnKeyDown = TreeKeyDown
|
||||||
OnSelectionChanged = TreeSelectionChanged
|
OnSelectionChanged = TreeSelectionChanged
|
||||||
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoThemedDraw]
|
Options = [tvoAutoExpand, tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoThemedDraw]
|
||||||
Items.Data = {
|
Items.Data = {
|
||||||
F9FFFFFF020005000000000000000000000000000000FFFFFFFF000000000000
|
F9FFFFFF020002000000000000000000000000000000FFFFFFFF000000000000
|
||||||
0000000C000000536F757263652066696C6573010000000100000001000000FF
|
0000000C000000536F757263652066696C6573010000000100000001000000FF
|
||||||
FFFFFF0000000000000000000E000000436F6E66696775726174696F6E730400
|
FFFFFF0000000000000000000E000000436F6E66696775726174696F6E73
|
||||||
00000400000004000000FFFFFFFF00000000000000000013000000496D706F72
|
|
||||||
7420737472696E67207061746873060000000600000006000000FFFFFFFF0000
|
|
||||||
0000000000000013000000496D706F7274206D6F64756C652070617468730000
|
|
||||||
00000000000000000000FFFFFFFF0000000000000000000D0000004578747261
|
|
||||||
20736F7572636573
|
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,6 +27,7 @@ type
|
||||||
procedure btnRemFoldClick(Sender: TObject);
|
procedure btnRemFoldClick(Sender: TObject);
|
||||||
procedure FormDropFiles(Sender: TObject; const fnames: array of String);
|
procedure FormDropFiles(Sender: TObject; const fnames: array of String);
|
||||||
procedure TreeClick(Sender: TObject);
|
procedure TreeClick(Sender: TObject);
|
||||||
|
procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
|
||||||
procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure TreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure TreeSelectionChanged(Sender: TObject);
|
procedure TreeSelectionChanged(Sender: TObject);
|
||||||
protected
|
protected
|
||||||
|
@ -38,10 +39,8 @@ type
|
||||||
fActOpenFile: TAction;
|
fActOpenFile: TAction;
|
||||||
fActSelConf: TAction;
|
fActSelConf: TAction;
|
||||||
fActBuildConf: TAction;
|
fActBuildConf: TAction;
|
||||||
fProject: TCENativeProject;
|
fProject: ICECommonProject;
|
||||||
fFileNode, fConfNode: TTreeNode;
|
fFileNode, fConfNode: TTreeNode;
|
||||||
fImpsNode, fInclNode: TTreeNode;
|
|
||||||
fXtraNode: TTreeNode;
|
|
||||||
fLastFileOrFolder: string;
|
fLastFileOrFolder: string;
|
||||||
fSymStringExpander: ICESymStringExpander;
|
fSymStringExpander: ICESymStringExpander;
|
||||||
procedure actUpdate(sender: TObject);
|
procedure actUpdate(sender: TObject);
|
||||||
|
@ -55,6 +54,7 @@ type
|
||||||
procedure projChanged(project: ICECommonProject);
|
procedure projChanged(project: ICECommonProject);
|
||||||
procedure projCompiling(project: ICECommonProject);
|
procedure projCompiling(project: ICECommonProject);
|
||||||
procedure projCompiled(project: ICECommonProject; success: boolean);
|
procedure projCompiled(project: ICECommonProject; success: boolean);
|
||||||
|
procedure updateButtons;
|
||||||
protected
|
protected
|
||||||
function contextName: string; override;
|
function contextName: string; override;
|
||||||
function contextActionCount: integer; override;
|
function contextActionCount: integer; override;
|
||||||
|
@ -89,9 +89,6 @@ begin
|
||||||
Tree.OnDblClick := @TreeDblClick;
|
Tree.OnDblClick := @TreeDblClick;
|
||||||
fFileNode := Tree.Items[0];
|
fFileNode := Tree.Items[0];
|
||||||
fConfNode := Tree.Items[1];
|
fConfNode := Tree.Items[1];
|
||||||
fImpsNode := Tree.Items[2];
|
|
||||||
fInclNode := Tree.Items[3];
|
|
||||||
fXtraNode := Tree.Items[4];
|
|
||||||
//
|
//
|
||||||
Tree.PopupMenu := contextMenu;
|
Tree.PopupMenu := contextMenu;
|
||||||
//
|
//
|
||||||
|
@ -133,7 +130,6 @@ begin
|
||||||
case index of
|
case index of
|
||||||
0: exit(fActOpenFile);
|
0: exit(fActOpenFile);
|
||||||
1: exit(fActSelConf);
|
1: exit(fActSelConf);
|
||||||
2: exit(fActBuildConf);
|
|
||||||
else exit(nil);
|
else exit(nil);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -145,7 +141,7 @@ end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.actBuildExecute(sender: TObject);
|
procedure TCEProjectInspectWidget.actBuildExecute(sender: TObject);
|
||||||
begin
|
begin
|
||||||
if fProject.isNotNil then
|
if fProject <> nil then
|
||||||
begin
|
begin
|
||||||
actOpenFileExecute(sender);
|
actOpenFileExecute(sender);
|
||||||
fProject.compile;
|
fProject.compile;
|
||||||
|
@ -156,50 +152,41 @@ end;
|
||||||
{$REGION ICEProjectMonitor -----------------------------------------------------}
|
{$REGION ICEProjectMonitor -----------------------------------------------------}
|
||||||
procedure TCEProjectInspectWidget.projNew(project: ICECommonProject);
|
procedure TCEProjectInspectWidget.projNew(project: ICECommonProject);
|
||||||
begin
|
begin
|
||||||
fProject := nil;
|
|
||||||
enabled := false;
|
|
||||||
fLastFileOrFolder := '';
|
fLastFileOrFolder := '';
|
||||||
if project.getFormat <> pfNative then
|
fProject := project;
|
||||||
exit;
|
if Visible then
|
||||||
enabled := true;
|
updateImperative;
|
||||||
//
|
updateButtons;
|
||||||
fProject := TCENativeProject(project.getProject);
|
|
||||||
if Visible then updateImperative;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.projClosing(project: ICECommonProject);
|
procedure TCEProjectInspectWidget.projClosing(project: ICECommonProject);
|
||||||
begin
|
begin
|
||||||
if fProject.isNil then exit;
|
if not assigned(fProject) then
|
||||||
if fProject <> project.getProject then
|
exit;
|
||||||
|
if project <> fProject then
|
||||||
exit;
|
exit;
|
||||||
fProject := nil;
|
fProject := nil;
|
||||||
fLastFileOrFolder := '';
|
fLastFileOrFolder := '';
|
||||||
enabled := false;
|
|
||||||
updateImperative;
|
updateImperative;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.projFocused(project: ICECommonProject);
|
procedure TCEProjectInspectWidget.projFocused(project: ICECommonProject);
|
||||||
begin
|
begin
|
||||||
fProject := nil;
|
|
||||||
enabled := false;
|
|
||||||
fLastFileOrFolder := '';
|
fLastFileOrFolder := '';
|
||||||
if project.getFormat <> pfNative then
|
fProject := project;
|
||||||
begin
|
updateButtons;
|
||||||
updateImperative;
|
if Visible then
|
||||||
exit;
|
beginDelayedUpdate;
|
||||||
end;
|
|
||||||
enabled := true;
|
|
||||||
//
|
|
||||||
fProject := TCENativeProject(project.getProject);
|
|
||||||
if Visible then beginDelayedUpdate;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.projChanged(project: ICECommonProject);
|
procedure TCEProjectInspectWidget.projChanged(project: ICECommonProject);
|
||||||
begin
|
begin
|
||||||
if fProject.isNil then exit;
|
if not assigned(fProject) then
|
||||||
if fProject <> project.getProject then
|
|
||||||
exit;
|
exit;
|
||||||
if Visible then beginDelayedUpdate;
|
if fProject <> project then
|
||||||
|
exit;
|
||||||
|
if Visible then
|
||||||
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.projCompiling(project: ICECommonProject);
|
procedure TCEProjectInspectWidget.projCompiling(project: ICECommonProject);
|
||||||
|
@ -209,6 +196,18 @@ end;
|
||||||
procedure TCEProjectInspectWidget.projCompiled(project: ICECommonProject; success: boolean);
|
procedure TCEProjectInspectWidget.projCompiled(project: ICECommonProject; success: boolean);
|
||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEProjectInspectWidget.updateButtons;
|
||||||
|
var
|
||||||
|
ce: boolean;
|
||||||
|
begin
|
||||||
|
ce := fProject.getFormat = pfNative;
|
||||||
|
btnRemFile.Enabled:= ce;
|
||||||
|
btnRemFold.Enabled:= ce;
|
||||||
|
btnAddFile.Enabled:= ce;
|
||||||
|
btnAddFold.Enabled:= ce;
|
||||||
|
end;
|
||||||
|
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION Inspector things -------------------------------------------------------}
|
{$REGION Inspector things -------------------------------------------------------}
|
||||||
|
@ -237,10 +236,17 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEProjectInspectWidget.TreeDeletion(Sender: TObject; Node: TTreeNode
|
||||||
|
);
|
||||||
|
begin
|
||||||
|
if Node.isNotNil and Node.Data.isNotNil then
|
||||||
|
dispose(PString(Node.Data));
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject);
|
procedure TCEProjectInspectWidget.TreeSelectionChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
actUpdate(sender);
|
actUpdate(sender);
|
||||||
if fProject.isNil or Tree.Selected.isNil then
|
if not assigned(fProject) or Tree.Selected.isNil then
|
||||||
exit;
|
exit;
|
||||||
if (Tree.Selected.Parent = fFileNode) then
|
if (Tree.Selected.Parent = fFileNode) then
|
||||||
fLastFileOrFolder := expandFilenameEx(fProject.basePath,tree.Selected.Text)
|
fLastFileOrFolder := expandFilenameEx(fProject.basePath,tree.Selected.Text)
|
||||||
|
@ -251,19 +257,16 @@ end;
|
||||||
procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject);
|
procedure TCEProjectInspectWidget.TreeDblClick(sender: TObject);
|
||||||
var
|
var
|
||||||
fname: string;
|
fname: string;
|
||||||
i, j: integer;
|
i: integer;
|
||||||
begin
|
begin
|
||||||
if fProject.isNil or Tree.Selected.isNil then
|
if not assigned(fProject) or Tree.Selected.isNil then
|
||||||
exit;
|
exit;
|
||||||
//
|
|
||||||
if (Tree.Selected.Parent = fFileNode) or (Tree.Selected.Parent = fXtraNode) then
|
if Tree.Selected.Parent = fFileNode then
|
||||||
begin
|
begin
|
||||||
for j:= 0 to Tree.SelectionCount-1 do
|
if Tree.Selected.Data.isNotNil then
|
||||||
begin
|
begin
|
||||||
fname := Tree.Selections[j].Text;
|
fname := PString(Tree.Selected.Data)^;
|
||||||
i := fProject.Sources.IndexOf(fname);
|
|
||||||
if i > -1 then
|
|
||||||
fname := fProject.sourceAbsolute(i);
|
|
||||||
if isEditable(fname.extractFileExt) and fname.fileExists then
|
if isEditable(fname.extractFileExt) and fname.fileExists then
|
||||||
getMultiDocHandler.openDocument(fname);
|
getMultiDocHandler.openDocument(fname);
|
||||||
end;
|
end;
|
||||||
|
@ -271,7 +274,7 @@ begin
|
||||||
else if Tree.Selected.Parent = fConfNode then
|
else if Tree.Selected.Parent = fConfNode then
|
||||||
begin
|
begin
|
||||||
i := Tree.Selected.Index;
|
i := Tree.Selected.Index;
|
||||||
fProject.ConfigurationIndex := i;
|
fProject.setActiveConfigurationIndex(i);
|
||||||
beginDelayedUpdate;
|
beginDelayedUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -281,7 +284,8 @@ begin
|
||||||
fActSelConf.Enabled := false;
|
fActSelConf.Enabled := false;
|
||||||
fActOpenFile.Enabled := false;
|
fActOpenFile.Enabled := false;
|
||||||
fActBuildConf.Enabled:= false;
|
fActBuildConf.Enabled:= false;
|
||||||
if Tree.Selected.isNil then exit;
|
if Tree.Selected.isNil then
|
||||||
|
exit;
|
||||||
fActSelConf.Enabled := Tree.Selected.Parent = fConfNode;
|
fActSelConf.Enabled := Tree.Selected.Parent = fConfNode;
|
||||||
fActBuildConf.Enabled := Tree.Selected.Parent = fConfNode;
|
fActBuildConf.Enabled := Tree.Selected.Parent = fConfNode;
|
||||||
fActOpenFile.Enabled := Tree.Selected.Parent = fFileNode;
|
fActOpenFile.Enabled := Tree.Selected.Parent = fFileNode;
|
||||||
|
@ -290,9 +294,12 @@ end;
|
||||||
procedure TCEProjectInspectWidget.btnAddFileClick(Sender: TObject);
|
procedure TCEProjectInspectWidget.btnAddFileClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
fname: string;
|
fname: string;
|
||||||
|
proj: TCENativeProject;
|
||||||
begin
|
begin
|
||||||
if fProject.isNil then exit;
|
if not assigned(fProject) or (fProject.getFormat = pfDub) then
|
||||||
//
|
exit;
|
||||||
|
|
||||||
|
proj := TCENativeProject(fProject.getProject);
|
||||||
with TOpenDialog.Create(nil) do
|
with TOpenDialog.Create(nil) do
|
||||||
try
|
try
|
||||||
options := options + [ofAllowMultiSelect];
|
options := options + [ofAllowMultiSelect];
|
||||||
|
@ -303,10 +310,10 @@ begin
|
||||||
filter := DdiagFilter;
|
filter := DdiagFilter;
|
||||||
if execute then
|
if execute then
|
||||||
begin
|
begin
|
||||||
fProject.beginUpdate;
|
proj.beginUpdate;
|
||||||
for fname in Files do
|
for fname in Files do
|
||||||
fProject.addSource(fname);
|
proj.addSource(fname);
|
||||||
fProject.endUpdate;
|
proj.endUpdate;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
free;
|
free;
|
||||||
|
@ -317,11 +324,14 @@ procedure TCEProjectInspectWidget.btnAddFoldClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
dir, fname: string;
|
dir, fname: string;
|
||||||
lst: TStringList;
|
lst: TStringList;
|
||||||
i: NativeInt;
|
proj: TCENativeProject;
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
if fProject.isNil then exit;
|
if not assigned(fProject) or (fProject.getFormat = pfDub) then
|
||||||
//
|
exit;
|
||||||
|
|
||||||
dir := '';
|
dir := '';
|
||||||
|
proj := TCENativeProject(fProject.getProject);
|
||||||
if fLastFileOrFolder.fileExists then
|
if fLastFileOrFolder.fileExists then
|
||||||
dir := fLastFileOrFolder.extractFilePath
|
dir := fLastFileOrFolder.extractFilePath
|
||||||
else if fLastFileOrFolder.dirExists then
|
else if fLastFileOrFolder.dirExists then
|
||||||
|
@ -330,7 +340,7 @@ begin
|
||||||
dir := fProject.fileName.extractFilePath;
|
dir := fProject.fileName.extractFilePath;
|
||||||
if selectDirectory('sources', dir, dir, true, 0) then
|
if selectDirectory('sources', dir, dir, true, 0) then
|
||||||
begin
|
begin
|
||||||
fProject.beginUpdate;
|
proj.beginUpdate;
|
||||||
lst := TStringList.Create;
|
lst := TStringList.Create;
|
||||||
try
|
try
|
||||||
listFiles(lst, dir, true);
|
listFiles(lst, dir, true);
|
||||||
|
@ -338,11 +348,11 @@ begin
|
||||||
begin
|
begin
|
||||||
fname := lst[i];
|
fname := lst[i];
|
||||||
if isDlangCompilable(fname.extractFileExt) then
|
if isDlangCompilable(fname.extractFileExt) then
|
||||||
fProject.addSource(fname);
|
proj.addSource(fname);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
lst.Free;
|
lst.Free;
|
||||||
fProject.endUpdate;
|
proj.endUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -350,49 +360,57 @@ end;
|
||||||
procedure TCEProjectInspectWidget.btnRemFoldClick(Sender: TObject);
|
procedure TCEProjectInspectWidget.btnRemFoldClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
dir, fname: string;
|
dir, fname: string;
|
||||||
|
proj: TCENativeProject;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if fProject.isNil or Tree.Selected.isNil then
|
if not assigned(fProject) or (fProject.getFormat = pfDub)
|
||||||
|
or Tree.Selected.isNil or (Tree.Selected.Parent <> fFileNode) then
|
||||||
exit;
|
exit;
|
||||||
if Tree.Selected.Parent <> fFileNode then exit;
|
|
||||||
//
|
proj := TCENativeProject(fProject.getProject);
|
||||||
fname := Tree.Selected.Text;
|
fname := Tree.Selected.Text;
|
||||||
i := fProject.Sources.IndexOf(fname);
|
i := proj.Sources.IndexOf(fname);
|
||||||
if i = -1 then exit;
|
if i = -1 then
|
||||||
|
exit;
|
||||||
fname := fProject.sourceAbsolute(i);
|
fname := fProject.sourceAbsolute(i);
|
||||||
dir := fname.extractFilePath;
|
dir := fname.extractFilePath;
|
||||||
if not dir.dirExists then exit;
|
if not dir.dirExists then
|
||||||
//
|
exit;
|
||||||
fProject.beginUpdate;
|
|
||||||
for i:= fProject.Sources.Count-1 downto 0 do
|
proj.beginUpdate;
|
||||||
if fProject.sourceAbsolute(i).extractFilePath = dir then
|
for i:= proj.Sources.Count-1 downto 0 do
|
||||||
fProject.Sources.Delete(i);
|
if proj.sourceAbsolute(i).extractFilePath = dir then
|
||||||
fProject.endUpdate;
|
proj.Sources.Delete(i);
|
||||||
|
proj.endUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject);
|
procedure TCEProjectInspectWidget.btnRemFileClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
fname: string;
|
fname: string;
|
||||||
|
proj: TCENativeProject;
|
||||||
i, j: integer;
|
i, j: integer;
|
||||||
begin
|
begin
|
||||||
if fProject.isNil or Tree.Selected.isNil then
|
if not assigned(fProject) or (fProject.getFormat = pfDub)
|
||||||
|
or Tree.Selected.isNil or (Tree.Selected.Parent = fFileNode) then
|
||||||
exit;
|
exit;
|
||||||
//
|
|
||||||
if Tree.Selected.Parent = fFileNode then
|
proj := TCENativeProject(fProject.getProject);
|
||||||
|
proj.beginUpdate;
|
||||||
|
for j:= 0 to Tree.SelectionCount-1 do
|
||||||
begin
|
begin
|
||||||
fProject.beginUpdate;
|
fname := Tree.Selections[j].Text;
|
||||||
for j:= 0 to Tree.SelectionCount-1 do
|
i := proj.Sources.IndexOf(fname);
|
||||||
begin
|
if i <> -1 then
|
||||||
fname := Tree.Selections[j].Text;
|
proj.Sources.Delete(i);
|
||||||
i := fProject.Sources.IndexOf(fname);
|
|
||||||
if i <> -1 then
|
|
||||||
fProject.Sources.Delete(i);
|
|
||||||
end;
|
|
||||||
fProject.endUpdate;
|
|
||||||
end;
|
end;
|
||||||
|
proj.endUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.FormDropFiles(Sender: TObject; const fnames: array of String);
|
procedure TCEProjectInspectWidget.FormDropFiles(Sender: TObject; const fnames: array of String);
|
||||||
|
var
|
||||||
|
fname, direntry: string;
|
||||||
|
lst: TStringList;
|
||||||
|
proj: TCENativeProject;
|
||||||
procedure addFile(const value: string);
|
procedure addFile(const value: string);
|
||||||
var
|
var
|
||||||
ext: string;
|
ext: string;
|
||||||
|
@ -400,17 +418,17 @@ begin
|
||||||
ext := value.extractFileExt;
|
ext := value.extractFileExt;
|
||||||
if not isDlangCompilable(ext) then
|
if not isDlangCompilable(ext) then
|
||||||
exit;
|
exit;
|
||||||
fProject.addSource(value);
|
proj.addSource(value);
|
||||||
if isEditable(ext) then
|
if isEditable(ext) then
|
||||||
getMultiDocHandler.openDocument(value);
|
getMultiDocHandler.openDocument(value);
|
||||||
end;
|
end;
|
||||||
var
|
|
||||||
fname, direntry: string;
|
|
||||||
lst: TStringList;
|
|
||||||
begin
|
begin
|
||||||
if fProject.isNil then exit;
|
if not assigned(fProject) or (fProject.getFormat = pfDub) then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
proj := TCENativeProject(fProject.getProject);
|
||||||
lst := TStringList.Create;
|
lst := TStringList.Create;
|
||||||
fProject.beginUpdate;
|
proj.beginUpdate;
|
||||||
try for fname in fnames do
|
try for fname in fnames do
|
||||||
if fname.fileExists then
|
if fname.fileExists then
|
||||||
addFile(fname)
|
addFile(fname)
|
||||||
|
@ -422,7 +440,7 @@ begin
|
||||||
addFile(dirEntry);
|
addFile(dirEntry);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
fProject.endUpdate;
|
proj.endUpdate;
|
||||||
lst.Free;
|
lst.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -434,35 +452,32 @@ end;
|
||||||
|
|
||||||
procedure TCEProjectInspectWidget.updateImperative;
|
procedure TCEProjectInspectWidget.updateImperative;
|
||||||
var
|
var
|
||||||
src, fold, conf, str: string;
|
src, conf: string;
|
||||||
lst: TStringList;
|
|
||||||
itm: TTreeNode;
|
itm: TTreeNode;
|
||||||
i: NativeInt;
|
i,j: integer;
|
||||||
begin
|
begin
|
||||||
fConfNode.DeleteChildren;
|
fConfNode.DeleteChildren;
|
||||||
fFileNode.DeleteChildren;
|
fFileNode.DeleteChildren;
|
||||||
fImpsNode.DeleteChildren;
|
|
||||||
fInclNode.DeleteChildren;
|
if not assigned(fProject) then
|
||||||
fXtraNode.DeleteChildren;
|
|
||||||
//
|
|
||||||
if fProject.isNil then
|
|
||||||
exit;
|
exit;
|
||||||
//
|
|
||||||
Tree.BeginUpdate;
|
Tree.BeginUpdate;
|
||||||
// display main sources
|
for i := 0 to fProject.sourcesCount-1 do
|
||||||
for src in fProject.Sources do
|
|
||||||
begin
|
begin
|
||||||
itm := Tree.Items.AddChild(fFileNode, src);
|
itm := Tree.Items.AddChild(fFileNode, fProject.sourceRelative(i));
|
||||||
|
itm.Data:= NewStr(fProject.sourceAbsolute(i));
|
||||||
itm.ImageIndex := 2;
|
itm.ImageIndex := 2;
|
||||||
itm.SelectedIndex := 2;
|
itm.SelectedIndex := 2;
|
||||||
end;
|
end;
|
||||||
// display configurations
|
j := fProject.getActiveConfigurationIndex;
|
||||||
for i := 0 to fProject.OptionsCollection.Count-1 do
|
for i := 0 to fProject.configurationCount-1 do
|
||||||
begin
|
begin
|
||||||
conf := fProject.configuration[i].name;
|
conf := fProject.configurationName(i);
|
||||||
if i = fProject.ConfigurationIndex then conf += ' (active)';
|
if i = j then
|
||||||
|
conf += ' (active)';
|
||||||
itm := Tree.Items.AddChild(fConfNode, conf);
|
itm := Tree.Items.AddChild(fConfNode, conf);
|
||||||
if i = fProject.ConfigurationIndex then
|
if i = j then
|
||||||
begin
|
begin
|
||||||
itm.ImageIndex := 7;
|
itm.ImageIndex := 7;
|
||||||
itm.SelectedIndex:= 7;
|
itm.SelectedIndex:= 7;
|
||||||
|
@ -473,55 +488,6 @@ begin
|
||||||
itm.SelectedIndex:= 3;
|
itm.SelectedIndex:= 3;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
// display Imports (-J)
|
|
||||||
for str in FProject.currentConfiguration.pathsOptions.importStringPaths do
|
|
||||||
begin
|
|
||||||
if str.isEmpty then
|
|
||||||
continue;
|
|
||||||
fold := expandFilenameEx(fProject.basePath, str);
|
|
||||||
fold := fSymStringExpander.expand(fold);
|
|
||||||
itm := Tree.Items.AddChild(fImpsNode, fold);
|
|
||||||
itm.ImageIndex := 5;
|
|
||||||
itm.SelectedIndex := 5;
|
|
||||||
end;
|
|
||||||
fImpsNode.Collapse(false);
|
|
||||||
// display Includes (-I)
|
|
||||||
for str in FProject.currentConfiguration.pathsOptions.importModulePaths do
|
|
||||||
begin
|
|
||||||
if str.isEmpty then
|
|
||||||
continue;
|
|
||||||
fold := expandFilenameEx(fProject.basePath, str);
|
|
||||||
fold := fSymStringExpander.expand(fold);
|
|
||||||
itm := Tree.Items.AddChild(fInclNode, fold);
|
|
||||||
itm.ImageIndex := 5;
|
|
||||||
itm.SelectedIndex := 5;
|
|
||||||
end;
|
|
||||||
fInclNode.Collapse(false);
|
|
||||||
// display extra sources (external .lib, *.a, *.d)
|
|
||||||
for str in FProject.currentConfiguration.pathsOptions.extraSources do
|
|
||||||
begin
|
|
||||||
if str.isEmpty then
|
|
||||||
continue;
|
|
||||||
src := expandFilenameEx(fProject.basePath, str);
|
|
||||||
src := fSymStringExpander.expand(src);
|
|
||||||
lst := TStringList.Create;
|
|
||||||
try
|
|
||||||
if listAsteriskPath(src, lst) then for src in lst do
|
|
||||||
begin
|
|
||||||
itm := Tree.Items.AddChild(fXtraNode, src);
|
|
||||||
itm.ImageIndex := 2;
|
|
||||||
itm.SelectedIndex := 2;
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
itm := Tree.Items.AddChild(fXtraNode, src);
|
|
||||||
itm.ImageIndex := 2;
|
|
||||||
itm.SelectedIndex := 2;
|
|
||||||
end;
|
|
||||||
finally
|
|
||||||
lst.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
fXtraNode.Collapse(false);
|
|
||||||
Tree.EndUpdate;
|
Tree.EndUpdate;
|
||||||
end;
|
end;
|
||||||
{$ENDREGION --------------------------------------------------------------------}
|
{$ENDREGION --------------------------------------------------------------------}
|
||||||
|
|
Loading…
Reference in New Issue