IDE: Improvements for ProjectInspector. Issue #28127, patch from Alexey Torgashin.

git-svn-id: trunk@49101 -
This commit is contained in:
juha 2015-05-18 23:01:18 +00:00
parent eb15eb559f
commit 5748dddb92
4 changed files with 125 additions and 47 deletions

View File

@ -4,30 +4,30 @@ object AddToProjectDialog: TAddToProjectDialog
Top = 250
Width = 598
ActiveControl = Notebook
BorderStyle = bsSizeToolWin
BorderIcons = [biSystemMenu, biMaximize]
Caption = 'AddToProjectDialog'
ClientHeight = 339
ClientWidth = 598
OnClose = AddToProjectDialogClose
Position = poScreenCenter
LCLVersion = '1.3'
LCLVersion = '1.5'
object Notebook: TPageControl
Left = 0
Height = 297
Height = 301
Top = 0
Width = 598
ActivePage = AddEditorFilePage
ActivePage = AddFilesPage
Align = alClient
TabIndex = 0
TabIndex = 2
TabOrder = 0
OnChange = NotebookChange
object AddEditorFilePage: TTabSheet
Caption = 'AddEditorFilePage'
ClientHeight = 264
ClientHeight = 273
ClientWidth = 590
object AddFileLabel: TLabel
Left = 6
Height = 20
Height = 15
Top = 6
Width = 578
Align = alTop
@ -37,8 +37,8 @@ object AddToProjectDialog: TAddToProjectDialog
end
object AddFileListView: TListView
Left = 6
Height = 224
Top = 32
Height = 238
Top = 27
Width = 578
Align = alTop
Anchors = [akTop, akLeft, akRight, akBottom]
@ -84,13 +84,13 @@ object AddToProjectDialog: TAddToProjectDialog
end
object DependPkgNameComboBox: TComboBox
Left = 218
Height = 28
Height = 23
Top = 14
Width = 370
Anchors = [akTop, akLeft, akRight]
AutoComplete = True
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 20
ItemHeight = 15
OnChange = DependPkgNameComboBoxChange
TabOrder = 0
Text = 'DependPkgNameComboBox'
@ -116,12 +116,12 @@ object AddToProjectDialog: TAddToProjectDialog
end
object AddFilesPage: TTabSheet
Caption = 'AddFilesPage'
ClientHeight = 264
ClientHeight = 273
ClientWidth = 590
object FilesListView: TListView
AnchorSideBottom.Control = FilesDirButton
Left = 6
Height = 216
Height = 230
Top = 6
Width = 578
Anchors = [akTop, akLeft, akRight, akBottom]
@ -141,9 +141,9 @@ object AddToProjectDialog: TAddToProjectDialog
AnchorSideBottom.Control = AddFilesPage
AnchorSideBottom.Side = asrBottom
Left = 6
Height = 30
Top = 228
Width = 119
Height = 25
Top = 242
Width = 100
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Around = 6
@ -156,10 +156,10 @@ object AddToProjectDialog: TAddToProjectDialog
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = FilesDirButton
AnchorSideTop.Side = asrCenter
Left = 131
Height = 30
Top = 228
Width = 150
Left = 112
Height = 25
Top = 242
Width = 126
AutoSize = True
BorderSpacing.Around = 6
Caption = 'FilesShortenButton'
@ -171,10 +171,10 @@ object AddToProjectDialog: TAddToProjectDialog
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = FilesShortenButton
AnchorSideTop.Side = asrCenter
Left = 287
Height = 30
Top = 228
Width = 143
Left = 244
Height = 25
Top = 242
Width = 118
AutoSize = True
BorderSpacing.Around = 6
Caption = 'FilesDeleteButton'
@ -185,8 +185,8 @@ object AddToProjectDialog: TAddToProjectDialog
end
object ButtonPanel: TButtonPanel
Left = 6
Height = 30
Top = 303
Height = 26
Top = 307
Width = 586
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True

View File

@ -44,7 +44,8 @@ uses
type
TAddToProjectType = (
a2pFiles,
a2pRequiredPkg
a2pRequiredPkg,
a2pEditorFiles
);
TAddToProjectResult = class
@ -113,7 +114,8 @@ type
end;
function ShowAddToProjectDlg(AProject: TProject;
var AddResult: TAddToProjectResult): TModalResult;
var AddResult: TAddToProjectResult;
AInitTab: TAddToProjectType): TModalResult;
function CheckAddingDependency(LazProject: TProject;
NewDependency: TPkgDependency): boolean;
@ -123,7 +125,9 @@ implementation
{$R *.lfm}
function ShowAddToProjectDlg(AProject: TProject;
var AddResult: TAddToProjectResult): TModalResult;
var AddResult: TAddToProjectResult;
AInitTab: TAddToProjectType
): TModalResult;
var
AddToProjectDialog: TAddToProjectDialog;
begin
@ -131,6 +135,18 @@ begin
AddToProjectDialog.TheProject:=AProject;
AddToProjectDialog.UpdateAvailableFiles;
AddToProjectDialog.UpdateAvailableDependencyNames;
case AInitTab of
a2pFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=2;
a2pEditorFiles: AddToProjectDialog.NoteBook.ActivePageIndex:=0;
a2pRequiredPkg: AddToProjectDialog.NoteBook.ActivePageIndex:=1;
end;
// hide tabs for simple look
AddToProjectDialog.NoteBook.ShowTabs:=false;
// press "Add files" btn
if AInitTab=a2pFiles then
AddToProjectDialog.FilesDirButton.Click;
Result:=AddToProjectDialog.ShowModal;
if Result=mrOk then begin
AddResult:=AddToProjectDialog.AddResult;

View File

@ -1,7 +1,7 @@
object ProjectInspectorForm: TProjectInspectorForm
Left = 393
Left = 670
Height = 456
Top = 104
Top = 134
Width = 299
ActiveControl = ItemsTreeView
AllowDropFiles = True
@ -18,6 +18,7 @@ object ProjectInspectorForm: TProjectInspectorForm
Align = alClient
Anchors = [akTop, akLeft, akBottom]
BorderSpacing.Top = 2
DefaultItemHeight = 18
DragMode = dmAutomatic
MultiSelect = True
PopupMenu = ItemsPopupMenu
@ -38,6 +39,7 @@ object ProjectInspectorForm: TProjectInspectorForm
Top = 48
Width = 299
Align = alTop
BevelOuter = bvNone
ClientHeight = 28
ClientWidth = 299
TabOrder = 1
@ -45,13 +47,14 @@ object ProjectInspectorForm: TProjectInspectorForm
AnchorSideLeft.Control = BtnPanel
AnchorSideTop.Control = BtnPanel
AnchorSideTop.Side = asrCenter
Left = 1
Height = 26
Top = 1
Left = 2
Height = 25
Top = 2
Width = 25
Align = alLeft
AllowAllUp = True
AutoSize = True
BorderSpacing.Around = 2
Constraints.MinHeight = 25
Constraints.MinWidth = 25
OnClick = OpenButtonClick
@ -63,13 +66,14 @@ object ProjectInspectorForm: TProjectInspectorForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OpenButton
AnchorSideTop.Side = asrCenter
Left = 37
Left = 40
Height = 25
Top = 2
Width = 25
AllowAllUp = True
AutoSize = True
BorderSpacing.Left = 11
BorderSpacing.Around = 2
Constraints.MinHeight = 25
Constraints.MinWidth = 25
GroupIndex = 1
@ -82,13 +86,13 @@ object ProjectInspectorForm: TProjectInspectorForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OpenButton
AnchorSideTop.Side = asrCenter
Left = 63
Left = 67
Height = 25
Top = 2
Width = 25
AllowAllUp = True
AutoSize = True
BorderSpacing.Left = 1
BorderSpacing.Around = 2
Constraints.MinHeight = 25
Constraints.MinWidth = 25
GroupIndex = 2
@ -101,10 +105,10 @@ object ProjectInspectorForm: TProjectInspectorForm
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = SortAlphabeticallyButton
AnchorSideTop.Side = asrCenter
Left = 91
Height = 28
Top = 0
Width = 205
Left = 95
Height = 23
Top = 3
Width = 201
UseFormActivate = True
ButtonWidth = 23
NumGlyphs = 1
@ -131,5 +135,32 @@ object ProjectInspectorForm: TProjectInspectorForm
OnPopup = ItemsPopupMenuPopup
left = 72
top = 112
object MenuItem1: TMenuItem
Caption = 'New Item1'
end
end
object AddPopupMenu: TPopupMenu
left = 74
top = 163
object mnuAddDiskFile: TMenuItem
Caption = 'Add file from disk'
Default = True
OnClick = AddBitBtnClick
end
object MenuItem2: TMenuItem
Caption = '-'
end
object mnuAddDiskFiles: TMenuItem
Caption = 'Add files'
OnClick = mnuAddDiskFilesClick
end
object mnuAddEditorFiles: TMenuItem
Caption = 'Add editor files'
OnClick = mnuAddEditorFilesClick
end
object mnuAddReq: TMenuItem
Caption = 'Add requirement'
OnClick = mnuAddReqClick
end
end
end

View File

