mirror of https://gitlab.com/basile.b/dexed.git
mini explorer widget, get rid of the centralized option system
This commit is contained in:
parent
f475ef18b8
commit
b00fd349ab
|
@ -7,9 +7,29 @@ interface
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls, Graphics,
|
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls, Graphics,
|
||||||
ExtCtrls, Menus, ComCtrls, Buttons, lcltype, strutils, ce_widget,
|
ExtCtrls, Menus, ComCtrls, Buttons, lcltype, strutils, ce_widget,
|
||||||
ce_common, ce_interfaces, ce_observer;
|
ce_common, ce_interfaces, ce_observer, ce_writableComponent;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
TCEMiniExplorerOptions = class(TWritableLfmTextComponent)
|
||||||
|
private
|
||||||
|
fFavoriteFolders: TStringList;
|
||||||
|
fSplitter1Position: integer;
|
||||||
|
fSplitter2Position: integer;
|
||||||
|
fLastFolder: string;
|
||||||
|
procedure setFavoriteFolders(aValue: TStringList);
|
||||||
|
published
|
||||||
|
property splitter1Position: integer read fSplitter1Position write fSplitter1Position;
|
||||||
|
property splitter2Position: integer read fSplitter2Position write fSplitter2Position;
|
||||||
|
property lastFolder: string read fLastFolder write fLastFolder;
|
||||||
|
property favoriteFolders: TStringList read fFavoriteFolders write setFavoriteFolders;
|
||||||
|
public
|
||||||
|
constructor create(aOwner: TComponent); override;
|
||||||
|
destructor destroy; override;
|
||||||
|
procedure assign(aValue: TPersistent); override;
|
||||||
|
procedure assignTo(aValue: TPersistent); override;
|
||||||
|
end;
|
||||||
|
|
||||||
TCEMiniExplorerWidget = class(TCEWidget)
|
TCEMiniExplorerWidget = class(TCEWidget)
|
||||||
btnAddFav: TBitBtn;
|
btnAddFav: TBitBtn;
|
||||||
btnEdit: TBitBtn;
|
btnEdit: TBitBtn;
|
||||||
|
@ -34,14 +54,6 @@ type
|
||||||
fFavorites: TStringList;
|
fFavorites: TStringList;
|
||||||
fLastFold: string;
|
fLastFold: string;
|
||||||
procedure lstFavDblClick(Sender: TObject);
|
procedure lstFavDblClick(Sender: TObject);
|
||||||
procedure optset_LastFold(aReader: TReader);
|
|
||||||
procedure optget_LastFold(aWriter: TWriter);
|
|
||||||
procedure optset_Favs(aReader: TReader);
|
|
||||||
procedure optget_Favs(aWriter: TWriter);
|
|
||||||
procedure optset_SplitFavTree(aReader: TReader);
|
|
||||||
procedure optget_SplitFavTree(aWriter: TWriter);
|
|
||||||
procedure optset_SplitTreeFiles(aReader: TReader);
|
|
||||||
procedure optget_SplitTreeFiles(aWriter: TWriter);
|
|
||||||
procedure updateFavorites;
|
procedure updateFavorites;
|
||||||
procedure treeSetRoots;
|
procedure treeSetRoots;
|
||||||
procedure lstFilesFromTree;
|
procedure lstFilesFromTree;
|
||||||
|
@ -61,18 +73,72 @@ type
|
||||||
constructor create(aIwner: TComponent); override;
|
constructor create(aIwner: TComponent); override;
|
||||||
destructor destroy; override;
|
destructor destroy; override;
|
||||||
//
|
//
|
||||||
procedure sesoptDeclareProperties(aFiler: TFiler); override;
|
|
||||||
//
|
|
||||||
procedure expandPath(const aPath: string);
|
procedure expandPath(const aPath: string);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
|
const
|
||||||
|
OptsFname = 'miniexplorer.txt';
|
||||||
|
|
||||||
|
{$REGION TCEMiniExplorerOptions ------------------------------------------------}
|
||||||
|
constructor TCEMiniExplorerOptions.create(aOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
fFavoriteFolders := TStringList.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TCEMiniExplorerOptions.destroy;
|
||||||
|
begin
|
||||||
|
fFavoriteFolders.Free;
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEMiniExplorerOptions.assign(aValue: TPersistent);
|
||||||
|
var
|
||||||
|
widg: TCEMiniExplorerWidget;
|
||||||
|
begin
|
||||||
|
if aValue is TCEMiniExplorerWidget then
|
||||||
|
begin
|
||||||
|
widg := TCEMiniExplorerWidget(aValue);
|
||||||
|
fFavoriteFolders.Assign(widg.fFavorites);
|
||||||
|
fLastFolder := widg.fLastFold;
|
||||||
|
fSplitter1Position := widg.Splitter1.GetSplitterPosition;
|
||||||
|
fSplitter2Position := widg.Splitter2.GetSplitterPosition;
|
||||||
|
end
|
||||||
|
else inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEMiniExplorerOptions.assignTo(aValue: TPersistent);
|
||||||
|
var
|
||||||
|
widg: TCEMiniExplorerWidget;
|
||||||
|
begin
|
||||||
|
if aValue is TCEMiniExplorerWidget then
|
||||||
|
begin
|
||||||
|
widg := TCEMiniExplorerWidget(aValue);
|
||||||
|
widg.fFavorites.Assign(fFavoriteFolders);
|
||||||
|
widg.fLastFold:=fLastFolder;
|
||||||
|
widg.Splitter1.SetSplitterPosition(fSplitter1Position);
|
||||||
|
widg.Splitter2.SetSplitterPosition(fSplitter2Position);
|
||||||
|
widg.updateFavorites;
|
||||||
|
if DirectoryExists(widg.fLastFold) then
|
||||||
|
widg.expandPath(fLastFolder);
|
||||||
|
end
|
||||||
|
else inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCEMiniExplorerOptions.setFavoriteFolders(aValue: TStringList);
|
||||||
|
begin
|
||||||
|
fFavoriteFolders.Assign(aValue);
|
||||||
|
end;
|
||||||
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION Standard Comp/Obj------------------------------------------------------}
|
{$REGION Standard Comp/Obj------------------------------------------------------}
|
||||||
constructor TCEMiniExplorerWidget.create(aIwner: TComponent);
|
constructor TCEMiniExplorerWidget.create(aIwner: TComponent);
|
||||||
var
|
var
|
||||||
png: TPortableNetworkGraphic;
|
png: TPortableNetworkGraphic;
|
||||||
|
fname: string;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
//
|
//
|
||||||
|
@ -107,10 +173,27 @@ begin
|
||||||
lstFilter.onChange := @lstFilterChange;
|
lstFilter.onChange := @lstFilterChange;
|
||||||
//
|
//
|
||||||
treeSetRoots;
|
treeSetRoots;
|
||||||
|
//
|
||||||
|
fname := getCoeditDocPath + OptsFname;
|
||||||
|
if fileExists(fname) then with TCEMiniExplorerOptions.create(nil) do
|
||||||
|
try
|
||||||
|
loadFromFile(fname);
|
||||||
|
assignTo(self);
|
||||||
|
finally
|
||||||
|
free;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TCEMiniExplorerWidget.destroy;
|
destructor TCEMiniExplorerWidget.destroy;
|
||||||
begin
|
begin
|
||||||
|
with TCEMiniExplorerOptions.create(nil) do
|
||||||
|
try
|
||||||
|
assign(self);
|
||||||
|
saveToFile(getCoeditDocPath + OptsFname);
|
||||||
|
finally
|
||||||
|
free;
|
||||||
|
end;
|
||||||
|
//
|
||||||
fFavorites.Free;
|
fFavorites.Free;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
@ -122,68 +205,6 @@ begin
|
||||||
end;
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION ICEWidgetPersist ------------------------------------------------------}
|
|
||||||
procedure TCEMiniExplorerWidget.sesoptDeclareProperties(aFiler: TFiler);
|
|
||||||
begin
|
|
||||||
inherited;
|
|
||||||
aFiler.DefineProperty(Name + '_LastFolder', @optset_LastFold, @optget_LastFold, true);
|
|
||||||
aFiler.DefineProperty(Name + '_FavoritesFolders', @optset_Favs, @optget_Favs, true);
|
|
||||||
aFiler.DefineProperty(Name + '_SplitterFavTree', @optset_SplitFavTree, @optget_SplitFavTree, true);
|
|
||||||
aFiler.DefineProperty(Name + '_SplitterTreeFiles', @optset_SplitTreeFiles, @optget_SplitTreeFiles, true);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optset_LastFold(aReader: TReader);
|
|
||||||
begin
|
|
||||||
fLastFold := aReader.ReadString;
|
|
||||||
if directoryExists(fLastFold) then
|
|
||||||
expandPath(fLastFold);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optget_LastFold(aWriter: TWriter);
|
|
||||||
begin
|
|
||||||
aWriter.WriteString(fLastFold);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optset_Favs(aReader: TReader);
|
|
||||||
begin
|
|
||||||
fFavorites.DelimitedText := aReader.ReadString;
|
|
||||||
updateFavorites;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optget_Favs(aWriter: TWriter);
|
|
||||||
begin
|
|
||||||
aWriter.WriteString(fFavorites.DelimitedText);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optset_SplitFavTree(aReader: TReader);
|
|
||||||
var
|
|
||||||
pos: Integer;
|
|
||||||
begin
|
|
||||||
pos := aReader.ReadInteger;
|
|
||||||
if pos > 0 then
|
|
||||||
Splitter1.SetSplitterPosition(pos);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optget_SplitFavTree(aWriter: TWriter);
|
|
||||||
begin
|
|
||||||
aWriter.WriteInteger(Splitter1.GetSplitterPosition);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optset_SplitTreeFiles(aReader: TReader);
|
|
||||||
var
|
|
||||||
pos: Integer;
|
|
||||||
begin
|
|
||||||
pos := aReader.ReadInteger;
|
|
||||||
if pos > 0 then
|
|
||||||
Splitter2.SetSplitterPosition(pos);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCEMiniExplorerWidget.optget_SplitTreeFiles(aWriter: TWriter);
|
|
||||||
begin
|
|
||||||
aWriter.WriteInteger(Splitter2.GetSplitterPosition);
|
|
||||||
end;
|
|
||||||
{$ENDREGION}
|
|
||||||
|
|
||||||
{$REGION Favorites -------------------------------------------------------------}
|
{$REGION Favorites -------------------------------------------------------------}
|
||||||
procedure TCEMiniExplorerWidget.favStringsChange(sender: TObject);
|
procedure TCEMiniExplorerWidget.favStringsChange(sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
|
Loading…
Reference in New Issue