mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 10:57:55 +02:00
178 lines
4.7 KiB
ObjectPascal
178 lines
4.7 KiB
ObjectPascal
unit fraconfigfilebrowser;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
// IdeIntf
|
|
Classes, SysUtils, Forms, Controls, StdCtrls,
|
|
Dialogs, FileCtrl, ComCtrls, ExtCtrls, EditBtn,
|
|
IDEOptionsIntf, IDEOptEditorIntf, IDEUtils, IDEDialogs;
|
|
|
|
type
|
|
|
|
{ TFileBrowserOptionsFrame }
|
|
|
|
TFileBrowserOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
CBShowDirectoriesBeforeFiles: TCheckBox;
|
|
CBShowFilesInline: TCheckBox;
|
|
CBSyncCurrentEditor: TCheckBox;
|
|
CBMatchOnlyFilename: TCheckBox;
|
|
CBUseAbsoluteFilenames: TCheckBox;
|
|
CBUseLetters: TCheckBox;
|
|
DEStartDir: TDirectoryEdit;
|
|
DERootDir: TDirectoryEdit;
|
|
GBStartDir: TGroupBox;
|
|
GBStartDir1: TGroupBox;
|
|
GBSearch: TGroupBox;
|
|
GBFileTree: TGroupBox;
|
|
RBLastDir: TRadioButton;
|
|
RBRootFileSystemRoot: TRadioButton;
|
|
RBRootUserDir: TRadioButton;
|
|
RBThisDir: TRadioButton;
|
|
RBRootThisDir: TRadioButton;
|
|
RBUseProjectDir: TRadioButton;
|
|
RBRootUseProjectDir: TRadioButton;
|
|
procedure CBShowFilesInlineChange(Sender: TObject);
|
|
private
|
|
procedure CheckDirsBeforeFiles;
|
|
|
|
public
|
|
function GetTitle: String; override;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses lazIDEIntf, filebrowsertypes, ctrlfilebrowser;
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TFileBrowserOptionsFrame }
|
|
|
|
procedure TFileBrowserOptionsFrame.CheckDirsBeforeFiles;
|
|
|
|
begin
|
|
CBShowDirectoriesBeforeFiles.Enabled:=CBShowFilesInline.Checked;
|
|
if Not CBShowDirectoriesBeforeFiles.Enabled then
|
|
CBShowDirectoriesBeforeFiles.Checked:=False;
|
|
end;
|
|
|
|
procedure TFileBrowserOptionsFrame.CBShowFilesInlineChange(Sender: TObject);
|
|
begin
|
|
CheckDirsBeforeFiles;
|
|
end;
|
|
|
|
function TFileBrowserOptionsFrame.GetTitle: String;
|
|
begin
|
|
Result:='File browser options';
|
|
end;
|
|
|
|
procedure TFileBrowserOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
|
|
begin
|
|
//
|
|
end;
|
|
|
|
|
|
procedure TFileBrowserOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
C : TFileBrowserController;
|
|
RB: TRadioButton;
|
|
|
|
begin
|
|
C:=LazarusIDE.OwningComponent.FindComponent('IDEFileBrowserController') as TFileBrowserController;
|
|
if not Assigned(C) then
|
|
exit;
|
|
case C.StartDir of
|
|
sdProjectDir: RB := RBUseProjectDir;
|
|
sdLastOpened: RB := RBLastDir;
|
|
sdCustomDir: RB := RBThisDir;
|
|
end;
|
|
RB.Checked := True;
|
|
if C.StartDir=sdCustomDir then
|
|
DEStartDir.Directory:=C.CustomStartDir;
|
|
case C.RootDir of
|
|
rdProjectDir: RB := RBUseProjectDir;
|
|
rdRootDir: RB := RBRootFileSystemRoot;
|
|
rdUserDir : RB := RBRootUserDir;
|
|
rdCustomDir: RB := RBRootThisDir;
|
|
end;
|
|
RB.Checked := True;
|
|
if C.RootDir=rdCustomDir then
|
|
DERootDir.Directory:=C.CustomRootDir;
|
|
CBShowFilesInline.Checked:=C.FilesInTree;
|
|
CBShowDirectoriesBeforeFiles.Checked:=C.DirectoriesBeforeFiles;
|
|
CBSyncCurrentEditor.Checked:=C.SyncCurrentEditor;
|
|
CBUseAbsoluteFilenames.Checked:=fsoAbsolutePaths in C.SearchOptions;
|
|
CBMatchOnlyFilename.Checked:=fsoMatchOnlyFileName in C.SearchOptions;
|
|
CBUseLetters.Checked:=fsoUseLetters in C.SearchOptions;
|
|
CheckDirsBeforeFiles;
|
|
end;
|
|
|
|
procedure TFileBrowserOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
C : TFileBrowserController;
|
|
SD : TStartDir;
|
|
RD : TRootDir;
|
|
SO : TFileSearchOptions;
|
|
lRootDir: String;
|
|
begin
|
|
C:=LazarusIDE.OwningComponent.FindComponent('IDEFileBrowserController') as TFileBrowserController;
|
|
if not Assigned(C) then
|
|
exit;
|
|
lRootDir:=C.GetResolvedRootDir;
|
|
if RBUseProjectDir.Checked then
|
|
SD:=sdProjectDir
|
|
else if RBLastDir.Checked then
|
|
SD:=sdLastOpened
|
|
else
|
|
SD:=sdCustomDir;
|
|
C.StartDir:=SD;
|
|
if SD=sdCustomDir then
|
|
C.CustomStartDir:=DEStartDir.Directory
|
|
else
|
|
C.CustomStartDir:='';
|
|
|
|
if RBRootUseProjectDir.Checked then
|
|
RD:=rdProjectDir
|
|
else if RBRootFileSystemRoot.Checked then
|
|
RD:=rdRootDir
|
|
else if RBRootUserDir.Checked then
|
|
RD:=rdUserDir
|
|
else
|
|
RD:=rdCustomDir;
|
|
C.RootDir:=rD;
|
|
if rD=rdCustomDir then
|
|
C.CustomRootDir:=DERootDir.Directory
|
|
else
|
|
C.CustomRootDir:='';
|
|
C.FilesInTree:=CBShowFilesInline.Checked;
|
|
C.SyncCurrentEditor:=CBSyncCurrentEditor.Checked;
|
|
SO:=[];
|
|
if CBUseAbsoluteFilenames.Checked then
|
|
Include(SO,fsoAbsolutePaths);
|
|
if CBMatchOnlyFilename.Checked then
|
|
Include(SO,fsoMatchOnlyFileName);
|
|
if CBUseLetters.Checked then
|
|
Include(SO,fsoUseLetters);
|
|
C.SearchOptions:=SO;
|
|
// Re-index
|
|
if lRootDir<>C.GetResolvedRootDir then
|
|
C.IndexRootDir;
|
|
C.WriteConfig;
|
|
end;
|
|
|
|
class function TFileBrowserOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result:=IDEEditorGroups.GetByIndex(GroupEnvironment)^.GroupClass;
|
|
end;
|
|
|
|
end.
|
|
|