📄 fsettings.pas
字号:
(*
# (C) Copyright 2003
# Miha Vrhovnik, miha.vrhovnik@cordia.si
#
# 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., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
# The Initial Developer of the Original Code is Miha Vrhovnik (Slovenia).
# Portions created by Miha Vrhovnik are Copyright (c)2003.
# All Rights Reserved.
#==============================================================================
# Contributor(s):
#==============================================================================
# History: see whats new.txt from distribution package
#==============================================================================
*)
unit fSettings;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
XPMenu, ComCtrls, StdCtrls, ExtCtrls, ImgList, VirtualTrees, GPanel,
base64, account, OleCtrls, JvExControls, JvComponent, JvColorBox,
JvColorButton, JclGraphUtils, Math, SHDocVw, EmbeddedWB;
type
TfrmSettings = class(TForm)
pc: TPageControl;
cmdCancel: TButton;
cmdClose: TButton;
TabSheet5: TTabSheet;
ilFlags: TImageList;
Label1: TLabel;
lstSettings: TVirtualStringTree;
TabSheet9: TTabSheet;
Label31: TLabel;
lblAuthor: TLabel;
lstLanguages: TVirtualStringTree;
GPanel1: TGPanel;
lblCaption: TLabel;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
FontDialog1: TFontDialog;
lblComposeFont: TLabel;
cmdFontChange: TButton;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet6: TTabSheet;
chkboxHideProfile: TCheckBox;
Label2: TLabel;
chkboxRawOverHtml: TCheckBox;
chkboxCountReplies: TCheckBox;
chkboxCountForwards: TCheckBox;
TabSheet7: TTabSheet;
GroupBox2: TGroupBox;
chkboxDefaultClient: TCheckBox;
cmdRegisterAsDefault: TButton;
chkboxAskBeforeDeleting: TCheckBox;
Label3: TLabel;
cmboxShowMessagePart: TComboBox;
chkboxShowTasksWindow: TCheckBox;
chkboxMarkAsRead: TCheckBox;
GroupBox3: TGroupBox;
CheckBox1: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
Label4: TLabel;
Label5: TLabel;
CheckBox2: TCheckBox;
Label6: TLabel;
Label7: TLabel;
cmboxDefaultAccount: TComboBox;
TabSheet8: TTabSheet;
Label8: TLabel;
txtQuoteChar: TEdit;
chkboxColorizeQuotes: TCheckBox;
TabSheet10: TTabSheet;
TabSheet11: TTabSheet;
TabSheet12: TTabSheet;
TabSheet13: TTabSheet;
TabSheet14: TTabSheet;
TabSheet15: TTabSheet;
TabSheet16: TTabSheet;
TabSheet17: TTabSheet;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
cmboxBS1: TComboBox;
clrText1: TJvColorButton;
clrBack1: TJvColorButton;
txtAdditional1: TMemo;
Label12: TLabel;
wbPreview: TEmbeddedWB;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
clrText2: TJvColorButton;
clrBack2: TJvColorButton;
cmboxBS2: TComboBox;
txtAdditional2: TMemo;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
clrText3: TJvColorButton;
clrBack3: TJvColorButton;
cmboxBS3: TComboBox;
txtAdditional3: TMemo;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
clrText4: TJvColorButton;
clrBack4: TJvColorButton;
cmboxBS4: TComboBox;
txtAdditional4: TMemo;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label28: TLabel;
clrText5: TJvColorButton;
clrBack5: TJvColorButton;
cmboxBS5: TComboBox;
txtAdditional5: TMemo;
Label29: TLabel;
Label30: TLabel;
Label32: TLabel;
Label33: TLabel;
clrText6: TJvColorButton;
clrBack6: TJvColorButton;
cmboxBS6: TComboBox;
txtAdditional6: TMemo;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
clrText7: TJvColorButton;
clrBack7: TJvColorButton;
cmboxBS7: TComboBox;
txtAdditional7: TMemo;
Label38: TLabel;
Label39: TLabel;
Label40: TLabel;
Label41: TLabel;
clrText8: TJvColorButton;
clrBack8: TJvColorButton;
cmboxBS8: TComboBox;
txtAdditional8: TMemo;
pnlLevels: TPageControl;
Label42: TLabel;
clrBorder1: TJvColorButton;
cmboxBrWidth1: TComboBox;
Label43: TLabel;
Label44: TLabel;
clrBorder2: TJvColorButton;
Label45: TLabel;
cmboxBrWidth2: TComboBox;
Label46: TLabel;
clrBorder3: TJvColorButton;
Label47: TLabel;
cmboxBrWidth3: TComboBox;
Label48: TLabel;
clrBorder4: TJvColorButton;
Label49: TLabel;
cmboxBrWidth4: TComboBox;
Label50: TLabel;
clrBorder5: TJvColorButton;
Label51: TLabel;
cmboxBrWidth5: TComboBox;
Label52: TLabel;
clrBorder6: TJvColorButton;
Label53: TLabel;
cmboxBrWidth6: TComboBox;
Label54: TLabel;
clrBorder7: TJvColorButton;
Label55: TLabel;
cmboxBrWidth7: TComboBox;
Label56: TLabel;
clrBorder8: TJvColorButton;
Label57: TLabel;
cmboxBrWidth8: TComboBox;
chkboxSplash: TCheckBox;
chkboxSysTray: TCheckBox;
GroupBox4: TGroupBox;
lblViewWindowFont: TLabel;
cmdViewWindowFont: TButton;
TabSheet18: TTabSheet;
gbTree: TGroupBox;
lblTreeFont: TLabel;
cmdTreeFont: TButton;
gbList: TGroupBox;
lblListFont: TLabel;
cmdListFont: TButton;
chkboxOverrideList: TCheckBox;
chkboxOverrideTree: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure cmdCancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure lstSettingsFocusChanged(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex);
procedure lstSettingsGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
procedure lstSettingsGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
procedure FormHide(Sender: TObject);
procedure lstLanguagesDblClick(Sender: TObject);
procedure lstLanguagesGetNodeDataSize(Sender: TBaseVirtualTree;
var NodeDataSize: Integer);
procedure lstLanguagesGetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: Integer);
procedure lstLanguagesGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
procedure lstLanguagesChange(Sender: TBaseVirtualTree;
Node: PVirtualNode);
procedure cmdCloseClick(Sender: TObject);
procedure cmdFontChangeClick(Sender: TObject);
procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
procedure cmdRegisterAsDefaultClick(Sender: TObject);
procedure LevelStyleChange(Sender: TObject);
procedure cmdViewWindowFontClick(Sender: TObject);
procedure cmdTreeFontClick(Sender: TObject);
procedure cmdListFontClick(Sender: TObject);
procedure chkboxOverrideTreeClick(Sender: TObject);
procedure chkboxOverrideListClick(Sender: TObject);
private
dontChangeStyle: Boolean;
FQuotingStyleReloadNeeded: Boolean;
procedure addProgramLanguage(const folder: String);
procedure getProgramLanguages;
procedure loadSettings;
procedure saveSettings;
function getColor: String;
function getAdditional: String;
function getBackColor: String;
function getBorderColor: String;
function getBorderStyle: String;
function getBorderWidth: String;
procedure changeFont(lbl: TLabel);
procedure loadTheme;
{ Private declarations }
public
{ Public declarations }
property QuotingStyleReloadNeeded: Boolean read FQuotingStyleReloadNeeded write FQuotingStyleReloadNeeded;
end;
var
frmSettings: TfrmSettings;
implementation
uses
fMain, mailBox, maillist, fMailView, gnugettext, defFldrs, OmniXMLConf,
uThemes;
{$R *.DFM}
type TTreeSettings = record
Caption: String;
TabNo: Integer;
end;
type PTreeSettings = ^TTreeSettings;
type TTreeLang = record
Col: array [0..2] of WideString;
ImageIdx: Integer;
end;
type PTreeLang = ^TTreeLang;
procedure TfrmSettings.FormCreate(Sender: TObject);
begin
pc.Top := 0;
pc.Style := tsFlatButtons;
dontChangeStyle := True;
//form: Settings, control: Always show:
cmboxShowMessagePart.Items.Text := _('Remember last used' + #13#10 +
'RAW' + #13#10 +
'text/plain' + #13#10 +
'text/html');
//non translatable
cmboxBS1.Items.Text := 'dashed' + #13#10 +
'solid' + #13#10 +
'double' + #13#10 +
'groove' + #13#10 +
'ridge' + #13#10 +
'inset' + #13#10 +
'outset' + #13#10 +
'dotted' + #13#10 +
'none';
cmboxBS2.Items.Text := cmboxBS1.Items.Text;
cmboxBS3.Items.Text := cmboxBS1.Items.Text;
cmboxBS4.Items.Text := cmboxBS1.Items.Text;
cmboxBS5.Items.Text := cmboxBS1.Items.Text;
cmboxBS6.Items.Text := cmboxBS1.Items.Text;
cmboxBS7.Items.Text := cmboxBS1.Items.Text;
cmboxBS8.Items.Text := cmboxBS1.Items.Text;
cmboxBrWidth1.Items.Text := '0px' + #13#10 +
'1px' + #13#10 +
'2px' + #13#10 +
'3px' + #13#10 +
'4px';
cmboxBrWidth1.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth2.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth3.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth4.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth5.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth6.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth7.Items.Text := cmboxBrWidth1.Items.Text;
cmboxBrWidth8.Items.Text := cmboxBrWidth1.Items.Text;
txtAdditional1.Lines.Text := 'margin: 5px;' + #13#10 +
'padding: 5px';
txtAdditional2.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional3.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional4.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional5.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional6.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional7.Lines.Text := txtAdditional1.Lines.Text;
txtAdditional8.Lines.Text := txtAdditional1.Lines.Text;
end;
procedure TfrmSettings.cmdCancelClick(Sender: TObject);
begin
Self.Close;
end;
procedure TfrmSettings.FormShow(Sender: TObject);
var nodeMessage: PVirtualNode;
var nodeMain: PVirtualNode;
var nodeInet: PVirtualNode;
var i: Integer;
begin
//translate me
TranslateComponent(Self);
dontChangeStyle := True;
lblCaption.Caption := '';
lstSettings.Clear;
lstLanguages.Clear;
pc.ActivePageIndex := 0;
with PTreeSettings(lstSettings.GetNodeData(lstSettings.AddChild(nil)))^ do begin
Caption := _('Language');
TabNo := 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -