mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
214 lines
7.3 KiB
ObjectPascal
214 lines
7.3 KiB
ObjectPascal
{
|
|
Double Commander
|
|
-------------------------------------------------------------------------
|
|
Configuration options page
|
|
|
|
Copyright (C) 2006-2018 Alexander Koblov (alexx2000@mail.ru)
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
}
|
|
|
|
unit fOptionsConfiguration;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fOptionsFrame, StdCtrls, Buttons, ExtCtrls;
|
|
|
|
type
|
|
|
|
{ TfrmOptionsConfiguration }
|
|
|
|
TfrmOptionsConfiguration = class(TOptionsEditor)
|
|
btnConfigApply: TBitBtn;
|
|
btnConfigEdit: TBitBtn;
|
|
cbCmdLineHistory: TCheckBox;
|
|
cbDirHistory: TCheckBox;
|
|
cbFileMaskHistory: TCheckBox;
|
|
chkWindowState: TCheckBox;
|
|
chkFolderTabs: TCheckBox;
|
|
chkSaveConfiguration: TCheckBox;
|
|
chkSearchReplaceHistory: TCheckBox;
|
|
edtHighlighters: TEdit;
|
|
edtThumbCache: TEdit;
|
|
edtIconThemes: TEdit;
|
|
gbLocConfigFiles: TGroupBox;
|
|
gbSaveOnExit: TGroupBox;
|
|
gbDirectories: TGroupBox;
|
|
lblIconThemes: TLabel;
|
|
lblHighlighters: TLabel;
|
|
lblThumbCache: TLabel;
|
|
lblCmdLineConfigDir: TLabel;
|
|
gbSortOrderConfigurationOption: TRadioGroup;
|
|
gpConfigurationTreeState: TRadioGroup;
|
|
rbProgramDir: TRadioButton;
|
|
rbUserHomeDir: TRadioButton;
|
|
procedure btnConfigApplyClick(Sender: TObject);
|
|
procedure btnConfigEditClick(Sender: TObject);
|
|
procedure chkSaveConfigurationChange(Sender: TObject);
|
|
procedure gbSortOrderConfigurationOptionClick(Sender: TObject);
|
|
procedure gpConfigurationTreeStateClick(Sender: TObject);
|
|
protected
|
|
procedure Init; override;
|
|
procedure Load; override;
|
|
function Save: TOptionsEditorSaveFlags; override;
|
|
public
|
|
class function GetIconIndex: Integer; override;
|
|
class function GetTitle: String; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses
|
|
Forms, DCStrUtils, uGlobs, uGlobsPaths, uShowForm, uOSUtils, uLng, fOptions,
|
|
uSysFolders;
|
|
|
|
{ TfrmOptionsConfiguration }
|
|
|
|
procedure TfrmOptionsConfiguration.btnConfigApplyClick(Sender: TObject);
|
|
begin
|
|
if LoadConfig then // force reloading config from file
|
|
begin
|
|
LoadGlobs;
|
|
OptionsDialog.LoadSettings;
|
|
btnConfigApply.Enabled:= False;
|
|
end
|
|
else
|
|
begin
|
|
gSaveConfiguration := False;
|
|
Application.Terminate;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrmOptionsConfiguration.btnConfigEditClick(Sender: TObject);
|
|
begin
|
|
ShowEditorByGlob(gpCfgDir + 'doublecmd.xml');
|
|
btnConfigApply.Enabled:= True;
|
|
end;
|
|
|
|
procedure TfrmOptionsConfiguration.chkSaveConfigurationChange(Sender: TObject);
|
|
begin
|
|
chkWindowState.Enabled:= chkSaveConfiguration.Checked;
|
|
chkFolderTabs.Enabled:= chkSaveConfiguration.Checked;
|
|
cbDirHistory.Enabled:= chkSaveConfiguration.Checked;
|
|
cbCmdLineHistory.Enabled:= chkSaveConfiguration.Checked;
|
|
cbFileMaskHistory.Enabled:= chkSaveConfiguration.Checked;
|
|
chkSearchReplaceHistory.Enabled := chkSaveConfiguration.Checked;
|
|
end;
|
|
|
|
procedure TfrmOptionsConfiguration.gbSortOrderConfigurationOptionClick(Sender: TObject);
|
|
begin
|
|
//Exceptionnally for THIS setting, let's apply it immediately, even before quiting since the effect is... in the configuration area, just where we are at this moment!
|
|
gSortOrderOfConfigurationOptionsTree := TSortConfigurationOptions(gbSortOrderConfigurationOption.ItemIndex);
|
|
SortConfigurationOptionsOnLeftTree;
|
|
end;
|
|
|
|
{ TfrmOptionsConfiguration.gpConfigurationTreeStateClick }
|
|
procedure TfrmOptionsConfiguration.gpConfigurationTreeStateClick(Sender: TObject);
|
|
begin
|
|
//Exceptionnally for THIS setting, let's apply it immediately, even before quiting since the effect is... in the configuration area, just where we are at this moment!
|
|
gCollapseConfigurationOptionsTree := TConfigurationTreeState(gpConfigurationTreeState.ItemIndex);
|
|
if GetOptionsForm<>nil then
|
|
begin
|
|
case gCollapseConfigurationOptionsTree of
|
|
ctsFullExpand : GetOptionsForm.tvTreeView.FullExpand;
|
|
ctsFullCollapse: GetOptionsForm.tvTreeView.FullCollapse;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
class function TfrmOptionsConfiguration.GetIconIndex: Integer;
|
|
begin
|
|
Result := 11;
|
|
end;
|
|
|
|
class function TfrmOptionsConfiguration.GetTitle: String;
|
|
begin
|
|
Result := rsOptionsEditorConfiguration;
|
|
end;
|
|
|
|
procedure TfrmOptionsConfiguration.Init;
|
|
begin
|
|
if gpCmdLineCfgDir = '' then
|
|
begin
|
|
rbProgramDir.Caption:= rbProgramDir.Caption + ' - [' + IncludeTrailingPathDelimiter(gpGlobalCfgDir) + ']';
|
|
rbUserHomeDir.Caption:= rbUserHomeDir.Caption + ' - [' + IncludeTrailingPathDelimiter(GetAppConfigDir) + ']';
|
|
end
|
|
else
|
|
begin
|
|
rbProgramDir.Visible := False;
|
|
rbProgramDir.Enabled := False;
|
|
rbUserHomeDir.Visible := False;
|
|
rbUserHomeDir.Enabled := False;
|
|
lblCmdLineConfigDir.Visible := True;
|
|
lblCmdLineConfigDir.Caption := lblCmdLineConfigDir.Caption + ' - [' + IncludeTrailingPathDelimiter(gpCmdLineCfgDir) + ']';
|
|
end;
|
|
ParseLineToList(rsOptConfigSortOrder, gbSortOrderConfigurationOption.Items);
|
|
ParseLineToList(rsOptConfigTreeState, gpConfigurationTreeState.Items);
|
|
end;
|
|
|
|
procedure TfrmOptionsConfiguration.Load;
|
|
begin
|
|
if gUseConfigInProgramDirNew then
|
|
rbProgramDir.Checked := True
|
|
else
|
|
rbUserHomeDir.Checked := True;
|
|
|
|
edtThumbCache.Text:= gpThumbCacheDir;
|
|
|
|
edtIconThemes.Text:= EmptyStr;
|
|
if not gUseConfigInProgramDir then begin
|
|
edtIconThemes.Text:= IncludeTrailingBackslash(GetAppDataDir) + 'pixmaps' + PathSep;
|
|
end;
|
|
edtIconThemes.Text:= edtIconThemes.Text + ExcludeTrailingPathDelimiter(gpPixmapPath);
|
|
|
|
edtHighlighters.Text:= EmptyStr;
|
|
if not gUseConfigInProgramDir then begin
|
|
edtHighlighters.Text:= IncludeTrailingBackslash(GetAppDataDir) + 'highlighters' + PathSep;
|
|
end;
|
|
edtHighlighters.Text:= edtHighlighters.Text + ExcludeTrailingPathDelimiter(gpHighPath);
|
|
|
|
chkSaveConfiguration.Checked:= gSaveConfiguration;
|
|
chkWindowState.Checked:= gSaveWindowState;
|
|
chkFolderTabs.Checked:= gSaveFolderTabs;
|
|
chkSearchReplaceHistory.Checked:= gSaveSearchReplaceHistory;
|
|
cbDirHistory.Checked := gSaveDirHistory;
|
|
cbCmdLineHistory.Checked := gSaveCmdLineHistory;
|
|
cbFileMaskHistory.Checked := gSaveFileMaskHistory;
|
|
gbSortOrderConfigurationOption.ItemIndex:=Integer(gSortOrderOfConfigurationOptionsTree);
|
|
gpConfigurationTreeState.ItemIndex := Integer(gCollapseConfigurationOptionsTree);
|
|
end;
|
|
|
|
function TfrmOptionsConfiguration.Save: TOptionsEditorSaveFlags;
|
|
begin
|
|
Result := [];
|
|
|
|
gUseConfigInProgramDirNew := rbProgramDir.Checked;
|
|
gSaveConfiguration := chkSaveConfiguration.Checked;
|
|
gSaveWindowState := chkWindowState.Checked;
|
|
gSaveFolderTabs := chkFolderTabs.Checked;
|
|
gSaveSearchReplaceHistory := chkSearchReplaceHistory.Checked;
|
|
gSaveDirHistory := cbDirHistory.Checked;
|
|
gSaveCmdLineHistory := cbCmdLineHistory.Checked;
|
|
gSaveFileMaskHistory := cbFileMaskHistory.Checked;
|
|
gSortOrderOfConfigurationOptionsTree := TSortConfigurationOptions(gbSortOrderConfigurationOption.ItemIndex);
|
|
gCollapseConfigurationOptionsTree := TConfigurationTreeState(gpConfigurationTreeState.ItemIndex);
|
|
end;
|
|
|
|
end.
|
|
|