⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 foptions.pas

📁 Delphi编写的一个支持语法高亮显示和很多语言的文本编辑器
💻 PAS
📖 第 1 页 / 共 4 页
字号:
 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 + -