📄 foptions.pas
字号:
unit fOptions;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls
, Forms, strUtils,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, shellapi,
Buttons, ImgList, SynEdit, ElTree, Gradpan, ColorPickerButton,
SynEditHighlighter, iniFiles, corelbutton, Menus,
CheckLst, Registry, Spin, SynSpellCheck, SynHighlighterMulti, SynHighlighterAny,
XPMenu;
type
TfrmOptions = class(TForm)
dlgFont: TFontDialog;
pnlBack: TPanel;
nbOptions: TNotebook;
chkMaximizeOnOpen: TCheckBox;
chkRememberOpenedFiles: TCheckBox;
chkMatchBrace: TCheckBox;
chkHIghlightTabs: TCheckBox;
pnlContents: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
gbCaret: TGroupBox;
lblCaretInsert: TLabel;
lblCaretOverwrite: TLabel;
cmbInsertCaret: TComboBox;
cmbOverwriteCaret: TComboBox;
gbOptions: TGroupBox;
chkAutoIndent: TCheckBox;
chkDDEdit: TCheckBox;
chkDDFiles: TCheckBox;
chkAltColumn: TCheckBox;
chkHoldColumn: TCheckBox;
chkWantTabs: TCheckBox;
chkSmartTabs: TCheckBox;
chkTabDel: TCheckBox;
chkRMouseMovesCursor: TCheckBox;
chkEnhanceHome: TCheckBox;
chkHideScroll: TCheckBox;
chkHalfPage: TCheckBox;
chkScrollOneLess: TCheckBox;
chkScrollPastEndofFile: TCheckBox;
chkScrollPastEndofLine: TCheckBox;
chkShowScrollHint: TCheckBox;
chkScrollHintFollowsMouse: TCheckBox;
chkTabsToSpaces: TCheckBox;
chkTrimTrailingSpaces: TCheckBox;
chkGroupUndo: TCheckBox;
chkDisableScrollArrows: TCheckBox;
gbGutter: TGroupBox;
lblGutterColor: TLabel;
btnFont: TButton;
chkGutterFont: TCheckBox;
chkVisible: TCheckBox;
chkAutosize: TCheckBox;
chkLineNum: TCheckBox;
chkZero: TCheckBox;
chkLeading: TCheckBox;
pnlStoreGutterFont: TPanel;
lblGutterFont: TLabel;
gbRight: TGroupBox;
lblRightEdge: TLabel;
lblRightColor: TLabel;
edtRight: TEdit;
gbSpacing: TGroupBox;
lblExtraLines: TLabel;
lblTabWidth: TLabel;
edtExtraLines: TEdit;
edtTabWidth: TEdit;
gbEditorFont: TGroupBox;
btnEdtFont: TButton;
pnlFontStore: TPanel;
lblEditorFont: TLabel;
gbBookmarks: TGroupBox;
chkBKeys: TCheckBox;
chkBVisible: TCheckBox;
lstLang: TListBox;
lstElement: TListBox;
lblElements: TLabel;
lblBack: TLabel;
lblFore: TLabel;
chkBold: TCheckBox;
chkUnderline: TCheckBox;
chkStrike: TCheckBox;
chkItalic: TCheckBox;
bvlColors: TBevel;
lblHighlighter: TLabel;
pnlCap: TGradPan;
bvlBack: TBevel;
StaticText1: TStaticText;
btnOK: TCorelButton;
btnCancel: TCorelButton;
lvTools: TListView;
OpenDialog1: TOpenDialog;
lblCommand: TLabel;
lblArguments: TLabel;
txtToolCommand: TEdit;
btnToolCommand: TCorelButton;
txtToolArgs: TEdit;
chkBraceBadLight: TCheckBox;
lblFiles: TLabel;
lstFileTypes: TCheckListBox;
lblMenuText: TLabel;
txtEditText: TEdit;
txtPrintText: TEdit;
lblMenuPrint: TLabel;
btnAddEdit: TCorelButton;
btnRemoveEdit: TCorelButton;
btnAddPrint: TCorelButton;
btnRemovePrint: TCorelButton;
lvwAutoComplete: TListView;
btnACAdd: TCorelButton;
btnACEdit: TCorelButton;
btnCEDelete: TCorelButton;
lstHighlighters: TListBox;
lblHighlight: TLabel;
clrRight: TColorPickerButton;
clrFore: TColorPickerButton;
clrBack: TColorPickerButton;
clBraces: TColorPickerButton;
clMatchBack: TColorPickerButton;
clBadLight: TColorPickerButton;
clBadBack: TColorPickerButton;
clTabs: TColorPickerButton;
clrGutter: TColorPickerButton;
tvOptions: TTreeView;
chkActive: TCheckBox;
txtDictionary: TEdit;
btnDictionary: TCorelButton;
lblDictionary: TLabel;
chkCursor: TCheckBox;
chkIgnoreSingle: TCheckBox;
chkIgnoreNumbers: TCheckBox;
Label1: TLabel;
spnSoundExLength: TSpinEdit;
Label36: TLabel;
cpSpellPenColor: TColorPickerButton;
Label23: TLabel;
mCheckAttribs: TMemo;
btnEditDic: TCorelButton;
btnEditUserDic: TCorelButton;
Label3: TLabel;
Label9: TLabel;
lvwAutocorrect: TListView;
chkAutocorrectEnabled: TCheckBox;
txtAutocorrReplace: TEdit;
txtAutocorrWith: TEdit;
btnAutocorrectAdd: TCorelButton;
btnAutocorrectRemove: TCorelButton;
chkAutoCorrBeep: TCheckBox;
chkAutoCorrIgnoreCase: TCheckBox;
chkAutoCorrMaintainCase: TCheckBox;
btnAutoCorrReplace: TCorelButton;
chkAutocorrMouseDown: TCheckBox;
popParams: TPopupMenu;
WindowsDirectory1: TMenuItem;
SystemDirectory1: TMenuItem;
TemporaryDirectory2: TMenuItem;
btnToolDirParam: TCorelButton;
popDirs: TPopupMenu;
WindowsDirectory2: TMenuItem;
SystemDirectory2: TMenuItem;
TemporaryDirectory1: TMenuItem;
btnToolCommParam: TCorelButton;
lblExtBrowser: TLabel;
edtExternalBrowser: TEdit;
btnExternal: TCorelButton;
pgCustomLang: TPageControl;
btnSave: TCorelButton;
pgLanguageName: TTabSheet;
btnCreate: TCorelButton;
btnDelete: TCorelButton;
pgComment: TTabSheet;
cmbAnsi: TComboBox;
cmbASM: TComboBox;
cmbBas: TComboBox;
cmbC: TComboBox;
cmbPas: TComboBox;
cmbVB: TComboBox;
lblData: TLabel;
lblData2: TLabel;
lblData3: TLabel;
lblData4: TLabel;
lblData5: TLabel;
lblData6: TLabel;
edtName: TEdit;
lblData8: TLabel;
pgSwitches: TTabSheet;
cmbMarkup: TComboBox;
cmbEntity: TComboBox;
cmbActive: TComboBox;
cmbDollar: TComboBox;
lblData12: TLabel;
lblData21: TLabel;
lblData9: TLabel;
lblData11: TLabel;
pgObjects: TTabSheet;
memoObjects: TMemo;
lblData13: TLabel;
pgConstants: TTabSheet;
lblData14: TLabel;
memoConstants: TMemo;
pgKeywords: TTabSheet;
lblData15: TLabel;
memoKeywords: TMemo;
pgHighlighter: TTabSheet;
lstAttributesCustom: TListBox;
clrButFor: TColorPickerButton;
clrButBack: TColorPickerButton;
chkBoldCust: TCheckBox;
chkItalicCust: TCheckBox;
chkStrikeCust: TCheckBox;
chkUnderlineCust: TCheckBox;
Label4: TLabel;
Label2: TLabel;
Label5: TLabel;
lblData16: TLabel;
edtFilter: TEdit;
lblData17: TLabel;
lblData18: TLabel;
cmbSingleLine: TComboBox;
cmbDoubleLine: TComboBox;
lblData19: TLabel;
edtFilename: TEdit;
Label6: TLabel;
Bevel1: TBevel;
edtComment: TEdit;
Label7: TLabel;
lstLangs2: TListBox;
Label8: TLabel;
edtKeyword: TEdit;
lstKeywords: TListBox;
btnAddKey: TCorelButton;
chkWords: TCheckBox;
lstLang3: TListBox;
edtSave: TEdit;
Label10: TLabel;
Label11: TLabel;
lstSnippets: TListBox;
Label12: TLabel;
btnRem: TCorelButton;
btnSaveSnippet: TCorelButton;
Panel1: TPanel;
synSnippet: TSynEdit;
Label13: TLabel;
cmbLangs: TComboBox;
chkDefault: TCheckBox;
Label14: TLabel;
edtFilters: TEdit;
lstTags: TListView;
Label15: TLabel;
Label16: TLabel;
cmbTags: TComboBox;
btnAddTag: TCorelButton;
btnDeleteTag: TCorelButton;
btnCreateTagFile: TCorelButton;
btnEditTag: TCorelButton;
chkSingle: TCheckBox;
procedure lstLangClick(Sender: TObject);
procedure btnFontClick(Sender: TObject);
procedure btnEdtFontClick(Sender: TObject);
procedure lstElementClick(Sender: TObject);
procedure chkBoldClick(Sender: TObject);
procedure clrForeChange(Sender: TObject);
procedure clrBackChange(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure lvToolsExit(Sender: TObject);
procedure lvToolsEditing(Sender: TObject; Item: TListItem;
var AllowEdit: Boolean);
procedure btnToolCommandClick(Sender: TObject);
procedure lvToolsEdited(Sender: TObject; Item: TListItem;
var S: String);
procedure txtToolCommandChange(Sender: TObject);
procedure txtToolArgsChange(Sender: TObject);
procedure lvToolsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure chkBraceBadLightClick(Sender: TObject);
procedure btnAddEditClick(Sender: TObject);
procedure btnAddPrintClick(Sender: TObject);
procedure btnRemovePrintClick(Sender: TObject);
procedure btnRemoveEditClick(Sender: TObject);
procedure btnACAddClick(Sender: TObject);
procedure lstHighlightersClick(Sender: TObject);
procedure btnACEditClick(Sender: TObject);
procedure lvwAutoCompleteSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure tvOptionsChange(Sender: TObject; Node: TTreeNode);
procedure btnEditDicClick(Sender: TObject);
procedure btnEditUserDicClick(Sender: TObject);
procedure btnDictionaryClick(Sender: TObject);
procedure txtAutocorrWithChange(Sender: TObject);
procedure btnAutocorrectAddClick(Sender: TObject);
procedure btnAutoCorrReplaceClick(Sender: TObject);
procedure btnAutocorrectRemoveClick(Sender: TObject);
procedure lvwAutocorrectSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure Prompt1Click(Sender: TObject);
procedure TemporaryDirectory1Click(Sender: TObject);
procedure SystemDirectory1Click(Sender: TObject);
procedure btnCEDeleteClick(Sender: TObject);
procedure btnToolDirParamClick(Sender: TObject);
procedure btnExternalClick(Sender: TObject);
procedure btnCreateClick(Sender: TObject);
procedure chkBoldCustClick(Sender: TObject);
procedure clrButBackChange(Sender: TObject);
procedure clrButForChange(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure lstAttributesCustomClick(Sender: TObject);
procedure edtCommentChange(Sender: TObject);
procedure lstLangs2Click(Sender: TObject);
procedure btnAddKeyClick(Sender: TObject);
procedure chkWordsClick(Sender: TObject);
procedure lstLang3Click(Sender: TObject);
procedure btnSaveSnippetClick(Sender: TObject);
procedure lstSnippetsClick(Sender: TObject);
procedure chkDefaultClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure cmbTagsChange(Sender: TObject);
procedure btnEditTagClick(Sender: TObject);
procedure btnDeleteTagClick(Sender: TObject);
procedure btnAddTagClick(Sender: TObject);
procedure btnCreateTagFileClick(Sender: TObject);
procedure btnRemClick(Sender: TObject);
private
synHighlighter: TSynCustomHighlighter;
cHighlighter: TSynAnySyn;
fAutoCorrect: TStringList;
{ Private declarations }
procedure WriteOptions;
procedure LoadTags;
procedure LoadTagsi(strFile: String);
procedure LoadProposal(sLangName: String);
procedure SaveProposal(sLangName: String);
procedure AddAssociation(const AIsPrint: boolean);
procedure RemoveAssociation(const AIsPrint: boolean);
procedure SetOptions;
public
{ Public declarations }
procedure SaveTags;
end;
var
frmOptions: TfrmOptions;
implementation
uses fDoc, fMain, fPSelect, dMain, uOptVars, SynAutoCorrect, uMyReg, fTagEdit,
fSnippets;
{$R *.dfm}
procedure TfrmOptions.LoadTags;
var
SRec : TSearchRec;
b: Boolean;
begin
cmbTags.Items.Clear;
b:=(FindFirst(ExtractFilePath(Application.ExeName) + 'tags\*.tag',faAnyFile, SRec)=0);
while b do begin
cmbTags.Items.Add(SRec.Name);
b:=(FindNext(sRec)=0);
end;
end;
procedure TfrmOptions.lstLangClick(Sender: TObject);
var
i: Integer;
tmpSyn: TSynMultiSyn;
begin
// synEditor.Highlighter := dmMain.(lstLang.Items[lstLang.ItemIndex]);
synHighlighter := dmMain.SetHighlighter(lstLang.Items[lstLang.ItemIndex]);
if synHighlighter = nil then exit;
lstElement.Items.Clear;
if (synHighlighter is TSynMultiSyn) then synHighlighter := ((SynHighlighter as TSynMultiSyn).DefaultHighlighter as TSynCustomHighlighter);
For i:=0 to synHighlighter.AttrCount - 1 do
lstElement.Items.Add(synHighlighter.Attribute[i].Name);
edtFilters.Text := synHighlighter.DefaultFilter;
edtComment.Text := synHighlighter.CommentVar;
if lstElement.Items.Count > 0 then lstElement.ItemIndex := 0;
lstElementClick(nil);
end;
procedure TfrmOptions.SaveTags;
var
i: Integer;
st: TStringList;
begin
if (cmbTags.ItemIndex = -1) or (cmbTags.Text = '') then exit;
st := TStringList.Create;
for i := 0 to lstTags.Items.Count - 1 do begin
st.Add('#T=' + lstTags.Items[i].Caption);
st.Add(lstTags.Items[i].Subitems[0]);
end;
st.Add('#T=');
st.SaveToFile(ExtractFilePath(Application.ExeName) + 'tags\' + cmbTags.Text);
st.Free;
end;
procedure TfrmOptions.SetOptions;
function HalfString(Str: string; GetFirstHalf: Boolean): string;
var
i: Integer;
begin
i := LastDelimiter(Chr(9), Str);
if i = 0 then i := Pred(MaxInt);
if GetFirstHalf then
Result := Copy(Str, 1, Pred(i))
else
Result := Copy(Str, Succ(i), MaxInt);
end;
var
ToolCount,i: Integer;
ini: TMyReg;
ptt: PToolType;
begin
{ Editor - Options Pane }
cmbLangs.ItemIndex := cmbLangs.Items.IndexOf(sDefaultHighlighter);
chkAutoIndent.Checked := bAutoIndent;
chkDDEdit.Checked := bDragDropEditing;
chkDDFiles.Checked := bDragDropFiles;
chkAltColumn.Checked := bAltSetsColumnMode;
chkHoldColumn.Checked := bMaintainCaretcolumn;
chkWantTabs.Checked := bWantTabs;
chkSmartTabs.Checked := bSmartTabs;
chkTabDel.Checked := bSmartTabDelete;
chkRMouseMovesCursor.Checked := bRightMouseMovesCursor;
chkEnhanceHome.Checked := bEnhanceHomeKey;
chkHideScroll.Checked := bHideScrollBarsAsNeeded;
chkHalfPage.Checked := bHalfPageScroll;
chkScrollOneLess.Checked := bScrollbyOneLess;
chkScrollPastEndofFile.Checked := bScrollPastEndofFile;
chkScrollPastEndofLine.Checked := bScrollPastEndofLine;
chkShowScrollHint.Checked := bShowScrollHint;
chkScrollHintFollowsMouse.Checked := bScrollHintFollowsMouse;
chkTabsToSpaces.Checked := bTabsToSpaces;
chkTrimTrailingSpaces.Checked := bTrimTrailingSpaces;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -