doublecmd/src/frames/foptionsmisc.pas
Denis Bisson 33406900c7 ADD: The internal commands "cm_MarkPlus" and "cm_MarkMinus" may now accept a new parameter named "attr" that will specified the required attributes entries must have (or not) to be selected (or not).
ADD: In the "File Operation" option page, we may now enter an attribute filter to use when marking/unmarking entries. This way, we may set for example "d-" so directories won't be selected when doing a mark with mask equals "*".
ADD: Still in the "File Operation" option page, we may check an option so in the input mask selector when doing a select group that will allow user to enter an attribute filter. This was, we may set each time an attribute filter to indicate what we want like having only files, only directory, only hidden entries, etc. The filter will be remembered during the session from an invocation to another.
UPD: Move the option "Windows style filter when marking files" from the "Miscellaneous" options page to the "File Operation" option page.
UPD: Languages files have been updated related with these changes. It should have been regenerated also anyway since a few commits.
2016-11-29 05:57:06 +00:00

234 lines
7.5 KiB
ObjectPascal

{
Double Commander
-------------------------------------------------------------------------
Miscellaneous options page
Copyright (C) 2006-2016 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, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
}
unit fOptionsMisc;
{$mode objfpc}{$H+}
interface
uses
EditBtn, Buttons, Menus,
Classes, SysUtils, StdCtrls, Spin, ExtCtrls, DividerBevel, fOptionsFrame;
type
{ TfrmOptionsMisc }
TfrmOptionsMisc = class(TOptionsEditor)
btnThumbCompactCache: TButton;
chkDescCreateUnicode: TCheckBox;
chkGoToRoot: TCheckBox;
chkThumbSave: TCheckBox;
chkShowWarningMessages: TCheckBox;
cmbDescDefaultEncoding: TComboBox;
cmbDescCreateEncoding: TComboBox;
dblThumbnails: TDividerBevel;
gbExtended: TGroupBox;
gbFileComments: TGroupBox;
lblDescrDefaultEncoding: TLabel;
lblThumbPixels: TLabel;
lblThumbSize: TLabel;
lblThumbSeparator: TLabel;
speThumbWidth: TSpinEdit;
speThumbHeight: TSpinEdit;
gbTCExportImport: TGroupBox;
lblTCExecutable: TLabel;
fneTCExecutableFilename: TFileNameEdit;
btnRelativeTCExecutableFile: TSpeedButton;
lblTCConfig: TLabel;
fneTCConfigFilename: TFileNameEdit;
btnRelativeTCConfigFile: TSpeedButton;
btnViewConfigFile: TSpeedButton;
lblTCPathForTool: TLabel;
edOutputPathForToolbar: TEdit;
btnOutputPathForToolbar: TButton;
btnRelativeOutputPathForToolbar: TSpeedButton;
pmPathHelper: TPopupMenu;
procedure btnThumbCompactCacheClick(Sender: TObject);
procedure btnRelativeTCExecutableFileClick(Sender: TObject);
procedure btnRelativeTCConfigFileClick(Sender: TObject);
procedure btnViewConfigFileClick(Sender: TObject);
procedure btnOutputPathForToolbarClick(Sender: TObject);
procedure btnRelativeOutputPathForToolbarClick(Sender: TObject);
procedure chkDescCreateUnicodeChange(Sender: TObject);
protected
procedure Load; override;
function Save: TOptionsEditorSaveFlags; override;
public
class function GetIconIndex: Integer; override;
class function GetTitle: String; override;
end;
procedure BringUsToTCConfigurationPage;
implementation
{$R *.lfm}
uses
fOptions, Forms, Dialogs, fMain, Controls, uSpecialDir, uShowForm,
uGlobs, uLng, uThumbnails, uConvEncoding;
{ TfrmOptionsMisc }
class function TfrmOptionsMisc.GetIconIndex: Integer;
begin
Result := 14;
end;
class function TfrmOptionsMisc.GetTitle: String;
begin
Result := rsOptionsEditorMiscellaneous;
end;
procedure TfrmOptionsMisc.btnThumbCompactCacheClick(Sender: TObject);
begin
TThumbnailManager.CompactCache;
end;
procedure TfrmOptionsMisc.Load;
begin
chkShowWarningMessages.Checked := gShowWarningMessages;
chkThumbSave.Checked := gThumbSave;
speThumbWidth.Value := gThumbSize.cx;
speThumbHeight.Value := gThumbSize.cy;
chkGoToRoot.Checked := gGoToRoot;
{$IFDEF MSWINDOWS}
gbTCExportImport.Visible:=True;
fneTCExecutableFilename.FileName := gTotalCommanderExecutableFilename;
fneTCConfigFilename.FileName := gTotalCommanderConfigFilename;
edOutputPathForToolbar.Text := gTotalCommanderToolbarPath;
fneTCExecutableFilename.DialogTitle := rsMsgLocateTCExecutable;
fneTCConfigFilename.DialogTitle := rsMsgLocateTCConfiguation;
gSpecialDirList.PopulateMenuWithSpecialDir(pmPathHelper, mp_PATHHELPER, nil);
{$ENDIF}
case gDescReadEncoding of
meOEM: cmbDescDefaultEncoding.ItemIndex:= 0;
meANSI: cmbDescDefaultEncoding.ItemIndex:= 1;
meUTF8: cmbDescDefaultEncoding.ItemIndex:= 2;
else cmbDescDefaultEncoding.ItemIndex:= 2;
end;
case gDescWriteEncoding of
meUTF8BOM: cmbDescCreateEncoding.ItemIndex:= 0;
meUTF16LE: cmbDescCreateEncoding.ItemIndex:= 1;
meUTF16BE: cmbDescCreateEncoding.ItemIndex:= 2;
else cmbDescCreateEncoding.ItemIndex:= 0;
end;
chkDescCreateUnicode.Checked:= gDescCreateUnicode;
chkDescCreateUnicodeChange(chkDescCreateUnicode);
end;
function TfrmOptionsMisc.Save: TOptionsEditorSaveFlags;
begin
Result := [];
gShowWarningMessages := chkShowWarningMessages.Checked;
gThumbSave := chkThumbSave.Checked;
gThumbSize.cx := speThumbWidth.Value;
gThumbSize.cy := speThumbHeight.Value;
gGoToRoot := chkGoToRoot.Checked;
{$IFDEF MSWINDOWS}
gTotalCommanderExecutableFilename := fneTCExecutableFilename.FileName;
gTotalCommanderConfigFilename := fneTCConfigFilename.FileName;
gTotalCommanderToolbarPath := edOutputPathForToolbar.Text;
{$ENDIF}
case cmbDescDefaultEncoding.ItemIndex of
0: gDescReadEncoding:= meOEM;
1: gDescReadEncoding:= meANSI;
2: gDescReadEncoding:= meUTF8;
end;
case cmbDescCreateEncoding.ItemIndex of
0: gDescWriteEncoding:= meUTF8BOM;
1: gDescWriteEncoding:= meUTF16LE;
2: gDescWriteEncoding:= meUTF16BE;
end;
gDescCreateUnicode:= chkDescCreateUnicode.Checked;
end;
{ TfrmOptionsMisc.btnRelativeTCExecutableFileClick }
procedure TfrmOptionsMisc.btnRelativeTCExecutableFileClick(Sender: TObject);
begin
fneTCExecutableFilename.SetFocus;
gSpecialDirList.SetSpecialDirRecipientAndItsType(fneTCExecutableFilename, pfFILE);
pmPathHelper.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
{ TfrmOptionsMisc.btnRelativeTCConfigFileClick }
procedure TfrmOptionsMisc.btnRelativeTCConfigFileClick(Sender: TObject);
begin
fneTCConfigFilename.SetFocus;
gSpecialDirList.SetSpecialDirRecipientAndItsType(fneTCConfigFilename, pfFILE);
pmPathHelper.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
{ TfrmOptionsMisc.btnViewConfigFileClick }
procedure TfrmOptionsMisc.btnViewConfigFileClick(Sender: TObject);
begin
ShowViewerByGlob(fneTCConfigFilename.FileName);
end;
{ TfrmOptionsMisc.btnOutputPathForToolbarClick }
procedure TfrmOptionsMisc.btnOutputPathForToolbarClick(Sender: TObject);
var
MaybeResultingOutputPath: string;
begin
MaybeResultingOutputPath := edOutputPathForToolbar.Text;
if MaybeResultingOutputPath = '' then
MaybeResultingOutputPath := frmMain.ActiveFrame.CurrentPath;
if SelectDirectory(rsSelectDir, MaybeResultingOutputPath, MaybeResultingOutputPath, False) then
edOutputPathForToolbar.Text := MaybeResultingOutputPath;
end;
{ TfrmOptionsMisc.btnRelativeOutputPathForToolbarClick }
procedure TfrmOptionsMisc.btnRelativeOutputPathForToolbarClick(Sender: TObject);
begin
edOutputPathForToolbar.SetFocus;
gSpecialDirList.SetSpecialDirRecipientAndItsType(edOutputPathForToolbar, pfPATH);
pmPathHelper.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TfrmOptionsMisc.chkDescCreateUnicodeChange(Sender: TObject);
begin
cmbDescCreateEncoding.Enabled:= chkDescCreateUnicode.Checked;
end;
procedure BringUsToTCConfigurationPage;
var
Editor: TOptionsEditor;
Options: IOptionsDialog;
begin
Options := ShowOptions(TfrmOptionsMisc);
Application.ProcessMessages;
Editor := Options.GetEditor(TfrmOptionsMisc);
Application.ProcessMessages;
if Editor.CanFocus then
Editor.SetFocus;
end;
end.