@ -86,9 +86,16 @@ type
{ TProjectInspectorForm }
TProjectInspectorForm = class(TForm,IFilesEditorInterface)
AddPopupMenu: TPopupMenu;
BtnPanel: TPanel;
DirectoryHierarchyButton: TSpeedButton;
FilterEdit: TTreeFilterEdit;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
mnuAddEditorFiles: TMenuItem;
mnuAddDiskFile: TMenuItem;
mnuAddDiskFiles: TMenuItem;
mnuAddReq: TMenuItem;
OpenButton: TSpeedButton;
ItemsTreeView: TTreeView;
ItemsPopupMenu: TPopupMenu;
@ -97,12 +104,10 @@ type
ToolBar: TToolBar;
// toolbuttons
AddBitBtn: TToolButton;
AddMoreBitBtn: TToolButton;
RemoveBitBtn: TToolButton;
OptionsBitBtn: TToolButton;
HelpBitBtn: TToolButton;
procedure AddBitBtnClick(Sender: TObject);
procedure AddMoreBitBtnClick(Sender: TObject);
procedure CopyMoveToDirMenuItemClick(Sender: TObject);
procedure DirectoryHierarchyButtonClick(Sender: TObject);
procedure FormDropFiles(Sender: TObject; const FileNames: array of String);
@ -116,6 +121,9 @@ type
State: TDragState; var Accept: Boolean);
procedure ItemsTreeViewKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure ItemsTreeViewSelectionChanged(Sender: TObject);
procedure mnuAddDiskFilesClick(Sender: TObject);
procedure mnuAddEditorFilesClick(Sender: TObject);
procedure mnuAddReqClick(Sender: TObject);
procedure MoveDependencyUpClick(Sender: TObject);
procedure MoveDependencyDownClick(Sender: TObject);
procedure SetDependencyDefaultFilenameMenuItemClick(Sender: TObject);
@ -162,6 +170,7 @@ type
FFlags: TProjectInspectorFlags;
FProjectNodeDataList : array [TPENodeType] of TPENodeData;
function AddOneFile(aFilename: string): TModalResult;
procedure DoAddMoreDialog(AInitTab: TAddToProjectType);
procedure FreeNodeData(Typ: TPENodeType);
function CreateNodeData(Typ: TPENodeType; aName: string; aRemoved: boolean): TPENodeData;
procedure SetDependencyDefaultFilename(AsPreferred: boolean);
@ -320,6 +329,21 @@ begin
UpdateButtons;
end;
procedure TProjectInspectorForm.mnuAddDiskFilesClick(Sender: TObject);
begin
DoAddMoreDialog(a2pFiles);
end;
procedure TProjectInspectorForm.mnuAddEditorFilesClick(Sender: TObject);
begin
DoAddMoreDialog(a2pEditorFiles);
end;
procedure TProjectInspectorForm.mnuAddReqClick(Sender: TObject);
begin
DoAddMoreDialog(a2pRequiredPkg);
end;
procedure TProjectInspectorForm.MoveDependencyUpClick(Sender: TObject);
var
Dependency: TPkgDependency;
@ -428,13 +452,13 @@ begin
end;
end;
procedure TProjectInspectorForm.AddMoreBitBtnClick(Sender: TObject);
procedure TProjectInspectorForm.DoAddMoreDialog(AInitTab: TAddToProjectType);
var
AddResult: TAddToProjectResult;
i: Integer;
begin
AddResult:=nil;
if ShowAddToProjectDlg(LazProject,AddResult)<>mrOk then exit;
if ShowAddToProjectDlg(LazProject,AddResult,AInitTab)<>mrOk then exit;
case AddResult.AddType of
a2pFiles:
@ -456,6 +480,8 @@ begin
EndUpdate;
end;
else
Showmessage('Not implemented');
end;
AddResult.Free;
@ -937,13 +963,18 @@ begin
ToolBar.Images := IDEImages.Images_16;
FilterEdit.OnGetImageIndex:=@OnTreeViewGetImageIndex;
AddBitBtn := CreateToolButton('AddBitBtn', lisAdd, lisPckEditAddFilesFromFileSystem, 'laz_add', @AddBitBtnClick);
AddMoreBitBtn := CreateToolButton('AddMoreBitBtn', lisDlgAdd, lisPckEditAddOtherItems, 'laz_addmore', @AddMoreBitBtnClick);
AddBitBtn := CreateToolButton('AddBitBtn', lisAddSub, lisClickToSeeTheChoices, 'laz_add', nil);
RemoveBitBtn := CreateToolButton('RemoveBitBtn', lisRemove, lisPckEditRemoveSelectedItem, 'laz_delete', @RemoveBitBtnClick);
CreateDivider;
OptionsBitBtn := CreateToolButton('OptionsBitBtn', lisOptions, lisPckEditEditGeneralOptions, 'menu_environment_options', @OptionsBitBtnClick);
HelpBitBtn := CreateToolButton('HelpBitBtn', GetButtonCaption(idButtonHelp), lisPkgEdMoreFunctionsForThePackage, 'menu_help', @HelpBitBtnClick);
AddBitBtn.DropdownMenu:=AddPopupMenu;
mnuAddDiskFile.Caption:=lisPckEditAddFilesFromFileSystem;
mnuAddDiskFiles.Caption:=lisAddFilesInDirectory;
mnuAddEditorFiles.Caption:=lisProjAddEditorFile;
mnuAddReq.Caption:=lisProjAddNewRequirement;
OpenButton.LoadGlyphFromResourceName(HInstance, 'laz_open');
OpenButton.Caption:='';
OpenButton.Hint:=lisOpenFile2;