📄 optionsdialog.pas
字号:
{***************************************************************
*
* 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 + -