Hex Artifact Content
Not logged in

Artifact e9825b329cd6315de8320c74dfff55eff1f5a2c4:


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, '<', '&lt;
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...