0000: ef bb bf 75 6e 69 74 20 46 5f 50 72 65 76 69 65 unit F_Previe
0010: 77 48 54 4d 4c 3b 0d 0a 0d 0a 2f 2f 2f 2f 2f 2f wHTML;....//////
0020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a //////////////..
0080: 69 6e 74 65 72 66 61 63 65 0d 0a 0d 0a 75 73 65 interface....use
0090: 73 0d 0a 20 20 57 69 6e 64 6f 77 73 2c 20 4d 65 s.. Windows, Me
00a0: 73 73 61 67 65 73 2c 20 53 79 73 55 74 69 6c 73 ssages, SysUtils
00b0: 2c 20 43 6c 61 73 73 65 73 2c 20 56 61 72 69 61 , Classes, Varia
00c0: 6e 74 73 2c 20 47 72 61 70 68 69 63 73 2c 20 43 nts, Graphics, C
00d0: 6f 6e 74 72 6f 6c 73 2c 20 46 6f 72 6d 73 2c 20 ontrols, Forms,
00e0: 47 65 6e 65 72 69 63 73 2e 43 6f 6c 6c 65 63 74 Generics.Collect
00f0: 69 6f 6e 73 2c 0d 0a 20 20 44 69 61 6c 6f 67 73 ions,.. Dialogs
0100: 2c 20 53 74 64 43 74 72 6c 73 2c 20 53 48 44 6f , StdCtrls, SHDo
0110: 63 56 77 2c 20 4f 6c 65 43 74 72 6c 73 2c 20 43 cVw, OleCtrls, C
0120: 6f 6d 43 74 72 6c 73 2c 20 45 78 74 43 74 72 6c omCtrls, ExtCtrl
0130: 73 2c 20 49 6e 69 46 69 6c 65 73 2c 0d 0a 20 20 s, IniFiles,..
0140: 4e 70 70 50 6c 75 67 69 6e 2c 20 4e 70 70 44 6f NppPlugin, NppDo
0150: 63 6b 69 6e 67 46 6f 72 6d 73 2c 0d 0a 20 20 55 ckingForms,.. U
0160: 5f 43 75 73 74 6f 6d 46 69 6c 74 65 72 3b 0d 0a _CustomFilter;..
0170: 0d 0a 74 79 70 65 0d 0a 20 20 54 42 75 66 66 65 ..type.. TBuffe
0180: 72 49 44 20 3d 20 4e 61 74 69 76 65 49 6e 74 3b rID = NativeInt;
0190: 0d 0a 0d 0a 20 20 54 66 72 6d 48 54 4d 4c 50 72 .... TfrmHTMLPr
01a0: 65 76 69 65 77 20 3d 20 63 6c 61 73 73 28 54 4e eview = class(TN
01b0: 70 70 44 6f 63 6b 69 6e 67 46 6f 72 6d 29 0d 0a ppDockingForm)..
01c0: 20 20 20 20 77 62 49 45 3a 20 54 57 65 62 42 72 wbIE: TWebBr
01d0: 6f 77 73 65 72 3b 0d 0a 20 20 20 20 70 6e 6c 42 owser;.. pnlB
01e0: 75 74 74 6f 6e 73 3a 20 54 50 61 6e 65 6c 3b 0d uttons: TPanel;.
01f0: 0a 20 20 20 20 62 74 6e 52 65 66 72 65 73 68 3a . btnRefresh:
0200: 20 54 42 75 74 74 6f 6e 3b 0d 0a 20 20 20 20 62 TButton;.. b
0210: 74 6e 43 6c 6f 73 65 3a 20 54 42 75 74 74 6f 6e tnClose: TButton
0220: 3b 0d 0a 20 20 20 20 73 62 72 49 45 3a 20 54 53 ;.. sbrIE: TS
0230: 74 61 74 75 73 42 61 72 3b 0d 0a 20 20 20 20 70 tatusBar;.. p
0240: 6e 6c 50 72 65 76 69 65 77 3a 20 54 50 61 6e 65 nlPreview: TPane
0250: 6c 3b 0d 0a 20 20 20 20 70 6e 6c 48 54 4d 4c 3a l;.. pnlHTML:
0260: 20 54 50 61 6e 65 6c 3b 0d 0a 20 20 20 20 62 74 TPanel;.. bt
0270: 6e 41 62 6f 75 74 3a 20 54 42 75 74 74 6f 6e 3b nAbout: TButton;
0280: 0d 0a 20 20 20 20 74 6d 72 41 75 74 6f 72 65 66 .. tmrAutoref
0290: 72 65 73 68 3a 20 54 54 69 6d 65 72 3b 0d 0a 20 resh: TTimer;..
02a0: 20 20 20 63 68 6b 46 72 65 65 7a 65 3a 20 54 43 chkFreeze: TC
02b0: 68 65 63 6b 42 6f 78 3b 0d 0a 20 20 20 20 70 72 heckBox;.. pr
02c0: 6f 63 65 64 75 72 65 20 62 74 6e 52 65 66 72 65 ocedure btnRefre
02d0: 73 68 43 6c 69 63 6b 28 53 65 6e 64 65 72 3a 20 shClick(Sender:
02e0: 54 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 70 TObject);.. p
02f0: 72 6f 63 65 64 75 72 65 20 62 74 6e 43 6c 6f 73 rocedure btnClos
0300: 65 43 6c 69 63 6b 28 53 65 6e 64 65 72 3a 20 54 eClick(Sender: T
0310: 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 70 72 Object);.. pr
0320: 6f 63 65 64 75 72 65 20 46 6f 72 6d 43 72 65 61 ocedure FormCrea
0330: 74 65 28 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 te(Sender: TObje
0340: 63 74 29 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 ct);.. proced
0350: 75 72 65 20 46 6f 72 6d 4b 65 79 50 72 65 73 73 ure FormKeyPress
0360: 28 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 (Sender: TObject
0370: 3b 20 76 61 72 20 4b 65 79 3a 20 43 68 61 72 29 ; var Key: Char)
0380: 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 ;.. procedure
0390: 20 46 6f 72 6d 48 69 64 65 28 53 65 6e 64 65 72 FormHide(Sender
03a0: 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 : TObject);..
03b0: 20 70 72 6f 63 65 64 75 72 65 20 46 6f 72 6d 46 procedure FormF
03c0: 6c 6f 61 74 28 53 65 6e 64 65 72 3a 20 54 4f 62 loat(Sender: TOb
03d0: 6a 65 63 74 29 3b 0d 0a 20 20 20 20 70 72 6f 63 ject);.. proc
03e0: 65 64 75 72 65 20 46 6f 72 6d 44 6f 63 6b 28 53 edure FormDock(S
03f0: 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b ender: TObject);
0400: 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 .. procedure
0410: 46 6f 72 6d 53 68 6f 77 28 53 65 6e 64 65 72 3a FormShow(Sender:
0420: 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 TObject);..
0430: 70 72 6f 63 65 64 75 72 65 20 77 62 49 45 54 69 procedure wbIETi
0440: 74 6c 65 43 68 61 6e 67 65 28 41 53 65 6e 64 65 tleChange(ASende
0450: 72 3a 20 54 4f 62 6a 65 63 74 3b 20 63 6f 6e 73 r: TObject; cons
0460: 74 20 54 65 78 74 3a 20 57 69 64 65 53 74 72 69 t Text: WideStri
0470: 6e 67 29 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 ng);.. proced
0480: 75 72 65 20 77 62 49 45 42 65 66 6f 72 65 4e 61 ure wbIEBeforeNa
0490: 76 69 67 61 74 65 32 28 41 53 65 6e 64 65 72 3a vigate2(ASender:
04a0: 20 54 4f 62 6a 65 63 74 3b 20 63 6f 6e 73 74 20 TObject; const
04b0: 70 44 69 73 70 3a 20 49 44 69 73 70 61 74 63 68 pDisp: IDispatch
04c0: 3b 20 63 6f 6e 73 74 20 55 52 4c 2c 20 46 6c 61 ; const URL, Fla
04d0: 67 73 2c 0d 0a 20 20 20 20 20 20 54 61 72 67 65 gs,.. Targe
04e0: 74 46 72 61 6d 65 4e 61 6d 65 2c 20 50 6f 73 74 tFrameName, Post
04f0: 44 61 74 61 2c 20 48 65 61 64 65 72 73 3a 20 4f Data, Headers: O
0500: 6c 65 56 61 72 69 61 6e 74 3b 20 76 61 72 20 43 leVariant; var C
0510: 61 6e 63 65 6c 3a 20 57 6f 72 64 42 6f 6f 6c 29 ancel: WordBool)
0520: 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 ;.. procedure
0530: 20 77 62 49 45 4e 65 77 57 69 6e 64 6f 77 33 28 wbIENewWindow3(
0540: 41 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 ASender: TObject
0550: 3b 20 76 61 72 20 70 70 44 69 73 70 3a 20 49 44 ; var ppDisp: ID
0560: 69 73 70 61 74 63 68 3b 20 76 61 72 20 43 61 6e ispatch; var Can
0570: 63 65 6c 3a 20 57 6f 72 64 42 6f 6f 6c 3b 0d 0a cel: WordBool;..
0580: 20 20 20 20 20 20 64 77 46 6c 61 67 73 3a 20 43 dwFlags: C
0590: 61 72 64 69 6e 61 6c 3b 20 63 6f 6e 73 74 20 62 ardinal; const b
05a0: 73 74 72 55 72 6c 43 6f 6e 74 65 78 74 2c 20 62 strUrlContext, b
05b0: 73 74 72 55 72 6c 3a 20 57 69 64 65 53 74 72 69 strUrl: WideStri
05c0: 6e 67 29 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 ng);.. proced
05d0: 75 72 65 20 77 62 49 45 53 74 61 74 75 73 54 65 ure wbIEStatusTe
05e0: 78 74 43 68 61 6e 67 65 28 41 53 65 6e 64 65 72 xtChange(ASender
05f0: 3a 20 54 4f 62 6a 65 63 74 3b 20 63 6f 6e 73 74 : TObject; const
0600: 20 54 65 78 74 3a 20 57 69 64 65 53 74 72 69 6e Text: WideStrin
0610: 67 29 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 g);.. procedu
0620: 72 65 20 77 62 49 45 53 74 61 74 75 73 42 61 72 re wbIEStatusBar
0630: 28 41 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 (ASender: TObjec
0640: 74 3b 20 53 74 61 74 75 73 42 61 72 3a 20 57 6f t; StatusBar: Wo
0650: 72 64 42 6f 6f 6c 29 3b 0d 0a 20 20 20 20 70 72 rdBool);.. pr
0660: 6f 63 65 64 75 72 65 20 62 74 6e 43 6c 6f 73 65 ocedure btnClose
0670: 53 74 61 74 75 73 62 61 72 43 6c 69 63 6b 28 53 StatusbarClick(S
0680: 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b ender: TObject);
0690: 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 .. procedure
06a0: 62 74 6e 41 62 6f 75 74 43 6c 69 63 6b 28 53 65 btnAboutClick(Se
06b0: 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d nder: TObject);.
06c0: 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 46 . procedure F
06d0: 6f 72 6d 44 65 73 74 72 6f 79 28 53 65 6e 64 65 ormDestroy(Sende
06e0: 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 r: TObject);..
06f0: 20 20 70 72 6f 63 65 64 75 72 65 20 74 6d 72 41 procedure tmrA
0700: 75 74 6f 72 65 66 72 65 73 68 54 69 6d 65 72 28 utorefreshTimer(
0710: 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 Sender: TObject)
0720: 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 ;.. procedure
0730: 20 63 68 6b 46 72 65 65 7a 65 43 6c 69 63 6b 28 chkFreezeClick(
0740: 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 Sender: TObject)
0750: 3b 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 ;.. procedure
0760: 20 77 62 49 45 44 6f 63 75 6d 65 6e 74 43 6f 6d wbIEDocumentCom
0770: 70 6c 65 74 65 28 41 53 65 6e 64 65 72 3a 20 54 plete(ASender: T
0780: 4f 62 6a 65 63 74 3b 20 63 6f 6e 73 74 20 70 44 Object; const pD
0790: 69 73 70 3a 20 49 44 69 73 70 61 74 63 68 3b 20 isp: IDispatch;
07a0: 63 6f 6e 73 74 20 55 52 4c 3a 20 4f 6c 65 56 61 const URL: OleVa
07b0: 72 69 61 6e 74 29 3b 0d 0a 20 20 70 72 69 76 61 riant);.. priva
07c0: 74 65 0d 0a 20 20 20 20 7b 20 50 72 69 76 61 74 te.. { Privat
07d0: 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 7d e declarations }
07e0: 0d 0a 20 20 20 20 46 42 75 66 66 65 72 49 44 3a .. FBufferID:
07f0: 20 54 42 75 66 66 65 72 49 44 3b 0d 0a 20 20 20 TBufferID;..
0800: 20 46 53 63 72 6f 6c 6c 50 6f 73 69 74 69 6f 6e FScrollPosition
0810: 73 3a 20 54 44 69 63 74 69 6f 6e 61 72 79 3c 54 s: TDictionary<T
0820: 42 75 66 66 65 72 49 44 2c 54 50 6f 69 6e 74 3e BufferID,TPoint>
0830: 3b 0d 0a 20 20 20 20 46 46 69 6c 74 65 72 54 68 ;.. FFilterTh
0840: 72 65 61 64 3a 20 54 43 75 73 74 6f 6d 46 69 6c read: TCustomFil
0850: 74 65 72 54 68 72 65 61 64 3b 0d 0a 20 20 20 20 terThread;..
0860: 46 53 63 72 6f 6c 6c 54 6f 70 3a 20 49 6e 74 65 FScrollTop: Inte
0870: 67 65 72 3b 0d 0a 20 20 20 20 46 53 63 72 6f 6c ger;.. FScrol
0880: 6c 4c 65 66 74 3a 20 49 6e 74 65 67 65 72 3b 0d lLeft: Integer;.
0890: 0a 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 ... procedure
08a0: 20 53 61 76 65 53 63 72 6f 6c 6c 50 6f 73 3b 0d SaveScrollPos;.
08b0: 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 52 . procedure R
08c0: 65 73 74 6f 72 65 53 63 72 6f 6c 6c 50 6f 73 28 estoreScrollPos(
08d0: 63 6f 6e 73 74 20 42 75 66 66 65 72 49 44 3a 20 const BufferID:
08e0: 54 42 75 66 66 65 72 49 44 29 3b 0d 0a 0d 0a 20 TBufferID);....
08f0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 20 44 65 74 function Det
0900: 65 72 6d 69 6e 65 43 75 73 74 6f 6d 46 69 6c 74 ermineCustomFilt
0910: 65 72 3a 20 73 74 72 69 6e 67 3b 0d 0a 20 20 20 er: string;..
0920: 20 66 75 6e 63 74 69 6f 6e 20 20 45 78 65 63 75 function Execu
0930: 74 65 43 75 73 74 6f 6d 46 69 6c 74 65 72 28 63 teCustomFilter(c
0940: 6f 6e 73 74 20 46 69 6c 74 65 72 4e 61 6d 65 2c onst FilterName,
0950: 20 48 54 4d 4c 3a 20 73 74 72 69 6e 67 3b 20 63 HTML: string; c
0960: 6f 6e 73 74 20 42 75 66 66 65 72 49 44 3a 20 54 onst BufferID: T
0970: 42 75 66 66 65 72 49 44 29 3a 20 42 6f 6f 6c 65 BufferID): Boole
0980: 61 6e 3b 0d 0a 20 20 20 20 66 75 6e 63 74 69 6f an;.. functio
0990: 6e 20 20 54 72 61 6e 73 66 6f 72 6d 58 4d 4c 54 n TransformXMLT
09a0: 6f 48 54 4d 4c 28 63 6f 6e 73 74 20 58 4d 4c 3a oHTML(const XML:
09b0: 20 57 69 64 65 53 74 72 69 6e 67 29 3a 20 73 74 WideString): st
09c0: 72 69 6e 67 3b 0d 0a 0d 0a 20 20 20 20 70 72 6f ring;.... pro
09d0: 63 65 64 75 72 65 20 46 69 6c 74 65 72 54 68 72 cedure FilterThr
09e0: 65 61 64 54 65 72 6d 69 6e 61 74 65 28 53 65 6e eadTerminate(Sen
09f0: 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a der: TObject);..
0a00: 20 20 70 75 62 6c 69 63 0d 0a 20 20 20 20 7b 20 public.. {
0a10: 50 75 62 6c 69 63 20 64 65 63 6c 61 72 61 74 69 Public declarati
0a20: 6f 6e 73 20 7d 0d 0a 20 20 20 20 70 72 6f 63 65 ons }.. proce
0a30: 64 75 72 65 20 52 65 73 65 74 54 69 6d 65 72 3b dure ResetTimer;
0a40: 0d 0a 20 20 20 20 70 72 6f 63 65 64 75 72 65 20 .. procedure
0a50: 46 6f 72 67 65 74 42 75 66 66 65 72 28 63 6f 6e ForgetBuffer(con
0a60: 73 74 20 42 75 66 66 65 72 49 44 3a 20 54 42 75 st BufferID: TBu
0a70: 66 66 65 72 49 44 29 3b 0d 0a 20 20 20 20 70 72 fferID);.. pr
0a80: 6f 63 65 64 75 72 65 20 44 69 73 70 6c 61 79 50 ocedure DisplayP
0a90: 72 65 76 69 65 77 28 48 54 4d 4c 3a 20 73 74 72 review(HTML: str
0aa0: 69 6e 67 3b 20 63 6f 6e 73 74 20 42 75 66 66 65 ing; const Buffe
0ab0: 72 49 44 3a 20 54 42 75 66 66 65 72 49 44 29 3b rID: TBufferID);
0ac0: 0d 0a 20 20 65 6e 64 3b 0d 0a 0d 0a 76 61 72 0d .. end;....var.
0ad0: 0a 20 20 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 . frmHTMLPrevie
0ae0: 77 3a 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 w: TfrmHTMLPrevi
0af0: 65 77 3b 0d 0a 0d 0a 2f 2f 2f 2f 2f 2f 2f 2f 2f ew;..../////////
0b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f ////////////////
0b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 69 6d 70 ///////////..imp
0b60: 6c 65 6d 65 6e 74 61 74 69 6f 6e 0d 0a 75 73 65 lementation..use
0b70: 73 0d 0a 20 20 53 68 65 6c 6c 41 50 49 2c 20 43 s.. ShellAPI, C
0b80: 6f 6d 4f 62 6a 2c 20 53 74 72 55 74 69 6c 73 2c omObj, StrUtils,
0b90: 20 49 4f 55 74 69 6c 73 2c 20 4d 61 73 6b 73 2c IOUtils, Masks,
0ba0: 20 4d 53 48 54 4d 4c 2c 0d 0a 20 20 52 65 67 45 MSHTML,.. RegE
0bb0: 78 70 72 2c 20 4c 5f 53 70 65 63 69 61 6c 46 6f xpr, L_SpecialFo
0bc0: 6c 64 65 72 73 2c 0d 0a 20 20 44 65 62 75 67 2c lders,.. Debug,
0bd0: 0d 0a 20 20 57 65 62 42 72 6f 77 73 65 72 2c 20 .. WebBrowser,
0be0: 53 63 69 53 75 70 70 6f 72 74 2c 20 55 5f 4e 70 SciSupport, U_Np
0bf0: 70 5f 50 72 65 76 69 65 77 48 54 4d 4c 3b 0d 0a p_PreviewHTML;..
0c00: 0d 0a 7b 24 52 20 2a 2e 64 66 6d 7d 0d 0a 0d 0a ..{$R *.dfm}....
0c10: 7b 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d { ==============
0c20: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0c70: 3d 3d 20 7d 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d == }....{ ------
0c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0cd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 ---------- }..pr
0ce0: 6f 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c ocedure TfrmHTML
0cf0: 50 72 65 76 69 65 77 2e 46 6f 72 6d 43 72 65 61 Preview.FormCrea
0d00: 74 65 28 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 te(Sender: TObje
0d10: 63 74 29 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 46 ct);..begin.. F
0d20: 53 63 72 6f 6c 6c 50 6f 73 69 74 69 6f 6e 73 20 ScrollPositions
0d30: 3a 3d 20 54 44 69 63 74 69 6f 6e 61 72 79 3c 54 := TDictionary<T
0d40: 42 75 66 66 65 72 49 44 2c 54 50 6f 69 6e 74 3e BufferID,TPoint>
0d50: 2e 43 72 65 61 74 65 3b 0d 0a 20 20 73 65 6c 66 .Create;.. self
0d60: 2e 4e 70 70 44 65 66 61 75 6c 74 44 6f 63 6b 69 .NppDefaultDocki
0d70: 6e 67 4d 61 73 6b 20 3a 3d 20 44 57 53 5f 44 46 ngMask := DWS_DF
0d80: 5f 46 4c 4f 41 54 49 4e 47 3b 20 2f 2f 20 77 68 _FLOATING; // wh
0d90: 61 74 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 ats the default
0da0: 64 6f 63 6b 69 6e 67 20 70 6f 73 69 74 69 6f 6e docking position
0db0: 0d 0a 20 20 2f 2f 73 65 6c 66 2e 4b 65 79 50 72 .. //self.KeyPr
0dc0: 65 76 69 65 77 20 3a 3d 20 74 72 75 65 3b 20 2f eview := true; /
0dd0: 2f 20 73 70 65 63 69 61 6c 20 68 61 63 6b 20 66 / special hack f
0de0: 6f 72 20 69 6e 70 75 74 20 66 6f 72 6d 73 0d 0a or input forms..
0df0: 20 20 73 65 6c 66 2e 4f 6e 46 6c 6f 61 74 20 3a self.OnFloat :
0e00: 3d 20 73 65 6c 66 2e 46 6f 72 6d 46 6c 6f 61 74 = self.FormFloat
0e10: 3b 0d 0a 20 20 73 65 6c 66 2e 4f 6e 44 6f 63 6b ;.. self.OnDock
0e20: 20 3a 3d 20 73 65 6c 66 2e 46 6f 72 6d 44 6f 63 := self.FormDoc
0e30: 6b 3b 0d 0a 20 20 69 6e 68 65 72 69 74 65 64 3b k;.. inherited;
0e40: 0d 0a 20 20 46 42 75 66 66 65 72 49 44 20 3a 3d .. FBufferID :=
0e50: 20 2d 31 3b 0d 0a 20 20 77 69 74 68 20 54 4e 70 -1;.. with TNp
0e60: 70 50 6c 75 67 69 6e 50 72 65 76 69 65 77 48 54 pPluginPreviewHT
0e70: 4d 4c 28 4e 70 70 29 2e 47 65 74 53 65 74 74 69 ML(Npp).GetSetti
0e80: 6e 67 73 28 29 20 64 6f 20 62 65 67 69 6e 0d 0a ngs() do begin..
0e90: 20 20 20 20 74 6d 72 41 75 74 6f 72 65 66 72 65 tmrAutorefre
0ea0: 73 68 2e 49 6e 74 65 72 76 61 6c 20 3a 3d 20 52 sh.Interval := R
0eb0: 65 61 64 49 6e 74 65 67 65 72 28 27 41 75 74 6f eadInteger('Auto
0ec0: 72 65 66 72 65 73 68 27 2c 20 27 49 6e 74 65 72 refresh', 'Inter
0ed0: 76 61 6c 27 2c 20 74 6d 72 41 75 74 6f 72 65 66 val', tmrAutoref
0ee0: 72 65 73 68 2e 49 6e 74 65 72 76 61 6c 29 3b 0d resh.Interval);.
0ef0: 0a 20 20 20 20 46 72 65 65 3b 0d 0a 20 20 65 6e . Free;.. en
0f00: 64 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d d;..end {TfrmHTM
0f10: 4c 50 72 65 76 69 65 77 2e 46 6f 72 6d 43 72 65 LPreview.FormCre
0f20: 61 74 65 7d 3b 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d ate};..{ -------
0f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f --------- }..pro
0f90: 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 cedure TfrmHTMLP
0fa0: 72 65 76 69 65 77 2e 46 6f 72 6d 44 65 73 74 72 review.FormDestr
0fb0: 6f 79 28 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 oy(Sender: TObje
0fc0: 63 74 29 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 46 ct);..begin.. F
0fd0: 72 65 65 41 6e 64 4e 69 6c 28 46 53 63 72 6f 6c reeAndNil(FScrol
0fe0: 6c 50 6f 73 69 74 69 6f 6e 73 29 3b 0d 0a 20 20 lPositions);..
0ff0: 46 72 65 65 41 6e 64 4e 69 6c 28 46 46 69 6c 74 FreeAndNil(FFilt
1000: 65 72 54 68 72 65 61 64 29 3b 0d 0a 20 20 69 6e erThread);.. in
1010: 68 65 72 69 74 65 64 3b 0d 0a 65 6e 64 20 7b 54 herited;..end {T
1020: 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 46 frmHTMLPreview.F
1030: 6f 72 6d 44 65 73 74 72 6f 79 7d 3b 0d 0a 0d 0a ormDestroy};....
1040: 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..{ ------------
1050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10a0: 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 72 ---- }..procedur
10b0: 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 e TfrmHTMLPrevie
10c0: 77 2e 62 74 6e 43 6c 6f 73 65 53 74 61 74 75 73 w.btnCloseStatus
10d0: 62 61 72 43 6c 69 63 6b 28 53 65 6e 64 65 72 3a barClick(Sender:
10e0: 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 67 69 TObject);..begi
10f0: 6e 0d 0a 20 20 73 62 72 49 45 2e 56 69 73 69 62 n.. sbrIE.Visib
1100: 6c 65 20 3a 3d 20 46 61 6c 73 65 3b 0d 0a 65 6e le := False;..en
1110: 64 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d d;....{ --------
1120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1170: 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 -------- }..proc
1180: 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 edure TfrmHTMLPr
1190: 65 76 69 65 77 2e 74 6d 72 41 75 74 6f 72 65 66 eview.tmrAutoref
11a0: 72 65 73 68 54 69 6d 65 72 28 53 65 6e 64 65 72 reshTimer(Sender
11b0: 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 67 : TObject);..beg
11c0: 69 6e 0d 0a 20 20 74 6d 72 41 75 74 6f 72 65 66 in.. tmrAutoref
11d0: 72 65 73 68 2e 45 6e 61 62 6c 65 64 20 3a 3d 20 resh.Enabled :=
11e0: 46 61 6c 73 65 3b 0d 0a 20 20 62 74 6e 52 65 66 False;.. btnRef
11f0: 72 65 73 68 2e 43 6c 69 63 6b 3b 0d 0a 65 6e 64 resh.Click;..end
1200: 20 7b 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 {TfrmHTMLPrevie
1210: 77 2e 74 6d 72 41 75 74 6f 72 65 66 72 65 73 68 w.tmrAutorefresh
1220: 54 69 6d 65 72 7d 3b 0d 0a 0d 0a 7b 20 2d 2d 2d Timer};....{ ---
1230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1240: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d ------------- }.
1290: 0a 70 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 .procedure TfrmH
12a0: 54 4d 4c 50 72 65 76 69 65 77 2e 62 74 6e 52 65 TMLPreview.btnRe
12b0: 66 72 65 73 68 43 6c 69 63 6b 28 53 65 6e 64 65 freshClick(Sende
12c0: 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 76 61 r: TObject);..va
12d0: 72 0d 0a 20 20 56 69 65 77 3a 20 49 6e 74 65 67 r.. View: Integ
12e0: 65 72 3b 0d 0a 20 20 42 75 66 66 65 72 49 44 3a er;.. BufferID:
12f0: 20 54 42 75 66 66 65 72 49 44 3b 0d 0a 20 20 68 TBufferID;.. h
1300: 53 63 69 6e 74 69 6c 6c 61 3a 20 54 48 61 6e 64 Scintilla: THand
1310: 6c 65 3b 0d 0a 20 20 4c 65 78 65 72 3a 20 4e 61 le;.. Lexer: Na
1320: 74 69 76 65 49 6e 74 3b 0d 0a 20 20 49 73 48 54 tiveInt;.. IsHT
1330: 4d 4c 2c 20 49 73 58 4d 4c 2c 20 49 73 43 75 73 ML, IsXML, IsCus
1340: 74 6f 6d 3a 20 42 6f 6f 6c 65 61 6e 3b 0d 0a 20 tom: Boolean;..
1350: 20 53 69 7a 65 3a 20 57 50 41 52 41 4d 3b 0d 0a Size: WPARAM;..
1360: 20 20 43 6f 6e 74 65 6e 74 3a 20 55 54 46 38 53 Content: UTF8S
1370: 74 72 69 6e 67 3b 0d 0a 20 20 48 54 4d 4c 3a 20 tring;.. HTML:
1380: 73 74 72 69 6e 67 3b 0d 0a 20 20 46 69 6c 74 65 string;.. Filte
1390: 72 4e 61 6d 65 3a 20 73 74 72 69 6e 67 3b 0d 0a rName: string;..
13a0: 20 20 43 6f 64 65 50 61 67 65 3a 20 4e 61 74 69 CodePage: Nati
13b0: 76 65 49 6e 74 3b 0d 0a 62 65 67 69 6e 0d 0a 20 veInt;..begin..
13c0: 20 69 66 20 63 68 6b 46 72 65 65 7a 65 2e 43 68 if chkFreeze.Ch
13d0: 65 63 6b 65 64 20 74 68 65 6e 0d 0a 20 20 20 20 ecked then..
13e0: 45 78 69 74 3b 0d 0a 0d 0a 20 20 74 72 79 0d 0a Exit;.... try..
13f0: 20 20 20 20 74 6d 72 41 75 74 6f 72 65 66 72 65 tmrAutorefre
1400: 73 68 2e 45 6e 61 62 6c 65 64 20 3a 3d 20 46 61 sh.Enabled := Fa
1410: 6c 73 65 3b 0d 0a 4f 44 53 28 27 46 72 65 65 41 lse;..ODS('FreeA
1420: 6e 64 4e 69 6c 28 46 46 69 6c 74 65 72 54 68 72 ndNil(FFilterThr
1430: 65 61 64 29 3b 27 29 3b 0d 0a 20 20 20 20 46 72 ead);');.. Fr
1440: 65 65 41 6e 64 4e 69 6c 28 46 46 69 6c 74 65 72 eeAndNil(FFilter
1450: 54 68 72 65 61 64 29 3b 0d 0a 20 20 20 20 53 61 Thread);.. Sa
1460: 76 65 53 63 72 6f 6c 6c 50 6f 73 3b 0d 0a 0d 0a veScrollPos;....
1470: 20 20 20 20 53 65 6e 64 4d 65 73 73 61 67 65 28 SendMessage(
1480: 53 65 6c 66 2e 4e 70 70 2e 4e 70 70 44 61 74 61 Self.Npp.NppData
1490: 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 4e 50 50 4d .NppHandle, NPPM
14a0: 5f 47 45 54 43 55 52 52 45 4e 54 53 43 49 4e 54 _GETCURRENTSCINT
14b0: 49 4c 4c 41 2c 20 30 2c 20 4c 50 41 52 41 4d 28 ILLA, 0, LPARAM(
14c0: 40 56 69 65 77 29 29 3b 0d 0a 20 20 20 20 69 66 @View));.. if
14d0: 20 56 69 65 77 20 3d 20 30 20 74 68 65 6e 20 62 View = 0 then b
14e0: 65 67 69 6e 0d 0a 20 20 20 20 20 20 68 53 63 69 egin.. hSci
14f0: 6e 74 69 6c 6c 61 20 3a 3d 20 53 65 6c 66 2e 4e ntilla := Self.N
1500: 70 70 2e 4e 70 70 44 61 74 61 2e 53 63 69 6e 74 pp.NppData.Scint
1510: 69 6c 6c 61 4d 61 69 6e 48 61 6e 64 6c 65 3b 0d illaMainHandle;.
1520: 0a 20 20 20 20 65 6e 64 20 65 6c 73 65 20 62 65 . end else be
1530: 67 69 6e 0d 0a 20 20 20 20 20 20 68 53 63 69 6e gin.. hScin
1540: 74 69 6c 6c 61 20 3a 3d 20 53 65 6c 66 2e 4e 70 tilla := Self.Np
1550: 70 2e 4e 70 70 44 61 74 61 2e 53 63 69 6e 74 69 p.NppData.Scinti
1560: 6c 6c 61 53 65 63 6f 6e 64 48 61 6e 64 6c 65 3b llaSecondHandle;
1570: 0d 0a 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 .. end;..
1580: 42 75 66 66 65 72 49 44 20 3a 3d 20 53 65 6e 64 BufferID := Send
1590: 4d 65 73 73 61 67 65 28 53 65 6c 66 2e 4e 70 70 Message(Self.Npp
15a0: 2e 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 .NppData.NppHand
15b0: 6c 65 2c 20 4e 50 50 4d 5f 47 45 54 43 55 52 52 le, NPPM_GETCURR
15c0: 45 4e 54 42 55 46 46 45 52 49 44 2c 20 30 2c 20 ENTBUFFERID, 0,
15d0: 30 29 3b 0d 0a 0d 0a 20 20 20 20 4c 65 78 65 72 0);.... Lexer
15e0: 20 3a 3d 20 53 65 6e 64 4d 65 73 73 61 67 65 28 := SendMessage(
15f0: 68 53 63 69 6e 74 69 6c 6c 61 2c 20 53 43 49 5f hScintilla, SCI_
1600: 47 45 54 4c 45 58 45 52 2c 20 30 2c 20 30 29 3b GETLEXER, 0, 0);
1610: 0d 0a 20 20 20 20 49 73 48 54 4d 4c 20 3a 3d 20 .. IsHTML :=
1620: 28 4c 65 78 65 72 20 3d 20 53 43 4c 45 58 5f 48 (Lexer = SCLEX_H
1630: 54 4d 4c 29 3b 0d 0a 20 20 20 20 49 73 58 4d 4c TML);.. IsXML
1640: 20 3a 3d 20 28 4c 65 78 65 72 20 3d 20 53 43 4c := (Lexer = SCL
1650: 45 58 5f 58 4d 4c 29 3b 0d 0a 0d 0a 20 20 20 20 EX_XML);....
1660: 53 63 72 65 65 6e 2e 43 75 72 73 6f 72 20 3a 3d Screen.Cursor :=
1670: 20 63 72 48 6f 75 72 47 6c 61 73 73 3b 0d 0a 20 crHourGlass;..
1680: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 7b 2d try.. {-
1690: 2d 2d 20 4d 43 4f 20 32 32 2d 30 31 2d 32 30 31 -- MCO 22-01-201
16a0: 33 3a 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 3: determine whe
16b0: 74 68 65 72 20 74 68 65 20 63 75 72 72 65 6e 74 ther the current
16c0: 20 64 6f 63 75 6d 65 6e 74 20 6d 61 74 63 68 65 document matche
16d0: 73 20 61 20 63 75 73 74 6f 6d 20 66 69 6c 74 65 s a custom filte
16e0: 72 20 2d 2d 2d 7d 0d 0a 20 20 20 20 20 20 46 69 r ---}.. Fi
16f0: 6c 74 65 72 4e 61 6d 65 20 3a 3d 20 44 65 74 65 lterName := Dete
1700: 72 6d 69 6e 65 43 75 73 74 6f 6d 46 69 6c 74 65 rmineCustomFilte
1710: 72 3b 0d 0a 20 20 20 20 20 20 49 73 43 75 73 74 r;.. IsCust
1720: 6f 6d 20 3a 3d 20 4c 65 6e 67 74 68 28 46 69 6c om := Length(Fil
1730: 74 65 72 4e 61 6d 65 29 20 3e 20 30 3b 0d 0a 0d terName) > 0;...
1740: 0a 20 20 20 20 20 20 7b 24 4d 45 53 53 41 47 45 . {$MESSAGE
1750: 20 48 49 4e 54 20 27 54 4f 44 4f 3a 20 46 69 6e HINT 'TODO: Fin
1760: 64 20 61 20 77 61 79 20 74 6f 20 63 6f 6d 6d 75 d a way to commu
1770: 6e 69 63 61 74 65 20 77 68 79 20 74 68 65 72 65 nicate why there
1780: 20 69 73 20 6e 6f 20 70 72 65 76 69 65 77 2c 20 is no preview,
1790: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 depending on the
17a0: 20 73 69 74 75 61 74 69 6f 6e 20 e2 80 94 20 4d situation — M
17b0: 43 4f 20 32 32 2d 30 31 2d 32 30 31 33 27 7d 0d CO 22-01-2013'}.
17c0: 0a 0d 0a 20 20 20 20 20 20 69 66 20 49 73 58 4d ... if IsXM
17d0: 4c 20 6f 72 20 49 73 48 54 4d 4c 20 6f 72 20 49 L or IsHTML or I
17e0: 73 43 75 73 74 6f 6d 20 74 68 65 6e 20 62 65 67 sCustom then beg
17f0: 69 6e 0d 0a 20 20 20 20 20 20 20 20 43 6f 64 65 in.. Code
1800: 50 61 67 65 20 3a 3d 20 53 65 6e 64 4d 65 73 73 Page := SendMess
1810: 61 67 65 28 68 53 63 69 6e 74 69 6c 6c 61 2c 20 age(hScintilla,
1820: 53 43 49 5f 47 45 54 43 4f 44 45 50 41 47 45 2c SCI_GETCODEPAGE,
1830: 20 30 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 0, 0);..
1840: 20 53 69 7a 65 20 3a 3d 20 53 65 6e 64 4d 65 73 Size := SendMes
1850: 73 61 67 65 28 68 53 63 69 6e 74 69 6c 6c 61 2c sage(hScintilla,
1860: 20 53 43 49 5f 47 45 54 54 45 58 54 2c 20 30 2c SCI_GETTEXT, 0,
1870: 20 30 29 3b 0d 0a 20 20 20 20 20 20 20 20 53 65 0);.. Se
1880: 74 4c 65 6e 67 74 68 28 43 6f 6e 74 65 6e 74 2c tLength(Content,
1890: 20 53 69 7a 65 29 3b 0d 0a 20 20 20 20 20 20 20 Size);..
18a0: 20 53 65 6e 64 4d 65 73 73 61 67 65 28 68 53 63 SendMessage(hSc
18b0: 69 6e 74 69 6c 6c 61 2c 20 53 43 49 5f 47 45 54 intilla, SCI_GET
18c0: 54 45 58 54 2c 20 53 69 7a 65 2c 20 4c 50 41 52 TEXT, Size, LPAR
18d0: 41 4d 28 50 41 6e 73 69 43 68 61 72 28 43 6f 6e AM(PAnsiChar(Con
18e0: 74 65 6e 74 29 29 29 3b 0d 0a 20 20 20 20 20 20 tent)));..
18f0: 20 20 69 66 20 43 6f 64 65 50 61 67 65 20 3d 20 if CodePage =
1900: 43 50 5f 41 43 50 20 74 68 65 6e 20 62 65 67 69 CP_ACP then begi
1910: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 48 54 4d n.. HTM
1920: 4c 20 3a 3d 20 73 74 72 69 6e 67 28 50 41 6e 73 L := string(PAns
1930: 69 43 68 61 72 28 43 6f 6e 74 65 6e 74 29 29 3b iChar(Content));
1940: 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 20 65 6c .. end el
1950: 73 65 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 se begin..
1960: 20 20 20 20 53 65 74 4c 65 6e 67 74 68 28 48 54 SetLength(HT
1970: 4d 4c 2c 20 53 69 7a 65 29 3b 0d 0a 20 20 20 20 ML, Size);..
1980: 20 20 20 20 20 20 69 66 20 53 69 7a 65 20 3e 20 if Size >
1990: 30 20 74 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 0 then begin..
19a0: 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 65 6e SetLen
19b0: 67 74 68 28 48 54 4d 4c 2c 20 4d 75 6c 74 69 42 gth(HTML, MultiB
19c0: 79 74 65 54 6f 57 69 64 65 43 68 61 72 28 43 6f yteToWideChar(Co
19d0: 64 65 50 61 67 65 2c 20 30 2c 20 50 41 6e 73 69 dePage, 0, PAnsi
19e0: 43 68 61 72 28 43 6f 6e 74 65 6e 74 29 2c 20 53 Char(Content), S
19f0: 69 7a 65 2c 20 50 57 69 64 65 43 68 61 72 28 48 ize, PWideChar(H
1a00: 54 4d 4c 29 2c 20 4c 65 6e 67 74 68 28 48 54 4d TML), Length(HTM
1a10: 4c 29 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 L)));..
1a20: 20 20 20 69 66 20 4c 65 6e 67 74 68 28 48 54 4d if Length(HTM
1a30: 4c 29 20 3d 20 30 20 74 68 65 6e 0d 0a 20 20 20 L) = 0 then..
1a40: 20 20 20 20 20 20 20 20 20 20 20 52 61 69 73 65 Raise
1a50: 4c 61 73 74 4f 53 45 72 72 6f 72 3b 0d 0a 20 20 LastOSError;..
1a60: 20 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 end;..
1a70: 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 end;..
1a80: 20 20 65 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 end;....
1a90: 69 66 20 49 73 43 75 73 74 6f 6d 20 74 68 65 6e if IsCustom then
1aa0: 20 62 65 67 69 6e 0d 0a 2f 2f 4d 65 73 73 61 67 begin..//Messag
1ab0: 65 42 6f 78 28 4e 70 70 2e 4e 70 70 44 61 74 61 eBox(Npp.NppData
1ac0: 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 50 43 68 61 .NppHandle, PCha
1ad0: 72 28 46 6f 72 6d 61 74 28 27 46 69 6c 74 65 72 r(Format('Filter
1ae0: 4e 61 6d 65 3a 20 25 73 27 2c 20 5b 46 69 6c 74 Name: %s', [Filt
1af0: 65 72 4e 61 6d 65 5d 29 29 2c 20 27 50 72 65 76 erName])), 'Prev
1b00: 69 65 77 48 54 4d 4c 27 2c 20 4d 42 5f 49 43 4f iewHTML', MB_ICO
1b10: 4e 49 4e 46 4f 52 4d 41 54 49 4f 4e 29 3b 0d 0a NINFORMATION);..
1b20: 20 20 20 20 20 20 20 20 77 62 49 45 53 74 61 74 wbIEStat
1b30: 75 73 54 65 78 74 43 68 61 6e 67 65 28 77 62 49 usTextChange(wbI
1b40: 45 2c 20 46 6f 72 6d 61 74 28 27 52 75 6e 6e 69 E, Format('Runni
1b50: 6e 67 20 66 69 6c 74 65 72 20 25 73 2e 2e 2e 27 ng filter %s...'
1b60: 2c 20 5b 46 69 6c 74 65 72 4e 61 6d 65 5d 29 29 , [FilterName]))
1b70: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 45 78 ;.. if Ex
1b80: 65 63 75 74 65 43 75 73 74 6f 6d 46 69 6c 74 65 ecuteCustomFilte
1b90: 72 28 46 69 6c 74 65 72 4e 61 6d 65 2c 20 48 54 r(FilterName, HT
1ba0: 4d 4c 2c 20 42 75 66 66 65 72 49 44 29 20 74 68 ML, BufferID) th
1bb0: 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 en begin..
1bc0: 20 20 20 20 45 78 69 74 3b 0d 0a 20 20 20 20 20 Exit;..
1bd0: 20 20 20 65 6e 64 20 65 6c 73 65 20 62 65 67 69 end else begi
1be0: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 77 62 49 n.. wbI
1bf0: 45 53 74 61 74 75 73 54 65 78 74 43 68 61 6e 67 EStatusTextChang
1c00: 65 28 77 62 49 45 2c 20 46 6f 72 6d 61 74 28 27 e(wbIE, Format('
1c10: 46 61 69 6c 65 64 20 66 69 6c 74 65 72 20 25 73 Failed filter %s
1c20: 2e 2e 2e 27 2c 20 5b 46 69 6c 74 65 72 4e 61 6d ...', [FilterNam
1c30: 65 5d 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 e]));..
1c40: 20 48 54 4d 4c 20 3a 3d 20 27 3c 70 72 65 20 73 HTML := '<pre s
1c50: 74 79 6c 65 3d 22 63 6f 6c 6f 72 3a 20 64 61 72 tyle="color: dar
1c60: 6b 72 65 64 22 3e 45 78 65 63 75 74 65 43 75 73 kred">ExecuteCus
1c70: 74 6f 6d 46 69 6c 74 65 72 20 72 65 74 75 72 6e tomFilter return
1c80: 65 64 20 46 61 6c 73 65 3c 2f 70 72 65 3e 27 3b ed False</pre>';
1c90: 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a .. end;..
1ca0: 20 20 20 20 20 20 65 6e 64 20 65 6c 73 65 20 69 end else i
1cb0: 66 20 49 73 58 4d 4c 20 74 68 65 6e 20 62 65 67 f IsXML then beg
1cc0: 69 6e 0d 0a 20 20 20 20 20 20 20 20 48 54 4d 4c in.. HTML
1cd0: 20 3a 3d 20 54 72 61 6e 73 66 6f 72 6d 58 4d 4c := TransformXML
1ce0: 54 6f 48 54 4d 4c 28 48 54 4d 4c 29 3b 0d 0a 20 ToHTML(HTML);..
1cf0: 20 20 20 20 20 65 6e 64 3b 0d 0a 0d 0a 20 20 20 end;....
1d00: 20 20 20 44 69 73 70 6c 61 79 50 72 65 76 69 65 DisplayPrevie
1d10: 77 28 48 54 4d 4c 2c 20 42 75 66 66 65 72 49 44 w(HTML, BufferID
1d20: 29 3b 0d 0a 20 20 20 20 66 69 6e 61 6c 6c 79 0d );.. finally.
1d30: 0a 20 20 20 20 20 20 53 63 72 65 65 6e 2e 43 75 . Screen.Cu
1d40: 72 73 6f 72 20 3a 3d 20 63 72 44 65 66 61 75 6c rsor := crDefaul
1d50: 74 3b 0d 0a 20 20 20 20 65 6e 64 3b 0d 0a 20 20 t;.. end;..
1d60: 65 78 63 65 70 74 0d 0a 20 20 20 20 6f 6e 20 45 except.. on E
1d70: 3a 20 45 78 63 65 70 74 69 6f 6e 20 64 6f 20 62 : Exception do b
1d80: 65 67 69 6e 0d 0a 4f 44 53 28 27 62 74 6e 52 65 egin..ODS('btnRe
1d90: 66 72 65 73 68 43 6c 69 63 6b 20 23 23 23 20 25 freshClick ### %
1da0: 73 3a 20 25 73 27 2c 20 5b 45 2e 43 6c 61 73 73 s: %s', [E.Class
1db0: 4e 61 6d 65 2c 20 53 74 72 69 6e 67 52 65 70 6c Name, StringRepl
1dc0: 61 63 65 28 45 2e 4d 65 73 73 61 67 65 2c 20 73 ace(E.Message, s
1dd0: 4c 69 6e 65 42 72 65 61 6b 2c 20 27 27 2c 20 5b LineBreak, '', [
1de0: 72 66 52 65 70 6c 61 63 65 41 6c 6c 5d 29 5d 29 rfReplaceAll])])
1df0: 3b 0d 0a 20 20 20 20 20 20 73 62 72 49 45 2e 53 ;.. sbrIE.S
1e00: 69 6d 70 6c 65 54 65 78 74 20 3a 3d 20 45 2e 4d impleText := E.M
1e10: 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20 20 73 essage;.. s
1e20: 62 72 49 45 2e 56 69 73 69 62 6c 65 20 3a 3d 20 brIE.Visible :=
1e30: 54 72 75 65 3b 0d 0a 20 20 20 20 65 6e 64 3b 0d True;.. end;.
1e40: 0a 20 20 65 6e 64 3b 0d 0a 65 6e 64 20 7b 54 66 . end;..end {Tf
1e50: 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 62 74 rmHTMLPreview.bt
1e60: 6e 52 65 66 72 65 73 68 43 6c 69 63 6b 7d 3b 0d nRefreshClick};.
1e70: 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...{ -----------
1e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ed0: 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 ----- }..procedu
1ee0: 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 re TfrmHTMLPrevi
1ef0: 65 77 2e 63 68 6b 46 72 65 65 7a 65 43 6c 69 63 ew.chkFreezeClic
1f00: 6b 28 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 k(Sender: TObjec
1f10: 74 29 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 62 74 t);..begin.. bt
1f20: 6e 52 65 66 72 65 73 68 2e 45 6e 61 62 6c 65 64 nRefresh.Enabled
1f30: 20 3a 3d 20 6e 6f 74 20 63 68 6b 46 72 65 65 7a := not chkFreez
1f40: 65 2e 43 68 65 63 6b 65 64 3b 0d 0a 20 20 69 66 e.Checked;.. if
1f50: 20 62 74 6e 52 65 66 72 65 73 68 2e 45 6e 61 62 btnRefresh.Enab
1f60: 6c 65 64 20 74 68 65 6e 0d 0a 20 20 20 20 62 74 led then.. bt
1f70: 6e 52 65 66 72 65 73 68 2e 43 6c 69 63 6b 3b 0d nRefresh.Click;.
1f80: 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d 4c 50 72 .end {TfrmHTMLPr
1f90: 65 76 69 65 77 2e 63 68 6b 46 72 65 65 7a 65 43 eview.chkFreezeC
1fa0: 6c 69 63 6b 7d 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d lick};....{ ----
1fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a ------------ }..
2010: 70 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 54 procedure TfrmHT
2020: 4d 4c 50 72 65 76 69 65 77 2e 44 69 73 70 6c 61 MLPreview.Displa
2030: 79 50 72 65 76 69 65 77 28 48 54 4d 4c 3a 20 73 yPreview(HTML: s
2040: 74 72 69 6e 67 3b 20 63 6f 6e 73 74 20 42 75 66 tring; const Buf
2050: 66 65 72 49 44 3a 20 54 42 75 66 66 65 72 49 44 ferID: TBufferID
2060: 29 3b 0d 0a 76 61 72 0d 0a 20 20 49 73 48 54 4d );..var.. IsHTM
2070: 4c 3a 20 42 6f 6f 6c 65 61 6e 3b 0d 0a 20 20 48 L: Boolean;.. H
2080: 65 61 64 53 74 61 72 74 3a 20 49 6e 74 65 67 65 eadStart: Intege
2090: 72 3b 0d 0a 20 20 53 69 7a 65 3a 20 57 50 41 52 r;.. Size: WPAR
20a0: 41 4d 3b 0d 0a 20 20 46 69 6c 65 6e 61 6d 65 3a AM;.. Filename:
20b0: 20 6e 70 70 53 74 72 69 6e 67 3b 0d 0a 20 20 56 nppString;.. V
20c0: 69 65 77 3a 20 49 6e 74 65 67 65 72 3b 0d 0a 20 iew: Integer;..
20d0: 20 68 53 63 69 6e 74 69 6c 6c 61 3a 20 54 48 61 hScintilla: THa
20e0: 6e 64 6c 65 3b 0d 0a 62 65 67 69 6e 0d 0a 4f 44 ndle;..begin..OD
20f0: 53 28 27 44 69 73 70 6c 61 79 50 72 65 76 69 65 S('DisplayPrevie
2100: 77 28 48 54 4d 4c 3a 20 22 25 73 22 28 25 64 29 w(HTML: "%s"(%d)
2110: 3b 20 42 75 66 66 65 72 49 44 3a 20 25 78 29 27 ; BufferID: %x)'
2120: 2c 20 5b 53 74 72 69 6e 67 52 65 70 6c 61 63 65 , [StringReplace
2130: 28 43 6f 70 79 28 48 54 4d 4c 2c 20 31 2c 20 31 (Copy(HTML, 1, 1
2140: 30 29 2c 20 23 31 33 23 31 30 2c 20 27 27 2c 20 0), #13#10, '',
2150: 5b 72 66 52 65 70 6c 61 63 65 41 6c 6c 5d 29 2c [rfReplaceAll]),
2160: 20 4c 65 6e 67 74 68 28 48 54 4d 4c 29 2c 20 42 Length(HTML), B
2170: 75 66 66 65 72 49 44 5d 29 3b 0d 0a 20 20 74 72 ufferID]);.. tr
2180: 79 0d 0a 20 20 20 20 49 73 48 54 4d 4c 20 3a 3d y.. IsHTML :=
2190: 20 4c 65 6e 67 74 68 28 48 54 4d 4c 29 20 3e 20 Length(HTML) >
21a0: 30 3b 0d 0a 20 20 20 20 70 6e 6c 48 54 4d 4c 2e 0;.. pnlHTML.
21b0: 56 69 73 69 62 6c 65 20 3a 3d 20 49 73 48 54 4d Visible := IsHTM
21c0: 4c 3b 0d 0a 20 20 20 20 73 62 72 49 45 2e 56 69 L;.. sbrIE.Vi
21d0: 73 69 62 6c 65 20 3a 3d 20 49 73 48 54 4d 4c 20 sible := IsHTML
21e0: 61 6e 64 20 28 4c 65 6e 67 74 68 28 73 62 72 49 and (Length(sbrI
21f0: 45 2e 53 69 6d 70 6c 65 54 65 78 74 29 20 3e 20 E.SimpleText) >
2200: 30 29 3b 0d 0a 20 20 20 20 69 66 20 49 73 48 54 0);.. if IsHT
2210: 4d 4c 20 74 68 65 6e 20 62 65 67 69 6e 0d 0a 20 ML then begin..
2220: 20 20 20 20 20 53 69 7a 65 20 3a 3d 20 53 65 6e Size := Sen
2230: 64 4d 65 73 73 61 67 65 28 53 65 6c 66 2e 4e 70 dMessage(Self.Np
2240: 70 2e 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e p.NppData.NppHan
2250: 64 6c 65 2c 20 4e 50 50 4d 5f 47 45 54 46 55 4c dle, NPPM_GETFUL
2260: 4c 50 41 54 48 46 52 4f 4d 42 55 46 46 45 52 49 LPATHFROMBUFFERI
2270: 44 2c 20 42 75 66 66 65 72 49 44 2c 20 4c 50 41 D, BufferID, LPA
2280: 52 41 4d 28 6e 69 6c 29 29 3b 0d 0a 20 20 20 20 RAM(nil));..
2290: 20 20 53 65 74 4c 65 6e 67 74 68 28 46 69 6c 65 SetLength(File
22a0: 6e 61 6d 65 2c 20 53 69 7a 65 29 3b 0d 0a 20 20 name, Size);..
22b0: 20 20 20 20 53 65 74 4c 65 6e 67 74 68 28 46 69 SetLength(Fi
22c0: 6c 65 6e 61 6d 65 2c 20 53 65 6e 64 4d 65 73 73 lename, SendMess
22d0: 61 67 65 28 53 65 6c 66 2e 4e 70 70 2e 4e 70 70 age(Self.Npp.Npp
22e0: 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 Data.NppHandle,
22f0: 4e 50 50 4d 5f 47 45 54 46 55 4c 4c 50 41 54 48 NPPM_GETFULLPATH
2300: 46 52 4f 4d 42 55 46 46 45 52 49 44 2c 20 42 75 FROMBUFFERID, Bu
2310: 66 66 65 72 49 44 2c 20 4c 50 41 52 41 4d 28 6e fferID, LPARAM(n
2320: 70 70 50 43 68 61 72 28 46 69 6c 65 6e 61 6d 65 ppPChar(Filename
2330: 29 29 29 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 ))));.. if
2340: 28 50 6f 73 28 27 3c 62 61 73 65 20 27 2c 20 48 (Pos('<base ', H
2350: 54 4d 4c 29 20 3d 20 30 29 20 61 6e 64 20 46 69 TML) = 0) and Fi
2360: 6c 65 45 78 69 73 74 73 28 46 69 6c 65 6e 61 6d leExists(Filenam
2370: 65 29 20 74 68 65 6e 20 62 65 67 69 6e 0d 0a 20 e) then begin..
2380: 20 20 20 20 20 20 20 48 65 61 64 53 74 61 72 74 HeadStart
2390: 20 3a 3d 20 50 6f 73 28 27 3c 68 65 61 64 3e 27 := Pos('<head>'
23a0: 2c 20 48 54 4d 4c 29 3b 0d 0a 20 20 20 20 20 20 , HTML);..
23b0: 20 20 69 66 20 48 65 61 64 53 74 61 72 74 20 3e if HeadStart >
23c0: 20 30 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 20 0 then..
23d0: 20 20 20 49 6e 63 28 48 65 61 64 53 74 61 72 74 Inc(HeadStart
23e0: 2c 20 36 29 0d 0a 20 20 20 20 20 20 20 20 65 6c , 6).. el
23f0: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 48 65 se.. He
2400: 61 64 53 74 61 72 74 20 3a 3d 20 31 3b 0d 0a 20 adStart := 1;..
2410: 20 20 20 20 20 20 20 49 6e 73 65 72 74 28 27 3c Insert('<
2420: 62 61 73 65 20 68 72 65 66 3d 22 27 20 2b 20 46 base href="' + F
2430: 69 6c 65 6e 61 6d 65 20 2b 20 27 22 20 2f 3e 27 ilename + '" />'
2440: 2c 20 48 54 4d 4c 2c 20 48 65 61 64 53 74 61 72 , HTML, HeadStar
2450: 74 29 3b 0d 0a 20 20 20 20 20 20 65 6e 64 3b 0d t);.. end;.
2460: 0a 0d 0a 20 20 20 20 20 20 77 62 49 45 2e 4c 6f ... wbIE.Lo
2470: 61 64 44 6f 63 46 72 6f 6d 53 74 72 69 6e 67 28 adDocFromString(
2480: 48 54 4d 4c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 HTML);....
2490: 69 66 20 77 62 49 45 2e 47 65 74 44 6f 63 75 6d if wbIE.GetDocum
24a0: 65 6e 74 20 3c 3e 20 6e 69 6c 20 74 68 65 6e 0d ent <> nil then.
24b0: 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 55 70 . self.Up
24c0: 64 61 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 28 dateDisplayInfo(
24d0: 77 62 49 45 2e 47 65 74 44 6f 63 75 6d 65 6e 74 wbIE.GetDocument
24e0: 2e 74 69 74 6c 65 29 0d 0a 20 20 20 20 20 20 65 .title).. e
24f0: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 73 65 6c lse.. sel
2500: 66 2e 55 70 64 61 74 65 44 69 73 70 6c 61 79 49 f.UpdateDisplayI
2510: 6e 66 6f 28 27 27 29 3b 0d 0a 0d 0a 20 20 20 20 nfo('');....
2520: 20 20 7b 2d 2d 2d 20 32 30 31 33 2d 30 31 2d 32 {--- 2013-01-2
2530: 36 20 4d 61 72 74 69 6a 6e 3a 20 74 68 65 20 57 6 Martijn: the W
2540: 65 62 42 72 6f 77 73 65 72 20 63 6f 6e 74 72 6f ebBrowser contro
2550: 6c 20 68 61 73 20 61 20 74 65 6e 64 65 6e 63 79 l has a tendency
2560: 20 74 6f 20 73 74 65 61 6c 20 74 68 65 20 66 6f to steal the fo
2570: 63 75 73 2e 20 57 65 27 6c 6c 20 6c 65 74 0d 0a cus. We'll let..
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
25a0: 20 20 74 68 65 20 65 64 69 74 6f 72 20 74 61 6b the editor tak
25b0: 65 20 69 74 20 62 61 63 6b 2e 20 2d 2d 2d 7d 0d e it back. ---}.
25c0: 0a 20 20 20 20 20 20 53 65 6e 64 4d 65 73 73 61 . SendMessa
25d0: 67 65 28 53 65 6c 66 2e 4e 70 70 2e 4e 70 70 44 ge(Self.Npp.NppD
25e0: 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 4e ata.NppHandle, N
25f0: 50 50 4d 5f 47 45 54 43 55 52 52 45 4e 54 53 43 PPM_GETCURRENTSC
2600: 49 4e 54 49 4c 4c 41 2c 20 30 2c 20 4c 50 41 52 INTILLA, 0, LPAR
2610: 41 4d 28 40 56 69 65 77 29 29 3b 0d 0a 20 20 20 AM(@View));..
2620: 20 20 20 69 66 20 56 69 65 77 20 3d 20 30 20 74 if View = 0 t
2630: 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 hen begin..
2640: 20 20 20 68 53 63 69 6e 74 69 6c 6c 61 20 3a 3d hScintilla :=
2650: 20 53 65 6c 66 2e 4e 70 70 2e 4e 70 70 44 61 74 Self.Npp.NppDat
2660: 61 2e 53 63 69 6e 74 69 6c 6c 61 4d 61 69 6e 48 a.ScintillaMainH
2670: 61 6e 64 6c 65 3b 0d 0a 20 20 20 20 20 20 65 6e andle;.. en
2680: 64 20 65 6c 73 65 20 62 65 67 69 6e 0d 0a 20 20 d else begin..
2690: 20 20 20 20 20 20 68 53 63 69 6e 74 69 6c 6c 61 hScintilla
26a0: 20 3a 3d 20 53 65 6c 66 2e 4e 70 70 2e 4e 70 70 := Self.Npp.Npp
26b0: 44 61 74 61 2e 53 63 69 6e 74 69 6c 6c 61 53 65 Data.ScintillaSe
26c0: 63 6f 6e 64 48 61 6e 64 6c 65 3b 0d 0a 20 20 20 condHandle;..
26d0: 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 20 20 53 end;.. S
26e0: 65 6e 64 4d 65 73 73 61 67 65 28 68 53 63 69 6e endMessage(hScin
26f0: 74 69 6c 6c 61 2c 20 53 43 49 5f 47 52 41 42 46 tilla, SCI_GRABF
2700: 4f 43 55 53 2c 20 30 2c 20 30 29 3b 0d 0a 20 20 OCUS, 0, 0);..
2710: 20 20 65 6e 64 20 65 6c 73 65 20 62 65 67 69 6e end else begin
2720: 0d 0a 20 20 20 20 20 20 73 65 6c 66 2e 55 70 64 .. self.Upd
2730: 61 74 65 44 69 73 70 6c 61 79 49 6e 66 6f 28 27 ateDisplayInfo('
2740: 27 29 3b 0d 0a 20 20 20 20 65 6e 64 3b 0d 0a 0d ');.. end;...
2750: 0a 20 20 20 20 69 66 20 70 6e 6c 48 54 4d 4c 2e . if pnlHTML.
2760: 56 69 73 69 62 6c 65 20 74 68 65 6e 20 62 65 67 Visible then beg
2770: 69 6e 0d 0a 20 20 20 20 20 20 53 65 6c 66 2e 41 in.. Self.A
2780: 6c 70 68 61 42 6c 65 6e 64 20 3a 3d 20 46 61 6c lphaBlend := Fal
2790: 73 65 3b 0d 0a 20 20 20 20 65 6e 64 20 65 6c 73 se;.. end els
27a0: 65 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 53 e begin.. S
27b0: 65 6c 66 2e 41 6c 70 68 61 42 6c 65 6e 64 20 3a elf.AlphaBlend :
27c0: 3d 20 54 72 75 65 3b 0d 0a 20 20 20 20 20 20 53 = True;.. S
27d0: 65 6c 66 2e 41 6c 70 68 61 42 6c 65 6e 64 56 61 elf.AlphaBlendVa
27e0: 6c 75 65 20 3a 3d 20 31 32 37 3b 0d 0a 20 20 20 lue := 127;..
27f0: 20 65 6e 64 3b 0d 0a 0d 0a 20 20 20 20 52 65 73 end;.... Res
2800: 74 6f 72 65 53 63 72 6f 6c 6c 50 6f 73 28 42 75 toreScrollPos(Bu
2810: 66 66 65 72 49 44 29 3b 0d 0a 20 20 65 78 63 65 fferID);.. exce
2820: 70 74 0d 0a 20 20 20 20 6f 6e 20 45 3a 20 45 78 pt.. on E: Ex
2830: 63 65 70 74 69 6f 6e 20 64 6f 20 62 65 67 69 6e ception do begin
2840: 0d 0a 4f 44 53 28 27 44 69 73 70 6c 61 79 50 72 ..ODS('DisplayPr
2850: 65 76 69 65 77 20 23 23 23 20 25 73 3a 20 25 73 eview ### %s: %s
2860: 27 2c 20 5b 45 2e 43 6c 61 73 73 4e 61 6d 65 2c ', [E.ClassName,
2870: 20 53 74 72 69 6e 67 52 65 70 6c 61 63 65 28 45 StringReplace(E
2880: 2e 4d 65 73 73 61 67 65 2c 20 73 4c 69 6e 65 42 .Message, sLineB
2890: 72 65 61 6b 2c 20 27 27 2c 20 5b 72 66 52 65 70 reak, '', [rfRep
28a0: 6c 61 63 65 41 6c 6c 5d 29 5d 29 3b 0d 0a 20 20 laceAll])]);..
28b0: 20 20 20 20 73 62 72 49 45 2e 53 69 6d 70 6c 65 sbrIE.Simple
28c0: 54 65 78 74 20 3a 3d 20 45 2e 4d 65 73 73 61 67 Text := E.Messag
28d0: 65 3b 0d 0a 20 20 20 20 20 20 73 62 72 49 45 2e e;.. sbrIE.
28e0: 56 69 73 69 62 6c 65 20 3a 3d 20 54 72 75 65 3b Visible := True;
28f0: 0d 0a 20 20 20 20 65 6e 64 3b 0d 0a 20 20 65 6e .. end;.. en
2900: 64 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d d;..end {TfrmHTM
2910: 4c 50 72 65 76 69 65 77 2e 44 69 73 70 6c 61 79 LPreview.Display
2920: 50 72 65 76 69 65 77 7d 3b 0d 0a 0d 0a 7b 20 2d Preview};....{ -
2930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 ---------------
2990: 7d 0d 0a 70 72 6f 63 65 64 75 72 65 20 54 66 72 }..procedure Tfr
29a0: 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 53 61 76 mHTMLPreview.Sav
29b0: 65 53 63 72 6f 6c 6c 50 6f 73 3b 0d 0a 76 61 72 eScrollPos;..var
29c0: 0d 0a 20 20 64 6f 63 45 6c 3a 20 49 48 54 4d 4c .. docEl: IHTML
29d0: 45 6c 65 6d 65 6e 74 32 3b 0d 0a 20 20 50 3a 20 Element2;.. P:
29e0: 54 50 6f 69 6e 74 3b 0d 0a 62 65 67 69 6e 0d 0a TPoint;..begin..
29f0: 20 20 46 53 63 72 6f 6c 6c 54 6f 70 20 3a 3d 20 FScrollTop :=
2a00: 2d 31 3b 0d 0a 20 20 46 53 63 72 6f 6c 6c 4c 65 -1;.. FScrollLe
2a10: 66 74 20 3a 3d 20 2d 31 3b 0d 0a 20 20 69 66 20 ft := -1;.. if
2a20: 46 42 75 66 66 65 72 49 44 20 3d 20 2d 31 20 74 FBufferID = -1 t
2a30: 68 65 6e 0d 0a 20 20 20 20 45 78 69 74 3b 0d 0a hen.. Exit;..
2a40: 0d 0a 20 20 69 66 20 41 73 73 69 67 6e 65 64 28 .. if Assigned(
2a50: 77 62 49 45 2e 44 6f 63 75 6d 65 6e 74 29 20 61 wbIE.Document) a
2a60: 6e 64 20 41 73 73 69 67 6e 65 64 28 28 77 62 49 nd Assigned((wbI
2a70: 45 2e 44 6f 63 75 6d 65 6e 74 20 61 73 20 49 48 E.Document as IH
2a80: 54 4d 4c 44 6f 63 75 6d 65 6e 74 33 29 2e 64 6f TMLDocument3).do
2a90: 63 75 6d 65 6e 74 45 6c 65 6d 65 6e 74 29 20 74 cumentElement) t
2aa0: 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 64 hen begin.. d
2ab0: 6f 63 45 6c 20 3a 3d 20 28 77 62 49 45 2e 44 6f ocEl := (wbIE.Do
2ac0: 63 75 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c 44 cument as IHTMLD
2ad0: 6f 63 75 6d 65 6e 74 33 29 2e 64 6f 63 75 6d 65 ocument3).docume
2ae0: 6e 74 45 6c 65 6d 65 6e 74 20 41 53 20 49 48 54 ntElement AS IHT
2af0: 4d 4c 45 6c 65 6d 65 6e 74 32 3b 0d 0a 20 20 20 MLElement2;..
2b00: 20 50 2e 59 20 3a 3d 20 64 6f 63 45 6c 2e 73 63 P.Y := docEl.sc
2b10: 72 6f 6c 6c 54 6f 70 3b 0d 0a 20 20 20 20 50 2e rollTop;.. P.
2b20: 58 20 3a 3d 20 64 6f 63 45 6c 2e 73 63 72 6f 6c X := docEl.scrol
2b30: 6c 4c 65 66 74 3b 0d 0a 20 20 20 20 46 53 63 72 lLeft;.. FScr
2b40: 6f 6c 6c 50 6f 73 69 74 69 6f 6e 73 2e 41 64 64 ollPositions.Add
2b50: 4f 72 53 65 74 56 61 6c 75 65 28 46 42 75 66 66 OrSetValue(FBuff
2b60: 65 72 49 44 2c 20 50 29 3b 0d 0a 20 20 20 20 4f erID, P);.. O
2b70: 44 53 28 27 53 61 76 65 53 63 72 6f 6c 6c 50 6f DS('SaveScrollPo
2b80: 73 5b 25 78 5d 3a 20 25 64 78 25 64 27 2c 20 5b s[%x]: %dx%d', [
2b90: 46 42 75 66 66 65 72 49 44 2c 20 50 2e 58 2c 20 FBufferID, P.X,
2ba0: 50 2e 59 5d 29 3b 0d 0a 20 20 65 6e 64 20 65 6c P.Y]);.. end el
2bb0: 73 65 20 62 65 67 69 6e 0d 0a 20 20 20 20 46 53 se begin.. FS
2bc0: 63 72 6f 6c 6c 50 6f 73 69 74 69 6f 6e 73 2e 52 crollPositions.R
2bd0: 65 6d 6f 76 65 28 46 42 75 66 66 65 72 49 44 29 emove(FBufferID)
2be0: 3b 0d 0a 20 20 20 20 4f 44 53 28 27 53 61 76 65 ;.. ODS('Save
2bf0: 53 63 72 6f 6c 6c 50 6f 73 5b 25 78 5d 3a 20 2d ScrollPos[%x]: -
2c00: 2d 27 2c 20 5b 46 42 75 66 66 65 72 49 44 5d 29 -', [FBufferID])
2c10: 3b 0d 0a 20 20 65 6e 64 3b 0d 0a 65 6e 64 20 7b ;.. end;..end {
2c20: 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e TfrmHTMLPreview.
2c30: 53 61 76 65 53 63 72 6f 6c 6c 50 6f 73 7d 3b 0d SaveScrollPos};.
2c40: 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...{ -----------
2c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2ca0: 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 ----- }..procedu
2cb0: 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 re TfrmHTMLPrevi
2cc0: 65 77 2e 52 65 73 74 6f 72 65 53 63 72 6f 6c 6c ew.RestoreScroll
2cd0: 50 6f 73 28 63 6f 6e 73 74 20 42 75 66 66 65 72 Pos(const Buffer
2ce0: 49 44 3a 20 54 42 75 66 66 65 72 49 44 29 3b 0d ID: TBufferID);.
2cf0: 0a 76 61 72 0d 0a 20 20 50 3a 20 54 50 6f 69 6e .var.. P: TPoin
2d00: 74 3b 0d 0a 20 20 64 6f 63 45 6c 3a 20 49 48 54 t;.. docEl: IHT
2d10: 4d 4c 45 6c 65 6d 65 6e 74 32 3b 0d 0a 62 65 67 MLElement2;..beg
2d20: 69 6e 0d 0a 20 20 7b 2d 2d 2d 20 4d 43 4f 20 32 in.. {--- MCO 2
2d30: 32 2d 30 31 2d 32 30 31 33 3a 20 4c 6f 6f 6b 20 2-01-2013: Look
2d40: 75 70 20 74 68 69 73 20 62 75 66 66 65 72 27 73 up this buffer's
2d50: 20 73 63 72 6f 6c 6c 20 70 6f 73 69 74 69 6f 6e scroll position
2d60: 3b 20 69 66 20 77 65 20 6b 6e 6f 77 20 6f 6e 65 ; if we know one
2d70: 2c 20 77 61 69 74 20 66 6f 72 20 74 68 65 20 70 , wait for the p
2d80: 61 67 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 age..
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 t
2da0: 6f 20 66 69 6e 69 73 68 20 6c 6f 61 64 69 6e 67 o finish loading
2db0: 2c 20 74 68 65 6e 20 72 65 73 74 6f 72 65 20 74 , then restore t
2dc0: 68 65 20 73 63 72 6f 6c 6c 20 70 6f 73 69 74 69 he scroll positi
2dd0: 6f 6e 2e 20 2d 2d 2d 7d 0d 0a 20 20 69 66 20 46 on. ---}.. if F
2de0: 53 63 72 6f 6c 6c 50 6f 73 69 74 69 6f 6e 73 2e ScrollPositions.
2df0: 54 72 79 47 65 74 56 61 6c 75 65 28 42 75 66 66 TryGetValue(Buff
2e00: 65 72 49 44 2c 20 50 29 20 74 68 65 6e 20 62 65 erID, P) then be
2e10: 67 69 6e 0d 0a 20 20 20 20 46 53 63 72 6f 6c 6c gin.. FScroll
2e20: 54 6f 70 20 3a 3d 20 50 2e 59 3b 0d 0a 20 20 20 Top := P.Y;..
2e30: 20 46 53 63 72 6f 6c 6c 4c 65 66 74 20 3a 3d 20 FScrollLeft :=
2e40: 50 2e 58 3b 0d 0a 20 20 20 20 4f 44 53 28 27 52 P.X;.. ODS('R
2e50: 65 73 74 6f 72 65 53 63 72 6f 6c 6c 50 6f 73 5b estoreScrollPos[
2e60: 25 78 5d 3a 20 25 64 78 25 64 27 2c 20 5b 42 75 %x]: %dx%d', [Bu
2e70: 66 66 65 72 49 44 2c 20 50 2e 58 2c 20 50 2e 59 fferID, P.X, P.Y
2e80: 5d 29 3b 0d 0a 20 20 20 20 69 66 20 28 46 53 63 ]);.. if (FSc
2e90: 72 6f 6c 6c 54 6f 70 20 3c 3e 20 2d 31 29 20 61 rollTop <> -1) a
2ea0: 6e 64 20 41 73 73 69 67 6e 65 64 28 77 62 49 45 nd Assigned(wbIE
2eb0: 2e 44 6f 63 75 6d 65 6e 74 29 20 61 6e 64 20 41 .Document) and A
2ec0: 73 73 69 67 6e 65 64 28 28 77 62 49 45 2e 44 6f ssigned((wbIE.Do
2ed0: 63 75 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c 44 cument as IHTMLD
2ee0: 6f 63 75 6d 65 6e 74 33 29 2e 64 6f 63 75 6d 65 ocument3).docume
2ef0: 6e 74 45 6c 65 6d 65 6e 74 29 20 74 68 65 6e 20 ntElement) then
2f00: 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 64 6f 63 begin.. doc
2f10: 45 6c 20 3a 3d 20 28 77 62 49 45 2e 44 6f 63 75 El := (wbIE.Docu
2f20: 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c 44 6f 63 ment as IHTMLDoc
2f30: 75 6d 65 6e 74 33 29 2e 64 6f 63 75 6d 65 6e 74 ument3).document
2f40: 45 6c 65 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c Element as IHTML
2f50: 45 6c 65 6d 65 6e 74 32 3b 0d 0a 20 20 20 20 20 Element2;..
2f60: 20 64 6f 63 45 6c 2e 73 63 72 6f 6c 6c 54 6f 70 docEl.scrollTop
2f70: 20 3a 3d 20 46 53 63 72 6f 6c 6c 54 6f 70 3b 0d := FScrollTop;.
2f80: 0a 20 20 20 20 20 20 64 6f 63 45 6c 2e 73 63 72 . docEl.scr
2f90: 6f 6c 6c 4c 65 66 74 20 3a 3d 20 46 53 63 72 6f ollLeft := FScro
2fa0: 6c 6c 4c 65 66 74 3b 0d 0a 20 20 20 20 20 20 4f llLeft;.. O
2fb0: 44 53 28 27 52 65 73 74 6f 72 65 53 63 72 6f 6c DS('RestoreScrol
2fc0: 6c 50 6f 73 3a 20 64 6f 6e 65 21 27 29 3b 0d 0a lPos: done!');..
2fd0: 20 20 20 20 65 6e 64 3b 0d 0a 20 20 65 6e 64 20 end;.. end
2fe0: 65 6c 73 65 20 62 65 67 69 6e 0d 0a 20 20 20 20 else begin..
2ff0: 4f 44 53 28 27 52 65 73 74 6f 72 65 53 63 72 6f ODS('RestoreScro
3000: 6c 6c 50 6f 73 5b 25 78 5d 3a 20 2d 2d 27 2c 20 llPos[%x]: --',
3010: 5b 42 75 66 66 65 72 49 44 5d 29 3b 0d 0a 20 20 [BufferID]);..
3020: 65 6e 64 3b 0d 0a 20 20 46 42 75 66 66 65 72 49 end;.. FBufferI
3030: 44 20 3a 3d 20 42 75 66 66 65 72 49 44 3b 0d 0a D := BufferID;..
3040: 65 6e 64 20 7b 54 66 72 6d 48 54 4d 4c 50 72 65 end {TfrmHTMLPre
3050: 76 69 65 77 2e 52 65 73 74 6f 72 65 53 63 72 6f view.RestoreScro
3060: 6c 6c 50 6f 73 7d 3b 0d 0a 0d 0a 7b 20 2d 2d 2d llPos};....{ ---
3070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
30a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
30b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
30c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d ------------- }.
30d0: 0a 70 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 .procedure TfrmH
30e0: 54 4d 4c 50 72 65 76 69 65 77 2e 46 6f 72 67 65 TMLPreview.Forge
30f0: 74 42 75 66 66 65 72 28 63 6f 6e 73 74 20 42 75 tBuffer(const Bu
3100: 66 66 65 72 49 44 3a 20 54 42 75 66 66 65 72 49 fferID: TBufferI
3110: 44 29 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 69 66 D);..begin.. if
3120: 20 46 42 75 66 66 65 72 49 44 20 3d 20 42 75 66 FBufferID = Buf
3130: 66 65 72 49 44 20 74 68 65 6e 0d 0a 20 20 20 20 ferID then..
3140: 46 42 75 66 66 65 72 49 44 20 3a 3d 20 2d 31 3b FBufferID := -1;
3150: 0d 0a 20 20 69 66 20 41 73 73 69 67 6e 65 64 28 .. if Assigned(
3160: 46 53 63 72 6f 6c 6c 50 6f 73 69 74 69 6f 6e 73 FScrollPositions
3170: 29 20 74 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 ) then begin..
3180: 20 20 46 53 63 72 6f 6c 6c 50 6f 73 69 74 69 6f FScrollPositio
3190: 6e 73 2e 52 65 6d 6f 76 65 28 42 75 66 66 65 72 ns.Remove(Buffer
31a0: 49 44 29 3b 0d 0a 20 20 65 6e 64 3b 0d 0a 65 6e ID);.. end;..en
31b0: 64 20 7b 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 d {TfrmHTMLPrevi
31c0: 65 77 2e 46 6f 72 67 65 74 42 75 66 66 65 72 7d ew.ForgetBuffer}
31d0: 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d ;....{ ---------
31e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
31f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3230: 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 ------- }..proce
3240: 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 dure TfrmHTMLPre
3250: 76 69 65 77 2e 52 65 73 65 74 54 69 6d 65 72 3b view.ResetTimer;
3260: 0d 0a 62 65 67 69 6e 0d 0a 20 20 74 6d 72 41 75 ..begin.. tmrAu
3270: 74 6f 72 65 66 72 65 73 68 2e 45 6e 61 62 6c 65 torefresh.Enable
3280: 64 20 3a 3d 20 46 61 6c 73 65 3b 0d 0a 20 20 74 d := False;.. t
3290: 6d 72 41 75 74 6f 72 65 66 72 65 73 68 2e 45 6e mrAutorefresh.En
32a0: 61 62 6c 65 64 20 3a 3d 20 54 72 75 65 3b 0d 0a abled := True;..
32b0: 65 6e 64 20 7b 54 66 72 6d 48 54 4d 4c 50 72 65 end {TfrmHTMLPre
32c0: 76 69 65 77 2e 52 65 73 65 74 54 69 6d 65 72 7d view.ResetTimer}
32d0: 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d ;....{ ---------
32e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
32f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3330: 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 66 75 6e 63 74 ------- }..funct
3340: 69 6f 6e 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 ion TfrmHTMLPrev
3350: 69 65 77 2e 44 65 74 65 72 6d 69 6e 65 43 75 73 iew.DetermineCus
3360: 74 6f 6d 46 69 6c 74 65 72 3a 20 73 74 72 69 6e tomFilter: strin
3370: 67 3b 0d 0a 76 61 72 0d 0a 20 20 44 6f 63 46 69 g;..var.. DocFi
3380: 6c 65 4e 61 6d 65 3a 20 6e 70 70 53 74 72 69 6e leName: nppStrin
3390: 67 3b 0d 0a 20 20 46 69 6c 74 65 72 73 3a 20 54 g;.. Filters: T
33a0: 49 6e 69 46 69 6c 65 3b 0d 0a 20 20 4e 61 6d 65 IniFile;.. Name
33b0: 73 3a 20 54 53 74 72 69 6e 67 4c 69 73 74 3b 0d s: TStringList;.
33c0: 0a 20 20 69 3a 20 49 6e 74 65 67 65 72 3b 0d 0a . i: Integer;..
33d0: 20 20 4d 61 74 63 68 3a 20 42 6f 6f 6c 65 61 6e Match: Boolean
33e0: 3b 0d 0a 20 20 45 78 74 2c 20 4c 61 6e 67 75 61 ;.. Ext, Langua
33f0: 67 65 2c 20 44 6f 63 4c 61 6e 67 75 61 67 65 3a ge, DocLanguage:
3400: 20 73 74 72 69 6e 67 3b 0d 0a 20 20 44 6f 63 4c string;.. DocL
3410: 61 6e 67 54 79 70 65 2c 20 4c 61 6e 67 54 79 70 angType, LangTyp
3420: 65 3a 20 49 6e 74 65 67 65 72 3b 0d 0a 20 20 45 e: Integer;.. E
3430: 78 74 65 6e 73 69 6f 6e 73 3a 20 54 53 74 72 69 xtensions: TStri
3440: 6e 67 4c 69 73 74 3b 0d 0a 20 20 46 69 6c 65 73 ngList;.. Files
3450: 70 65 63 3a 20 73 74 72 69 6e 67 3b 0d 0a 62 65 pec: string;..be
3460: 67 69 6e 0d 0a 20 20 44 6f 63 46 69 6c 65 4e 61 gin.. DocFileNa
3470: 6d 65 20 3a 3d 20 53 74 72 69 6e 67 4f 66 43 68 me := StringOfCh
3480: 61 72 28 23 30 2c 20 4d 41 58 5f 50 41 54 48 29 ar(#0, MAX_PATH)
3490: 3b 0d 0a 20 20 53 65 6e 64 4d 65 73 73 61 67 65 ;.. SendMessage
34a0: 28 4e 70 70 2e 4e 70 70 44 61 74 61 2e 4e 70 70 (Npp.NppData.Npp
34b0: 48 61 6e 64 6c 65 2c 20 4e 50 50 4d 5f 47 45 54 Handle, NPPM_GET
34c0: 46 49 4c 45 4e 41 4d 45 2c 20 57 50 41 52 41 4d FILENAME, WPARAM
34d0: 28 4c 65 6e 67 74 68 28 44 6f 63 46 69 6c 65 4e (Length(DocFileN
34e0: 61 6d 65 29 29 2c 20 4c 50 41 52 41 4d 28 6e 70 ame)), LPARAM(np
34f0: 70 50 43 68 61 72 28 44 6f 63 46 69 6c 65 4e 61 pPChar(DocFileNa
3500: 6d 65 29 29 29 3b 0d 0a 20 20 44 6f 63 46 69 6c me)));.. DocFil
3510: 65 4e 61 6d 65 20 3a 3d 20 6e 70 70 53 74 72 69 eName := nppStri
3520: 6e 67 28 6e 70 70 50 43 68 61 72 28 44 6f 63 46 ng(nppPChar(DocF
3530: 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 ileName));....
3540: 44 6f 63 4c 61 6e 67 54 79 70 65 20 3a 3d 20 2d DocLangType := -
3550: 31 3b 0d 0a 20 20 44 6f 63 4c 61 6e 67 75 61 67 1;.. DocLanguag
3560: 65 20 3a 3d 20 27 27 3b 0d 0a 0d 0a 20 20 46 6f e := '';.... Fo
3570: 72 63 65 44 69 72 65 63 74 6f 72 69 65 73 28 4e rceDirectories(N
3580: 70 70 2e 43 6f 6e 66 69 67 44 69 72 20 2b 20 27 pp.ConfigDir + '
3590: 5c 50 72 65 76 69 65 77 48 54 4d 4c 27 29 3b 0d \PreviewHTML');.
35a0: 0a 20 20 46 69 6c 74 65 72 73 20 3a 3d 20 54 49 . Filters := TI
35b0: 6e 69 46 69 6c 65 2e 43 72 65 61 74 65 28 4e 70 niFile.Create(Np
35c0: 70 2e 43 6f 6e 66 69 67 44 69 72 20 2b 20 27 5c p.ConfigDir + '\
35d0: 50 72 65 76 69 65 77 48 54 4d 4c 5c 46 69 6c 74 PreviewHTML\Filt
35e0: 65 72 73 2e 69 6e 69 27 29 3b 0d 0a 20 20 4e 61 ers.ini');.. Na
35f0: 6d 65 73 20 3a 3d 20 54 53 74 72 69 6e 67 4c 69 mes := TStringLi
3600: 73 74 2e 43 72 65 61 74 65 3b 0d 0a 20 20 74 72 st.Create;.. tr
3610: 79 0d 0a 20 20 20 20 46 69 6c 74 65 72 73 2e 52 y.. Filters.R
3620: 65 61 64 53 65 63 74 69 6f 6e 73 28 4e 61 6d 65 eadSections(Name
3630: 73 29 3b 0d 0a 20 20 20 20 66 6f 72 20 69 20 3a s);.. for i :
3640: 3d 20 30 20 74 6f 20 4e 61 6d 65 73 2e 43 6f 75 = 0 to Names.Cou
3650: 6e 74 20 2d 20 31 20 64 6f 20 62 65 67 69 6e 0d nt - 1 do begin.
3660: 0a 20 20 20 20 20 20 7b 2d 2d 2d 20 32 30 31 33 . {--- 2013
3670: 2d 30 32 2d 31 35 20 4d 61 72 74 69 6a 6e 3a 20 -02-15 Martijn:
3680: 65 6d 70 74 79 20 66 69 6c 74 65 72 73 20 73 68 empty filters sh
3690: 6f 75 6c 64 20 62 65 20 73 6b 69 70 70 65 64 2c ould be skipped,
36a0: 20 61 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 and..
36b0: 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 79 20 any
36c0: 66 69 6c 74 65 72 20 63 61 6e 20 62 65 20 64 69 filter can be di
36d0: 73 61 62 6c 65 64 20 62 79 20 70 75 74 74 69 6e sabled by puttin
36e0: 67 20 61 20 27 2d 27 20 69 6e 20 66 72 6f 6e 74 g a '-' in front
36f0: 20 6f 66 20 69 74 73 20 6e 61 6d 65 2e 20 2d 2d of its name. --
3700: 2d 7d 0d 0a 20 20 20 20 20 20 69 66 20 28 4c 65 -}.. if (Le
3710: 6e 67 74 68 28 4e 61 6d 65 73 5b 69 5d 29 20 3d ngth(Names[i]) =
3720: 20 30 29 20 6f 72 20 28 4e 61 6d 65 73 5b 69 5d 0) or (Names[i]
3730: 5b 31 5d 20 3d 20 27 2d 27 29 20 74 68 65 6e 0d [1] = '-') then.
3740: 0a 20 20 20 20 20 20 20 20 43 6f 6e 74 69 6e 75 . Continu
3750: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 4d 61 74 63 e;.... Matc
3760: 68 20 3a 3d 20 46 61 6c 73 65 3b 0d 0a 0d 0a 20 h := False;....
3770: 20 20 20 20 20 7b 2d 2d 2d 20 4d 61 72 74 69 6a {--- Martij
3780: 6e 20 30 33 2d 30 33 2d 32 30 31 33 3a 20 54 65 n 03-03-2013: Te
3790: 73 74 20 66 69 6c 65 20 6e 61 6d 65 20 2d 2d 2d st file name ---
37a0: 7d 0d 0a 20 20 20 20 20 20 46 69 6c 65 73 70 65 }.. Filespe
37b0: 63 20 3a 3d 20 54 72 69 6d 28 46 69 6c 74 65 72 c := Trim(Filter
37c0: 73 2e 52 65 61 64 53 74 72 69 6e 67 28 4e 61 6d s.ReadString(Nam
37d0: 65 73 5b 69 5d 2c 20 27 46 69 6c 65 6e 61 6d 65 es[i], 'Filename
37e0: 27 2c 20 27 27 29 29 3b 0d 0a 20 20 20 20 20 20 ', ''));..
37f0: 69 66 20 28 46 69 6c 65 73 70 65 63 20 3c 3e 20 if (Filespec <>
3800: 27 27 29 20 74 68 65 6e 20 62 65 67 69 6e 0d 0a '') then begin..
3810: 20 20 20 20 20 20 20 20 2f 2f 20 68 74 74 70 3a // http:
3820: 2f 2f 64 6f 63 77 69 6b 69 2e 65 6d 62 61 72 63 //docwiki.embarc
3830: 61 64 65 72 6f 2e 63 6f 6d 2f 4c 69 62 72 61 72 adero.com/Librar
3840: 69 65 73 2f 58 45 32 2f 65 6e 2f 53 79 73 74 65 ies/XE2/en/Syste
3850: 6d 2e 4d 61 73 6b 73 2e 4d 61 74 63 68 65 73 4d m.Masks.MatchesM
3860: 61 73 6b 23 44 65 73 63 72 69 70 74 69 6f 6e 0d ask#Description.
3870: 0a 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 3a . Match :
3880: 3d 20 4d 61 74 63 68 20 6f 72 20 4d 61 74 63 68 = Match or Match
3890: 65 73 4d 61 73 6b 28 45 78 74 72 61 63 74 46 69 esMask(ExtractFi
38a0: 6c 65 4e 61 6d 65 28 44 6f 63 46 69 6c 65 4e 61 leName(DocFileNa
38b0: 6d 65 29 2c 20 46 69 6c 65 73 70 65 63 29 3b 0d me), Filespec);.
38c0: 0a 20 20 20 20 20 20 65 6e 64 3b 0d 0a 0d 0a 20 . end;....
38d0: 20 20 20 20 20 7b 2d 2d 2d 20 4d 43 4f 20 32 32 {--- MCO 22
38e0: 2d 30 31 2d 32 30 31 33 3a 20 54 65 73 74 20 65 -01-2013: Test e
38f0: 78 74 65 6e 73 69 6f 6e 20 2d 2d 2d 7d 0d 0a 20 xtension ---}..
3900: 20 20 20 20 20 45 78 74 20 3a 3d 20 54 72 69 6d Ext := Trim
3910: 28 46 69 6c 74 65 72 73 2e 52 65 61 64 53 74 72 (Filters.ReadStr
3920: 69 6e 67 28 4e 61 6d 65 73 5b 69 5d 2c 20 27 45 ing(Names[i], 'E
3930: 78 74 65 6e 73 69 6f 6e 27 2c 20 27 27 29 29 3b xtension', ''));
3940: 0d 0a 20 20 20 20 20 20 69 66 20 28 45 78 74 20 .. if (Ext
3950: 3c 3e 20 27 27 29 20 74 68 65 6e 20 62 65 67 69 <> '') then begi
3960: 6e 0d 0a 20 20 20 20 20 20 20 20 45 78 74 65 6e n.. Exten
3970: 73 69 6f 6e 73 20 3a 3d 20 54 53 74 72 69 6e 67 sions := TString
3980: 4c 69 73 74 2e 43 72 65 61 74 65 3b 0d 0a 20 20 List.Create;..
3990: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 try..
39a0: 20 20 20 20 20 45 78 74 65 6e 73 69 6f 6e 73 2e Extensions.
39b0: 43 61 73 65 53 65 6e 73 69 74 69 76 65 20 3a 3d CaseSensitive :=
39c0: 20 46 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 False;..
39d0: 20 20 20 45 78 74 65 6e 73 69 6f 6e 73 2e 44 65 Extensions.De
39e0: 6c 69 6d 69 74 65 72 20 3a 3d 20 27 2c 27 3b 0d limiter := ',';.
39f0: 0a 20 20 20 20 20 20 20 20 20 20 45 78 74 65 6e . Exten
3a00: 73 69 6f 6e 73 2e 44 65 6c 69 6d 69 74 65 64 54 sions.DelimitedT
3a10: 65 78 74 20 3a 3d 20 45 78 74 3b 0d 0a 20 20 20 ext := Ext;..
3a20: 20 20 20 20 20 20 20 4d 61 74 63 68 20 3a 3d 20 Match :=
3a30: 4d 61 74 63 68 20 6f 72 20 28 45 78 74 65 6e 73 Match or (Extens
3a40: 69 6f 6e 73 2e 49 6e 64 65 78 4f 66 28 45 78 74 ions.IndexOf(Ext
3a50: 72 61 63 74 46 69 6c 65 45 78 74 28 44 6f 63 46 ractFileExt(DocF
3a60: 69 6c 65 4e 61 6d 65 29 29 20 3e 20 2d 31 29 3b ileName)) > -1);
3a70: 0d 0a 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c .. finall
3a80: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 45 78 74 y.. Ext
3a90: 65 6e 73 69 6f 6e 73 2e 46 72 65 65 3b 0d 0a 20 ensions.Free;..
3aa0: 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 end;..
3ab0: 20 20 20 65 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 end;....
3ac0: 20 7b 2d 2d 2d 20 4d 43 4f 20 32 32 2d 30 31 2d {--- MCO 22-01-
3ad0: 32 30 31 33 3a 20 54 65 73 74 20 68 69 67 68 6c 2013: Test highl
3ae0: 69 67 68 74 65 72 20 6c 61 6e 67 75 61 67 65 20 ighter language
3af0: 2d 2d 2d 7d 0d 0a 20 20 20 20 20 20 4c 61 6e 67 ---}.. Lang
3b00: 75 61 67 65 20 3a 3d 20 46 69 6c 74 65 72 73 2e uage := Filters.
3b10: 52 65 61 64 53 74 72 69 6e 67 28 4e 61 6d 65 73 ReadString(Names
3b20: 5b 69 5d 2c 20 27 4c 61 6e 67 75 61 67 65 27 2c [i], 'Language',
3b30: 20 27 27 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 '');.. if
3b40: 4c 61 6e 67 75 61 67 65 20 3c 3e 20 27 27 20 74 Language <> '' t
3b50: 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 hen begin..
3b60: 20 20 20 69 66 20 44 6f 63 4c 61 6e 67 54 79 70 if DocLangTyp
3b70: 65 20 3d 20 2d 31 20 74 68 65 6e 20 62 65 67 69 e = -1 then begi
3b80: 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 53 65 6e n.. Sen
3b90: 64 4d 65 73 73 61 67 65 28 4e 70 70 2e 4e 70 70 dMessage(Npp.Npp
3ba0: 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 Data.NppHandle,
3bb0: 4e 50 50 4d 5f 47 45 54 43 55 52 52 45 4e 54 4c NPPM_GETCURRENTL
3bc0: 41 4e 47 54 59 50 45 2c 20 57 50 41 52 41 4d 28 ANGTYPE, WPARAM(
3bd0: 30 29 2c 20 4c 50 41 52 41 4d 28 40 44 6f 63 4c 0), LPARAM(@DocL
3be0: 61 6e 67 54 79 70 65 29 29 3b 0d 0a 20 20 20 20 angType));..
3bf0: 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 20 20 end;..
3c00: 20 20 69 66 20 44 6f 63 4c 61 6e 67 54 79 70 65 if DocLangType
3c10: 20 3e 20 2d 31 20 74 68 65 6e 20 62 65 67 69 6e > -1 then begin
3c20: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 54 .. if T
3c30: 72 79 53 74 72 54 6f 49 6e 74 28 4c 61 6e 67 75 ryStrToInt(Langu
3c40: 61 67 65 2c 20 4c 61 6e 67 54 79 70 65 29 20 61 age, LangType) a
3c50: 6e 64 20 28 4c 61 6e 67 54 79 70 65 20 3d 20 44 nd (LangType = D
3c60: 6f 63 4c 61 6e 67 54 79 70 65 29 20 74 68 65 6e ocLangType) then
3c70: 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 20 20 begin..
3c80: 20 20 20 20 4d 61 74 63 68 20 3a 3d 20 54 72 75 Match := Tru
3c90: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 65 6e e;.. en
3ca0: 64 20 65 6c 73 65 20 62 65 67 69 6e 0d 0a 20 20 d else begin..
3cb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 44 6f 63 if Doc
3cc0: 4c 61 6e 67 75 61 67 65 20 3d 20 27 27 20 74 68 Language = '' th
3cd0: 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 en begin..
3ce0: 20 20 20 20 20 20 20 20 53 65 74 4c 65 6e 67 74 SetLengt
3cf0: 68 28 44 6f 63 4c 61 6e 67 75 61 67 65 2c 20 53 h(DocLanguage, S
3d00: 65 6e 64 4d 65 73 73 61 67 65 28 4e 70 70 2e 4e endMessage(Npp.N
3d10: 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 ppData.NppHandle
3d20: 2c 20 4e 50 50 4d 5f 47 45 54 4c 41 4e 47 55 41 , NPPM_GETLANGUA
3d30: 47 45 4e 41 4d 45 2c 20 57 50 41 52 41 4d 28 44 GENAME, WPARAM(D
3d40: 6f 63 4c 61 6e 67 54 79 70 65 29 2c 20 4c 50 41 ocLangType), LPA
3d50: 52 41 4d 28 6e 69 6c 29 29 29 3b 0d 0a 20 20 20 RAM(nil)));..
3d60: 20 20 20 20 20 20 20 20 20 20 20 53 65 74 4c 65 SetLe
3d70: 6e 67 74 68 28 44 6f 63 4c 61 6e 67 75 61 67 65 ngth(DocLanguage
3d80: 2c 20 53 65 6e 64 4d 65 73 73 61 67 65 28 4e 70 , SendMessage(Np
3d90: 70 2e 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e p.NppData.NppHan
3da0: 64 6c 65 2c 20 4e 50 50 4d 5f 47 45 54 4c 41 4e dle, NPPM_GETLAN
3db0: 47 55 41 47 45 4e 41 4d 45 2c 20 57 50 41 52 41 GUAGENAME, WPARA
3dc0: 4d 28 44 6f 63 4c 61 6e 67 54 79 70 65 29 2c 20 M(DocLangType),
3dd0: 4c 50 41 52 41 4d 28 50 43 68 61 72 28 44 6f 63 LPARAM(PChar(Doc
3de0: 4c 61 6e 67 75 61 67 65 29 29 29 29 3b 0d 0a 20 Language))));..
3df0: 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 3b 0d end;.
3e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if
3e10: 53 61 6d 65 54 65 78 74 28 4c 61 6e 67 75 61 67 SameText(Languag
3e20: 65 2c 20 44 6f 63 4c 61 6e 67 75 61 67 65 29 20 e, DocLanguage)
3e30: 74 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 then begin..
3e40: 20 20 20 20 20 20 20 20 20 20 4d 61 74 63 68 20 Match
3e50: 3a 3d 20 54 72 75 65 3b 0d 0a 20 20 20 20 20 20 := True;..
3e60: 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 end;..
3e70: 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 end;..
3e80: 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 20 20 end;..
3e90: 65 6e 64 3b 0d 0a 0d 0a 20 20 20 20 20 20 7b 24 end;.... {$
3ea0: 4d 45 53 53 41 47 45 20 48 49 4e 54 20 27 54 4f MESSAGE HINT 'TO
3eb0: 44 4f 3a 20 54 65 73 74 20 6c 65 78 65 72 20 e2 DO: Test lexer â
3ec0: 80 94 20 4d 43 4f 20 32 32 2d 30 31 2d 32 30 31 €” MCO 22-01-201
3ed0: 33 27 7d 0d 0a 0d 0a 20 20 20 20 20 20 69 66 20 3'}.... if
3ee0: 4d 61 74 63 68 20 74 68 65 6e 0d 0a 20 20 20 20 Match then..
3ef0: 20 20 20 20 45 78 69 74 28 4e 61 6d 65 73 5b 69 Exit(Names[i
3f00: 5d 29 3b 0d 0a 20 20 20 20 65 6e 64 3b 0d 0a 20 ]);.. end;..
3f10: 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 4e 61 finally.. Na
3f20: 6d 65 73 2e 46 72 65 65 3b 0d 0a 20 20 20 20 46 mes.Free;.. F
3f30: 69 6c 74 65 72 73 2e 46 72 65 65 3b 0d 0a 20 20 ilters.Free;..
3f40: 65 6e 64 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 end;..end {TfrmH
3f50: 54 4d 4c 50 72 65 76 69 65 77 2e 44 65 74 65 72 TMLPreview.Deter
3f60: 6d 69 6e 65 43 75 73 74 6f 6d 46 69 6c 74 65 72 mineCustomFilter
3f70: 7d 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d };....{ --------
3f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3fd0: 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 66 75 6e 63 -------- }..func
3fe0: 74 69 6f 6e 20 54 66 72 6d 48 54 4d 4c 50 72 65 tion TfrmHTMLPre
3ff0: 76 69 65 77 2e 45 78 65 63 75 74 65 43 75 73 74 view.ExecuteCust
4000: 6f 6d 46 69 6c 74 65 72 28 63 6f 6e 73 74 20 46 omFilter(const F
4010: 69 6c 74 65 72 4e 61 6d 65 2c 20 48 54 4d 4c 3a ilterName, HTML:
4020: 20 73 74 72 69 6e 67 3b 20 63 6f 6e 73 74 20 42 string; const B
4030: 75 66 66 65 72 49 44 3a 20 54 42 75 66 66 65 72 ufferID: TBuffer
4040: 49 44 29 3a 20 42 6f 6f 6c 65 61 6e 3b 0d 0a 76 ID): Boolean;..v
4050: 61 72 0d 0a 20 20 46 69 6c 74 65 72 44 61 74 61 ar.. FilterData
4060: 3a 20 54 46 69 6c 74 65 72 44 61 74 61 3b 0d 0a : TFilterData;..
4070: 20 20 44 6f 63 46 69 6c 65 3a 20 54 46 69 6c 65 DocFile: TFile
4080: 4e 61 6d 65 3b 0d 0a 20 20 56 69 65 77 3a 20 49 Name;.. View: I
4090: 6e 74 65 67 65 72 3b 0d 0a 20 20 68 53 63 69 6e nteger;.. hScin
40a0: 74 69 6c 6c 61 3a 20 54 48 61 6e 64 6c 65 3b 0d tilla: THandle;.
40b0: 0a 20 20 46 69 6c 74 65 72 73 3a 20 54 49 6e 69 . Filters: TIni
40c0: 46 69 6c 65 3b 0d 0a 20 20 42 75 66 66 65 72 45 File;.. BufferE
40d0: 6e 63 6f 64 69 6e 67 3a 20 4e 61 74 69 76 65 49 ncoding: NativeI
40e0: 6e 74 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 46 69 nt;..begin.. Fi
40f0: 6c 74 65 72 44 61 74 61 2e 4e 61 6d 65 20 3a 3d lterData.Name :=
4100: 20 46 69 6c 74 65 72 4e 61 6d 65 3b 0d 0a 20 20 FilterName;..
4110: 46 69 6c 74 65 72 44 61 74 61 2e 42 75 66 66 65 FilterData.Buffe
4120: 72 49 44 20 3a 3d 20 42 75 66 66 65 72 49 44 3b rID := BufferID;
4130: 0d 0a 0d 0a 20 20 44 6f 63 46 69 6c 65 20 3a 3d .... DocFile :=
4140: 20 53 74 72 69 6e 67 4f 66 43 68 61 72 28 23 30 StringOfChar(#0
4150: 2c 20 4d 41 58 5f 50 41 54 48 29 3b 0d 0a 20 20 , MAX_PATH);..
4160: 53 65 6e 64 4d 65 73 73 61 67 65 28 4e 70 70 2e SendMessage(Npp.
4170: 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c NppData.NppHandl
4180: 65 2c 20 4e 50 50 4d 5f 47 45 54 46 55 4c 4c 43 e, NPPM_GETFULLC
4190: 55 52 52 45 4e 54 50 41 54 48 2c 20 57 50 41 52 URRENTPATH, WPAR
41a0: 41 4d 28 4c 65 6e 67 74 68 28 44 6f 63 46 69 6c AM(Length(DocFil
41b0: 65 29 29 2c 20 4c 50 41 52 41 4d 28 50 43 68 61 e)), LPARAM(PCha
41c0: 72 28 44 6f 63 46 69 6c 65 29 29 29 3b 0d 0a 20 r(DocFile)));..
41d0: 20 44 6f 63 46 69 6c 65 20 3a 3d 20 73 74 72 69 DocFile := stri
41e0: 6e 67 28 50 43 68 61 72 28 44 6f 63 46 69 6c 65 ng(PChar(DocFile
41f0: 29 29 3b 0d 0a 20 20 46 69 6c 74 65 72 44 61 74 ));.. FilterDat
4200: 61 2e 44 6f 63 46 69 6c 65 20 3a 3d 20 44 6f 63 a.DocFile := Doc
4210: 46 69 6c 65 3b 0d 0a 20 20 46 69 6c 74 65 72 44 File;.. FilterD
4220: 61 74 61 2e 43 6f 6e 74 65 6e 74 73 20 3a 3d 20 ata.Contents :=
4230: 48 54 4d 4c 3b 0d 0a 0d 0a 20 20 53 65 6e 64 4d HTML;.... SendM
4240: 65 73 73 61 67 65 28 53 65 6c 66 2e 4e 70 70 2e essage(Self.Npp.
4250: 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c NppData.NppHandl
4260: 65 2c 20 4e 50 50 4d 5f 47 45 54 43 55 52 52 45 e, NPPM_GETCURRE
4270: 4e 54 53 43 49 4e 54 49 4c 4c 41 2c 20 30 2c 20 NTSCINTILLA, 0,
4280: 4c 50 41 52 41 4d 28 40 56 69 65 77 29 29 3b 0d LPARAM(@View));.
4290: 0a 20 20 69 66 20 56 69 65 77 20 3d 20 30 20 74 . if View = 0 t
42a0: 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 68 hen begin.. h
42b0: 53 63 69 6e 74 69 6c 6c 61 20 3a 3d 20 53 65 6c Scintilla := Sel
42c0: 66 2e 4e 70 70 2e 4e 70 70 44 61 74 61 2e 53 63 f.Npp.NppData.Sc
42d0: 69 6e 74 69 6c 6c 61 4d 61 69 6e 48 61 6e 64 6c intillaMainHandl
42e0: 65 3b 0d 0a 20 20 65 6e 64 20 65 6c 73 65 20 62 e;.. end else b
42f0: 65 67 69 6e 0d 0a 20 20 20 20 68 53 63 69 6e 74 egin.. hScint
4300: 69 6c 6c 61 20 3a 3d 20 53 65 6c 66 2e 4e 70 70 illa := Self.Npp
4310: 2e 4e 70 70 44 61 74 61 2e 53 63 69 6e 74 69 6c .NppData.Scintil
4320: 6c 61 53 65 63 6f 6e 64 48 61 6e 64 6c 65 3b 0d laSecondHandle;.
4330: 0a 20 20 65 6e 64 3b 0d 0a 20 20 42 75 66 66 65 . end;.. Buffe
4340: 72 45 6e 63 6f 64 69 6e 67 20 3a 3d 20 53 65 6e rEncoding := Sen
4350: 64 4d 65 73 73 61 67 65 28 4e 70 70 2e 4e 70 70 dMessage(Npp.Npp
4360: 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 Data.NppHandle,
4370: 4e 50 50 4d 5f 47 45 54 42 55 46 46 45 52 45 4e NPPM_GETBUFFEREN
4380: 43 4f 44 49 4e 47 2c 20 42 75 66 66 65 72 49 44 CODING, BufferID
4390: 2c 20 30 29 3b 0d 0a 20 20 63 61 73 65 20 42 75 , 0);.. case Bu
43a0: 66 66 65 72 45 6e 63 6f 64 69 6e 67 20 6f 66 0d fferEncoding of.
43b0: 0a 20 20 20 20 31 2c 20 34 3a 20 46 69 6c 74 65 . 1, 4: Filte
43c0: 72 44 61 74 61 2e 45 6e 63 6f 64 69 6e 67 20 3a rData.Encoding :
43d0: 3d 20 54 45 6e 63 6f 64 69 6e 67 2e 55 54 46 38 = TEncoding.UTF8
43e0: 3b 0d 0a 20 20 20 20 32 2c 20 36 3a 20 46 69 6c ;.. 2, 6: Fil
43f0: 74 65 72 44 61 74 61 2e 45 6e 63 6f 64 69 6e 67 terData.Encoding
4400: 20 3a 3d 20 54 45 6e 63 6f 64 69 6e 67 2e 42 69 := TEncoding.Bi
4410: 67 45 6e 64 69 61 6e 55 6e 69 63 6f 64 65 3b 0d gEndianUnicode;.
4420: 0a 20 20 20 20 33 2c 20 37 3a 20 46 69 6c 74 65 . 3, 7: Filte
4430: 72 44 61 74 61 2e 45 6e 63 6f 64 69 6e 67 20 3a rData.Encoding :
4440: 3d 20 54 45 6e 63 6f 64 69 6e 67 2e 55 6e 69 63 = TEncoding.Unic
4450: 6f 64 65 3b 0d 0a 20 20 20 20 35 3a 20 20 20 20 ode;.. 5:
4460: 46 69 6c 74 65 72 44 61 74 61 2e 45 6e 63 6f 64 FilterData.Encod
4470: 69 6e 67 20 3a 3d 20 54 45 6e 63 6f 64 69 6e 67 ing := TEncoding
4480: 2e 55 54 46 37 3b 0d 0a 20 20 20 20 65 6c 73 65 .UTF7;.. else
4490: 20 20 46 69 6c 74 65 72 44 61 74 61 2e 45 6e 63 FilterData.Enc
44a0: 6f 64 69 6e 67 20 3a 3d 20 54 45 6e 63 6f 64 69 oding := TEncodi
44b0: 6e 67 2e 41 4e 53 49 3b 0d 0a 20 20 65 6e 64 3b ng.ANSI;.. end;
44c0: 0d 0a 20 20 46 69 6c 74 65 72 44 61 74 61 2e 55 .. FilterData.U
44d0: 73 65 42 4f 4d 20 3a 3d 20 42 75 66 66 65 72 45 seBOM := BufferE
44e0: 6e 63 6f 64 69 6e 67 20 69 6e 20 5b 31 2c 20 32 ncoding in [1, 2
44f0: 2c 20 33 5d 3b 0d 0a 20 20 46 69 6c 74 65 72 44 , 3];.. FilterD
4500: 61 74 61 2e 4d 6f 64 69 66 69 65 64 20 3a 3d 20 ata.Modified :=
4510: 53 65 6e 64 4d 65 73 73 61 67 65 28 68 53 63 69 SendMessage(hSci
4520: 6e 74 69 6c 6c 61 2c 20 53 43 49 5f 47 45 54 4d ntilla, SCI_GETM
4530: 4f 44 49 46 59 2c 20 30 2c 20 30 29 20 3c 3e 20 ODIFY, 0, 0) <>
4540: 30 3b 0d 0a 0d 0a 20 20 46 69 6c 74 65 72 73 20 0;.... Filters
4550: 3a 3d 20 54 4e 70 70 50 6c 75 67 69 6e 50 72 65 := TNppPluginPre
4560: 76 69 65 77 48 54 4d 4c 28 4e 70 70 29 2e 47 65 viewHTML(Npp).Ge
4570: 74 53 65 74 74 69 6e 67 73 28 27 46 69 6c 74 65 tSettings('Filte
4580: 72 73 2e 69 6e 69 27 29 3b 0d 0a 20 20 74 72 79 rs.ini');.. try
4590: 0d 0a 20 20 20 20 46 69 6c 74 65 72 44 61 74 61 .. FilterData
45a0: 2e 46 69 6c 74 65 72 49 6e 66 6f 20 3a 3d 20 54 .FilterInfo := T
45b0: 53 74 72 69 6e 67 4c 69 73 74 2e 43 72 65 61 74 StringList.Creat
45c0: 65 3b 0d 0a 20 20 20 20 46 69 6c 74 65 72 73 2e e;.. Filters.
45d0: 52 65 61 64 53 65 63 74 69 6f 6e 56 61 6c 75 65 ReadSectionValue
45e0: 73 28 46 69 6c 74 65 72 4e 61 6d 65 2c 20 46 69 s(FilterName, Fi
45f0: 6c 74 65 72 44 61 74 61 2e 46 69 6c 74 65 72 49 lterData.FilterI
4600: 6e 66 6f 29 3b 0d 0a 20 20 66 69 6e 61 6c 6c 79 nfo);.. finally
4610: 0d 0a 20 20 20 20 46 69 6c 74 65 72 73 2e 46 72 .. Filters.Fr
4620: 65 65 3b 0d 0a 20 20 65 6e 64 3b 0d 0a 0d 0a 20 ee;.. end;....
4630: 20 46 69 6c 74 65 72 44 61 74 61 2e 4f 6e 54 65 FilterData.OnTe
4640: 72 6d 69 6e 61 74 65 20 3a 3d 20 46 69 6c 74 65 rminate := Filte
4650: 72 54 68 72 65 61 64 54 65 72 6d 69 6e 61 74 65 rThreadTerminate
4660: 3b 0d 0a 0d 0a 20 20 7b 2d 2d 2d 20 32 30 31 33 ;.... {--- 2013
4670: 2d 30 31 2d 32 36 20 4d 61 72 74 69 6a 6e 3a 20 -01-26 Martijn:
4680: 43 72 65 61 74 65 20 61 20 6e 65 77 20 54 43 75 Create a new TCu
4690: 73 74 6f 6d 46 69 6c 74 65 72 54 68 72 65 61 64 stomFilterThread
46a0: 20 2d 2d 2d 7d 0d 0a 20 20 46 46 69 6c 74 65 72 ---}.. FFilter
46b0: 54 68 72 65 61 64 20 3a 3d 20 54 43 75 73 74 6f Thread := TCusto
46c0: 6d 46 69 6c 74 65 72 54 68 72 65 61 64 2e 43 72 mFilterThread.Cr
46d0: 65 61 74 65 28 46 69 6c 74 65 72 44 61 74 61 29 eate(FilterData)
46e0: 3b 0d 0a 20 20 52 65 73 75 6c 74 20 3a 3d 20 41 ;.. Result := A
46f0: 73 73 69 67 6e 65 64 28 46 46 69 6c 74 65 72 54 ssigned(FFilterT
4700: 68 72 65 61 64 29 3b 0d 0a 20 20 46 46 69 6c 74 hread);.. FFilt
4710: 65 72 54 68 72 65 61 64 2e 57 61 69 74 46 6f 72 erThread.WaitFor
4720: 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d 4c ;..end {TfrmHTML
4730: 50 72 65 76 69 65 77 2e 45 78 65 63 75 74 65 43 Preview.ExecuteC
4740: 75 73 74 6f 6d 46 69 6c 74 65 72 7d 3b 0d 0a 0d ustomFilter};...
4750: 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .{ -------------
4760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4780: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4790: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
47a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
47b0: 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 72 65 --- }..procedure
47c0: 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 TfrmHTMLPreview
47d0: 2e 46 69 6c 74 65 72 54 68 72 65 61 64 54 65 72 .FilterThreadTer
47e0: 6d 69 6e 61 74 65 28 53 65 6e 64 65 72 3a 20 54 minate(Sender: T
47f0: 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 67 69 6e 0d Object);..begin.
4800: 0a 4f 44 53 28 27 46 69 6c 74 65 72 54 68 72 65 .ODS('FilterThre
4810: 61 64 54 65 72 6d 69 6e 61 74 65 27 29 3b 0d 0a adTerminate');..
4820: 69 66 20 28 53 65 6e 64 65 72 20 61 73 20 54 54 if (Sender as TT
4830: 68 72 65 61 64 29 2e 46 61 74 61 6c 45 78 63 65 hread).FatalExce
4840: 70 74 69 6f 6e 20 69 73 20 45 78 63 65 70 74 69 ption is Excepti
4850: 6f 6e 20 74 68 65 6e 0d 0a 20 20 4f 44 53 28 27 on then.. ODS('
4860: 46 61 74 61 6c 20 25 73 3a 20 22 25 73 22 27 2c Fatal %s: "%s"',
4870: 20 5b 28 28 53 65 6e 64 65 72 20 61 73 20 54 54 [((Sender as TT
4880: 68 72 65 61 64 29 2e 46 61 74 61 6c 45 78 63 65 hread).FatalExce
4890: 70 74 69 6f 6e 20 61 73 20 45 78 63 65 70 74 69 ption as Excepti
48a0: 6f 6e 29 2e 43 6c 61 73 73 4e 61 6d 65 2c 20 28 on).ClassName, (
48b0: 28 53 65 6e 64 65 72 20 61 73 20 54 54 68 72 65 (Sender as TThre
48c0: 61 64 29 2e 46 61 74 61 6c 45 78 63 65 70 74 69 ad).FatalExcepti
48d0: 6f 6e 20 61 73 20 45 78 63 65 70 74 69 6f 6e 29 on as Exception)
48e0: 2e 4d 65 73 73 61 67 65 5d 29 3b 0d 0a 0d 0a 20 .Message]);....
48f0: 20 46 46 69 6c 74 65 72 54 68 72 65 61 64 20 3a FFilterThread :
4900: 3d 20 6e 69 6c 3b 0d 0a 65 6e 64 20 7b 54 66 72 = nil;..end {Tfr
4910: 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 46 69 6c mHTMLPreview.Fil
4920: 74 65 72 54 68 72 65 61 64 54 65 72 6d 69 6e 61 terThreadTermina
4930: 74 65 7d 3b 0d 0a 0d 0a 0d 0a 7b 20 2d 2d 2d 2d te};......{ ----
4940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a ------------ }..
49a0: 70 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 54 procedure TfrmHT
49b0: 4d 4c 50 72 65 76 69 65 77 2e 62 74 6e 41 62 6f MLPreview.btnAbo
49c0: 75 74 43 6c 69 63 6b 28 53 65 6e 64 65 72 3a 20 utClick(Sender:
49d0: 54 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 67 69 6e TObject);..begin
49e0: 0d 0a 20 20 28 6e 70 70 20 61 73 20 54 4e 70 70 .. (npp as TNpp
49f0: 50 6c 75 67 69 6e 50 72 65 76 69 65 77 48 54 4d PluginPreviewHTM
4a00: 4c 29 2e 43 6f 6d 6d 61 6e 64 53 68 6f 77 41 62 L).CommandShowAb
4a10: 6f 75 74 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 out;..end {TfrmH
4a20: 54 4d 4c 50 72 65 76 69 65 77 2e 62 74 6e 41 62 TMLPreview.btnAb
4a30: 6f 75 74 43 6c 69 63 6b 7d 3b 0d 0a 0d 0a 7b 20 outClick};....{
4a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4a90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4aa0: 20 7d 0d 0a 70 72 6f 63 65 64 75 72 65 20 54 66 }..procedure Tf
4ab0: 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 62 74 rmHTMLPreview.bt
4ac0: 6e 43 6c 6f 73 65 43 6c 69 63 6b 28 53 65 6e 64 nCloseClick(Send
4ad0: 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 62 er: TObject);..b
4ae0: 65 67 69 6e 0d 0a 20 20 73 65 6c 66 2e 48 69 64 egin.. self.Hid
4af0: 65 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d e;..end {TfrmHTM
4b00: 4c 50 72 65 76 69 65 77 2e 62 74 6e 43 6c 6f 73 LPreview.btnClos
4b10: 65 43 6c 69 63 6b 7d 3b 0d 0a 0d 0a 7b 20 2d 2d eClick};....{ --
4b20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d -------------- }
4b80: 0d 0a 2f 2f 20 73 70 65 63 69 61 6c 20 68 61 63 ..// special hac
4b90: 6b 20 66 6f 72 20 69 6e 70 75 74 20 66 6f 72 6d k for input form
4ba0: 73 0d 0a 2f 2f 20 54 68 69 73 20 69 73 20 74 68 s..// This is th
4bb0: 65 20 62 65 73 74 20 70 6f 73 73 69 62 6c 65 20 e best possible
4bc0: 68 61 63 6b 20 49 20 63 6f 75 6c 64 20 63 61 6d hack I could cam
4bd0: 65 20 75 70 20 66 6f 72 0d 0a 2f 2f 20 6d 65 6d e up for..// mem
4be0: 6f 20 62 6f 78 65 73 20 74 68 61 74 20 64 6f 6e o boxes that don
4bf0: 27 74 20 70 72 6f 63 65 73 73 20 65 6e 74 65 72 't process enter
4c00: 20 6b 65 79 73 20 66 6f 72 20 72 65 61 73 6f 6e keys for reason
4c10: 73 0d 0a 2f 2f 20 74 6f 6f 20 63 6f 6d 70 6c 69 s..// too compli
4c20: 63 61 74 65 64 2e 2e 2e 20 48 61 73 20 73 6f 6d cated... Has som
4c30: 65 74 68 69 6e 67 20 74 6f 20 64 6f 20 77 69 74 ething to do wit
4c40: 68 20 44 69 61 6c 6f 67 20 4d 65 73 73 61 67 65 h Dialog Message
4c50: 73 0d 0a 2f 2f 20 49 20 73 65 6e 64 73 20 61 20 s..// I sends a
4c60: 43 74 72 6c 2b 45 6e 74 65 72 20 69 6e 20 70 6c Ctrl+Enter in pl
4c70: 61 63 65 20 6f 66 20 45 6e 74 65 72 0d 0a 70 72 ace of Enter..pr
4c80: 6f 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c ocedure TfrmHTML
4c90: 50 72 65 76 69 65 77 2e 46 6f 72 6d 4b 65 79 50 Preview.FormKeyP
4ca0: 72 65 73 73 28 53 65 6e 64 65 72 3a 20 54 4f 62 ress(Sender: TOb
4cb0: 6a 65 63 74 3b 0d 0a 20 20 76 61 72 20 4b 65 79 ject;.. var Key
4cc0: 3a 20 43 68 61 72 29 3b 0d 0a 62 65 67 69 6e 0d : Char);..begin.
4cd0: 0a 2f 2f 20 20 69 66 20 28 4b 65 79 20 3d 20 23 .// if (Key = #
4ce0: 31 33 29 20 61 6e 64 20 28 73 65 6c 66 2e 4d 65 13) and (self.Me
4cf0: 6d 6f 31 2e 46 6f 63 75 73 65 64 29 20 74 68 65 mo1.Focused) the
4d00: 6e 20 73 65 6c 66 2e 4d 65 6d 6f 31 2e 50 65 72 n self.Memo1.Per
4d10: 66 6f 72 6d 28 57 4d 5f 43 48 41 52 2c 20 31 30 form(WM_CHAR, 10
4d20: 2c 20 30 29 3b 0d 0a 65 6e 64 3b 0d 0a 0d 0a 7b , 0);..end;....{
4d30: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------
4d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d90: 2d 20 7d 0d 0a 2f 2f 20 44 6f 63 6b 69 6e 67 20 - }..// Docking
4da0: 63 6f 64 65 20 63 61 6c 6c 73 20 74 68 69 73 20 code calls this
4db0: 77 68 65 6e 20 74 68 65 20 66 6f 72 6d 20 69 73 when the form is
4dc0: 20 68 69 64 64 65 6e 20 62 79 20 65 69 74 68 65 hidden by eithe
4dd0: 72 20 22 78 22 20 6f 72 20 73 65 6c 66 2e 48 69 r "x" or self.Hi
4de0: 64 65 0d 0a 70 72 6f 63 65 64 75 72 65 20 54 66 de..procedure Tf
4df0: 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 46 6f rmHTMLPreview.Fo
4e00: 72 6d 48 69 64 65 28 53 65 6e 64 65 72 3a 20 54 rmHide(Sender: T
4e10: 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 67 69 6e 0d Object);..begin.
4e20: 0a 20 20 53 61 76 65 53 63 72 6f 6c 6c 50 6f 73 . SaveScrollPos
4e30: 3b 0d 0a 20 20 53 65 6e 64 4d 65 73 73 61 67 65 ;.. SendMessage
4e40: 28 73 65 6c 66 2e 4e 70 70 2e 4e 70 70 44 61 74 (self.Npp.NppDat
4e50: 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 4e 50 50 a.NppHandle, NPP
4e60: 4d 5f 53 45 54 4d 45 4e 55 49 54 45 4d 43 48 45 M_SETMENUITEMCHE
4e70: 43 4b 2c 20 73 65 6c 66 2e 43 6d 64 49 44 2c 20 CK, self.CmdID,
4e80: 30 29 3b 0d 0a 20 20 73 65 6c 66 2e 56 69 73 69 0);.. self.Visi
4e90: 62 6c 65 20 3a 3d 20 46 61 6c 73 65 3b 0d 0a 65 ble := False;..e
4ea0: 6e 64 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d nd;....{ -------
4eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f --------- }..pro
4f10: 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 cedure TfrmHTMLP
4f20: 72 65 76 69 65 77 2e 46 6f 72 6d 44 6f 63 6b 28 review.FormDock(
4f30: 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 Sender: TObject)
4f40: 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 53 65 6e 64 ;..begin.. Send
4f50: 4d 65 73 73 61 67 65 28 73 65 6c 66 2e 4e 70 70 Message(self.Npp
4f60: 2e 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 .NppData.NppHand
4f70: 6c 65 2c 20 4e 50 50 4d 5f 53 45 54 4d 45 4e 55 le, NPPM_SETMENU
4f80: 49 54 45 4d 43 48 45 43 4b 2c 20 73 65 6c 66 2e ITEMCHECK, self.
4f90: 43 6d 64 49 44 2c 20 31 29 3b 0d 0a 65 6e 64 3b CmdID, 1);..end;
4fa0: 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....{ ----------
4fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5000: 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 ------ }..proced
5010: 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 ure TfrmHTMLPrev
5020: 69 65 77 2e 46 6f 72 6d 46 6c 6f 61 74 28 53 65 iew.FormFloat(Se
5030: 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d nder: TObject);.
5040: 0a 62 65 67 69 6e 0d 0a 20 20 53 65 6e 64 4d 65 .begin.. SendMe
5050: 73 73 61 67 65 28 73 65 6c 66 2e 4e 70 70 2e 4e ssage(self.Npp.N
5060: 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 6c 65 ppData.NppHandle
5070: 2c 20 4e 50 50 4d 5f 53 45 54 4d 45 4e 55 49 54 , NPPM_SETMENUIT
5080: 45 4d 43 48 45 43 4b 2c 20 73 65 6c 66 2e 43 6d EMCHECK, self.Cm
5090: 64 49 44 2c 20 31 29 3b 0d 0a 65 6e 64 3b 0d 0a dID, 1);..end;..
50a0: 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..{ ------------
50b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
50c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
50d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
50e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
50f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5100: 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 72 ---- }..procedur
5110: 65 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 e TfrmHTMLPrevie
5120: 77 2e 46 6f 72 6d 53 68 6f 77 28 53 65 6e 64 65 w.FormShow(Sende
5130: 72 3a 20 54 4f 62 6a 65 63 74 29 3b 0d 0a 62 65 r: TObject);..be
5140: 67 69 6e 0d 0a 20 20 69 6e 68 65 72 69 74 65 64 gin.. inherited
5150: 3b 0d 0a 20 20 53 65 6e 64 4d 65 73 73 61 67 65 ;.. SendMessage
5160: 28 73 65 6c 66 2e 4e 70 70 2e 4e 70 70 44 61 74 (self.Npp.NppDat
5170: 61 2e 4e 70 70 48 61 6e 64 6c 65 2c 20 4e 50 50 a.NppHandle, NPP
5180: 4d 5f 53 45 54 4d 45 4e 55 49 54 45 4d 43 48 45 M_SETMENUITEMCHE
5190: 43 4b 2c 20 73 65 6c 66 2e 43 6d 64 49 44 2c 20 CK, self.CmdID,
51a0: 31 29 3b 0d 0a 65 6e 64 3b 0d 0a 0d 0a 7b 20 2d 1);..end;....{ -
51b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
51c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
51d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
51e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
51f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 ---------------
5210: 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20 54 66 72 6d }..function Tfrm
5220: 48 54 4d 4c 50 72 65 76 69 65 77 2e 54 72 61 6e HTMLPreview.Tran
5230: 73 66 6f 72 6d 58 4d 4c 54 6f 48 54 4d 4c 28 63 sformXMLToHTML(c
5240: 6f 6e 73 74 20 58 4d 4c 3a 20 57 69 64 65 53 74 onst XML: WideSt
5250: 72 69 6e 67 29 3a 20 73 74 72 69 6e 67 3b 0d 0a ring): string;..
5260: 20 20 7b 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 { - - - - - -
5270: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5280: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5290: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
52a0: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
52b0: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
52c0: 7d 0d 0a 20 20 66 75 6e 63 74 69 6f 6e 20 43 72 }.. function Cr
52d0: 65 61 74 65 44 4f 4d 44 6f 63 75 6d 65 6e 74 3a eateDOMDocument:
52e0: 20 4f 6c 65 56 61 72 69 61 6e 74 3b 0d 0a 20 20 OleVariant;..
52f0: 76 61 72 0d 0a 20 20 20 20 6e 56 65 72 73 69 6f var.. nVersio
5300: 6e 3a 20 49 6e 74 65 67 65 72 3b 0d 0a 20 20 62 n: Integer;.. b
5310: 65 67 69 6e 0d 0a 20 20 20 20 56 61 72 43 6c 65 egin.. VarCle
5320: 61 72 28 52 65 73 75 6c 74 29 3b 0d 0a 20 20 20 ar(Result);..
5330: 20 66 6f 72 20 6e 56 65 72 73 69 6f 6e 20 3a 3d for nVersion :=
5340: 20 37 20 64 6f 77 6e 74 6f 20 34 20 64 6f 20 62 7 downto 4 do b
5350: 65 67 69 6e 0d 0a 20 20 20 20 20 20 74 72 79 0d egin.. try.
5360: 0a 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 20 . Result
5370: 3a 3d 20 43 72 65 61 74 65 4f 6c 65 4f 62 6a 65 := CreateOleObje
5380: 63 74 28 46 6f 72 6d 61 74 28 27 4d 53 58 4d 4c ct(Format('MSXML
5390: 32 2e 44 4f 4d 44 6f 63 75 6d 65 6e 74 2e 25 64 2.DOMDocument.%d
53a0: 2e 30 27 2c 20 5b 6e 56 65 72 73 69 6f 6e 5d 29 .0', [nVersion])
53b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 6e );.. if n
53c0: 6f 74 20 56 61 72 49 73 43 6c 65 61 72 28 52 65 ot VarIsClear(Re
53d0: 73 75 6c 74 29 20 74 68 65 6e 20 62 65 67 69 6e sult) then begin
53e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 6e .. if n
53f0: 56 65 72 73 69 6f 6e 20 3e 3d 20 34 20 74 68 65 Version >= 4 the
5400: 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 20 n begin..
5410: 20 20 20 20 20 52 65 73 75 6c 74 2e 73 65 74 50 Result.setP
5420: 72 6f 70 65 72 74 79 28 27 4e 65 77 50 61 72 73 roperty('NewPars
5430: 65 72 27 2c 20 54 72 75 65 29 3b 0d 0a 20 20 20 er', True);..
5440: 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 end;..
5450: 20 20 20 20 20 20 20 69 66 20 6e 56 65 72 73 69 if nVersi
5460: 6f 6e 20 3e 3d 20 36 20 74 68 65 6e 20 62 65 67 on >= 6 then beg
5470: 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 in..
5480: 52 65 73 75 6c 74 2e 73 65 74 50 72 6f 70 65 72 Result.setProper
5490: 74 79 28 27 41 6c 6c 6f 77 44 6f 63 75 6d 65 6e ty('AllowDocumen
54a0: 74 46 75 6e 63 74 69 6f 6e 27 2c 20 54 72 75 65 tFunction', True
54b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 );..
54c0: 52 65 73 75 6c 74 2e 73 65 74 50 72 6f 70 65 72 Result.setProper
54d0: 74 79 28 27 41 6c 6c 6f 77 58 73 6c 74 53 63 72 ty('AllowXsltScr
54e0: 69 70 74 27 2c 20 54 72 75 65 29 3b 0d 0a 20 20 ipt', True);..
54f0: 20 20 20 20 20 20 20 20 20 20 52 65 73 75 6c 74 Result
5500: 2e 73 65 74 50 72 6f 70 65 72 74 79 28 27 52 65 .setProperty('Re
5510: 73 6f 6c 76 65 45 78 74 65 72 6e 61 6c 73 27 2c solveExternals',
5520: 20 54 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 True);..
5530: 20 20 20 20 20 52 65 73 75 6c 74 2e 73 65 74 50 Result.setP
5540: 72 6f 70 65 72 74 79 28 27 55 73 65 49 6e 6c 69 roperty('UseInli
5550: 6e 65 53 63 68 65 6d 61 27 2c 20 54 72 75 65 29 neSchema', True)
5560: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 ;.. R
5570: 65 73 75 6c 74 2e 73 65 74 50 72 6f 70 65 72 74 esult.setPropert
5580: 79 28 27 56 61 6c 69 64 61 74 65 4f 6e 50 61 72 y('ValidateOnPar
5590: 73 65 27 2c 20 46 61 6c 73 65 29 3b 0d 0a 20 20 se', False);..
55a0: 20 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 end;..
55b0: 20 20 20 20 20 20 20 20 42 72 65 61 6b 3b 0d 0a Break;..
55c0: 20 20 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 end;..
55d0: 20 20 20 20 65 78 63 65 70 74 0d 0a 20 20 20 20 except..
55e0: 20 20 20 20 56 61 72 43 6c 65 61 72 28 52 65 73 VarClear(Res
55f0: 75 6c 74 29 3b 0d 0a 20 20 20 20 20 20 65 6e 64 ult);.. end
5600: 3b 0d 0a 20 20 20 20 65 6e 64 7b 66 6f 72 7d 3b ;.. end{for};
5610: 0d 0a 20 20 65 6e 64 20 7b 43 72 65 61 74 65 44 .. end {CreateD
5620: 4f 4d 44 6f 63 75 6d 65 6e 74 7d 3b 0d 0a 20 20 OMDocument};..
5630: 7b 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 { - - - - - - -
5640: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5650: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5660: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5670: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 - - - - - - - -
5680: 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 2d 20 7d 0d - - - - - - - }.
5690: 0a 76 61 72 0d 0a 20 20 62 4d 65 74 68 6f 64 48 .var.. bMethodH
56a0: 54 4d 4c 3a 20 42 6f 6f 6c 65 61 6e 3b 0d 0a 20 TML: Boolean;..
56b0: 20 78 44 6f 63 2c 20 78 50 49 2c 20 78 53 74 79 xDoc, xPI, xSty
56c0: 6c 65 73 68 65 65 74 2c 20 78 4f 75 74 70 75 74 lesheet, xOutput
56d0: 3a 20 4f 6c 65 56 61 72 69 61 6e 74 3b 0d 0a 20 : OleVariant;..
56e0: 20 72 65 78 48 72 65 66 3a 20 54 52 65 67 45 78 rexHref: TRegEx
56f0: 70 72 3b 0d 0a 62 65 67 69 6e 0d 0a 20 20 52 65 pr;..begin.. Re
5700: 73 75 6c 74 20 3a 3d 20 27 27 3b 0d 0a 20 20 74 sult := '';.. t
5710: 72 79 0d 0a 20 20 20 20 74 72 79 0d 0a 20 20 20 ry.. try..
5720: 20 20 20 7b 2d 2d 2d 20 4d 43 4f 20 33 30 2d 30 {--- MCO 30-0
5730: 35 2d 32 30 31 32 3a 20 43 68 65 63 6b 20 74 6f 5-2012: Check to
5740: 20 73 65 65 20 69 66 20 74 68 65 72 65 27 73 20 see if there's
5750: 61 6e 20 78 6d 6c 2d 73 74 79 6c 65 73 68 65 65 an xml-styleshee
5760: 74 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 t to convert the
5770: 20 58 4d 4c 20 74 6f 20 48 54 4d 4c 2e 20 2d 2d XML to HTML. --
5780: 2d 7d 0d 0a 20 20 20 20 20 20 78 44 6f 63 20 3a -}.. xDoc :
5790: 3d 20 43 72 65 61 74 65 44 4f 4d 44 6f 63 75 6d = CreateDOMDocum
57a0: 65 6e 74 3b 0d 0a 20 20 20 20 20 20 69 66 20 56 ent;.. if V
57b0: 61 72 49 73 43 6c 65 61 72 28 78 44 6f 63 29 20 arIsClear(xDoc)
57c0: 74 68 65 6e 20 45 78 69 74 3b 0d 0a 20 20 20 20 then Exit;..
57d0: 20 20 69 66 20 6e 6f 74 20 78 44 6f 63 2e 4c 6f if not xDoc.Lo
57e0: 61 64 58 4d 4c 28 58 4d 4c 29 20 74 68 65 6e 20 adXML(XML) then
57f0: 45 78 69 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 78 Exit;.... x
5800: 50 49 20 3a 3d 20 78 44 6f 63 2e 73 65 6c 65 63 PI := xDoc.selec
5810: 74 53 69 6e 67 6c 65 4e 6f 64 65 28 27 2f 2f 70 tSingleNode('//p
5820: 72 6f 63 65 73 73 69 6e 67 2d 69 6e 73 74 72 75 rocessing-instru
5830: 63 74 69 6f 6e 28 22 78 6d 6c 2d 73 74 79 6c 65 ction("xml-style
5840: 73 68 65 65 74 22 29 27 29 3b 0d 0a 20 20 20 20 sheet")');..
5850: 20 20 69 66 20 56 61 72 49 73 43 6c 65 61 72 28 if VarIsClear(
5860: 78 50 49 29 20 74 68 65 6e 20 45 78 69 74 3b 0d xPI) then Exit;.
5870: 0a 0d 0a 20 20 20 20 20 20 72 65 78 48 72 65 66 ... rexHref
5880: 20 3a 3d 20 54 52 65 67 45 78 70 72 2e 43 72 65 := TRegExpr.Cre
5890: 61 74 65 3b 0d 0a 20 20 20 20 20 20 74 72 79 0d ate;.. try.
58a0: 0a 20 20 20 20 20 20 20 20 72 65 78 48 72 65 66 . rexHref
58b0: 2e 4d 6f 64 69 66 69 65 72 49 20 3a 3d 20 46 61 .ModifierI := Fa
58c0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 lse;.. re
58d0: 78 48 72 65 66 2e 45 78 70 72 65 73 73 69 6f 6e xHref.Expression
58e0: 20 3a 3d 20 27 28 5e 7c 5c 73 2b 29 68 72 65 66 := '(^|\s+)href
58f0: 3d 5b 22 27 27 5d 28 5b 5e 22 27 27 5d 2a 3f 29 =["'']([^"'']*?)
5900: 5b 22 27 27 5d 27 3b 0d 0a 20 20 20 20 20 20 20 ["'']';..
5910: 20 69 66 20 6e 6f 74 20 72 65 78 48 72 65 66 2e if not rexHref.
5920: 45 78 65 63 28 78 50 49 2e 6e 6f 64 65 56 61 6c Exec(xPI.nodeVal
5930: 75 65 29 20 74 68 65 6e 20 45 78 69 74 3b 0d 0a ue) then Exit;..
5940: 0d 0a 20 20 20 20 20 20 20 20 78 53 74 79 6c 65 .. xStyle
5950: 73 68 65 65 74 20 3a 3d 20 43 72 65 61 74 65 44 sheet := CreateD
5960: 4f 4d 44 6f 63 75 6d 65 6e 74 3b 0d 0a 20 20 20 OMDocument;..
5970: 20 20 20 20 20 69 66 20 6e 6f 74 20 78 53 74 79 if not xSty
5980: 6c 65 73 68 65 65 74 2e 4c 6f 61 64 28 72 65 78 lesheet.Load(rex
5990: 48 72 65 66 2e 4d 61 74 63 68 5b 32 5d 29 20 74 Href.Match[2]) t
59a0: 68 65 6e 20 45 78 69 74 3b 0d 0a 20 20 20 20 20 hen Exit;..
59b0: 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 finally..
59c0: 20 20 72 65 78 48 72 65 66 2e 46 72 65 65 3b 0d rexHref.Free;.
59d0: 0a 20 20 20 20 20 20 65 6e 64 3b 0d 0a 0d 0a 20 . end;....
59e0: 20 20 20 20 20 62 4d 65 74 68 6f 64 48 54 4d 4c bMethodHTML
59f0: 20 3a 3d 20 53 61 6d 65 54 65 78 74 28 78 44 6f := SameText(xDo
5a00: 63 2e 64 6f 63 75 6d 65 6e 74 45 6c 65 6d 65 6e c.documentElemen
5a10: 74 2e 6e 6f 64 65 4e 61 6d 65 2c 20 27 68 74 6d t.nodeName, 'htm
5a20: 6c 27 29 3b 0d 0a 20 20 20 20 20 20 69 66 20 6e l');.. if n
5a30: 6f 74 20 62 4d 65 74 68 6f 64 48 54 4d 4c 20 74 ot bMethodHTML t
5a40: 68 65 6e 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 hen begin..
5a50: 20 20 20 78 53 74 79 6c 65 73 68 65 65 74 2e 73 xStylesheet.s
5a60: 65 74 50 72 6f 70 65 72 74 79 28 27 53 65 6c 65 etProperty('Sele
5a70: 63 74 69 6f 6e 4e 61 6d 65 73 70 61 63 65 73 27 ctionNamespaces'
5a80: 2c 20 27 78 6d 6c 6e 73 3a 78 73 6c 3d 22 68 74 , 'xmlns:xsl="ht
5a90: 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f tp://www.w3.org/
5aa0: 31 39 39 39 2f 58 53 4c 2f 54 72 61 6e 73 66 6f 1999/XSL/Transfo
5ab0: 72 6d 22 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 rm"');..
5ac0: 78 4f 75 74 70 75 74 20 3a 3d 20 78 53 74 79 6c xOutput := xStyl
5ad0: 65 73 68 65 65 74 2e 73 65 6c 65 63 74 53 69 6e esheet.selectSin
5ae0: 67 6c 65 4e 6f 64 65 28 27 2f 2a 2f 78 73 6c 3a gleNode('/*/xsl:
5af0: 6f 75 74 70 75 74 27 29 3b 0d 0a 20 20 20 20 20 output');..
5b00: 20 20 20 69 66 20 56 61 72 49 73 43 6c 65 61 72 if VarIsClear
5b10: 28 78 4f 75 74 70 75 74 29 20 74 68 65 6e 0d 0a (xOutput) then..
5b20: 20 20 20 20 20 20 20 20 20 20 45 78 69 74 3b 0d Exit;.
5b30: 0a 0d 0a 20 20 20 20 20 20 20 20 62 4d 65 74 68 ... bMeth
5b40: 6f 64 48 54 4d 4c 20 3a 3d 20 53 61 6d 65 53 74 odHTML := SameSt
5b50: 72 28 56 61 72 54 6f 53 74 72 44 65 66 28 78 4f r(VarToStrDef(xO
5b60: 75 74 70 75 74 2e 67 65 74 41 74 74 72 69 62 75 utput.getAttribu
5b70: 74 65 28 27 6d 65 74 68 6f 64 27 29 2c 20 27 78 te('method'), 'x
5b80: 6d 6c 27 29 2c 20 27 68 74 6d 6c 27 29 3b 0d 0a ml'), 'html');..
5b90: 20 20 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 end;..
5ba0: 20 20 69 66 20 6e 6f 74 20 62 4d 65 74 68 6f 64 if not bMethod
5bb0: 48 54 4d 4c 20 74 68 65 6e 20 45 78 69 74 3b 0d HTML then Exit;.
5bc0: 0a 0d 0a 20 20 20 20 20 20 52 65 73 75 6c 74 20 ... Result
5bd0: 3a 3d 20 78 44 6f 63 2e 74 72 61 6e 73 66 6f 72 := xDoc.transfor
5be0: 6d 4e 6f 64 65 28 78 53 74 79 6c 65 73 68 65 65 mNode(xStyleshee
5bf0: 74 2e 64 6f 63 75 6d 65 6e 74 45 6c 65 6d 65 6e t.documentElemen
5c00: 74 29 3b 0d 0a 20 20 20 20 65 78 63 65 70 74 0d t);.. except.
5c10: 0a 20 20 20 20 20 20 6f 6e 20 45 3a 20 45 78 63 . on E: Exc
5c20: 65 70 74 69 6f 6e 20 64 6f 20 62 65 67 69 6e 0d eption do begin.
5c30: 0a 20 20 20 20 20 20 20 20 7b 2d 2d 2d 20 4d 43 . {--- MC
5c40: 4f 20 33 30 2d 30 35 2d 32 30 31 32 3a 20 49 67 O 30-05-2012: Ig
5c50: 6e 6f 72 65 20 61 6e 79 20 65 72 72 6f 72 73 3b nore any errors;
5c60: 20 77 65 20 77 65 72 65 6e 27 74 20 61 62 6c 65 we weren't able
5c70: 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20 to perform the
5c80: 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 20 2d transformation -
5c90: 2d 2d 7d 0d 0a 20 20 20 20 20 20 20 20 52 65 73 --}.. Res
5ca0: 75 6c 74 20 3a 3d 20 27 3c 68 74 6d 6c 3e 3c 74 ult := '<html><t
5cb0: 69 74 6c 65 3e 45 72 72 6f 72 20 74 72 61 6e 73 itle>Error trans
5cc0: 66 6f 72 6d 69 6e 67 20 58 4d 4c 20 74 6f 20 48 forming XML to H
5cd0: 54 4d 4c 3c 2f 74 69 74 6c 65 3e 3c 62 6f 64 79 TML</title><body
5ce0: 3e 3c 70 72 65 20 73 74 79 6c 65 3d 22 63 6f 6c ><pre style="col
5cf0: 6f 72 3a 20 72 65 64 22 3e 27 20 2b 20 53 74 72 or: red">' + Str
5d00: 69 6e 67 52 65 70 6c 61 63 65 28 45 2e 4d 65 73 ingReplace(E.Mes
5d10: 73 61 67 65 2c 20 27 3c 27 2c 20 27 26 6c 74 3b sage, '<', '<
5d20: 27 2c 20 5b 72 66 52 65 70 6c 61 63 65 41 6c 6c ', [rfReplaceAll
5d30: 5d 29 20 2b 20 27 3c 2f 70 72 65 3e 3c 2f 62 6f ]) + '</pre></bo
5d40: 64 79 3e 3c 2f 68 74 6d 6c 3e 27 3b 0d 0a 20 20 dy></html>';..
5d50: 20 20 20 20 65 6e 64 3b 0d 0a 20 20 20 20 65 6e end;.. en
5d60: 64 3b 0d 0a 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 d;.. finally..
5d70: 20 20 20 56 61 72 43 6c 65 61 72 28 78 4f 75 74 VarClear(xOut
5d80: 70 75 74 29 3b 0d 0a 20 20 20 20 56 61 72 43 6c put);.. VarCl
5d90: 65 61 72 28 78 53 74 79 6c 65 73 68 65 65 74 29 ear(xStylesheet)
5da0: 3b 0d 0a 20 20 20 20 56 61 72 43 6c 65 61 72 28 ;.. VarClear(
5db0: 78 50 49 29 3b 0d 0a 20 20 20 20 56 61 72 43 6c xPI);.. VarCl
5dc0: 65 61 72 28 78 44 6f 63 29 3b 0d 0a 20 20 65 6e ear(xDoc);.. en
5dd0: 64 3b 0d 0a 65 6e 64 20 7b 54 66 72 6d 48 54 4d d;..end {TfrmHTM
5de0: 4c 50 72 65 76 69 65 77 2e 54 72 61 6e 73 66 6f LPreview.Transfo
5df0: 72 6d 58 4d 4c 54 6f 48 54 4d 4c 7d 3b 0d 0a 0d rmXMLToHTML};...
5e00: 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .{ -------------
5e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e60: 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 72 65 --- }..procedure
5e70: 20 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 TfrmHTMLPreview
5e80: 2e 77 62 49 45 42 65 66 6f 72 65 4e 61 76 69 67 .wbIEBeforeNavig
5e90: 61 74 65 32 28 41 53 65 6e 64 65 72 3a 20 54 4f ate2(ASender: TO
5ea0: 62 6a 65 63 74 3b 20 63 6f 6e 73 74 20 70 44 69 bject; const pDi
5eb0: 73 70 3a 20 49 44 69 73 70 61 74 63 68 3b 20 63 sp: IDispatch; c
5ec0: 6f 6e 73 74 20 55 52 4c 2c 0d 0a 20 20 46 6c 61 onst URL,.. Fla
5ed0: 67 73 2c 20 54 61 72 67 65 74 46 72 61 6d 65 4e gs, TargetFrameN
5ee0: 61 6d 65 2c 20 50 6f 73 74 44 61 74 61 2c 20 48 ame, PostData, H
5ef0: 65 61 64 65 72 73 3a 20 4f 6c 65 56 61 72 69 61 eaders: OleVaria
5f00: 6e 74 3b 20 76 61 72 20 43 61 6e 63 65 6c 3a 20 nt; var Cancel:
5f10: 57 6f 72 64 42 6f 6f 6c 29 3b 0d 0a 76 61 72 0d WordBool);..var.
5f20: 0a 20 20 48 61 6e 64 6c 65 3a 20 48 57 4e 44 3b . Handle: HWND;
5f30: 0d 0a 62 65 67 69 6e 0d 0a 20 20 69 66 20 6e 6f ..begin.. if no
5f40: 74 20 53 61 6d 65 54 65 78 74 28 55 52 4c 2c 20 t SameText(URL,
5f50: 27 61 62 6f 75 74 3a 62 6c 61 6e 6b 27 29 20 61 'about:blank') a
5f60: 6e 64 20 6e 6f 74 20 53 74 61 72 74 73 54 65 78 nd not StartsTex
5f70: 74 28 27 6a 61 76 61 73 63 72 69 70 74 3a 27 2c t('javascript:',
5f80: 20 55 52 4c 29 20 74 68 65 6e 20 62 65 67 69 6e URL) then begin
5f90: 0d 0a 20 20 20 20 69 66 20 41 73 73 69 67 6e 65 .. if Assigne
5fa0: 64 28 4e 70 70 29 20 74 68 65 6e 0d 0a 20 20 20 d(Npp) then..
5fb0: 20 20 20 48 61 6e 64 6c 65 20 3a 3d 20 4e 70 70 Handle := Npp
5fc0: 2e 4e 70 70 44 61 74 61 2e 4e 70 70 48 61 6e 64 .NppData.NppHand
5fd0: 6c 65 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 le.. else..
5fe0: 20 20 20 20 48 61 6e 64 6c 65 20 3a 3d 20 30 3b Handle := 0;
5ff0: 0d 0a 20 20 20 20 53 68 65 6c 6c 45 78 65 63 75 .. ShellExecu
6000: 74 65 28 48 61 6e 64 6c 65 2c 20 6e 69 6c 2c 20 te(Handle, nil,
6010: 50 43 68 61 72 28 56 61 72 54 6f 53 74 72 28 55 PChar(VarToStr(U
6020: 52 4c 29 29 2c 20 6e 69 6c 2c 20 6e 69 6c 2c 20 RL)), nil, nil,
6030: 53 57 5f 53 48 4f 57 44 45 46 41 55 4c 54 29 3b SW_SHOWDEFAULT);
6040: 0d 0a 20 20 20 20 43 61 6e 63 65 6c 20 3a 3d 20 .. Cancel :=
6050: 54 72 75 65 3b 0d 0a 20 20 65 6e 64 3b 0d 0a 65 True;.. end;..e
6060: 6e 64 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d nd;....{ -------
6070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
60a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
60b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
60c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f --------- }..pro
60d0: 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 cedure TfrmHTMLP
60e0: 72 65 76 69 65 77 2e 77 62 49 45 44 6f 63 75 6d review.wbIEDocum
60f0: 65 6e 74 43 6f 6d 70 6c 65 74 65 28 41 53 65 6e entComplete(ASen
6100: 64 65 72 3a 20 54 4f 62 6a 65 63 74 3b 20 63 6f der: TObject; co
6110: 6e 73 74 20 70 44 69 73 70 3a 20 49 44 69 73 70 nst pDisp: IDisp
6120: 61 74 63 68 3b 0d 0a 20 20 63 6f 6e 73 74 20 55 atch;.. const U
6130: 52 4c 3a 20 4f 6c 65 56 61 72 69 61 6e 74 29 3b RL: OleVariant);
6140: 0d 0a 76 61 72 0d 0a 20 20 64 6f 63 45 6c 3a 20 ..var.. docEl:
6150: 49 48 54 4d 4c 45 6c 65 6d 65 6e 74 32 3b 0d 0a IHTMLElement2;..
6160: 62 65 67 69 6e 0d 0a 20 20 69 66 20 28 46 53 63 begin.. if (FSc
6170: 72 6f 6c 6c 54 6f 70 20 3c 3e 20 2d 31 29 20 61 rollTop <> -1) a
6180: 6e 64 20 41 73 73 69 67 6e 65 64 28 77 62 49 45 nd Assigned(wbIE
6190: 2e 44 6f 63 75 6d 65 6e 74 29 20 61 6e 64 20 41 .Document) and A
61a0: 73 73 69 67 6e 65 64 28 28 77 62 49 45 2e 44 6f ssigned((wbIE.Do
61b0: 63 75 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c 44 cument as IHTMLD
61c0: 6f 63 75 6d 65 6e 74 33 29 2e 64 6f 63 75 6d 65 ocument3).docume
61d0: 6e 74 45 6c 65 6d 65 6e 74 29 20 74 68 65 6e 20 ntElement) then
61e0: 62 65 67 69 6e 0d 0a 20 20 20 20 64 6f 63 45 6c begin.. docEl
61f0: 20 3a 3d 20 28 77 62 49 45 2e 44 6f 63 75 6d 65 := (wbIE.Docume
6200: 6e 74 20 61 73 20 49 48 54 4d 4c 44 6f 63 75 6d nt as IHTMLDocum
6210: 65 6e 74 33 29 2e 64 6f 63 75 6d 65 6e 74 45 6c ent3).documentEl
6220: 65 6d 65 6e 74 20 61 73 20 49 48 54 4d 4c 45 6c ement as IHTMLEl
6230: 65 6d 65 6e 74 32 3b 0d 0a 20 20 20 20 64 6f 63 ement2;.. doc
6240: 45 6c 2e 73 63 72 6f 6c 6c 54 6f 70 20 3a 3d 20 El.scrollTop :=
6250: 46 53 63 72 6f 6c 6c 54 6f 70 3b 0d 0a 20 20 20 FScrollTop;..
6260: 20 64 6f 63 45 6c 2e 73 63 72 6f 6c 6c 4c 65 66 docEl.scrollLef
6270: 74 20 3a 3d 20 46 53 63 72 6f 6c 6c 4c 65 66 74 t := FScrollLeft
6280: 3b 0d 0a 20 20 20 20 46 53 63 72 6f 6c 6c 54 6f ;.. FScrollTo
6290: 70 20 3a 3d 20 2d 31 3b 0d 0a 20 20 20 20 46 53 p := -1;.. FS
62a0: 63 72 6f 6c 6c 4c 65 66 74 20 3a 3d 20 2d 31 3b crollLeft := -1;
62b0: 0d 0a 20 20 65 6e 64 3b 0d 0a 65 6e 64 20 7b 54 .. end;..end {T
62c0: 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e 77 frmHTMLPreview.w
62d0: 62 49 45 44 6f 63 75 6d 65 6e 74 43 6f 6d 70 6c bIEDocumentCompl
62e0: 65 74 65 7d 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d ete};....{ -----
62f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 ----------- }..p
6350: 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 54 4d rocedure TfrmHTM
6360: 4c 50 72 65 76 69 65 77 2e 77 62 49 45 4e 65 77 LPreview.wbIENew
6370: 57 69 6e 64 6f 77 33 28 41 53 65 6e 64 65 72 3a Window3(ASender:
6380: 20 54 4f 62 6a 65 63 74 3b 20 76 61 72 20 70 70 TObject; var pp
6390: 44 69 73 70 3a 20 49 44 69 73 70 61 74 63 68 3b Disp: IDispatch;
63a0: 0d 0a 20 20 76 61 72 20 43 61 6e 63 65 6c 3a 20 .. var Cancel:
63b0: 57 6f 72 64 42 6f 6f 6c 3b 20 64 77 46 6c 61 67 WordBool; dwFlag
63c0: 73 3a 20 43 61 72 64 69 6e 61 6c 3b 20 63 6f 6e s: Cardinal; con
63d0: 73 74 20 62 73 74 72 55 72 6c 43 6f 6e 74 65 78 st bstrUrlContex
63e0: 74 2c 20 62 73 74 72 55 72 6c 3a 20 57 69 64 65 t, bstrUrl: Wide
63f0: 53 74 72 69 6e 67 29 3b 0d 0a 76 61 72 0d 0a 20 String);..var..
6400: 20 48 61 6e 64 6c 65 3a 20 48 57 4e 44 3b 0d 0a Handle: HWND;..
6410: 62 65 67 69 6e 0d 0a 20 20 69 66 20 6e 6f 74 20 begin.. if not
6420: 53 61 6d 65 54 65 78 74 28 62 73 74 72 55 72 6c SameText(bstrUrl
6430: 2c 20 27 61 62 6f 75 74 3a 62 6c 61 6e 6b 27 29 , 'about:blank')
6440: 20 61 6e 64 20 6e 6f 74 20 53 74 61 72 74 73 54 and not StartsT
6450: 65 78 74 28 27 6a 61 76 61 73 63 72 69 70 74 3a ext('javascript:
6460: 27 2c 20 62 73 74 72 55 52 4c 29 20 74 68 65 6e ', bstrURL) then
6470: 20 62 65 67 69 6e 0d 0a 20 20 20 20 69 66 20 41 begin.. if A
6480: 73 73 69 67 6e 65 64 28 4e 70 70 29 20 20 74 68 ssigned(Npp) th
6490: 65 6e 0d 0a 20 20 20 20 20 20 48 61 6e 64 6c 65 en.. Handle
64a0: 20 3a 3d 20 4e 70 70 2e 4e 70 70 44 61 74 61 2e := Npp.NppData.
64b0: 4e 70 70 48 61 6e 64 6c 65 0d 0a 20 20 20 20 65 NppHandle.. e
64c0: 6c 73 65 0d 0a 20 20 20 20 20 20 48 61 6e 64 6c lse.. Handl
64d0: 65 20 3a 3d 20 30 3b 0d 0a 20 20 20 20 53 68 65 e := 0;.. She
64e0: 6c 6c 45 78 65 63 75 74 65 28 48 61 6e 64 6c 65 llExecute(Handle
64f0: 2c 20 6e 69 6c 2c 20 50 43 68 61 72 28 62 73 74 , nil, PChar(bst
6500: 72 55 72 6c 29 2c 20 6e 69 6c 2c 20 6e 69 6c 2c rUrl), nil, nil,
6510: 20 53 57 5f 53 48 4f 57 44 45 46 41 55 4c 54 29 SW_SHOWDEFAULT)
6520: 3b 0d 0a 20 20 65 6e 64 3b 0d 0a 20 20 43 61 6e ;.. end;.. Can
6530: 63 65 6c 20 3a 3d 20 54 72 75 65 3b 0d 0a 65 6e cel := True;..en
6540: 64 3b 0d 0a 0d 0a 7b 20 2d 2d 2d 2d 2d 2d 2d 2d d;....{ --------
6550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
65a0: 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d 0a 70 72 6f 63 -------- }..proc
65b0: 65 64 75 72 65 20 54 66 72 6d 48 54 4d 4c 50 72 edure TfrmHTMLPr
65c0: 65 76 69 65 77 2e 77 62 49 45 53 74 61 74 75 73 eview.wbIEStatus
65d0: 42 61 72 28 41 53 65 6e 64 65 72 3a 20 54 4f 62 Bar(ASender: TOb
65e0: 6a 65 63 74 3b 20 53 74 61 74 75 73 42 61 72 3a ject; StatusBar:
65f0: 20 57 6f 72 64 42 6f 6f 6c 29 3b 0d 0a 62 65 67 WordBool);..beg
6600: 69 6e 0d 0a 20 20 73 62 72 49 45 2e 56 69 73 69 in.. sbrIE.Visi
6610: 62 6c 65 20 3a 3d 20 53 74 61 74 75 73 42 61 72 ble := StatusBar
6620: 3b 0d 0a 65 6e 64 3b 0d 0a 0d 0a 7b 20 2d 2d 2d ;..end;....{ ---
6630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 7d 0d ------------- }.
6690: 0a 70 72 6f 63 65 64 75 72 65 20 54 66 72 6d 48 .procedure TfrmH
66a0: 54 4d 4c 50 72 65 76 69 65 77 2e 77 62 49 45 53 TMLPreview.wbIES
66b0: 74 61 74 75 73 54 65 78 74 43 68 61 6e 67 65 28 tatusTextChange(
66c0: 41 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 ASender: TObject
66d0: 3b 20 63 6f 6e 73 74 20 54 65 78 74 3a 20 57 69 ; const Text: Wi
66e0: 64 65 53 74 72 69 6e 67 29 3b 0d 0a 62 65 67 69 deString);..begi
66f0: 6e 0d 0a 20 20 73 62 72 49 45 2e 53 69 6d 70 6c n.. sbrIE.Simpl
6700: 65 54 65 78 74 20 3a 3d 20 54 65 78 74 3b 0d 0a eText := Text;..
6710: 2f 2f 20 20 73 62 72 49 45 2e 56 69 73 69 62 6c // sbrIE.Visibl
6720: 65 20 3a 3d 20 4c 65 6e 67 74 68 28 54 65 78 74 e := Length(Text
6730: 29 20 3e 20 30 3b 0d 0a 2f 2f 20 20 69 66 20 73 ) > 0;..// if s
6740: 62 72 49 45 2e 56 69 73 69 62 6c 65 20 74 68 65 brIE.Visible the
6750: 6e 0d 0a 20 20 73 62 72 49 45 2e 49 6e 76 61 6c n.. sbrIE.Inval
6760: 69 64 61 74 65 3b 0d 0a 65 6e 64 3b 0d 0a 0d 0a idate;..end;....
6770: 7b 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d { --------------
6780: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6790: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
67a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
67b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
67c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
67d0: 2d 2d 20 7d 0d 0a 70 72 6f 63 65 64 75 72 65 20 -- }..procedure
67e0: 54 66 72 6d 48 54 4d 4c 50 72 65 76 69 65 77 2e TfrmHTMLPreview.
67f0: 77 62 49 45 54 69 74 6c 65 43 68 61 6e 67 65 28 wbIETitleChange(
6800: 41 53 65 6e 64 65 72 3a 20 54 4f 62 6a 65 63 74 ASender: TObject
6810: 3b 20 63 6f 6e 73 74 20 54 65 78 74 3a 20 57 69 ; const Text: Wi
6820: 64 65 53 74 72 69 6e 67 29 3b 0d 0a 62 65 67 69 deString);..begi
6830: 6e 0d 0a 20 20 69 6e 68 65 72 69 74 65 64 3b 0d n.. inherited;.
6840: 0a 20 20 73 65 6c 66 2e 55 70 64 61 74 65 44 69 . self.UpdateDi
6850: 73 70 6c 61 79 49 6e 66 6f 28 53 74 72 69 6e 67 splayInfo(String
6860: 52 65 70 6c 61 63 65 28 54 65 78 74 2c 20 27 61 Replace(Text, 'a
6870: 62 6f 75 74 3a 62 6c 61 6e 6b 27 2c 20 27 27 2c bout:blank', '',
6880: 20 5b 72 66 52 65 70 6c 61 63 65 41 6c 6c 5d 29 [rfReplaceAll])
6890: 29 3b 0d 0a 65 6e 64 3b 0d 0a 0d 0a 0d 0a 65 6e );..end;......en
68a0: 64 2e 0d 0a d...