diff --git a/components/filebrowser/frmfilebrowser.lfm b/components/filebrowser/frmfilebrowser.lfm index 78fedb0bd5..0708817b10 100644 --- a/components/filebrowser/frmfilebrowser.lfm +++ b/components/filebrowser/frmfilebrowser.lfm @@ -1,12 +1,13 @@ object FileBrowserForm: TFileBrowserForm - Left = 305 + Left = 282 Height = 434 - Top = 466 + Top = 402 Width = 385 ActiveControl = Panel1 Caption = 'File Browser' ClientHeight = 434 ClientWidth = 385 + OnActivate = FormActivate OnClose = FormClose OnCreate = FormCreate OnShow = FormShow @@ -19,10 +20,9 @@ object FileBrowserForm: TFileBrowserForm Align = alClient Directory = '/home/graemeg' FileType = [ftArchive, ftNormal] - ItemHeight = 0 + ItemHeight = 23 OnDblClick = FileListBoxDblClick TabOrder = 0 - TopIndex = -1 end object TV: TTreeView Left = 0 @@ -32,6 +32,7 @@ object FileBrowserForm: TFileBrowserForm Align = alTop DefaultItemHeight = 19 ReadOnly = True + ScrollBars = ssAutoBoth TabOrder = 1 OnExpanded = TVExpanded OnSelectionChanged = TVSelectionChanged @@ -58,7 +59,7 @@ object FileBrowserForm: TFileBrowserForm end object btnConfigure: TButton Left = 8 - Height = 25 + Height = 28 Top = 7 Width = 90 Caption = 'Configure' diff --git a/components/filebrowser/frmfilebrowser.lrs b/components/filebrowser/frmfilebrowser.lrs index dd5d826239..58984e97f2 100644 --- a/components/filebrowser/frmfilebrowser.lrs +++ b/components/filebrowser/frmfilebrowser.lrs @@ -1,27 +1,28 @@ { This is an automatically generated lazarus resource file } LazarusResources.Add('TFileBrowserForm','FORMDATA',[ - 'TPF0'#16'TFileBrowserForm'#15'FileBrowserForm'#4'Left'#3'1'#1#6'Height'#3#178 - +#1#3'Top'#3#210#1#5'Width'#3#129#1#13'ActiveControl'#7#6'Panel1'#7'Caption'#6 - +#12'File Browser'#12'ClientHeight'#3#178#1#11'ClientWidth'#3#129#1#7'OnClose' - +#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#10'LCLV' - +'ersion'#6#6'0.9.27'#0#12'TFileListBox'#11'FileListBox'#4'Left'#2#0#6'Height' - +#3#186#0#3'Top'#3#248#0#5'Width'#3#129#1#5'Align'#7#8'alClient'#9'Directory' - +#6#13'/home/graemeg'#8'FileType'#11#9'ftArchive'#8'ftNormal'#0#10'ItemHeight' - +#2#0#10'OnDblClick'#7#19'FileListBoxDblClick'#8'TabOrder'#2#0#8'TopIndex'#2 - +#255#0#0#9'TTreeView'#2'TV'#4'Left'#2#0#6'Height'#3#201#0#3'Top'#2'*'#5'Widt' - +'h'#3#129#1#5'Align'#7#5'alTop'#17'DefaultItemHeight'#2#19#8'ReadOnly'#9#8'T' - +'abOrder'#2#1#10'OnExpanded'#7#10'TVExpanded'#18'OnSelectionChanged'#7#18'TV' - +'SelectionChanged'#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection' - +#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLine' - +'s'#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6 - +'Height'#2'*'#3'Top'#2#0#5'Width'#3#129#1#5'Align'#7#5'alTop'#10'BevelOuter' - +#7#6'bvNone'#12'ClientHeight'#2'*'#11'ClientWidth'#3#129#1#8'TabOrder'#2#2#0 - +#9'TCheckBox'#8'cbHidden'#4'Left'#3#200#0#6'Height'#2#22#3'Top'#2#8#5'Width' - +#3#134#0#7'Caption'#6#17'Show hidden files'#8'OnChange'#7#14'cbHiddenChange' - +#8'TabOrder'#2#0#0#0#7'TButton'#12'btnConfigure'#4'Left'#2#8#6'Height'#2#25#3 - +'Top'#2#7#5'Width'#2'Z'#7'Caption'#6#9'Configure'#7'OnClick'#7#17'btnConfigu' - +'reClick'#8'TabOrder'#2#1#0#0#0#9'TSplitter'#9'Splitter1'#6'Cursor'#7#8'crVS' - +'plit'#4'Left'#2#0#6'Height'#2#5#3'Top'#3#243#0#5'Width'#3#129#1#5'Align'#7#5 - +'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#0 + 'TPF0'#16'TFileBrowserForm'#15'FileBrowserForm'#4'Left'#3#26#1#6'Height'#3#178 + +#1#3'Top'#3#146#1#5'Width'#3#129#1#13'ActiveControl'#7#6'Panel1'#7'Caption'#6 + +#12'File Browser'#12'ClientHeight'#3#178#1#11'ClientWidth'#3#129#1#10'OnActi' + +'vate'#7#12'FormActivate'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCre' + +'ate'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.27'#0#12'TFileListBox' + +#11'FileListBox'#4'Left'#2#0#6'Height'#3#186#0#3'Top'#3#248#0#5'Width'#3#129 + +#1#5'Align'#7#8'alClient'#9'Directory'#6#13'/home/graemeg'#8'FileType'#11#9 + +'ftArchive'#8'ftNormal'#0#10'ItemHeight'#2#23#10'OnDblClick'#7#19'FileListBo' + +'xDblClick'#8'TabOrder'#2#0#0#0#9'TTreeView'#2'TV'#4'Left'#2#0#6'Height'#3 + +#201#0#3'Top'#2'*'#5'Width'#3#129#1#5'Align'#7#5'alTop'#17'DefaultItemHeight' + +#2#19#8'ReadOnly'#9#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#1#10'OnExp' + +'anded'#7#10'TVExpanded'#18'OnSelectionChanged'#7#18'TVSelectionChanged'#7'O' + +'ptions'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedNo' + +'des'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11 + +'tvoToolTips'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'*'#3'Top'#2#0 + +#5'Width'#3#129#1#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHe' + +'ight'#2'*'#11'ClientWidth'#3#129#1#8'TabOrder'#2#2#0#9'TCheckBox'#8'cbHidde' + +'n'#4'Left'#3#200#0#6'Height'#2#22#3'Top'#2#8#5'Width'#3#134#0#7'Caption'#6 + +#17'Show hidden files'#8'OnChange'#7#14'cbHiddenChange'#8'TabOrder'#2#0#0#0#7 + +'TButton'#12'btnConfigure'#4'Left'#2#8#6'Height'#2#28#3'Top'#2#7#5'Width'#2 + +'Z'#7'Caption'#6#9'Configure'#7'OnClick'#7#17'btnConfigureClick'#8'TabOrder' + +#2#1#0#0#0#9'TSplitter'#9'Splitter1'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'H' + +'eight'#2#5#3'Top'#3#243#0#5'Width'#3#129#1#5'Align'#7#5'alTop'#12'ResizeAnc' + +'hor'#7#5'akTop'#0#0#0 ]); diff --git a/components/filebrowser/frmfilebrowser.pas b/components/filebrowser/frmfilebrowser.pas index 3861f6f285..f356f670a6 100644 --- a/components/filebrowser/frmfilebrowser.pas +++ b/components/filebrowser/frmfilebrowser.pas @@ -39,6 +39,7 @@ type procedure FormShow(Sender: TObject); procedure TVExpanded(Sender: TObject; Node: TTreeNode); procedure TVSelectionChanged(Sender: TObject); + procedure FormActivate(Sender: TObject); private FOnConfigure: TNotifyEvent; FOnOpenFile: TOpenFileEvent; @@ -47,6 +48,7 @@ type FRootDir: string; FDir: string; FShowHidden: Boolean; + FOnLoadLayout: TNotifyEvent; procedure AddDirectories(Node: TTreeNode; Dir: string); function GetAbsolutePath(Node: TTreeNode): string; procedure SetDir(const Value: string); @@ -72,6 +74,7 @@ type property OnSelectDir: TNotifyEvent read FOnSelectDir write FOnSelectDir; { OnLoadLayout } property OnSaveLayout: TNotifyEvent read FOnSaveLayout write FOnSaveLayout; + property OnLoadLayout: TNotifyEvent read FOnLoadLayout write FOnLoadLayout; end; var @@ -140,6 +143,12 @@ begin OnselectDir(Self); end; +procedure TFileBrowserForm.FormActivate(Sender: TObject); +begin + { for some reason this does not work in FormShow } + TV.MakeSelectionVisible; +end; + procedure TFileBrowserForm.btnConfigureClick(Sender: TObject); begin if Assigned(FOnConfigure) then @@ -176,6 +185,8 @@ end; procedure TFileBrowserForm.FormShow(Sender: TObject); begin + if Assigned(FOnLoadLayout) then + FOnLoadLayout(Self); if TV.Selected <> nil then TV.Selected.Expand(False); end; diff --git a/components/filebrowser/idefilebrowser.lpk b/components/filebrowser/idefilebrowser.lpk index 74375ff41c..9ea67557c5 100644 --- a/components/filebrowser/idefilebrowser.lpk +++ b/components/filebrowser/idefilebrowser.lpk @@ -14,7 +14,7 @@ - + diff --git a/components/filebrowser/regidefilebrowser.pp b/components/filebrowser/regidefilebrowser.pp index a97eefeab0..3de8926bd5 100644 --- a/components/filebrowser/regidefilebrowser.pp +++ b/components/filebrowser/regidefilebrowser.pp @@ -17,6 +17,7 @@ type FCustomDir: string; FWindow: TFileBrowserForm; FNeedSave: Boolean; + procedure DoLoadLayout(Sender: TObject); procedure DoSelectDir(Sender: TObject); procedure DoSaveLayout(Sender: TObject); procedure ReadConfig; virtual; @@ -96,6 +97,7 @@ begin FWindow.OnConfigure := @DoConfig; FWindow.OnSelectDir := @DoSelectDir; FWindow.OnSaveLayout := @DoSaveLayout; + FWindow.OnLoadLayout := @DoLoadLayout; IDEDialogLayoutList.ApplyLayout(FWindow); D := FCustomDir; if (FStartDir = sdProjectDir) and Assigned(LazarusIDE.ActiveProject) then @@ -112,6 +114,20 @@ begin LazarusIDE.DoOpenEditorFile(AFileName, 0, Flags); end; +procedure TFileBrowserController.DoLoadLayout(Sender: TObject); +begin + with GetIDEConfigStorage(SConfigFile, True) do + begin + try + FWindow.Top := GetValue('Position/Top', FWindow.Top); + FWindow.Left := GetValue('Position/Left', FWindow.Left); + FWindow.TV.Height := GetValue(KeySplitterPos, FWindow.TV.Height); + finally + Free; + end; + end; +end; + procedure TFileBrowserController.DoSelectDir(Sender: TObject); begin if FStartDir = sdLastOpened then @@ -126,7 +142,9 @@ begin IDEDialogLayoutList.SaveLayout(FWindow); with GetIDEConfigStorage(SConfigFile, True) do try - SetValue(KeySplitterPos, FWindow.Splitter1.Top); + SetValue(KeySplitterPos, FWindow.TV.Height); + SetValue('Position/Top', FWindow.Top); + SetValue('Position/Left', FWindow.Left); FNeedSave := False; finally Free;