📄 dmain.pas
字号:
unit dMain;
interface
uses
Windows,umyReg,math, ClipBrd, Forms, SysUtils, ShellAPI, Classes, SynExportRTF, SynEditExport, SynExportHTML,
SynHighlighterMulti, SynHighlighterCPM, SynHighlighterProgress, uTypes,
SynHighlighterGalaxy, SynHighlighterBaan, SynHighlighterInno,
SynHighlighterIni, SynHighlighterDfm, SynHighlighterSml,
SynHighlighterModelica, SynHighlighterDml, SynHighlighterHP48,
SynHighlighterHC11, SynHighlighterAsm, SynHighlighterADSP21xx,
SynHighlighterSDD, SynHighlighterSQL, SynHighlighterFoxpro,
SynHighlighterCache, SynHighlighterCAC, SynHighlighterGWS,
SynHighlighterTclTk, SynHighlighterPython, SynHighlighterPerl,
SynHighlighterKix, SynHighlighterBat, SynHighlighterAWK,
SynHighlighterVBScript, SynHighlighterPHP, SynHighlighterJScript,
SynHighlighterHtml, SynHighlighterCss, SynHighlighterVB,
SynHighlighterPas, SynHighlighterM3, SynHighlighterJava,
SynHighlighterGeneral, SynHighlighterFortran, SynEditHighlighter,
SynHighlighterCpp, Dialogs, SynCompletionProposal, SynHighlighterUnreal,
SynHighlighterIDL, SynHighlighterMsg, SynHighlighterXML, SynSpellCheck, Menus,
SynEditPlugins, SynMacroRecorder, ImgList, Controls, ShlObj,
SynHighlighterMPerl, SynHighlighterRuby, SynHighlighterUNIXShellScript,
SynHighlighterTeX, ActnList, fDoc, fWeb,SynEditKeyCmds,
SynEditMiscClasses, SynEditSearch, fGoto,
SynHighlighterAny, HexEditor, inifiles, strUtils, ComCtrls, SynEditRegexSearch,
SynAutoCorrect, SynEditPrint, SynEditTextBuffer, SynExportXHTML;
type
TdmMain = class(TDataModule)
synHTML: TSynMultiSyn;
synExportHTML: TSynExporterHTML;
synExportRTF: TSynExporterRTF;
dlgFileSave: TSaveDialog;
dlgFileOpen: TOpenDialog;
synRecord: TSynMacroRecorder;
imlShellIcon: TImageList;
imgDoc: TImageList;
synSpell: TSynSpellCheck;
actMain: TActionList;
actFileNew: TAction;
actFileOpen: TAction;
actFileClose: TAction;
actFileSave: TAction;
actFileSaveAs: TAction;
actFileSaveAll: TAction;
actFileShowInBrowser: TAction;
actFileExportHTML: TAction;
actFileExportRTF: TAction;
actFileOpenFTP: TAction;
actFileSaveFTP: TAction;
actFilePrintSetup: TAction;
actFilePrintPreview: TAction;
actFilePrint: TAction;
actFileProperties: TAction;
actFileExit: TAction;
actFileRecent: TAction;
actFileOpenFromInternet: TAction;
actFileCloseAll: TAction;
imgMain: TImageList;
actEditUndo: TAction;
actEditRedo: TAction;
actEditCut: TAction;
actEditAppendCut: TAction;
actEditAppendCopy: TAction;
actEditPaste: TAction;
actEditDelete: TAction;
actEditSelectAll: TAction;
actEditHex: TAction;
actEditCheckSpelling: TAction;
actEditInsertFromFile: TAction;
actEditModified: TAction;
actEditReadOnly: TAction;
actEditCopy: TAction;
actEditInsertDateTime: TAction;
imlShellLarge: TImageList;
actGoto0: TAction;
actGoto1: TAction;
actGoto2: TAction;
actGoto3: TAction;
actGoto4: TAction;
actGoto5: TAction;
actGoto6: TAction;
actGoto7: TAction;
actGoto8: TAction;
actGoto9: TAction;
actToggle0: TAction;
actToggle1: TAction;
actToggle2: TAction;
actToggle3: TAction;
actToggle4: TAction;
actToggle5: TAction;
actToggle6: TAction;
actToggle7: TAction;
actToggle8: TAction;
actToggle9: TAction;
actViewPrefrences: TAction;
actHelpAbout: TAction;
actFindFind: TAction;
actFindNext: TAction;
actFindPrevious: TAction;
actFindReplace: TAction;
actFindGoto: TAction;
actBuildCompile: TAction;
actFormatTabsToSpaces: TAction;
actFormatSpacesToTabs: TAction;
actFormatLeadingTabsToSpaces: TAction;
actFormatLeadingSpacesToTabs: TAction;
actFormatOEMToAnsi: TAction;
actFormatAnsiToOEM: TAction;
actFormatEncoding: TAction;
actFormatTrimTrailingSpaces: TAction;
actCaseUpper: TAction;
actCaseLower: TAction;
actCaseInvert: TAction;
actCaseCapitalize: TAction;
actCaseSentensize: TAction;
actBlockTabRight: TAction;
actBlockTabLeft: TAction;
actAdvancedDeleteLines: TAction;
actAdvancedDeleteToEOL: TAction;
actAdvancedDeleteToBOL: TAction;
actAdvancedDeleteWord: TAction;
actAdvancedSelectLine: TAction;
actAdvancedSelectToEOL: TAction;
actAdvancedSelectToBOL: TAction;
actAdvancedSelectWord: TAction;
actAdvancedJoinLines: TAction;
actAdvancedSplitLine: TAction;
actAdvancedDuplicateLine: TAction;
actAdvancedFormatLines: TAction;
propose: TSynCompletionProposal;
imgPropose: TImageList;
actFindPrevLine: TAction;
actFindNextLine: TAction;
actFindFindInFiles: TAction;
actFileShowInExternalBrowser: TAction;
SynCppSyn1: TSynCppSyn;
SynFortranSyn1: TSynFortranSyn;
SynGeneralSyn1: TSynGeneralSyn;
SynJavaSyn1: TSynJavaSyn;
SynM3Syn1: TSynM3Syn;
SynPasSyn1: TSynPasSyn;
SynVBSyn1: TSynVBSyn;
SynCssSyn1: TSynCssSyn;
SynHTMLSyn1: TSynHTMLSyn;
SynJScriptSyn1: TSynJScriptSyn;
SynPHPSyn1: TSynPHPSyn;
SynVBScriptSyn1: TSynVBScriptSyn;
SynAWKSyn1: TSynAWKSyn;
SynBatSyn1: TSynBatSyn;
SynKixSyn1: TSynKixSyn;
SynPythonSyn1: TSynPythonSyn;
SynTclTkSyn1: TSynTclTkSyn;
SynGWScriptSyn1: TSynGWScriptSyn;
SynCACSyn1: TSynCACSyn;
SynCacheSyn1: TSynCacheSyn;
SynFoxproSyn1: TSynFoxproSyn;
SynSQLSyn1: TSynSQLSyn;
SynSDDSyn1: TSynSDDSyn;
SynADSP21xxSyn1: TSynADSP21xxSyn;
SynAsmSyn1: TSynAsmSyn;
SynHC11Syn1: TSynHC11Syn;
SynHP48Syn1: TSynHP48Syn;
SynDmlSyn1: TSynDmlSyn;
SynModelicaSyn1: TSynModelicaSyn;
SynSMLSyn1: TSynSMLSyn;
SynDfmSyn1: TSynDfmSyn;
SynIniSyn1: TSynIniSyn;
SynInnoSyn1: TSynInnoSyn;
SynBaanSyn1: TSynBaanSyn;
SynGalaxySyn1: TSynGalaxySyn;
SynProgressSyn1: TSynProgressSyn;
SynCPMSyn1: TSynCPMSyn;
SynXMLSyn1: TSynXMLSyn;
SynUnrealSyn1: TSynUnrealSyn;
SynIdlSyn1: TSynIdlSyn;
SynMsgSyn1: TSynMsgSyn;
SynUNIXShellScriptSyn1: TSynUNIXShellScriptSyn;
SynTeXSyn1: TSynTeXSyn;
SynRubySyn1: TSynRubySyn;
SynEditSearch: TSynEditSearch;
SynAutoCorrect: TSynAutoCorrect;
SynMPerlSyn1: TSynMPerlSyn;
Print: TSynEditPrint;
PrintDialog: TPrintDialog;
actExportXML: TAction;
procedure s(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure actFileNewExecute(Sender: TObject);
procedure actFileCloseAllExecute(Sender: TObject);
procedure actFileOpenExecute(Sender: TObject);
procedure actFilePropertiesExecute(Sender: TObject);
procedure actFileSaveExecute(Sender: TObject);
procedure actFileSaveAsExecute(Sender: TObject);
procedure actFileSaveAllExecute(Sender: TObject);
procedure actFileShowInBrowserExecute(Sender: TObject);
procedure actFileCloseExecute(Sender: TObject);
procedure actFileExportHTMLExecute(Sender: TObject);
procedure actFileExportRTFExecute(Sender: TObject);
procedure actFileOpenFTPExecute(Sender: TObject);
procedure actFileSaveFTPExecute(Sender: TObject);
procedure actFileExitExecute(Sender: TObject);
procedure actEditUndoExecute(Sender: TObject);
procedure actEditRedoExecute(Sender: TObject);
procedure actEditCutExecute(Sender: TObject);
procedure actEditAppendCutExecute(Sender: TObject);
procedure actEditCopyExecute(Sender: TObject);
procedure actEditAppendCopyExecute(Sender: TObject);
procedure actEditPasteExecute(Sender: TObject);
procedure actEditDeleteExecute(Sender: TObject);
procedure actEditModifiedExecute(Sender: TObject);
procedure actEditReadOnlyExecute(Sender: TObject);
procedure actEditSelectAllExecute(Sender: TObject);
procedure actGoto0Execute(Sender: TObject);
procedure actToggle0Execute(Sender: TObject);
procedure actEditHexExecute(Sender: TObject);
procedure actViewPrefrencesExecute(Sender: TObject);
procedure actHelpAboutExecute(Sender: TObject);
procedure actFindFindExecute(Sender: TObject);
procedure actFindNextExecute(Sender: TObject);
procedure actFindReplaceExecute(Sender: TObject);
procedure actFindGotoExecute(Sender: TObject);
procedure actFindPreviousExecute(Sender: TObject);
procedure actBuildCompileExecute(Sender: TObject);
procedure actFormatTabsToSpacesExecute(Sender: TObject);
procedure actFormatSpacesToTabsExecute(Sender: TObject);
procedure actFormatLeadingTabsToSpacesExecute(Sender: TObject);
procedure actFormatLeadingSpacesToTabsExecute(Sender: TObject);
procedure actFormatTrimTrailingSpacesExecute(Sender: TObject);
procedure actFormatOEMToAnsiExecute(Sender: TObject);
procedure actFormatAnsiToOEMExecute(Sender: TObject);
procedure actCaseUpperExecute(Sender: TObject);
procedure actCaseLowerExecute(Sender: TObject);
procedure actCaseInvertExecute(Sender: TObject);
procedure actCaseSentensizeExecute(Sender: TObject);
procedure actCaseCapitalizeExecute(Sender: TObject);
procedure actBlockTabRightExecute(Sender: TObject);
procedure actBlockTabLeftExecute(Sender: TObject);
procedure actAdvancedDeleteLinesExecute(Sender: TObject);
procedure actAdvancedDeleteToBOLExecute(Sender: TObject);
procedure actAdvancedDeleteToEOLExecute(Sender: TObject);
procedure actAdvancedJoinLinesExecute(Sender: TObject);
procedure actAdvancedSplitLineExecute(Sender: TObject);
procedure actAdvancedDuplicateLineExecute(Sender: TObject);
procedure actAdvancedSelectLineExecute(Sender: TObject);
procedure actAdvancedDeleteWordExecute(Sender: TObject);
procedure actAdvancedSelectWordExecute(Sender: TObject);
procedure actAdvancedSelectToEOLExecute(Sender: TObject);
procedure actAdvancedSelectToBOLExecute(Sender: TObject);
procedure actAdvancedFormatLinesExecute(Sender: TObject);
procedure actFindFindInFilesExecute(Sender: TObject);
procedure actFileShowInExternalBrowserExecute(Sender: TObject);
procedure actEditCheckSpellingExecute(Sender: TObject);
procedure synSpellDone(Sender: TObject);
procedure synSpellCheckWord(Sender: TObject; AWord: String;
ASuggestions: TStringList; var ACorrectWord: String;
var AAction: Integer; const AUndoEnabled: Boolean);
procedure actExportXMLExecute(Sender: TObject);
procedure actFilePrintExecute(Sender: TObject);
private
gGotoType: TGotoType;
iSearchDir: Integer;
fSearchFromCaret: boolean;
gbSearchBackwards: boolean;
gbSearchCaseSensitive: boolean;
gbSearchFromCaret: boolean;
gbSearchSelectionOnly: boolean;
gbSearchTextAtCaret: boolean;
gbSearchWholeWords: boolean;
gsSearchTextHistory: string;
gsReplaceText: string;
gsReplaceTextHistory: string;
gsSearchText: string;
gbWrapAround: Boolean;
procedure SetBookmark(const AIndex: integer);
procedure LoadLangs();
procedure LoadLang(lang: TIniFile);
{ Private declarations }
function GetDoc: TfrmDoc;
procedure DoSearchReplaceText(AReplace: boolean; ABackwards: boolean; aRepAll: Boolean=False);
function RowColToCharIndex(RowCol: TPoint): integer;
function CharIndexToRowCol(const Index: integer): TPoint;
function GetWeb: TfrmWeb;
public
fHighLighters: TStringList;
bDunUpdate:Boolean;
iAdd: integer;
ExportXHTML: TSYnExporterXHTML;
{ Public declarations }
procedure SetSelLang(sName: String);
procedure InsertHighlighters;
procedure SaveDoc(TDoc: TfrmDoc);
procedure WriteFunctions;
procedure ReadFunctions;
procedure SaveDocAs(TDoc: TfrmDoc);
procedure FindStringCMB(strToFind: String);
procedure ClickLink(strURL: String);
function SetHighlighter(name: string): TSynCustomHighlighter;
function CloseAll(TDoc: TfrmDoc = nil): TModalResult;
function GetHighlighterForFile(AFileName: string): TSynCustomHighlighter;
procedure ShowOpt();
procedure LoadHighlighters();
procedure SaveHighlighters();
procedure NewDoc(FileName: String; Highlighter: TSynCustomHighlighter = nil);
property SelDoc: TfrmDoc Read GetDoc;
property SelWeb: TfrmWeb Read GetWeb;
end;
var
dmMain: TdmMain;
implementation
{$R *.dfm}
uses
UHighlighterProcs, fReplace, fAbout, fFTP, uOptVars, fImage, fMain, fSaveDlg, fOptions, fUpload,
fFindText, SynEditTypes, fOutput, jclStrings,
GrepSearchDlg, GrepResultsDlg, dlgSpellCheck, Registry, fFindHex, fTags,
fOpenWindows;
resourcestring
SFilterAllFiles = 'All files|*.*|';
procedure TDmMain.WriteFunctions;
var
i,c:Integer;
ini: TIniFile;
Highlighter: TSynCustomHighlighter;
stList: TStringList;
s: STring;
begin
for i:= 0 to fHighlighters.Count - 1 do begin
Highlighter := TSynCUstomHighlighter(fHighlighters.Objects[i]);
if Highlighter = nil then exit;
s := AnsiReplaceText(GetLangName(Highlighter), '/', '');
s := AnsiReplaceText(s, '\', '');
{ if fileexists(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun') then
DeleteFile(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun');}
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun');
ini.WriteString('KeywordsChar', 'WordsBefore', BoolToStr(Highlighter.CanhaveCharsBefore, True));
stList := TStringList.Create;
stList.LoadFromFile(ini.Filename);
stList.Add('[Keywords]');
stList.AddStrings(Highlighter.FunctionKeys);
stList.SaveToFile(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun');
stList.Free;
ini.Free;
end;
end;
procedure TDmmain.ReadFUnctions;
var
i,c:Integer;
ini: TINiList;
Highlighter: TSynCustomHighlighter;
s: STring;
begin
for i:= 0 to fHighlighters.Count - 1 do begin
Highlighter := TSynCUstomHighlighter(fHighlighters.Objects[i]);
if Highlighter = nil then continue;
s := AnsiReplaceText(GetLangName(Highlighter), '/', '');
s := AnsiReplaceText(s, '\', '');
if FileExists(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun') then begin
ini := TIniList.Create;
ini.LoadFromFile(ExtractFilePath(Application.ExeName) + 'funKeys\' + s + '.fun');
Highlighter.CanhaveCharsBefore := ini.ReadBool('KeywordsChar', 'WordsBefore', True);
ini.ReadSectionNames('Keywords', Highlighter.FunctionKeys);
ini.Free;
end;
end;
end;
procedure TdmMain.InsertHighlighters;
var
tNode: TTreeNode;
i: Integer;
begin
tNode := frmOptions.tvOptions.Items[4];
for i := 0 to fHighlighters.Count - 1 do begin
frmOptions.tvOptions.Items.AddChild(tNode, fHighlighters[i]);
end;
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;
procedure TDmMain.LoadLangs();
var
ini: TIniFile;
rec: TSearchRec;
begin
if findFirst(ExtractFilePath(Application.ExeName) + 'highlighters\' + '*.ini', faAnyFile, Rec) = 0 then begin
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'highlighters\' + rec.Name);
LoadLang(ini);
ini.Destroy;
While FindNext(rec) = 0 do
begin
ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'highlighters\' + rec.Name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -