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

📄 optionsdialog.pas

📁 此软件支持多文档打开
💻 PAS
📖 第 1 页 / 共 4 页
字号:
{***************************************************************
 *
 * Unit Name   : OptionsDialog
 * Version     : 1.0.0.0
 * Date        : 99-12-15 17:58:41
 * Purpose     :
 * Author      : riceball (teditor@mailroom.com)
 * Copyright(C): 1999, 2000 by riceball
 * History     :
 *        2000-11-14
 *           * override PaintGutter for TMySynEdit
 *           + Property ShowCurrentLine for TMySynEdit
 *_______________________________________________________________
 *legend:
 *  +  New Feature Added.
 *  #  New(Todo) Feature Added, but not work , just a start.
 *  -  Old Feature removed.
 *  *  Bug Fixed.
 *  !  Bug Found, Not Fixed.
 *  ^  My Todo Wish.
 ****************************************************************}

Unit OptionsDialog;

Interface

Uses
  {$IFDEF debug}
  dbugintf,
  {$ENDIF}
  Windows,
  Messages,
  SysUtils,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  ComCtrls,
  ColorGrd,
  Clipbrd,
  Menus,
  FileCtrl,
  RXSpin,
  RXCombos,
  StrUtils,
  ExtCtrls,
  HexEditor,
  JediLocalStr,
  Buttons,
  vgNLS,
  SynEdit,
  SynEditHighlighter,
  SynEditTypes,
  SynEditKeyCmds,
  SynHighlighterHC11,
  SynHighlighterCache,
  SynHighlighterKix,
  SynHighlighterJScript,
  SynHighlighterCss,
  SynHighlighterADSP21xx,
  SynHighlighterIni,
  SynHighlighterSML,
  SynHighlighterBaan,
  SynHighlighterFoxpro,
  SynHighlighterFortran,
  SynHighlighterPHP,
  SynHighlighterASM,
  SynHighlighterBat,
  SynHighlighterDfm,
  SynHighlighterGalaxy,
  SynHighlighterPython,
  SynHighlighterVBScript,
  SynHighlighterVB,
  SynHighlighterAWK,
  SynHighlighterHTML,
  SynHighlighterTclTk,
  SynHighlighterSQL,
  SynHighlighterCAC,
  SynHighlighterJava,
  SynHighlighterHP48,
  SynHighlighterGeneral,
  SynHighlighterPerl,
  SynHighlighterCpp,
  SynHighlighterDml,
  SynHighlighterPas, SynEditPythonBehaviour;

Type

  PCollaspeInfo = ^TCollaspeInfo;
  TCollaspeInfo = Record
    CaretY: Integer;
    Text: String;
  End;

  TmyStrings = Class(TStringList)
  Public
    ID: Integer;
  End;

  TMySynEdit = Class(TSynEdit)
  Private
    FHexView: Boolean;
    FShowCurrentLine: Boolean;
    Procedure SetHexView(Const Value: Boolean);
    procedure SetShowCurrentLine(const Value: Boolean);
  protected
    procedure PaintGutter(AClip: TRect; FirstLine, LastLine: integer);override;
  Public
    OldCaretY: Integer; //keep last CaretY, for Show Current Line with special color
    HexEdit: THexEditor;
    FileName: String;
    CollaspeList: TList;
    NeedSetFocus: Boolean;

    Constructor Create(AOwner: TComponent); Override;
    Destructor Destroy; Override;
    Procedure SetFocus; Override;
    Procedure Undo;
    Function iCanUndo: Boolean;
    Function SelAvail: Boolean;
    Function iCanPaste: Boolean;
    Procedure CopyToClipboard;
    Procedure CutToClipboard;
    Procedure PasteFromClipboard;

    Procedure SaveToHexEdit;
    Procedure LoadFromHexEdit;
    Procedure NextCollaspe;
    Procedure PrevCollaspe;
    Function DeleteCollapse(AID: Integer): Boolean;
    Function GetCollaspePrmpt(LineNo: Integer; Var CollapseID: Integer): Boolean;
    Procedure CreateCollaspeMark(LineNo, CollapseID, idMark: Integer);

    Procedure LoadCollaspeList;
    Procedure SaveCollaspeList;
    Procedure ClearCollaspeList;
    Procedure ExpandText(Const LineNo: Integer);
    Procedure CollaspeText(LineNo: Integer; Count: Integer; Desc: String);
    Function FindCollaspeList(Const AID: Integer): TmyStrings;
    Procedure ExpandAll;
    Procedure CollaspeAll;

    Property HexView: Boolean Read FHexView Write SetHexView;
    Property ShowCurrentLine: Boolean read FShowCurrentLine write SetShowCurrentLine;
    Property DragKind;
    Property DragMode;
    Property Caption;
  End;

  TdlgOption = Class(TForm)
    BtnOK: TButton;
    BtnCancel: TButton;
    PageControl1: TPageControl;
    tsEditor: TTabSheet;
    TabSheet1: TTabSheet;
    lbLanguage: TListBox;
    grbColorSet: TGroupBox;
    lbElement: TListBox;
    ColorGrid: TColorGrid;
    cbBold: TCheckBox;
    cbItalic: TCheckBox;
    cbUnderline: TCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    cbStrikeOut: TCheckBox;
    PasSyn1: TSynPasSyn;
    CppSyn1: TSynCppSyn;
    DcjPerlSyn1: TSynPerlSyn;
    mwGeneralSyn1: TSynGeneralSyn;
    HP48Syn1: TSynHP48Syn;
    JavaSyn1: TSynJavaSyn;
    CACSyn1: TSynCACSyn;
    SQLSyn1: TSynSQLSyn;
    TCLTKSyn1: TSynTclTkSyn;
    HTMLSyn1: TSynHTMLSyn;
    AWKSyn1: TSynAWKSyn;
    VBScriptSyn1: TSynVBScriptSyn;
    PythonSyn1: TSynPythonSyn;
    GalaxySyn1: TSynGalaxySyn;
    DfmSyn1: TSynDfmSyn;
    BatSyn1: TSynBatSyn;
    AsmSyn1: TSynAsmSyn;
    DmlSyn1: TSynDmlSyn;
    PHPSyn1: TSynPHPSyn;
    grbEditorOptions: TGroupBox;
    cbAutoIndent: TCheckBox;
    cbDragDropEditing: TCheckBox;
    cbDropFiles: TCheckBox;
    cbHalfPageScroll: TCheckBox;
    cbScrollPastEol: TCheckBox;
    cbTabsToSpaces: TCheckBox;
    cbSmartTabs: TCheckBox;
    grbGutterOptions: TGroupBox;
    cbGutterVisible: TCheckBox;
    cbxGutterSize: TComboBox;
    Label3: TLabel;
    cbShowLineNumbers: TCheckBox;
    tsGeneral: TTabSheet;
    cbZeroStart: TCheckBox;
    grbDisplay: TGroupBox;
    Label15: TLabel;
    Label4: TLabel;
    Label14: TLabel;
    Label5: TLabel;
    cboFontName: TFontComboBox;
    edtFontSize: TRxSpinEdit;
    cboFontColor: TColorComboBox;
    cboBackColor: TColorComboBox;
    Label6: TLabel;
    Label7: TLabel;
    edtUndoCount: TRxSpinEdit;
    cboDateTimeFormat: TComboBox;
    chkAutosave: TCheckBox;
    tsCodeInsight: TTabSheet;
    grbCodeTemplate: TGroupBox;
    lvTemplate: TListView;
    Label9: TLabel;
    btnAddTemplate: TButton;
    btnEditTemplate: TButton;
    btnDelTemplate: TButton;
    hkCodeTemplate: THotKey;
    Label8: TLabel;
    Label10: TLabel;
    cboLanguage: TComboBox;
    Label11: TLabel;
    edtCode: TSynEdit;
    tsKeyboard: TTabSheet;
    KeyCmdList: TListView;
    btnKeyEdit: TButton;
    edtSaveSeconds: TRxSpinEdit;
    Label12: TLabel;
    TimerAutoSave: TTimer;
    btnCodeTemplateShortcut: TButton;
    chkShowCurrentLine: TCheckBox;
    cboCurrentLineColor: TColorComboBox;
    chkUndoAfterSave: TCheckBox;
    VBSyn1: TSynVBSyn;
    Label13: TLabel;
    edtMRUCount: TRxSpinEdit;
    chkAllowDocking: TCheckBox;
    chkBackupFile: TCheckBox;
    FortranSyn1: TSynFortranSyn;
    FoxproSyn1: TSynFoxproSyn;
    BaanSyn1: TSynBaanSyn;
    SMLSyn1: TSynSMLSyn;
    IniSyn1: TSynIniSyn;
    ADSP21xxSyn1: TSynADSP21xxSyn;
    chkOverwriteBackup: TCheckBox;
    tsToolsConfig: TTabSheet;
    lstTools: TListBox;
    Label16: TLabel;
    btnAddTool: TButton;
    btnEditTool: TButton;
    btnDelTool: TButton;
    btnUpTool: TSpeedButton;
    btdDownTool: TSpeedButton;
    ResourceSyn1: TSynGeneralSyn;
    tsEditorExperts: TTabSheet;
    gbxKeyboard: TGroupBox;
    btnConfigure: TButton;
    btnShortcut: TButton;
    mmoHelp: TMemo;
    chkDisableEditorExperts: TCheckBox;
    lvEditorExperts: TListView;
    CSSSyn1: TSynCssSyn;
    JScriptSyn1: TSynJScriptSyn;
    KixSyn1: TSynKixSyn;
    CacheSyn1: TSynCacheSyn;
    chkLastOpen: TCheckBox;
    chkShowSplash: TCheckBox;
    edtSpaces: TRxSpinEdit;
    edtFilter: TEdit;
    lblextention: TLabel;
    HC11Syn1: TSynHC11Syn;
    tsFileAsso: TTabSheet;
    lblAsso: TLabel;
    lstAsso: TListBox;
    lblExt: TLabel;
    cboExts: TComboBox;
    lblDesc: TLabel;
    edtExtDesc: TEdit;
    btnAddExt: TButton;
    btnDelExt: TButton;
    btnRestoreAllExts: TButton;
    btnRegAll: TButton;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    PythonBehaviour1: TSynEditPythonBehaviour;
    Procedure FormCreate(Sender: TObject);
    Procedure FormShow(Sender: TObject);
    Procedure lbLanguageClick(Sender: TObject);
    Procedure lbElementClick(Sender: TObject);
    Procedure ElementChange(Sender: TObject);
    Procedure BtnOKClick(Sender: TObject);
    Procedure cboLanguageChange(Sender: TObject);
    Procedure lvTemplateChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    Procedure lvTemplateChanging(Sender: TObject; Item: TListItem;
      Change: TItemChange; Var AllowChange: Boolean);
    Procedure FormDestroy(Sender: TObject);
    Procedure btnAddTemplateClick(Sender: TObject);
    Procedure btnEditTemplateClick(Sender: TObject);
    Procedure btnDelTemplateClick(Sender: TObject);
    Procedure btnKeyEditClick(Sender: TObject);
    Procedure TimerAutoSaveTimer(Sender: TObject);
    Procedure chkAutosaveClick(Sender: TObject);
    Procedure btnCodeTemplateShortcutClick(Sender: TObject);
    Procedure chkShowCurrentLineClick(Sender: TObject);
    Procedure cboBackColorChange(Sender: TObject);
    Procedure chkBackupFileClick(Sender: TObject);
    Procedure btnAddToolClick(Sender: TObject);
    Procedure btnEditToolClick(Sender: TObject);
    Procedure btnDelToolClick(Sender: TObject);
    Procedure btnUpToolClick(Sender: TObject);
    Procedure btdDownToolClick(Sender: TObject);
    Procedure lstToolsDrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    Procedure cbTabsToSpacesClick(Sender: TObject);
    Procedure cboExtsExit(Sender: TObject);
    Procedure lstAssoClick(Sender: TObject);
    Procedure btnAddExtClick(Sender: TObject);
    Procedure btnDelExtClick(Sender: TObject);
    Procedure btnRestoreAllExtsClick(Sender: TObject);
    Procedure btnRegAllClick(Sender: TObject);
  Private
    CurrentTemplate: TStringList;
    CurrentTemplateIndex: Integer;
    TemplateModified: Boolean;
    ToolsLstModified: Boolean;
    tran: TvgTranslator;
    LastAsso, //for lstAsso
    LastLan: Integer; //for Language Flter

    Procedure ClearTemplateLists;
    Procedure LoadTemplate(LanName: String; Const TemplateLst: TStringList);
    Procedure SaveTemplate(LanName: String; Const TemplateLst: TStringList);
    Procedure UpdateTemplate(LanName: String; Const TemplateLst: TStringList);
    Procedure UpdateCode(Const Item: TListItem);
    Procedure UpdateKeystrokesList(Edit: TSynEdit);
    Procedure LoadToolsList;
    Procedure SaveToolsList;
  Public
    Procedure GetCurrentSettings;
    Procedure ApplyCurrentSettings;
    Procedure EnumerateHighlighters;
    Procedure AssignOptions(Edit: TMySynEdit);
  End;

Var
  dlgOption: TdlgOption;

Const
  sTemplatesDir = 'templates\';
  sCollaspePrmpt = '//]]';
  sExpandPrmpt = '//[[';
  myINIExt = '.ji';
  secCollaspe = 'Collaspe';
  MaxID: Integer = 0;

Function GetTemplateFileName(LanName: String): String;

Implementation

Uses
  RegFiles,
  TemplateEditDlg,
  IniFiles,
  EditModule,
  MainEdit,
  ToolPropDialog,
  SynEditKeyCmdsEditor;

{$R *.DFM}

Function GetTemplateFileName(LanName: String): String;
Begin
  Result := ExtractFilePath(Application.ExeName) + sTemplatesDir + LanName
    + '.txt';
End;

Procedure SetCBText(aP: PChar; ACount: Integer);
Var
  sr: String;
Begin
  SetLength(sr, ACount * 2);
  ConvertBinToHex(aP, @sr[1], ACount, False);
  ClipBoard.AsText := sr;
  SetLength(sr, 0);
End;

{ TMySynEdit }

Constructor TMySynEdit.Create(AOwner: TComponent);
Begin
  Inherited Create(AOwner);
  HexEdit := THexEditor.Create(AOwner);
  CollaspeList := TList.Create;
  OldCaretY := 0;
  NeedSetFocus := True;
End;

Destructor TMySynEdit.Destroy;
Begin
  ClearCollaspeList;
  CollaspeList.Free;
  Inherited;
End;

Procedure TMySynEdit.Undo;
Begin
  If Not HexView Then
    Inherited Undo
  Else HexEdit.Undo;
End;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -