Browse Source

CH: Initial Release on http://luaforge.net + Added lots of new features

Jean-Francois Goulet 20 years ago
parent
commit
73397f5671

+ 2 - 2
LuaEdit/AddBreakpoint.pas

@@ -115,8 +115,8 @@ begin
   TLuaUnit(cboUnits.Items.Objects[cboUnits.ItemIndex]).pDebugInfos.lstBreakpoint.Add(pBreakpoint);
   TLuaUnit(cboUnits.Items.Objects[cboUnits.ItemIndex]).pDebugInfos.lstBreakpoint.Add(pBreakpoint);
   frmBreakpoints.RefreshBreakpointList;
   frmBreakpoints.RefreshBreakpointList;
 
 
-  if Assigned(pCurrentSynEdit) then
-    pCurrentSynEdit.Refresh;
+  if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+    TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
     
     
   ModalResult := mrOk;
   ModalResult := mrOk;
 end;
 end;

BIN
LuaEdit/Bin/HdrBld.dll


BIN
LuaEdit/Bin/LuaEdit.exe


+ 240 - 241
LuaEdit/Breakpoints.dfm

@@ -153,7 +153,7 @@ object frmBreakpoints: TfrmBreakpoints
     Left = 56
     Left = 56
     Top = 80
     Top = 80
     Bitmap = {
     Bitmap = {
-      494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C01010A000E00040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000004000000001002000000000000040
       0000000000003600000028000000400000004000000001002000000000000040
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -285,39 +285,39 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100414141004141
+      4100414141004141410041414100FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000041414100414141004141
-      4100414141004141410041414100000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0041414100FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000041414100FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0041414100000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000041414100FFFFFF00FFFFFF00FFFF
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -325,7 +325,7 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       00000000000084848400C6C6C60084848400C6C6C60084848400000000000000
       00000000000084848400C6C6C60084848400C6C6C60084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
       4100FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -333,7 +333,7 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
-      000000000000000000000000000000000000000000000000000041414100FFFF
+      000000000000000000000000000000000000FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF00FFFFFF0041414100FFFFFF004141410041414100FFFFFF004141
       FF00FFFFFF00FFFFFF0041414100FFFFFF004141410041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -341,7 +341,7 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000C6C6C60084848400C6C6C60084848400C6C6C60084848400C6C6C6000000
       0000C6C6C60084848400C6C6C60084848400C6C6C60084848400C6C6C6000000
-      000000000000000000000000000000000000000000000000000041414100FFFF
+      000000000000000000000000000000000000FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF00FFFFFF004141410041414100FFFFFF0041414100FFFFFF004141
       FF00FFFFFF00FFFFFF004141410041414100FFFFFF0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -349,7 +349,7 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
-      0000000000000000000000000000000000000000000041414100FFFFFF004141
+      000000000000000000000000000000000000FF00FF0041414100FFFFFF004141
       4100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF004141
       4100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -365,307 +365,307 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
       000084848400C6C6C60084848400C6C6C60084848400C6C6C600848484000000
-      0000000000000000000000000000000000004141410041414100000000004141
+      0000000000000000000000000000000000004141410041414100FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FFFFFF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FFFFFF004141
-      4100FFFFFF004141410041414100000000000000000000000000000000000000
+      4100FFFFFF004141410041414100FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       00000000000084848400C6C6C60084848400C6C6C60084848400000000000000
       00000000000084848400C6C6C60084848400C6C6C60084848400000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFFFF00414141004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFFFF00414141004141
-      4100FFFFFF004141410000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
-      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100000000004141
-      4100414141000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
-      4100FFFFFF0041414100FFFFFF00414141004141410000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      4100FFFFFF0041414100FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00004141410041414100FFFFFF00414141000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
+      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
+      410041414100FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000004141410041414100000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
+      4100FFFFFF0041414100FFFFFF004141410041414100FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009D4141009D4141009D4141009D41
-      41009D4141009D41410000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF004141410041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000041414100FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004141410000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF009D4141009D4141009D4141009D41
+      41009D4141009D414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000041414100FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0041414100000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000008000000000000000000042424200424242004242
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000008000FF00FF00FF00FF0042424200424242004242
       4200424242004242420042424200424242004242420042424200424242004242
       4200424242004242420042424200424242004242420042424200424242004242
       4200424242004242420042424200424242000000000000000000000000000000
       4200424242004242420042424200424242000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       410041414100414141009D9D9D0041414100FFFFFF00FFFFFF00FFFFFF00FFFF
       410041414100414141009D9D9D0041414100FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0041414100414141000000000000000000000000000000
-      000000008000FFFFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000042424200FFFFFF0042FF
+      FF00FFFFFF00FFFFFF004141410041414100FF00FF00FF00FF00FF00FF00FF00
+      FF0000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0042424200FFFFFF0042FF
       FF00FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FF
       FF00FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FF
       FF00FFFFFF0042FFFF00FFFFFF00424242000000000000000000000000000000
       FF00FFFFFF0042FFFF00FFFFFF00424242000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFFFF00FFFF
       4100FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0041414100FFFFFF000000000000000000000000000000
-      80000000800000008000FFFFFF00000000000000000000000000000000000000
-      00000000000000008000FFFFFF0000000000000000004242420042FFFF009D9D
+      FF00FFFFFF00FFFFFF0041414100FFFFFF00FF00FF00FF00FF00FF00FF000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF0000008000FFFFFF00FF00FF00FF00FF004242420042FFFF009D9D
       9D009D9D9D009D9D9D009D9D9D009D9D9D009D9D9D00FFFFFF009D9D9D009D9D
       9D009D9D9D009D9D9D009D9D9D009D9D9D009D9D9D00FFFFFF009D9D9D009D9D
       9D009D9D9D009D9D9D0042FFFF00424242000000000000000000000000000000
       9D009D9D9D009D9D9D0042FFFF00424242000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF0041414100FFFFFF004141410041414100FFFFFF0041414100FFFF
       4100FFFFFF0041414100FFFFFF004141410041414100FFFFFF0041414100FFFF
-      FF0041414100FFFFFF0041414100FFFFFF000000000000000000000000000000
-      80000000800000008000FFFFFF00000000000000000000000000000000000000
-      000000008000FFFFFF0000000000000000000000000042424200FFFFFF0042FF
+      FF0041414100FFFFFF0041414100FFFFFF00FF00FF00FF00FF00FF00FF000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0000008000FFFFFF00FF00FF00FF00FF00FF00FF0042424200FFFFFF0042FF
       FF004242420042424200FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FF
       FF004242420042424200FFFFFF0042FFFF00FFFFFF0042FFFF00FFFFFF0042FF
       FF00FFFFFF0042FFFF00FFFFFF00424242000000000000000000000000000000
       FF00FFFFFF0042FFFF00FFFFFF00424242000000000000000000000000000000
       0000000000000000800000008000000080000000800000008000000000000000
       0000000000000000800000008000000080000000800000008000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF004141410041414100FFFFFF0041414100FFFFFF0041414100FFFF
       4100FFFFFF004141410041414100FFFFFF0041414100FFFFFF0041414100FFFF
-      FF0041414100FFFFFF0041414100FFFFFF000000000000000000000000000000
-      0000000080000000800000008000FFFFFF000000000000000000000000000000
-      800000008000FFFFFF0000000000000000000000000042424200424242004242
+      FF0041414100FFFFFF0041414100FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00000080000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF000000
+      800000008000FFFFFF00FF00FF00FF00FF00FF00FF0042424200424242004242
       420042424200FFFFFF0042424200424242004242420042424200424242004242
       420042424200FFFFFF0042424200424242004242420042424200424242004242
       4200424242004242420042424200424242000000000000000000000000000000
       4200424242004242420042424200424242000000000000000000000000000000
       0000000080000000800000008000000080000000800000008000000080000000
       0000000080000000800000008000000080000000800000008000000080000000
-      0000000000000000000000000000000000000000000000000000000000004141
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF004141
       4100FFFFFF00FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFF
       4100FFFFFF00FFFFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFF
-      FF0041414100FFFFFF0041414100FFFFFF000000000000000000000000000000
-      000000000000000080000000800000008000FFFFFF0000000000000080000000
-      8000FFFFFF000000000000000000000000000000000000000000000000004242
-      4200FFFFFF004242420000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF0041414100FFFFFF0041414100FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00000080000000800000008000FFFFFF00FF00FF00000080000000
+      8000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004242
+      4200FFFFFF0042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000080000000800000008000000080000000800000008000000080000000
       0000000080000000800000008000000080000000800000008000000080000000
-      0000000000000000000000000000000000000000000041FFFF00000000004141
+      000000000000000000000000000000000000FF00FF0041FFFF00FF00FF004141
       41009D9D9D00FFFFFF0041FFFF00FFFFFF0041414100FFFFFF0041414100FFFF
       41009D9D9D00FFFFFF0041FFFF00FFFFFF0041414100FFFFFF0041414100FFFF
-      FF0041414100FFFFFF0041414100FFFFFF000000000000000000000000000000
-      000000000000000000000000800000008000000080000000800000008000FFFF
-      FF00000000000000000000000000000000004242420042424200000000004242
-      4200FFFFFF004242420000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF0041414100FFFFFF0041414100FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF000000800000008000000080000000800000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF004242420042424200FF00FF004242
+      4200FFFFFF0042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000080000000800000008000000080000000800000008000000080000000
       0000000080000000800000008000000080000000800000008000000080000000
-      000000000000000000000000000000000000000000009D9D9D00FFFFFF004141
+      000000000000000000000000000000000000FF00FF009D9D9D00FFFFFF004141
       41009D9D9D0041FFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFF
       41009D9D9D0041FFFF00FFFFFF00FFFFFF0041414100FFFFFF0041414100FFFF
-      FF004141410041414100FFFFFF00FFFFFF000000000000000000000000000000
-      0000000000000000000000000000000080000000800000008000FFFFFF000000
-      00000000000000000000000000000000000042424200FFFFFF0042424200FFFF
-      FF00424242000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF004141410041414100FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00000080000000800000008000FFFFFF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF0042424200FFFFFF0042424200FFFF
+      FF0042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000080000000800000008000000080000000800000008000000080000000
       0000000080000000800000008000000080000000800000008000000080000000
-      00000000000000000000000000000000000000000000000000000000000041FF
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF0041FF
       FF009D9D9D00FFFFFF00FFFFFF00FFFFFF00FFFFFF004141410041414100FFFF
       FF009D9D9D00FFFFFF00FFFFFF00FFFFFF00FFFFFF004141410041414100FFFF
-      FF0041414100FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
-      000000000000000000000000800000008000000080000000800000008000FFFF
-      FF000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF
-      FF00424242004242420000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      FF0041414100FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF000000800000008000000080000000800000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF0042424200FFFFFF00FFFFFF00FFFF
+      FF004242420042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000080000000800000008000000080000000800000008000000080000000
       0000000080000000800000008000000080000000800000008000000080000000
-      000000000000000000000000000000000000000000009D9D9D009D9D9D009D9D
+      000000000000000000000000000000000000FF00FF009D9D9D009D9D9D009D9D
       9D00FFFFFF0041FFFF0041FFFF00FFFFFF00FFFFFF00FFFFFF00414141004141
       9D00FFFFFF0041FFFF0041FFFF00FFFFFF00FFFFFF00FFFFFF00414141004141
-      4100FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
-      000000000000000080000000800000008000FFFFFF000000000000008000FFFF
-      FF000000000000000000000000000000000042424200FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF004242420000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
+      4100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00000080000000800000008000FFFFFF00FF00FF0000008000FFFF
+      FF00FF00FF00FF00FF00FF00FF00FF00FF0042424200FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000800000008000000080000000800000008000000000000000
       0000000000000000800000008000000080000000800000008000000000000000
-      0000000000000000000000000000000000000000000041FFFF00FFFFFF009D9D
+      000000000000000000000000000000000000FF00FF0041FFFF00FFFFFF009D9D
       9D0041FFFF00FFFFFF009D9D9D0041FFFF009D4141009D4141009D4141009D41
       9D0041FFFF00FFFFFF009D9D9D0041FFFF009D4141009D4141009D4141009D41
-      41009D4141009D4141009D4141009D4141000000000000000000000000000000
-      8000000080000000800000008000FFFFFF000000000000000000000000000000
-      800000008000FFFFFF00000000000000000042424200FFFFFF00FFFFFF00FFFF
-      FF00424242000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000CDCDCD009D9D9D0041FF
-      FF009D9D9D0041FFFF00000000009D9D9D0041FFFF009D4141009D4141009D41
-      41009D4141009D4141009D4141009D4141000000000000000000000080000000
-      80000000800000008000FFFFFF00000000000000000000000000000000000000
-      00000000800000008000FFFFFF000000000042424200FFFFFF00FFFFFF004242
-      4200000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000000000009D9D9D0041FFFF000000
-      00009D9D9D00FFFFFF0000000000000000009D9D9D0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000080000000
-      8000FFFFFF000000000000000000000000000000000000000000000000000000
-      00000000000000008000000080000000000042424200FFFFFF00424242000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000041FFFF00000000000000
-      00009D9D9D0041FFFF0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000004242420042424200000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00009D9D9D000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009D9D9D0000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000041419D009D9D9D0000000000000000000000000041414100414141009D9D
-      9D00414141004141410041414100000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009D9D9D009D9D9D00000000000000
-      0000000000000000000000000000000000000000000041414100414141004141
-      4100414141004141410041414100000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      000041419D0041419D00000000000000000041414100FFFFFF009D9D9D004141
-      9D00FFFFFF00FFFFFF0041414100000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF000000000000000000000000009D9D9D009D9D9D009D9D9D000000
-      0000000000000000000000000000000000000000000041414100FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0041414100000000000000000000000000000000000000
+      41009D4141009D4141009D4141009D414100FF00FF00FF00FF00FF00FF000000
+      8000000080000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF000000
+      800000008000FFFFFF00FF00FF00FF00FF0042424200FFFFFF00FFFFFF00FFFF
+      FF0042424200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00CDCDCD009D9D9D0041FF
+      FF009D9D9D0041FFFF00FF00FF009D9D9D0041FFFF009D4141009D4141009D41
+      41009D4141009D4141009D4141009D414100FF00FF00FF00FF00000080000000
+      80000000800000008000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF000000800000008000FFFFFF00FF00FF0042424200FFFFFF00FFFFFF004242
+      4200FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF009D9D9D0041FFFF00FF00
+      FF009D9D9D00FFFFFF00FF00FF00FF00FF009D9D9D00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000080000000
+      8000FFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000800000008000FF00FF0042424200FFFFFF0042424200FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF0041FFFF00FF00FF00FF00
+      FF009D9D9D0041FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF004242420042424200FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0041419D009D9D9D00FF00FF00FF00FF00FF00FF0041414100414141009D9D
+      9D00414141004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000000000000000000000000000000000000000
+      00000000000000000000FF00FF00FF00FF009D9D9D009D9D9D00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100414141004141
+      4100414141004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0041419D0041419D00FF00FF00FF00FF0041414100FFFFFF009D9D9D004141
+      9D00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF009D9D9D009D9D9D009D9D9D00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
-      0000000000000000000000000000000000000000000000000000000000000000
-      000041419D0041419D009D9D9D0000000000414141009D9D9D0041419D009D9D
-      9D00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
-      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000009D9D9D009D9D9D009D9D9D009D9D
-      9D000000000000000000000000000000000041414100FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0041419D0041419D009D9D9D00FF00FF00414141009D9D9D0041419D009D9D
+      9D00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D009D9D
+      9D00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000004141
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       41009D9D9D0041419D0041419D009D9D9D009D9D9D0041419D0041419D00FFFF
       41009D9D9D0041419D0041419D009D9D9D009D9D9D0041419D0041419D00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
-      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000009D9D9D009D9D9D009D9D9D004141
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D004141
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
       41004141410041414100414141004141410041414100FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000004141
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
       4100FFFFFF00CDCDCD0041419D0041419D0041419D0041419D00FFFFFF00FFFF
       4100FFFFFF00CDCDCD0041419D0041419D0041419D0041419D00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
-      000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000009D9D9D009D9D9D009D9D9D004141
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD00CDCDCD00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
       4100CDCDCD00CDCDCD00FFFFFF0041414100FFFFFF0041414100FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF00FFFFFF00414141000000000000000000000000000000
+      FF00FFFFFF00FFFFFF00FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      FF0000000000000000000000000000000000000000000000000041414100FFFF
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF004141410041419D0041419D0041419D0041414100FFFFFF004141
       FF00FFFFFF004141410041419D0041419D0041419D0041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
       0000FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
-      FF00FFFFFF00FFFFFF0000000000000000009D9D9D009D9D9D0041414100CDCD
+      FF00FFFFFF00FFFFFF0000000000FF00FF009D9D9D009D9D9D0041414100CDCD
       CD00CDCDCD00CDCDCD0041414100FFFFFF004141410041414100FFFFFF004141
       CD00CDCDCD00CDCDCD0041414100FFFFFF004141410041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF0000000000000000000000000000000000000000000000000041414100FFFF
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFF
       FF00FFFFFF0041419D0041419D0041419D0041419D009D9D9D00FFFFFF004141
       FF00FFFFFF0041419D0041419D0041419D0041419D009D9D9D00FFFFFF004141
-      4100FFFFFF0041414100FFFFFF0041414100000000000000000000000000FFFF
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF0000000000FFFF
       FF00FFFFFF000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
       FF00FFFFFF000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000000000009D9D9D009D9D9D0041414100CDCD
+      FF0000000000FFFFFF0000000000FF00FF009D9D9D009D9D9D0041414100CDCD
       CD00CDCDCD00CDCDCD004141410041414100FFFFFF0041414100FFFFFF004141
       CD00CDCDCD00CDCDCD004141410041414100FFFFFF0041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
-      FF00000000000000000000000000000000000000000041414100FFFFFF004141
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF0041414100FFFFFF004141
       9D0041419D0041419D009D9D9D00FFFFFF0041419D0041419D009D9D9D004141
       9D0041419D0041419D009D9D9D00FFFFFF0041419D0041419D009D9D9D004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF0000000000000000009D9D9D0041414100CDCDCD004141
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00000000000000
+      000000000000FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF0000000000FFFFFF0000000000FF00FF009D9D9D0041414100CDCDCD004141
       4100CDCDCD00CDCDCD00CDCDCD00CDCDCD00CDCDCD0041414100FFFFFF004141
       4100CDCDCD00CDCDCD00CDCDCD00CDCDCD00CDCDCD0041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
-      00000000000000000000000000000000000041414100FFFFFF00414141009D9D
+      000000000000FF00FF00FF00FF00FF00FF0041414100FFFFFF00414141009D9D
       9D00FFFFFF009D9D9D00FFFFFF0041414100FFFFFF0041419D0041419D009D9D
       9D00FFFFFF009D9D9D00FFFFFF0041414100FFFFFF0041419D0041419D009D9D
-      9D00FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF00000000000000000041414100CDCDCD00414141004141
+      9D00FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF0000000000FFFFFF0000000000FF00FF0041414100CDCDCD00414141004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
-      4100FFFFFF0041414100FFFFFF00414141000000000000000000000000000000
+      4100FFFFFF0041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
-      0000000000000000000000000000000000004141410041414100000000004141
+      000000000000FF00FF00FF00FF00FF00FF004141410041414100FF00FF004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF004141410041419D004141
       4100FFFFFF0041414100FFFFFF0041414100FFFFFF004141410041419D004141
-      9D009D9D9D004141410041414100000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF0000000000FFFFFF00000000000000000041414100414141009D9D9D004141
+      9D009D9D9D004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF0000000000FFFFFF0000000000FF00FF0041414100414141009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD0041414100FFFFFF004141
-      4100FFFFFF004141410041414100000000000000000000000000000000000000
+      4100FFFFFF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000004141
-      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100000000004141
-      4100414141004141410000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF00000000000000000000000000000000009D9D9D009D9D9D009D9D9D004141
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
+      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
+      41004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF000000000000000000FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00CDCDCD00414141004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00CDCDCD00414141004141
-      4100FFFFFF004141410000000000000000000000000000000000000000000000
-      0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
-      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100000000004141
-      4100414141000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFF
-      FF00000000000000000000000000000000009D9D9D009D9D9D009D9D9D004141
+      4100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF00000000000000000000FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
+      4100FFFFFF0041414100FFFFFF0041414100FFFFFF0041414100FF00FF004141
+      410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FFFFFF0000000000FFFFFF0000000000FFFF
+      FF0000000000FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00414141009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100CDCDCD00414141009D9D9D004141
-      4100414141000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000004141
-      4100FFFFFF0041414100FFFFFF00414141004141410000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000FFFFFF00000000000000
-      0000000000000000000000000000000000009D9D9D009D9D9D009D9D9D004141
+      410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000000000000000000000000000000000000000000000000000FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF004141
+      4100FFFFFF0041414100FFFFFF004141410041414100FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF000000000000000000FFFFFF00000000000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D004141
       4100CDCDCD0041414100CDCDCD0041414100414141009D9D9D009D9D9D009D9D
       4100CDCDCD0041414100CDCDCD0041414100414141009D9D9D009D9D9D009D9D
-      9D009D9D9D009D9D9D0000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00004141410041414100FFFFFF00414141000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009D9D9D009D9D9D009D9D9D009D9D
+      9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF004141410041414100FFFFFF0041414100FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D009D9D
       9D004141410041414100CDCDCD00414141009D9D9D009D9D9D009D9D9D009D9D
       9D004141410041414100CDCDCD00414141009D9D9D009D9D9D009D9D9D009D9D
-      9D009D9D9D009D9D9D009D9D9D00000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000004141410041414100000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000009D9D9D009D9D9D009D9D9D009D9D
+      9D009D9D9D009D9D9D009D9D9D00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF004141410041414100FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D0041414100414141009D9D9D009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D0041414100414141009D9D9D009D9D9D009D9D9D009D9D9D009D9D
       9D009D9D9D009D9D9D009D9D9D009D9D9D00424D3E000000000000003E000000
       9D009D9D9D009D9D9D009D9D9D009D9D9D00424D3E000000000000003E000000
       2800000040000000400000000100010000000000000200000000000000000000
       2800000040000000400000000100010000000000000200000000000000000000
@@ -673,20 +673,19 @@ object frmBreakpoints: TfrmBreakpoints
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000FFFFFFFF00000000FFFFFF8100000000
-      FFFFFF8100000000FFFFFF0000000000F83FE00000000000F01FE00000000000
-      E00FC00000000000E00FC00000000000E00F800000000000E00F000000000000
-      E00F200100000000F01FE00300000000F83FE02700000000FFFFE07F00000000
-      FFFFF0FF00000000FFFFF9FF00000000FF03FFFFFFFFFFFFFF03FFFFFFFFFFFF
-      FE01FFFD8000FFFFE000F3FF8000FFFFE000E1F98000F83FE000E1F38000F01F
-      E000F0E38000E00FE000F847E3FFE00FA000FC0F23FFE00F8000FE1F07FFE00F
-      E000FC0F03FFE00F8000F84F03FFF01F8000E0E307FFF83F8200C1F10FFFFFFF
-      937FC7F91FFFFFFFB3FFFFFF3FFFFFFFFFFFF7FFFFFF7FFFFFFFF381FC033F81
-      E007F301FC031F81E007F100F8010F00E007E000F0010000E007E000F0010000
-      E007C000E0010000E007C000C0010000E0078000C4010000E0070000FC010000
-      E0072001FC010001E00FE023FC030003E01FE027FC070007E03FE07FFE0F0003
-      FFFFF0FFFF3F0001FFFFF9FFFFFF000000000000000000000000000000000000
-      000000000000}
+      00000000000000000000000000000000FFFF000000000000FFFF000000000000
+      FFFF000000000000FFFF000000000000F83F000000000000F01F000000000000
+      E00F000000000000E00F000000000000E00F000000000000E00F000000000000
+      E00F000000000000F01F000000000000F83F000000000000FFFF000000000000
+      FFFF000000000000FFFF000000000000000000000000FFFF000000000000FFFF
+      000000000000FFFF000000000000FFFF000000000000F83F000000000000F01F
+      000000000000E00F000000000000E00F000000000000E00F000000000000E00F
+      000000000000E00F000000000000F01F000000000000F83F000000000000FFFF
+      000000000000FFFF000000000000FFFF00000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000}
   end
   end
   object popmBreakpoints: TPopupMenu
   object popmBreakpoints: TPopupMenu
     OnPopup = popmBreakpointsPopup
     OnPopup = popmBreakpointsPopup

+ 13 - 13
LuaEdit/Breakpoints.pas

@@ -144,7 +144,7 @@ begin
     end
     end
     else
     else
     begin
     begin
-      frmMain.GetAssociatedTab(TLuaUnit(lvwBreakpoints.Selected.Data)).Selected := True;
+      frmMain.jvUnitBar.SelectedTab := frmMain.GetAssociatedTab(TLuaUnit(lvwBreakpoints.Selected.Data));
     end;
     end;
 
 
     TLuaUnit(lvwBreakpoints.Selected.Data).synUnit.GotoLineAndCenter(StrToInt(lvwBreakpoints.Selected.SubItems.Strings[2]));
     TLuaUnit(lvwBreakpoints.Selected.Data).synUnit.GotoLineAndCenter(StrToInt(lvwBreakpoints.Selected.SubItems.Strings[2]));
@@ -210,8 +210,8 @@ begin
           Item.ImageIndex := 8;
           Item.ImageIndex := 8;
         end;
         end;
 
 
-        if Assigned(pCurrentSynEdit) then
-          pCurrentSynEdit.Refresh;
+        if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+          TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
       end;
       end;
     end;
     end;
   end;
   end;
@@ -225,8 +225,8 @@ begin
     lvwBreakpoints.Selected.Delete;
     lvwBreakpoints.Selected.Delete;
   end;
   end;
 
 
-  if Assigned(pCurrentSynEdit) then
-    pCurrentSynEdit.Refresh;
+  if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+    TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
 end;
 end;
 
 
 procedure TfrmBreakpoints.tbtnToggleClick(Sender: TObject);
 procedure TfrmBreakpoints.tbtnToggleClick(Sender: TObject);
@@ -247,8 +247,8 @@ begin
     end;
     end;
   end;
   end;
 
 
-  if Assigned(pCurrentSynEdit) then
-    pCurrentSynEdit.Refresh;
+  if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+    TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
 end;
 end;
 
 
 procedure TfrmBreakpoints.lvwBreakpointsDblClick(Sender: TObject);
 procedure TfrmBreakpoints.lvwBreakpointsDblClick(Sender: TObject);
@@ -265,8 +265,8 @@ begin
     lvwBreakpoints.Items[x].Checked := False;
     lvwBreakpoints.Items[x].Checked := False;
   end;
   end;
 
 
-  if Assigned(pCurrentSynEdit) then
-    pCurrentSynEdit.Refresh;
+  if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+    TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
 end;
 end;
 
 
 procedure TfrmBreakpoints.tbtnEnableAllBreakpointsClick(Sender: TObject);
 procedure TfrmBreakpoints.tbtnEnableAllBreakpointsClick(Sender: TObject);
@@ -278,8 +278,8 @@ begin
     lvwBreakpoints.Items[x].Checked := True;
     lvwBreakpoints.Items[x].Checked := True;
   end;
   end;
 
 
-  if Assigned(pCurrentSynEdit) then
-    pCurrentSynEdit.Refresh;
+  if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+    TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
 end;
 end;
 
 
 procedure TfrmBreakpoints.tbtnAllRemoveClick(Sender: TObject);
 procedure TfrmBreakpoints.tbtnAllRemoveClick(Sender: TObject);
@@ -292,8 +292,8 @@ begin
       lvwBreakpoints.Items[0].Delete;
       lvwBreakpoints.Items[0].Delete;
     end;
     end;
 
 
-    if Assigned(pCurrentSynEdit) then
-      pCurrentSynEdit.Refresh;
+    if Assigned(frmMain.jvUnitBar.SelectedTab.Data) then
+      TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
   end;
   end;
 end;
 end;
 
 

+ 12 - 4
LuaEdit/EditorSettings.dfm

@@ -120,7 +120,7 @@ object frmEditorSettings: TfrmEditorSettings
       Top = 0
       Top = 0
       Width = 492
       Width = 492
       Height = 375
       Height = 375
-      ActivePage = TabSheet1
+      ActivePage = stabGeneral
       Align = alClient
       Align = alClient
       TabOrder = 0
       TabOrder = 0
       object stabGeneral: TTabSheet
       object stabGeneral: TTabSheet
@@ -294,9 +294,9 @@ object frmEditorSettings: TfrmEditorSettings
             TabOrder = 4
             TabOrder = 4
           end
           end
           object chkSaveBreakpoints: TCheckBox
           object chkSaveBreakpoints: TCheckBox
-            Left = 16
-            Top = 48
-            Width = 217
+            Left = 272
+            Top = 72
+            Width = 161
             Height = 17
             Height = 17
             Caption = 'Save Breakpoints'
             Caption = 'Save Breakpoints'
             TabOrder = 1
             TabOrder = 1
@@ -309,6 +309,14 @@ object frmEditorSettings: TfrmEditorSettings
             Caption = 'Show Extended Save Dialog on Exit'
             Caption = 'Show Extended Save Dialog on Exit'
             TabOrder = 2
             TabOrder = 2
           end
           end
+          object chkKeepReportOpened: TCheckBox
+            Left = 16
+            Top = 48
+            Width = 225
+            Height = 17
+            Caption = 'Keep Find in Files Report Opened'
+            TabOrder = 5
+          end
         end
         end
       end
       end
       object TabSheet1: TTabSheet
       object TabSheet1: TTabSheet

+ 105 - 97
LuaEdit/EditorSettings.pas

@@ -73,6 +73,7 @@ type
     txtLibraries: TEdit;
     txtLibraries: TEdit;
     Label10: TLabel;
     Label10: TLabel;
     btnBrowseLibraries: TButton;
     btnBrowseLibraries: TButton;
+    chkKeepReportOpened: TCheckBox;
     procedure cboFontsMeasureItem(Control: TWinControl; Index: Integer;  var Height: Integer);
     procedure cboFontsMeasureItem(Control: TWinControl; Index: Integer;  var Height: Integer);
     procedure cboFontsDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
     procedure cboFontsDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
@@ -82,7 +83,6 @@ type
     procedure txtUndoLimitKeyPress(Sender: TObject; var Key: Char);
     procedure txtUndoLimitKeyPress(Sender: TObject; var Key: Char);
     procedure txtTabWidthKeyPress(Sender: TObject; var Key: Char);
     procedure txtTabWidthKeyPress(Sender: TObject; var Key: Char);
     procedure txtGutterWidthKeyPress(Sender: TObject; var Key: Char);
     procedure txtGutterWidthKeyPress(Sender: TObject; var Key: Char);
-    procedure WriteEditorSettings;
     procedure btnOKClick(Sender: TObject);
     procedure btnOKClick(Sender: TObject);
     procedure chkShowGutterClick(Sender: TObject);
     procedure chkShowGutterClick(Sender: TObject);
     procedure lstElementClick(Sender: TObject);
     procedure lstElementClick(Sender: TObject);
@@ -95,8 +95,7 @@ type
     procedure FormDestroy(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure synEditSpecialLineColors(Sender: TObject; Line: Integer; var Special: Boolean; var FG, BG: TColor);
     procedure synEditSpecialLineColors(Sender: TObject; Line: Integer; var Special: Boolean; var FG, BG: TColor);
     procedure chkFileAssociateClick(Sender: TObject);
     procedure chkFileAssociateClick(Sender: TObject);
-    procedure cboFontSizeMeasureItem(Control: TWinControl; Index: Integer;
-      var Height: Integer);
+    procedure cboFontSizeMeasureItem(Control: TWinControl; Index: Integer; var Height: Integer);
     procedure btnBrowseLibrariesClick(Sender: TObject);
     procedure btnBrowseLibrariesClick(Sender: TObject);
   private
   private
     { Private declarations }
     { Private declarations }
@@ -104,6 +103,8 @@ type
     { Public declarations }
     { Public declarations }
     procedure UMMeasureFonts(var msg: TMessage); message UM_MEASUREFONTS;
     procedure UMMeasureFonts(var msg: TMessage); message UM_MEASUREFONTS;
     procedure NotifyRestart(Notify: Boolean);
     procedure NotifyRestart(Notify: Boolean);
+    procedure LoadEditorSettings;
+    procedure WriteEditorSettings;
   end;
   end;
 
 
 var
 var
@@ -343,6 +344,7 @@ begin
   pIniFile.WriteBool('General', 'SaveUnitsInc', chkSaveUnitsInc.Checked);
   pIniFile.WriteBool('General', 'SaveUnitsInc', chkSaveUnitsInc.Checked);
   pIniFile.WriteBool('General', 'AssociateFiles', chkFileAssociate.Checked);
   pIniFile.WriteBool('General', 'AssociateFiles', chkFileAssociate.Checked);
   pIniFile.WriteBool('General', 'ShowExSaveDlg', chkShowExSaveDlg.Checked);
   pIniFile.WriteBool('General', 'ShowExSaveDlg', chkShowExSaveDlg.Checked);
+  pIniFile.WriteBool('General', 'KeepSIFWindowOpened', chkKeepReportOpened.Checked);
 
 
   if AssociateFiles <> chkFileAssociate.Checked then
   if AssociateFiles <> chkFileAssociate.Checked then
   begin
   begin
@@ -410,6 +412,105 @@ begin
   Screen.Cursor := crDefault;
   Screen.Cursor := crDefault;
 end;
 end;
 
 
+procedure TfrmEditorSettings.LoadEditorSettings;
+begin
+  lstEditorColorsTemp.Assign(EditorColors);
+  Options := EditorOptions;
+
+  if eoAutoIndent in Options then
+    chkAutoIndent.Checked := True
+  else
+    chkAutoIndent.Checked := False;
+
+  if eoGroupUndo in Options then
+    chkGroupUndo.Checked := True
+  else
+    chkGroupUndo.Checked := False;
+
+  if eoTabIndent in Options then
+    chkTabIndent.Checked := True
+  else
+    chkTabIndent.Checked := False;
+
+  if eoSmartTabs in Options then
+    chkSmartTab.Checked := True
+  else
+    chkSmartTab.Checked := False;
+
+  if eoRightMouseMovesCursor in Options then
+    chkRightMouseMovesCursor.Checked := True
+  else
+    chkRightMouseMovesCursor.Checked := False;
+
+  if eoEnhanceHomeKey in Options then
+    chkEHomeKey.Checked := True
+  else
+    chkEHomeKey.Checked := False;
+
+  if eoTabsToSpaces in Options then
+    chkTabsToSpaces.Checked := True
+  else
+    chkTabsToSpaces.Checked := False;
+
+  if eoHideShowScrollbars in Options then
+    chkHideScrollBars.Checked := True
+  else
+    chkHideScrollBars.Checked := False;
+
+  if eoScrollPastEof in Options then
+    chkScrollPastEOF.Checked := True
+  else
+    chkScrollPastEOF.Checked := False;
+
+  if eoScrollPastEol in Options then
+    chkScrollPastEOL.Checked := True
+  else
+    chkScrollPastEOL.Checked := False;
+
+  if eoKeepCaretX in Options then
+    chkKeepCaretX.Checked := True
+  else
+    chkKeepCaretX.Checked := False;
+
+  if eoTrimTrailingSpaces in Options then
+    chkTrailBlanks.Checked := True
+  else
+    chkTrailBlanks.Checked := False;
+
+  chkFileAssociate.Checked := AssociateFiles;
+  chkSaveProjectsInc.Checked := SaveProjectsInc;
+  chkSaveUnitsInc.Checked := SaveUnitsInc;
+  chkShowExSaveDlg.Checked := ShowExSaveDlg;
+  chkSaveBreakpoints.Checked := SaveBreakpoints;
+  chkKeepReportOpened.Checked := KeepSIFWindowOpened;
+  txtUndoLimit.Text := IntToStr(Main.UndoLimit);
+  txtTabWidth.Text := IntToStr(Main.TabWidth);
+  txtLibraries.Text := LibrariesSearchPaths.CommaText;
+  chkShowGutter.Checked := Main.ShowGutter;
+  chkShowLineNumbers.Checked := Main.ShowLineNumbers;
+  chkLeadingZeros.Checked := Main.LeadingZeros;
+  txtGutterWidth.Text := IntToStr(Main.GutterWidth);
+  cboGutterColor.Selected := StringToColor(Main.GutterColor);
+  cboFonts.ItemIndex := cboFonts.Items.IndexOf(Main.FontName);
+  cboFontSize.ItemIndex := cboFontSize.Items.IndexOf(IntToStr(Main.FontSize));
+
+  lstElement.Items.Clear;
+  lstElement.Items.AddObject('Background', lstEditorColorsTemp.Items[0]);
+  lstElement.Items.AddObject('Comment', lstEditorColorsTemp.Items[1]);
+  lstElement.Items.AddObject('Error Line', lstEditorColorsTemp.Items[2]);
+  lstElement.Items.AddObject('Execution Line', lstEditorColorsTemp.Items[3]);
+  lstElement.Items.AddObject('Identifier', lstEditorColorsTemp.Items[4]);
+  lstElement.Items.AddObject('Numbers', lstEditorColorsTemp.Items[5]);
+  lstElement.Items.AddObject('Reserved Words', lstEditorColorsTemp.Items[6]);
+  lstElement.Items.AddObject('Selection', lstEditorColorsTemp.Items[7]);
+  lstElement.Items.AddObject('Strings', lstEditorColorsTemp.Items[8]);
+  lstElement.Items.AddObject('Valid Breakpoint', lstEditorColorsTemp.Items[9]);
+
+  frmMain.ApplyValuesToEditor(synSample, lstEditorColorsTemp);
+  lstElement.ItemIndex := 0;
+  lstElementClick(lstElement);
+end;
+
 procedure TfrmEditorSettings.btnOKClick(Sender: TObject);
 procedure TfrmEditorSettings.btnOKClick(Sender: TObject);
 begin
 begin
   ModalResult := mrNone;
   ModalResult := mrNone;
@@ -529,100 +630,7 @@ procedure TfrmEditorSettings.FormShow(Sender: TObject);
 begin
 begin
   pgcDebuggerSettings.ActivePageIndex := 0;
   pgcDebuggerSettings.ActivePageIndex := 0;
   lstEditorColorsTemp.Clear;
   lstEditorColorsTemp.Clear;
-  lstEditorColorsTemp.Assign(Main.EditorColors);
-  Options := Main.EditorOptions;
-
-  if eoAutoIndent in Options then
-    chkAutoIndent.Checked := True
-  else
-    chkAutoIndent.Checked := False;
-
-  if eoGroupUndo in Options then
-    chkGroupUndo.Checked := True
-  else
-    chkGroupUndo.Checked := False;
-
-  if eoTabIndent in Options then
-    chkTabIndent.Checked := True
-  else
-    chkTabIndent.Checked := False;
-
-  if eoSmartTabs in Options then
-    chkSmartTab.Checked := True
-  else
-    chkSmartTab.Checked := False;
-
-  if eoRightMouseMovesCursor in Options then
-    chkRightMouseMovesCursor.Checked := True
-  else
-    chkRightMouseMovesCursor.Checked := False;
-
-  if eoEnhanceHomeKey in Options then
-    chkEHomeKey.Checked := True
-  else
-    chkEHomeKey.Checked := False;
-
-  if eoTabsToSpaces in Options then
-    chkTabsToSpaces.Checked := True
-  else
-    chkTabsToSpaces.Checked := False;
-
-  if eoHideShowScrollbars in Options then
-    chkHideScrollBars.Checked := True
-  else
-    chkHideScrollBars.Checked := False;
-
-  if eoScrollPastEof in Options then
-    chkScrollPastEOF.Checked := True
-  else
-    chkScrollPastEOF.Checked := False;
-
-  if eoScrollPastEol in Options then
-    chkScrollPastEOL.Checked := True
-  else
-    chkScrollPastEOL.Checked := False;
-
-  if eoKeepCaretX in Options then
-    chkKeepCaretX.Checked := True
-  else
-    chkKeepCaretX.Checked := False;
-
-  if eoTrimTrailingSpaces in Options then
-    chkTrailBlanks.Checked := True
-  else
-    chkTrailBlanks.Checked := False;
-
-  chkFileAssociate.Checked := AssociateFiles;
-  chkSaveProjectsInc.Checked := SaveProjectsInc;
-  chkSaveUnitsInc.Checked := SaveUnitsInc;
-  chkShowExSaveDlg.Checked := ShowExSaveDlg;
-  chkSaveBreakpoints.Checked := SaveBreakpoints;
-  txtUndoLimit.Text := IntToStr(Main.UndoLimit);
-  txtTabWidth.Text := IntToStr(Main.TabWidth);
-  txtLibraries.Text := LibrariesSearchPaths.CommaText;
-  chkShowGutter.Checked := Main.ShowGutter;
-  chkShowLineNumbers.Checked := Main.ShowLineNumbers;
-  chkLeadingZeros.Checked := Main.LeadingZeros;
-  txtGutterWidth.Text := IntToStr(Main.GutterWidth);
-  cboGutterColor.Selected := StringToColor(Main.GutterColor);
-  cboFonts.ItemIndex := cboFonts.Items.IndexOf(Main.FontName);
-  cboFontSize.ItemIndex := cboFontSize.Items.IndexOf(IntToStr(Main.FontSize));
-
-  lstElement.Items.Clear;
-  lstElement.Items.AddObject('Background', lstEditorColorsTemp.Items[0]);
-  lstElement.Items.AddObject('Comment', lstEditorColorsTemp.Items[1]);
-  lstElement.Items.AddObject('Error Line', lstEditorColorsTemp.Items[2]);
-  lstElement.Items.AddObject('Execution Line', lstEditorColorsTemp.Items[3]);
-  lstElement.Items.AddObject('Identifier', lstEditorColorsTemp.Items[4]);
-  lstElement.Items.AddObject('Numbers', lstEditorColorsTemp.Items[5]);
-  lstElement.Items.AddObject('Reserved Words', lstEditorColorsTemp.Items[6]);
-  lstElement.Items.AddObject('Selection', lstEditorColorsTemp.Items[7]);
-  lstElement.Items.AddObject('Strings', lstEditorColorsTemp.Items[8]);
-  lstElement.Items.AddObject('Valid Breakpoint', lstEditorColorsTemp.Items[9]);
-
-  frmMain.ApplyValuesToEditor(synSample, lstEditorColorsTemp);
-  lstElement.ItemIndex := 0;
-  lstElementClick(lstElement);
+  LoadEditorSettings;
 
 
   // Hide notification
   // Hide notification
   NotifyRestart(False);
   NotifyRestart(False);

+ 217 - 0
LuaEdit/FindInFiles.dfm

@@ -0,0 +1,217 @@
+object frmFindInFiles: TfrmFindInFiles
+  Left = 485
+  Top = 245
+  BorderStyle = bsSingle
+  Caption = 'Find Text'
+  ClientHeight = 313
+  ClientWidth = 336
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  Icon.Data = {
+    0000010001001010000001001800680300001600000028000000100000002000
+    0000010018000000000040030000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    C6C6C6000000000000000000000000000000000000000000C6C6C60000000000
+    0000000000000000000000000000000000000000000084848400000000000000
+    0000848484000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    00000000000000000000000000000000C6C6C6000000000000000000000000C6
+    C6C6000000000000000000000000000000000000000000000000000000000000
+    C6C6C6000000000000000000000000C6C6C60000000000000000000000008484
+    8400000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000C6C6C600FFFF00000000FFFF000000
+    0000000000000000000000008484840000000000000000000000000000000000
+    0000FFFF00000000FFFFC6C6C600FFFFC6C6C600000000000000FFFF00000000
+    0000000000000000000000000000000000C6C6C600FFFFC6C6C600FFFF840000
+    00FFFF000000000000C6C6C60000000000000000000000000000000000000000
+    0000FFFFC6C6C600FFFF84000000FFFFC6C6C600000000000000FFFF00000000
+    0000000000000000000000000000000000C6C6C600FFFF84000000FFFFC6C6C6
+    00FFFFC6C6C600FFFFC6C6C60000000000000000000000000000000000000000
+    0000FFFFC6C6C600FFFFC6C6C600FFFFC6C6C600FFFFC6C6C600FFFF00000000
+    0000000000000000000000000000000000C6C6C600FFFF848484000000000000
+    0000000000000000000000008484840000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    000000000000000000000000000000000000000000000000000000000000F8F8
+    0000F8F80000F8700000F8000000F8000000F800000000000000000000000013
+    00000013000000130000001F0000001F0000001F00008FFF0000FFFF0000}
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 8
+    Top = 12
+    Width = 49
+    Height = 13
+    Caption = '&Find what:'
+  end
+  object cboSearchInFilesText: TComboBox
+    Left = 96
+    Top = 8
+    Width = 233
+    Height = 21
+    ItemHeight = 13
+    TabOrder = 0
+  end
+  object gbSearchOptions: TGroupBox
+    Left = 8
+    Top = 40
+    Width = 154
+    Height = 89
+    Caption = 'Options'
+    TabOrder = 1
+    object chkSearchCaseSensitive: TCheckBox
+      Left = 8
+      Top = 17
+      Width = 140
+      Height = 17
+      Caption = 'C&ase sensitivity'
+      TabOrder = 0
+    end
+    object chkSearchWholeWords: TCheckBox
+      Left = 8
+      Top = 39
+      Width = 140
+      Height = 17
+      Caption = '&Whole words only'
+      TabOrder = 1
+    end
+    object chkRegularExpression: TCheckBox
+      Left = 8
+      Top = 62
+      Width = 140
+      Height = 17
+      Caption = '&Regular expression'
+      TabOrder = 2
+    end
+  end
+  object fraDirectory: TGroupBox
+    Left = 8
+    Top = 136
+    Width = 321
+    Height = 81
+    Caption = 'Directory Options'
+    TabOrder = 2
+    object Label2: TLabel
+      Left = 8
+      Top = 32
+      Width = 45
+      Height = 13
+      Caption = 'Dir&ectory:'
+    end
+    object jvdirDirectory: TJvDirectoryEdit
+      Left = 64
+      Top = 28
+      Width = 249
+      Height = 21
+      DialogKind = dkWin32
+      DialogText = 'Select a Directory'
+      ButtonWidth = 20
+      TabOrder = 0
+      Text = 'C:\'
+    end
+    object chkIncludeSubdir: TCheckBox
+      Left = 64
+      Top = 56
+      Width = 153
+      Height = 17
+      Caption = 'Include s&ubdirectories'
+      TabOrder = 1
+    end
+  end
+  object optOutput: TRadioGroup
+    Left = 8
+    Top = 224
+    Width = 321
+    Height = 49
+    Caption = 'Output'
+    Columns = 2
+    ItemIndex = 0
+    Items.Strings = (
+      'Find Output 1'
+      'Find Output 2')
+    TabOrder = 3
+  end
+  object btnOK: TButton
+    Left = 170
+    Top = 283
+    Width = 75
+    Height = 23
+    Caption = 'OK'
+    Default = True
+    TabOrder = 4
+    OnClick = btnOKClick
+  end
+  object btnCancel: TButton
+    Left = 249
+    Top = 283
+    Width = 75
+    Height = 23
+    Cancel = True
+    Caption = 'Cancel'
+    TabOrder = 5
+    OnClick = btnCancelClick
+  end
+  object fraWhere: TGroupBox
+    Left = 168
+    Top = 40
+    Width = 161
+    Height = 89
+    Caption = 'Where'
+    TabOrder = 6
+    object jvoptFilesInDir: TJvRadioButton
+      Left = 8
+      Top = 64
+      Width = 107
+      Height = 17
+      Alignment = taLeftJustify
+      Caption = 'All files in directory'
+      TabOrder = 0
+      HotTrackFont.Charset = DEFAULT_CHARSET
+      HotTrackFont.Color = clWindowText
+      HotTrackFont.Height = -11
+      HotTrackFont.Name = 'MS Sans Serif'
+      HotTrackFont.Style = []
+      LinkedControls = <>
+    end
+    object jvoptActiveProject: TJvRadioButton
+      Left = 8
+      Top = 16
+      Width = 131
+      Height = 17
+      Alignment = taLeftJustify
+      Caption = 'All files in active project'
+      Checked = True
+      TabOrder = 1
+      TabStop = True
+      HotTrackFont.Charset = DEFAULT_CHARSET
+      HotTrackFont.Color = clWindowText
+      HotTrackFont.Height = -11
+      HotTrackFont.Name = 'MS Sans Serif'
+      HotTrackFont.Style = []
+      LinkedControls = <>
+    end
+    object jvoptOpenFiles: TJvRadioButton
+      Left = 8
+      Top = 40
+      Width = 80
+      Height = 17
+      Alignment = taLeftJustify
+      Caption = 'All open files'
+      TabOrder = 2
+      HotTrackFont.Charset = DEFAULT_CHARSET
+      HotTrackFont.Color = clWindowText
+      HotTrackFont.Height = -11
+      HotTrackFont.Name = 'MS Sans Serif'
+      HotTrackFont.Style = []
+      LinkedControls = <>
+    end
+  end
+end

+ 149 - 0
LuaEdit/FindInFiles.pas

@@ -0,0 +1,149 @@
+unit FindInFiles;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, Mask, JvExMask, JvToolEdit, ExtCtrls, JvExStdCtrls,
+  JvRadioButton;
+
+type
+  TfrmFindInFiles = class(TForm)
+    cboSearchInFilesText: TComboBox;
+    Label1: TLabel;
+    gbSearchOptions: TGroupBox;
+    chkSearchCaseSensitive: TCheckBox;
+    chkSearchWholeWords: TCheckBox;
+    chkRegularExpression: TCheckBox;
+    fraDirectory: TGroupBox;
+    jvdirDirectory: TJvDirectoryEdit;
+    Label2: TLabel;
+    optOutput: TRadioGroup;
+    btnOK: TButton;
+    btnCancel: TButton;
+    chkIncludeSubdir: TCheckBox;
+    fraWhere: TGroupBox;
+    jvoptFilesInDir: TJvRadioButton;
+    jvoptActiveProject: TJvRadioButton;
+    jvoptOpenFiles: TJvRadioButton;
+    procedure btnOKClick(Sender: TObject);
+    procedure optWhereClick(Sender: TObject);
+    procedure btnCancelClick(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    SearchText: String;
+    SearchDirectory: String;
+    function IsCaseSensitive: Boolean;
+    function IsWholeWordOnly: Boolean;
+    function IsResgularExpression: Boolean;
+    function IsSubDir: Boolean;
+    function GetSearchMode: Integer;
+    procedure SetSearchMode(Index: Integer);
+    function GetOutput: Integer;
+  end;
+
+var
+  frmFindInFiles: TfrmFindInFiles;
+
+implementation
+
+uses Main;
+
+{$R *.dfm}
+
+procedure TfrmFindInFiles.btnOKClick(Sender: TObject);
+begin
+  if cboSearchInFilesText.Text <> '' then
+  begin
+    SearchText := cboSearchInFilesText.Text;
+    SearchDirectory := jvdirDirectory.Text;
+    Self.Close;
+  end
+  else
+  begin
+    Application.MessageBox('The search string cannot be blank.', 'LuaEdit', MB_OK+MB_ICONERROR);
+  end;
+end;
+
+procedure TfrmFindInFiles.btnCancelClick(Sender: TObject);
+begin
+  SearchText := '';
+  SearchDirectory := '';
+  Self.Close;
+end;
+
+procedure TfrmFindInFiles.optWhereClick(Sender: TObject);
+begin
+  fraDirectory.Enabled := (GetSearchMode = 2);
+  jvdirDirectory.Enabled := (GetSearchMode = 2);
+  chkIncludeSubdir.Enabled := (GetSearchMode = 2);
+end;
+
+function TfrmFindInFiles.IsCaseSensitive: Boolean;
+begin
+  Result := chkSearchCaseSensitive.Checked;
+end;
+
+function TfrmFindInFiles.IsWholeWordOnly: Boolean;
+begin
+  Result := chkSearchWholeWords.Checked;
+end;
+
+function TfrmFindInFiles.IsResgularExpression: Boolean;
+begin
+  Result := chkRegularExpression.Checked;
+end;
+
+function TfrmFindInFiles.IsSubDir: Boolean;
+begin
+  Result := chkIncludeSubdir.Checked;
+end;
+
+function TfrmFindInFiles.GetSearchMode: Integer;
+begin
+  // Retreive mode through radio buttons
+  if jvoptActiveProject.Checked then
+    Result := 0
+  else if jvoptOpenFiles.Checked then
+    Result := 1
+  else
+    Result := 2;
+end;
+
+procedure TfrmFindInFiles.SetSearchMode(Index: Integer);
+begin
+  // Set mode through radio buttons
+
+  case Index of
+    0:
+    begin
+      if jvoptActiveProject.Enabled then
+        jvoptActiveProject.Checked := True
+      else
+        SetSearchMode(2);
+    end;
+    1:
+    begin
+      if jvoptOpenFiles.Enabled then
+        jvoptOpenFiles.Checked := True
+      else
+        SetSearchMode(2);
+    end;
+    2:  jvoptFilesInDir.Checked := True;
+  end;
+end;
+
+function TfrmFindInFiles.GetOutput: Integer;
+begin
+  Result := optOutput.ItemIndex;
+end;
+
+procedure TfrmFindInFiles.FormShow(Sender: TObject);
+begin
+  optWhereClick(nil);
+end;
+
+end.

+ 60 - 0
LuaEdit/FindWindow1.dfm

@@ -0,0 +1,60 @@
+object frmFindWindow1: TfrmFindWindow1
+  Left = 498
+  Top = 287
+  Width = 350
+  Height = 200
+  BorderStyle = bsSizeToolWin
+  Caption = 'Find Window 1'
+  Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 350
+  DockSite = True
+  DragKind = dkDock
+  DragMode = dmAutomatic
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lvwResult: TJvDotNetListView
+    Left = 0
+    Top = 0
+    Width = 342
+    Height = 173
+    Align = alClient
+    Columns = <
+      item
+        Caption = 'File Name'
+        Width = 100
+      end
+      item
+        Caption = 'Line'
+      end
+      item
+        AutoSize = True
+        Caption = 'Snipset'
+      end>
+    ReadOnly = True
+    RowSelect = True
+    TabOrder = 0
+    ViewStyle = vsReport
+    OnCustomDrawSubItem = lvwResultCustomDrawSubItem
+    OnDblClick = lvwResultDblClick
+    ColumnsOrder = '0=100,1=50,2=188'
+  end
+  object JvDockClient1: TJvDockClient
+    LRDockWidth = 100
+    TBDockHeight = 100
+    DirectDrag = False
+    ShowHint = True
+    EnableCloseButton = True
+    DockStyle = frmMain.jvDockVSNet
+    Left = 8
+    Top = 24
+  end
+end

+ 64 - 0
LuaEdit/FindWindow1.pas

@@ -0,0 +1,64 @@
+unit FindWindow1;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, VirtualTrees, JvComponent, JvDockControlForm,
+  JvExComCtrls, JvListView, JvDotNetControls;
+
+type
+  TfrmFindWindow1 = class(TForm)
+    JvDockClient1: TJvDockClient;
+    lvwResult: TJvDotNetListView;
+    procedure lvwResultCustomDrawSubItem(Sender: TCustomListView;
+      Item: TListItem; SubItem: Integer; State: TCustomDrawState;
+      var DefaultDraw: Boolean);
+    procedure lvwResultDblClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure AddResult(FileName: String; Line: Integer; Snipset: String);
+  end;
+
+var
+  frmFindWindow1: TfrmFindWindow1;
+
+implementation
+
+uses Main;
+
+{$R *.dfm}
+
+procedure TfrmFindWindow1.AddResult(FileName: String; Line: Integer; Snipset: String);
+var
+  pListitem: TListItem;
+begin
+  pListitem := lvwResult.Items.Add;
+  pListitem.Caption := FileName;
+  pListitem.SubItems.Add(IntToStr(Line));
+  pListitem.SubItems.Add(Snipset);
+end;
+
+procedure TfrmFindWindow1.lvwResultCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
+var
+  cx, cy: Integer;
+begin
+  {DefaultDraw := True;
+
+  // Handle the snipset column
+  if SubItem = 1 then
+  begin
+    DefaultDraw := False;
+  end;}
+end;
+
+procedure TfrmFindWindow1.lvwResultDblClick(Sender: TObject);
+begin
+  // Bring the file in the editor and go directly to the line where it's defined
+  if Assigned(lvwResult.Selected) then
+    frmMain.PopUpUnitToScreen(lvwResult.Selected.Caption, StrToInt(lvwResult.Selected.SubItems[0]), False, HIGHLIGHT_STACK);
+end;
+
+end.

+ 60 - 0
LuaEdit/FindWindow2.dfm

@@ -0,0 +1,60 @@
+object frmFindWindow2: TfrmFindWindow2
+  Left = 498
+  Top = 287
+  Width = 350
+  Height = 200
+  BorderStyle = bsSizeToolWin
+  Caption = 'Find Window 2'
+  Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 350
+  DockSite = True
+  DragKind = dkDock
+  DragMode = dmAutomatic
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object lvwResult: TJvDotNetListView
+    Left = 0
+    Top = 0
+    Width = 342
+    Height = 173
+    Align = alClient
+    Columns = <
+      item
+        Caption = 'File Name'
+        Width = 100
+      end
+      item
+        Caption = 'Line'
+      end
+      item
+        AutoSize = True
+        Caption = 'Snipset'
+      end>
+    ReadOnly = True
+    RowSelect = True
+    TabOrder = 0
+    ViewStyle = vsReport
+    OnCustomDrawSubItem = lvwResultCustomDrawSubItem
+    OnDblClick = lvwResultDblClick
+    ColumnsOrder = '0=100,1=50,2=188'
+  end
+  object JvDockClient1: TJvDockClient
+    LRDockWidth = 100
+    TBDockHeight = 100
+    DirectDrag = False
+    ShowHint = True
+    EnableCloseButton = True
+    DockStyle = frmMain.jvDockVSNet
+    Left = 8
+    Top = 24
+  end
+end

+ 64 - 0
LuaEdit/FindWindow2.pas

@@ -0,0 +1,64 @@
+unit FindWindow2;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, ComCtrls, VirtualTrees, JvComponent, JvDockControlForm,
+  JvExComCtrls, JvListView, JvDotNetControls;
+
+type
+  TfrmFindWindow2 = class(TForm)
+    JvDockClient1: TJvDockClient;
+    lvwResult: TJvDotNetListView;
+    procedure lvwResultCustomDrawSubItem(Sender: TCustomListView;
+      Item: TListItem; SubItem: Integer; State: TCustomDrawState;
+      var DefaultDraw: Boolean);
+    procedure lvwResultDblClick(Sender: TObject);
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+    procedure AddResult(FileName: String; Line: Integer; Snipset: String);
+  end;
+
+var
+  frmFindWindow2: TfrmFindWindow2;
+
+implementation
+
+uses Main;
+
+{$R *.dfm}
+
+procedure TfrmFindWindow2.AddResult(FileName: String; Line: Integer; Snipset: String);
+var
+  pListitem: TListItem;
+begin
+  pListitem := lvwResult.Items.Add;
+  pListitem.Caption := FileName;
+  pListitem.SubItems.Add(IntToStr(Line));
+  pListitem.SubItems.Add(Snipset);
+end;
+
+procedure TfrmFindWindow2.lvwResultCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean);
+var
+  cx, cy: Integer;
+begin
+  {DefaultDraw := True;
+
+  // Handle the snipset column
+  if SubItem = 1 then
+  begin
+    DefaultDraw := False;
+  end;}
+end;
+
+procedure TfrmFindWindow2.lvwResultDblClick(Sender: TObject);
+begin
+  // Bring the file in the editor and go directly to the line where it's defined
+  if Assigned(lvwResult.Selected) then
+    frmMain.PopUpUnitToScreen(lvwResult.Selected.Caption, StrToInt(lvwResult.Selected.SubItems[0]), False, HIGHLIGHT_STACK);
+end;
+
+end.

+ 73 - 73
LuaEdit/FunctionList.dfm

@@ -23,7 +23,7 @@ object frmFunctionList: TfrmFunctionList
     Left = 0
     Left = 0
     Top = 24
     Top = 24
     Width = 360
     Width = 360
-    Height = 139
+    Height = 146
     Align = alClient
     Align = alClient
     Columns = <
     Columns = <
       item
       item
@@ -91,140 +91,140 @@ object frmFunctionList: TfrmFunctionList
     Bitmap = {
     Bitmap = {
       494C010102000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
       494C010102000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000001000000001002000000000000010
       0000000000003600000028000000400000001000000001002000000000000010
+      000000000000000000000000000000000000FF00FF00FF00FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000A3787500A3787500A378
-      7500A3787500A3787500A3787500A3787500A3787500A3787500A3787500A378
-      7500A378750090615E0000000000000000000000000000000000000000000000
+      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000A67C7600F2E2D300F2E2
-      D300FFE8D100EFDFBB00FFE3C500FFDEBD00FFDDBA00FFD8B200FFD6AE00FFD2
-      A500FFD2A3009364600000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000AB807800F3E7DA00F3E7
-      DA0001990100AFD8A00071C5700041AA300081BB5E00EFD4A600FFD6AE00FFD2
-      A300FFD2A3009667630000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000B0837A00F4E9DD00F4E9
-      DD00019901000199010001990100019901000199010041AA2F00FFD8B200FFD4
-      A900FFD4A9009A6A650000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
+      FF0000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000B6897D00F5EDE400F5ED
-      E4000199010001990100119E0E00CFD6A300FFE4C80021A21A00FFD8B200FFD7
-      B000FFD7B0009E6D670000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000000000
+      FF0000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000BC8E7F00F7EFE800F7EF
-      E80001990100019901000199010001990100FFE4C800EFDEBA00FFD8B200FFD7
-      B000FFD9B400A270690000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       00000000FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
-      FF00000000000000000000000000000000000000000000000000000000000000
+      FF0000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000C3958100F8F3EF00F8F3
-      EF00F8F3EF00FFF4E800FFF4E800FFF4E800EFE3C400EFE3C400FFE4C800FFDE
-      BD00FFDDBB00A5746B0000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
       00000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000000000
+      FF0000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000CA9B8400F9F5F200FBFB
-      FB00FFF4E800FFF4E800FFF4E800019901000199010001990100FFE8D100FFE3
-      C500FFE1C200A8776D0000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
       0000FFFF0000840000008400000084000000840000008400000084000000FFFF
-      FF00000000000000000000000000000000000000000000000000000000000000
+      FF0000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000D2A18700F9F9F900FBFB
-      FB00119F1000AFD8A000FFF4E800AFD8A0000199010001990100FFE8D100FFE4
-      C800FFE3C600AC7A6F0000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF
+      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000D9A88A00FBFBFB00FFFF
-      FF0071C570000199010001990100019901000199010001990100FFE8D100FFE8
-      D100FFE6CE00AE7C720000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
       0000FFFF0000840000008400000084000000FFFF000000000000000000000000
+      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000DFAE8C00FCFCFC00FFFF
-      FF00FFFFFF0071C570000199010001990100AFD8A00001990100FFE8D100FFC8
-      C200FFB0B000B07E730000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
       0000FFFFFF00FFFF0000FFFFFF00FFFF0000FFFFFF0000000000FFFFFF000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000000
+      0000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF00000000000000000000FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000E5B38F00FDFDFD00FDFD
-      FD00FFFFFF00FFFFFF00FFFFFE00FFFAF600FFF9F300FFF5EA00F4DECE00B280
-      7400B2807400B280740000000000000000000000000000000000000000000000
-      0000FFFF0000FFFFFF00FFFF0000FFFFFF00FFFF000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000EAB89100FEFEFE00FEFE
-      FE00FFFFFF00FFFFFF00FFFFFF00FFFFFE00FFFAF600FFF9F300F5E1D200B280
-      7400EDA75500D2AA960000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000000000000000000000000000000000000000000000000000FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000EFBC9200FFFFFF00FFFF
-      FF00FCFCFC00FAFAFA00F7F7F700F5F5F500F2F1F100F0EDEA00E9DAD000B280
-      7400D9B199000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000000000F2BF9400DCA98700DCA9
-      8700DCA98700DCA98700DCA98700DCA98700DCA98700DCA98700DCA98700B280
-      7400000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFFFFF000000008003FFFF00000000
-      8003E007000000008003E007000000008003E007000000008003E00700000000
-      8003E007000000008003E007000000008003E007000000008003E00700000000
-      8003E007000000008003E00F000000008003E01F000000008003E03F00000000
-      8007FFFF00000000800FFFFF00000000}
+      00000000000000000000000000000000}
   end
   end
 end
 end

+ 2 - 2
LuaEdit/HeaderBuilder/FctHdrBld.dfm

@@ -78,9 +78,9 @@ object frmFctHdrBld: TfrmFctHdrBld
     object lblCallSample: TLabel
     object lblCallSample: TLabel
       Left = 16
       Left = 16
       Top = 304
       Top = 304
-      Width = 58
+      Width = 113
       Height = 13
       Height = 13
-      Caption = 'Call Sample:'
+      Caption = '<Sample/> Call Sample:'
     end
     end
     object Label5: TLabel
     object Label5: TLabel
       Left = 16
       Left = 16

+ 62 - 20
LuaEdit/HeaderBuilder/FctHdrBld.pas

@@ -5,7 +5,7 @@ interface
 uses
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls, XPMenu, ImgList, ComCtrls, ToolWin, Grids,
   Dialogs, StdCtrls, ExtCtrls, XPMenu, ImgList, ComCtrls, ToolWin, Grids,
-  ValEdit, XPMan, Registry, System;
+  ValEdit, XPMan, Registry;
 
 
 type
 type
   TfrmFctHdrBld = class(TForm)
   TfrmFctHdrBld = class(TForm)
@@ -54,6 +54,8 @@ type
     procedure ClearForm(bPrompt: Boolean = False);
     procedure ClearForm(bPrompt: Boolean = False);
     procedure CheckButtons;
     procedure CheckButtons;
     function GetHeader: String;
     function GetHeader: String;
+    function FormatParameters(): String;
+    function FormatValue(sValue: String): String;
   end;
   end;
 
 
 var
 var
@@ -171,13 +173,25 @@ begin
   end;
   end;
 end;
 end;
 
 
+function TfrmFctHdrBld.FormatParameters(): String;
+begin
+  //todo
+  Result := '';
+end;
+
+function TfrmFctHdrBld.FormatValue(sValue: String): String;
+begin
+  //todo
+  Result := sValue;
+end;
+
 function TfrmFctHdrBld.GetHeader: String;
 function TfrmFctHdrBld.GetHeader: String;
 var
 var
   pReg: TRegistry;
   pReg: TRegistry;
-  TagNotFound: Boolean;
-  x, TagO, TagC, TagIndex: Integer;
+  IsShortened: Boolean;
+  x, TagO, TagC: Integer;
   sTemplatePath, sToday, sInitialRealese: String;
   sTemplatePath, sToday, sInitialRealese: String;
-  sCopyright, sDevelopperName, sTemp, sTag: String;
+  sCopyright, sDevelopperName, sToReplace, sReplaceValue, sTemp, sTag: String;
   strTemplate, strTags: TStringList;
   strTemplate, strTags: TStringList;
 begin
 begin
   Result := '';
   Result := '';
@@ -198,39 +212,67 @@ begin
       // Get tags from registry and parse the template to replace tags by their assigned value
       // Get tags from registry and parse the template to replace tags by their assigned value
       if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
       if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
       begin
       begin
-        pReg.GetValueNames(strTags);
+        // Get template from specified location on the disk
         strTemplate := TStringList.Create;
         strTemplate := TStringList.Create;
         strTemplate.LoadFromFile(sTemplatePath);
         strTemplate.LoadFromFile(sTemplatePath);
-        strTags.Add('Function');
-        strTags.Sort;
         sTemp := strTemplate.Text;
         sTemp := strTemplate.Text;
 
 
+        // Retreive tags from registry and add local tags
+        strTags := TStringList.Create;
+        strTags.Text := 'This is a gottam text!';
+        pReg.GetValueNames(strTags);
+        strTags.Values['Function'] := FormatValue(txtFunctionName.Text);
+        strTags.Values['Comment'] := FormatValue(memoComment.Text);
+        strTags.Values['Parameters'] := FormatParameters;
+        strTags.Values['Return'] := FormatValue(txtReturn.Text);
+        strTags.Values['Sample'] := FormatValue(txtCallSample.Text);
+
         // parsing template
         // parsing template
         repeat
         repeat
+          // reinitialize values
+          IsShortened := False;
+          TagO := Pos('<', sTemp);
+          
           // look for possible tag opening
           // look for possible tag opening
-          if ((TagO := Pos('<', sTemp)) <> 0) then
+          if TagO <> 0 then
           begin
           begin
-            if ((TagC := Pos('>', sTemp)) <> 0) then
+            TagC := Pos('>', sTemp);
+            
+            // Get possible tag name
+            if TagC <> 0 then
             begin
             begin
               // Extract current tag
               // Extract current tag
-              sTag := Copy(sTemp, TagO + 1, (TagC - 1) - (TagO + 1));
-              TagNotFound := False;
-
-              case UpperCase(sTag) of
-                'FUNCTION':
-                begin
-                  
-                end;
+              sTag := Copy(sTemp, TagO, TagC - TagO + 1);
+
+              // check if the tag we found is shortened
+              if Copy(sTag, Length(sTag) - 1, 1) = '/' then
+              begin
+                IsShortened := True;
+                sTag := Copy(sTag, 1, Length(sTag) - 1);
+              end;
+
+              // Extract tag name from tag element
+              sTag := Copy(sTag, 2, Length(sTag) - 2);
+
+              // Simple string replace call if it is a shortened one
+              if IsShortened then
+              begin
+                sTemp := StringReplace(sTemp, '<' + sTag + '/>', strTags.Values[sTag], [rfReplaceAll, rfIgnoreCase]);
+              end
               else
               else
+              begin
+                // when not shortened, find closing tag and extract the whole
+                // string out of it. Once done, find the %value% tag
+                sToReplace := Copy(sTemp, TagO, Length(sTemp) - Pos('</' + sTag + '>', sTemp) + Length('</' + sTag + '>'));
+                sReplaceValue := StringReplace(sToReplace, '%value%', strTags.Values[sTag], [rfReplaceAll, rfIgnoreCase]);
+                sTemp := StringReplace(sTemp, sToReplace, sReplaceValue, [rfReplaceAll, rfIgnoreCase]);
               end;
               end;
             end;
             end;
           end;
           end;
         until TagO <> 0;
         until TagO <> 0;
 
 
-        for x := 0 to strTags.Count - 1 do
-          strTemplate.Text := StringReplace(strTemplate.Text, '<@' + strTags.Strings[x] + '/>', pReg.ReadString(strTags.Strings[x]), [rfReplaceAll, rfIgnoreCase]);
-
         Result := strTemplate.Text;
         Result := strTemplate.Text;
+        strTags.Free;
         strTemplate.Free;
         strTemplate.Free;
       end;
       end;
     end;
     end;

+ 2 - 2
LuaEdit/HeaderBuilder/HdrBld.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=1
 MajorVer=1
 MinorVer=0
 MinorVer=0
 Release=0
 Release=0
-Build=21
+Build=23
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=1252
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=
 CompanyName=
 FileDescription=
 FileDescription=
-FileVersion=1.0.0.21
+FileVersion=1.0.0.23
 InternalName=
 InternalName=
 LegalCopyright=
 LegalCopyright=
 LegalTrademarks=
 LegalTrademarks=

BIN
LuaEdit/HeaderBuilder/HdrBld.res


+ 1 - 1
LuaEdit/HeaderBuilder/Settings.pas

@@ -202,7 +202,7 @@ begin
 
 
     // Remove tag from registry
     // Remove tag from registry
     if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
     if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
-      pReg.DeleteValue(lvwTags.Selected.Caption)
+      pReg.DeleteValue(lvwTags.Selected.Caption);
 
 
     pReg.Free;
     pReg.Free;
     lvwTags.Items.Delete(lvwTags.Selected.Index);
     lvwTags.Items.Delete(lvwTags.Selected.Index);

+ 754 - 0
LuaEdit/InternalBrowser.dfm

@@ -0,0 +1,754 @@
+object frmInternalBrowser: TfrmInternalBrowser
+  Left = 534
+  Top = 346
+  Width = 200
+  Height = 200
+  BorderStyle = bsSizeToolWin
+  Caption = 'Internal Browser'
+  Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 200
+  DockSite = True
+  DragKind = dkDock
+  DragMode = dmAutomatic
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Panel2: TPanel
+    Left = 0
+    Top = 0
+    Width = 192
+    Height = 60
+    Align = alTop
+    BevelOuter = bvNone
+    TabOrder = 0
+    DesignSize = (
+      192
+      60)
+    object jvgifBrowser: TJvGIFAnimator
+      Left = 162
+      Top = 3
+      Width = 25
+      Height = 25
+      Image.Data = {
+        410F000047494638396119001900C40000FAF6E2E4D8C6D2C5A4B9BEC0B5B19A
+        989C908E92797C7E72676A776C6B5D595B4D4A526B3A4747232D50333B752A36
+        94141B97030B9F00087D0E156A00005D0000480F18510102034B5B921E29BA3E
+        4AC64D59E86670A67C87DC8D95B5C6CEFF21FF0B4E45545343415045322E3003
+        01E8030021FE2F6279746520726564756374696F6E20627920687474703A2F2F
+        7777772E637962657273706163652E636F6D2F7475700021F90405020017002C
+        00000000190019000005FBE0258E64699E6681600EC71D087A1E064104D8D436
+        D6228F0F088720181C1C8B82835269FC1E910866402478084A4BA58982463283
+        0051505052985B67C9FBBD110D86C5199D2661A2DF4D6760404CFE735B823122
+        1051191A1B8A03181212138182150C220878198A1B1A2E4714169F5B730D0717
+        9687891A19108F0B0E133C736716A40E9719B7868E140E080C0A0C16B1948678
+        10C48E1214130CCCBEC1671517AB127811C8C93ABF0D0DCC0D73170ED7D7677F
+        0E07BF0A070909DE16A5E2C9737F132F0A70E7673108B1FCCAF3BD07D431C827
+        02523F797FD01D18E869849C83FCD0793BE363C44488BBBACD7160A281A47E0B
+        806D44E131541DAC090A62719451B2DFC5953F1668E9F7A7E28F11081058A0C7
+        8B9089100021F90405020017002C05000100140018000005D3E0255EC8E1601C
+        8720633B1602C145DCC34D95DB724230201801474229EA449E0060E021141E13
+        63A5A2682505800B0113211629D3066344180404C22E7134AD30AA17CE72A3C9
+        40246B515B01D7003A1B1B0F7779176D6F0922031F031A101013121716142314
+        0C0970221D1E100D135151175F0D7C2E287C26945F450C982E0788090CABAC97
+        2D0FAE0C6217AE51AC9A22087C0A07C699B60B2E0E0909070605060AB5463AA5
+        07CE0609B69547D8C6D3C947A56F0BDC142CD6AE0DD4D5E30A0DE7472362F2F3
+        23BFACF7FBFC233718FB42000021F90405020017002C03000100160018000005
+        EEE0258EC5C10D9C33AEECE861DAD33D146559ED4A0C8FE74111C9C566692872
+        85C060F0933847164683C11A04021E4D26C21DD6285496275028683399D197A2
+        90564898CC46D35A2BEE6D9127A3D16CE669225F537809471D597F1B17101042
+        500A07780A08171A1C1B1D1B198E4F2251778609231A030401189D355E460C0C
+        0A09A39606B40607136B5E3516B047171C0C0BAE770C0E13C76B6009610F0792
+        0904CE06C6B8760A0D230EB605B6070CC7D55F772C0B0907B1060DE06BBC6123
+        46A1EAC8ECD72C13C30DC96B0E0D0B2DAEF9BEE8DA95E382147DC90A1A0C8890
+        8242110CF53D9C48315B0A0E0F43000021F90405020017002C01000100180018
+        000005FBE0258EE2810CDC44AEAC88608FA6491285344CD29298C74511C94582
+        63187722CF6003018E268A84D1B22B688058A0648198501AC515E117C9906898
+        83B452B1E4468766792599180E7705A3A1508C304D667451787D867A173E1110
+        82670C067707877D4931191A1B1A223439076A7E17520D221C076319A8104375
+        86390A9F0C540F090604715A4223161609099F0D14170F0A0B0A062F34352A22
+        140BBE7A14C11009C60405040BD113DBDB5FD4D05417CED70409D114DCDD0EAD
+        C122139E78E6DAE9CD7DB1ED22BD51C0E723D1EB0A2C6C23E166CFB983E71A1C
+        E0C7020CC27E09A33504C3E6E14324162A5AEC87C4DF467C1D5B700BC9220505
+        87524842000021F90405020017002C01000100170018000005FBE0258E227270
+        4E4AAEECF5489024A54CDD9245A4474DE3300A46E326C2647611CCE1A050F42C
+        8D04EB818C3C0A8FC9A4B158302C0A04892ACA983983036262810613E26284B4
+        E908EE0466B0B982D0370104770679094D870D6173221B1B1C0201020406227A
+        890D150C173B8C1C82060607170752410C15141706183A666607068640A4097A
+        1614140A06103A7E24140CA4B4090DB8C05DAC3A1223140E4B0940C5C6A0840E
+        3232225A0809860AB7C6170404091332A9D913084D861613E0B4C6F15BDBDC0C
+        13A8B8170C090BF1F20AB5EC493BA7EE9B3F5CC112DC72974F84B783C6B60C6C
+        38E254858B44325EB85841A3C78F1A0F8224E1000307070E08E2AC08010021F9
+        0405020017002C01000100180018000005F7E0258E628190C841AE2B063D9183
+        2D0B63AB2C09470D862C06954D91C88976984230B150341844C5C978E174348E
+        85EFC068280E0A05553320141E9089E3904885A1E2D52300A8130E879421ACB0
+        75590574820104080D220A1616507F231902750001022206345C15150C171587
+        237392000204A378361514148B230E11AE03031E65040441A616A91417A93FAE
+        1110192F05C30645090DB9C90C071012BE110F070641084E13C9C9050E12DCDD
+        09DF290B13D7BA2B060DDC23144D6178E3B92C0CD8EB517D0EC8E52B08F31351
+        0D6AE492391091601E050609125108B88BD7087CC916E13298EF21958B18336A
+        DCC8B1E3882B1843000021F90405020017002C01000100180018000005FBE025
+        8E228238D0E41C07E9BE1786994CAD28B08B2D98E117090523A840E4621C8261
+        814838180743627ACB7122180EA75098240804D641C8786D31194DD2501000C7
+        0845A3511E3D0881C0401F20200C6306350C74160B227702040017011C030206
+        0813160907830D1516221879009F00021C17040D141487151574141522077901
+        A002079312A7ACAD0D1615462C6DB105610EA7A717A79BC81011110F027BC205
+        0EB7C5D57316141012120F6D61090DB713E313D614160DD3DB6C050709E2E413
+        23C8140D08DB12EE53092AF1F239C516B8BB3461813F12A7EA943BA560CC3853
+        F1AAA16A716141B106091848A4E0E25C821C73366EA473A4A40EC9932853A614
+        A97284162D2543000021F90405020017002C01000100180017000005FBE0258E
+        A4E838659A22CEC1300BE222894A72D86118879218888B82D1B05D3C07872F41
+        101408325FA3987A3C3884C33340E81E120944A3421D191E190F2100085C0A07
+        E4E255A9970BDC015B3F38107C0A0B7363752302876E17011E190B04062F2F0D
+        16751522786C010300031A100F05171414921516A322064D01021E9D19101208
+        13A3160D0C17A6A308086B025D8C1011121325140D28240403053C1911C31212
+        A314130DA41613A714175A5FD0D2D21713E4D6A7B693DC083B08E1E2C693DB14
+        16E3090707D2D4DC36C724F70B122AE853616D083D110B1230D047CB1885055F
+        888C6870E09ABE81D422C22021EFE2C5090B482D3042B2A409C99328538E2866
+        24040021F90405020017002C01000100170018000005F4E0258EA4633A64AA1E
+        9CB22886C12409A3A6479C1C4451E409CB6D84511C0448420FD8B0546E04CF21
+        00080406841CA2D9A83C498F01D52A1E701089A645A8E2043CD8C08F75382826
+        14AF7E44786F06006607080B0C1316797A5F0204031A1B1F011710080A171414
+        885E981422020810191A1D1C22121377220D9C9C3E07A119190F171113B61428
+        97AC144A1811111010A6A7B836BAAC050B12BFBF12CE120D0DB6D1140C889883
+        CFDA12432A0CDB24B6E2134DC71709789D29E30D0A690C9C1707781337B63307
+        3508984208D7BBACEA2060C04001A611F000B25AE080420306AB72751B526FA2
+        C58B182F2ACC98C2C3C4100021F90405020017002C01000100140018000005D8
+        E0258E24E6380B42AE22A22007A11C0863B36261107C71188EC9C25261190481
+        414037383426140A8B130800000382C72471442B6011E152C5160A8CC90412A5
+        808B870180501878B21888A42D2D21A94D79127B6D240710631B03031C197A84
+        51230811101C171A1C1E1C108F7C6D93110F1998171026509E510B11AC94790F
+        096AB29E7A17AD0F0E126A4F0D0BA851B983C26ABA2B7C1712382213286A8517
+        50247C0C09090D0C6D13D07D2413D5060A170916850BA9141607D5360C0DCFEE
+        A90BEED7D8CFCA2416DAF7FBFCFDFCFAFE487018E88045080021F90405020017
+        002C01000100140018000005C1E0258EE26170CEE42008E99685711C0BB33449
+        F25E45310402CC444299502C9617214020C886448AF4F50B0C3C87C743129DBA
+        025683660CE14ABDA29EC773DD683265C9EE72E010309BFC3B3217612006171B
+        1D6E107C73055A18636E705C722F0E1186191C6F865C738686181C19175B6667
+        A32313105A100E424513AD3B101022ADB3B47D23290DB446671714231216390D
+        0C16B4A4A51333070C0A0CB3A3BE2E090A0AC3D5D068230D0D14D6D8D93B16BC
+        C7B6B2E5E7E5DFE8751C13492E210021F90405020017002C0100010017001800
+        0005ADE0258EA4334D64AA5E458120C7B23885921CEB480CC7F360920BC561B1
+        34143956E2118904534564AA30C0409A4D55A56249900685872643CE44B4DB86
+        F772E06022194DF2B24DAF99F1F90AE1686636807A24086F648249658687220F
+        10578E59878E8D0E561012989227120D0F121314148B17130E22A11427AA2849
+        0B070D0CA8A2822707060C0A0EA1A08B08090CB816B2C3B2244646B1C4C473B2
+        C2CBCCCAA8A3D32345D4292F6EB339210021F90405020017002C010001001800
+        18000005A4E0258EE2715C93E3906C2B22C6E23C85931CCAE292C5833D118964
+        42993014B9DDE5E0883823238AB47154B8309AE75324953212561626E3548A2A
+        0D246B6BBE542AC786EE8281B6CF6FEAC87E8F52F4176C2E5D845322822C858A
+        084D887E8A5D2B3E104F123B9027120E10429D838A0C170E139D12847D4B0B0D
+        52A65D13AFAF4A06394444A777070C0C0B90BD52240C160CBE906D16C414A8CA
+        CBCA15CC3B181677210021F90405020017002C01000100180018000005A9E025
+        8EE4354D0B7294EC8820183770487128CEDA8E4FE43F10C9C260383014BA568F
+        2469E612894302A18CEC28080394C1689496D7C9E176B4784598DD8842692814
+        0C8BA53282A8456CB6BBC2BF5F322D150D5D14167E7713140E87770D090C7677
+        79937A700E1112567E94145C174DA0A02D9416489FA1126A946245899C6C259C
+        0A220DAF796B948E2209B5B6BE0B4917BEBE0C2D0D7CC31413B32C0D678CD0D1
+        D2D28B14696A210021F90405020017002C01000100180018000005ACE0258EA4
+        E86046A99618571C05B138F0BA42D7631442B1348746C3B6C2C40805C4416119
+        12491C0201B66C542A4F1224A65826ACD7EC88764858CED7B058844850289634
+        F6899348260E07E31A5FAB2C0C70176F7E244D0C5F8285260C0A4C1410127E6F
+        070C0D0C0C168B220B0A8D5F9B170D0909060A080814936F4A9522136B6FAC09
+        0A4E0BB2B8B9B8A34C0B230DBAC16F9E160E257B69C21442783673C280A186D2
+        D4221613131C4F210021FE3746494C45204944454E544954590D0A4372656174
+        6564206F72206D6F6469666965642062790D0A434841524C4553205455505045
+        520D0A003B}
+      Anchors = [akTop, akRight]
+    end
+    object tlbInternalBrowser: TToolBar
+      Left = 0
+      Top = 0
+      Width = 148
+      Height = 22
+      Align = alNone
+      AutoSize = True
+      Caption = 'Internal Browser Toolbar'
+      EdgeBorders = []
+      Flat = True
+      Images = imlBrowser
+      TabOrder = 0
+      object ToolButton11: TToolButton
+        Left = 0
+        Top = 0
+        Action = actBackTo
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton12: TToolButton
+        Left = 23
+        Top = 0
+        Action = actFowardTo
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton20: TToolButton
+        Left = 46
+        Top = 0
+        Width = 10
+        Caption = 'ToolButton20'
+        ImageIndex = 34
+        Style = tbsSeparator
+      end
+      object ToolButton13: TToolButton
+        Left = 56
+        Top = 0
+        Action = actStop
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton15: TToolButton
+        Left = 79
+        Top = 0
+        Action = actRefresh
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton16: TToolButton
+        Left = 102
+        Top = 0
+        Action = actHome
+        ParentShowHint = False
+        ShowHint = True
+      end
+      object ToolButton1: TToolButton
+        Left = 125
+        Top = 0
+        Action = actSearch
+        ParentShowHint = False
+        ShowHint = True
+      end
+    end
+    object Panel1: TPanel
+      Left = 0
+      Top = 28
+      Width = 192
+      Height = 27
+      Anchors = [akLeft, akTop, akRight]
+      BevelOuter = bvNone
+      TabOrder = 1
+      DesignSize = (
+        192
+        27)
+      object cboURL: TComboBox
+        Left = 1
+        Top = 4
+        Width = 156
+        Height = 21
+        AutoDropDown = True
+        Anchors = [akLeft, akTop, akRight, akBottom]
+        DropDownCount = 15
+        ItemHeight = 13
+        TabOrder = 0
+        OnKeyPress = cboURLKeyPress
+      end
+      object btnGo: TButton
+        Left = 163
+        Top = 5
+        Width = 23
+        Height = 19
+        Action = actGo
+        Anchors = [akTop, akRight]
+        Default = True
+        ParentShowHint = False
+        ShowHint = True
+        TabOrder = 1
+      end
+    end
+  end
+  object InternalBrowser: TWebBrowser
+    Left = 0
+    Top = 60
+    Width = 192
+    Height = 113
+    Align = alClient
+    TabOrder = 1
+    OnCommandStateChange = InternalBrowserCommandStateChange
+    OnBeforeNavigate2 = InternalBrowserBeforeNavigate2
+    OnNavigateComplete2 = InternalBrowserNavigateComplete2
+    ControlData = {
+      4C000000D8130000AE0B00000000000000000000000000000000000000000000
+      000000004C000000000000000000000001000000E0D057007335CF11AE690800
+      2B2E126208000000000000004C0000000114020000000000C000000000000046
+      8000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000100000000000000000000000000000000000000}
+  end
+  object JvDockClient1: TJvDockClient
+    LRDockWidth = 100
+    TBDockHeight = 100
+    DirectDrag = False
+    ShowHint = True
+    EnableCloseButton = True
+    DockStyle = frmMain.jvDockVSNet
+    Left = 8
+    Top = 112
+  end
+  object imlBrowser: TImageList
+    Left = 8
+    Top = 80
+    Bitmap = {
+      494C010106000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000003000000001002000000000000030
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000000000000000000000000000000000000000FF00FF00FF00
+      FF00FF00FF000000000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF008400
+      000084000000FF00000084000000FF00000084000000FF000000000000000000
+      0000848484000000FF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00008400000084
+      00000084000000000000FF00000084000000FF00000084000000840000008484
+      84000000FF000000FF0000008400FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF0000840000FF00FF0000FF
+      000000840000008400000000000084848400000000000000000084848400FFFF
+      FF000000FF0000008400FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF0000840000FF00FF000084
+      000000FF00000084000084848400FF00FF00FFFF0000FF00FF00000000008484
+      84008484840000000000FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF0000840000FFFFFF00FF00FF0000FF
+      00000084000084848400FFFFFF00FFFF0000FF00FF00FFFF0000FF00FF000000
+      0000008400000084000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF0000840000FFFFFF00FF00FF000084
+      0000FF00000084848400FFFFFF00FFFFFF00FFFF0000FF00FF00FFFF00000000
+      0000008400000084000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF008484840000840000008400008484
+      0000FF00000084848400FFFFFF00FFFF0000FFFFFF00FFFF0000FF00FF000000
+      0000008400000084000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF0084848400FF000000FF000000FF00
+      0000FF000000FF00000084848400FFFFFF00FFFF0000FFFFFF0000000000FF00
+      FF00008400000084000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF0084848400FF000000FF0000000084
+      000000840000FF000000FF000000848484008484840000000000FF0000000084
+      0000FF00FF000084000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF00848484000084000000FF
+      000000840000FF000000FF000000FF00000084000000FF00000084000000FF00
+      00000084000000000000FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF00FF00FF008484840000840000FF00
+      FF0000FF00000084000000840000FF0000000084000000840000FF0000008400
+      0000FF00000000000000FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000000
+      0000000000000000000000000000FF00FF00FF00FF00FFFFFF0084848400FFFF
+      FF00FF00FF0000FF00000084000000840000008400000084000000840000FF00
+      000084000000FFFFFF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
+      840084848400FFFFFF00FFFFFF0000FF00000084000000840000008400000084
+      0000FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF008484840084848400848484008484840084848400FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF008484840084848400848484008484840084848400FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0084848400848484000000FF000000FF000000FF000000FF000000FF008484
+      840084848400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
+      84000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF0084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF0000FFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00848484000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF000000FF0084848400FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF0000FFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00848484000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF000000FF0084848400FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF0000FFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00848484000000FF000000
+      FF000000FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFF
+      FF000000FF000000FF000000FF0084848400FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000FFFF0000FFFF0000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF00000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0000000000FFFF000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00848484000000FF000000
+      FF000000FF000000FF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF000000
+      FF000000FF000000FF000000FF0084848400FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF0000000000000000000000000000000000FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000FFFF0000FFFF000000000000000000000000000000000000000000000000
+      00000000000000000000FF00FF00FF00FF00FF00FF00848484000000FF000000
+      FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000
+      FF000000FF000000FF000000FF0084848400FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFF000000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFF000000000000FF00FF00FF00FF00FF00FF00848484000000FF000000
+      FF000000FF000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000
+      FF000000FF000000FF000000FF0084848400FF00FF000000000000FFFF000000
+      0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF000000000000FFFF0000000000FF00FF00FF00FF00FF00FF0000000000FFFF
+      0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFF000000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
+      0000FFFF000000000000FF00FF00FF00FF00FF00FF00848484000000FF000000
+      FF000000FF000000FF00FFFFFF00FFFFFF000000FF00FFFFFF00FFFFFF000000
+      FF000000FF000000FF000000FF0084848400FF00FF00FF00FF000000000000FF
+      FF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000FFFF0000000000FF00FF00FF00FF00FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000FFFF0000FFFF
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000
+      0000FFFF0000FFFF000000000000000000000000000000000000000000000000
+      00000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00848484000000
+      FF000000FF00FFFFFF00FFFFFF000000FF000000FF000000FF00FFFFFF00FFFF
+      FF000000FF000000FF0084848400FF00FF00FF00FF00FF00FF00FF00FF000000
+      000000FFFF0000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000FF
+      FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF00000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0000000000FFFF000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00848484000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF000000FF0084848400FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF000000000000FFFF0000000000FFFFFF00FFFFFF000000000000FFFF000000
+      000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000000000000000FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000000000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
+      84000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF000000FF0084848400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000000000FFFF00000000000000000000FFFF00000000000000
+      840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF0000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF0084848400848484000000FF000000FF000000FF000000FF000000FF008484
+      840084848400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF000000000000FFFF0000FFFF0000000000FF00FF000000
+      840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF008484840084848400848484008484840084848400FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF000000000000000000FF00FF00FF00FF000000
+      840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00424D3E000000000000003E000000
+      2800000040000000300000000100010000000000800100000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000}
+  end
+  object ActionList1: TActionList
+    Images = imlBrowser
+    Left = 40
+    Top = 112
+    object actBackTo: TAction
+      Category = 'Browse'
+      Caption = 'Back to'
+      Hint = 'Back to'
+      ImageIndex = 3
+      OnExecute = actBackToExecute
+    end
+    object actFowardTo: TAction
+      Category = 'Browse'
+      Caption = 'Foward To'
+      ImageIndex = 2
+      OnExecute = actFowardToExecute
+    end
+    object actHome: TAction
+      Category = 'Browse'
+      Caption = 'Home'
+      Hint = 'Home'
+      ImageIndex = 1
+      OnExecute = actHomeExecute
+    end
+    object actStop: TAction
+      Category = 'Browse'
+      Caption = 'Stop'
+      Hint = 'Stop'
+      ImageIndex = 0
+      OnExecute = actStopExecute
+    end
+    object actRefresh: TAction
+      Category = 'Browse'
+      Caption = 'Refresh'
+      Hint = 'Refresh'
+      ImageIndex = 4
+      OnExecute = actRefreshExecute
+    end
+    object actSearch: TAction
+      Category = 'Browse'
+      Caption = 'Search the Web'
+      Hint = 'Search the Web'
+      ImageIndex = 5
+      OnExecute = actSearchExecute
+    end
+    object actGo: TAction
+      Category = 'Browse'
+      Caption = 'Go'
+      Hint = 'Go'
+      OnExecute = actGoExecute
+    end
+  end
+end

+ 292 - 0
LuaEdit/InternalBrowser.pas

@@ -0,0 +1,292 @@
+unit InternalBrowser;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, JvComponent, JvDockControlForm, ImgList, ComCtrls, ToolWin,
+  StdCtrls, SHDocVW, ActnList, ExtCtrls, Registry, DateUtils, JvExControls,
+  JvAnimatedImage, JvGIFCtrl, OleCtrls, ActiveX, JvOutlookBar;
+
+type
+  TURLDateTime = class(TObject)
+  public
+    Date: TDateTime;
+    constructor Create(dtDate: TDateTime);
+  end;
+
+  TfrmInternalBrowser = class(TForm)
+    JvDockClient1: TJvDockClient;
+    imlBrowser: TImageList;
+    ActionList1: TActionList;
+    actBackTo: TAction;
+    actFowardTo: TAction;
+    actHome: TAction;
+    actStop: TAction;
+    actRefresh: TAction;
+    actSearch: TAction;
+    actGo: TAction;
+    Panel2: TPanel;
+    tlbInternalBrowser: TToolBar;
+    ToolButton11: TToolButton;
+    ToolButton12: TToolButton;
+    ToolButton20: TToolButton;
+    ToolButton13: TToolButton;
+    ToolButton15: TToolButton;
+    ToolButton16: TToolButton;
+    ToolButton1: TToolButton;
+    jvgifBrowser: TJvGIFAnimator;
+    Panel1: TPanel;
+    cboURL: TComboBox;
+    btnGo: TButton;
+    InternalBrowser: TWebBrowser;
+    procedure FormCreate(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+    procedure actBackToExecute(Sender: TObject);
+    procedure actFowardToExecute(Sender: TObject);
+    procedure actHomeExecute(Sender: TObject);
+    procedure actStopExecute(Sender: TObject);
+    procedure actRefreshExecute(Sender: TObject);
+    procedure actSearchExecute(Sender: TObject);
+    procedure actGoExecute(Sender: TObject);
+    procedure InternalBrowserNavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
+    procedure InternalBrowserCommandStateChange(Sender: TObject; Command: Integer; Enable: WordBool);
+    procedure InternalBrowserBeforeNavigate2(Sender: TObject;
+      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
+      Headers: OleVariant; var Cancel: WordBool);
+    procedure cboURLKeyPress(Sender: TObject; var Key: Char);
+  private
+    { Private declarations }
+    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
+    procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
+  public
+    { Public declarations }
+    procedure AddURLToList(URL: String);
+    procedure btnXHistoryClick(Sender: TObject);
+  end;
+
+var
+  frmInternalBrowser: TfrmInternalBrowser;
+
+implementation
+
+uses Rings, Main;
+
+{$R *.dfm}
+
+constructor TURLDateTime.Create(dtDate: TDateTime);
+begin
+  Date := dtDate;
+end;
+
+procedure TfrmInternalBrowser.btnXHistoryClick(Sender: TObject);
+begin
+  if not Self.Visible then
+    frmMain.DoShowInternalBrowserExecute;
+
+  cboURL.Text := TJvOutlookBarButton(Sender).Caption;
+  actGo.Execute;
+end;
+
+procedure TfrmInternalBrowser.FormCreate(Sender: TObject);
+var
+  pReg: TRegistry;
+  lstValues: TStringList;
+  pURLDateTime: TURLDateTime;
+  pRingButton: TJvOutlookBarButton;
+  x: Integer;
+begin
+  // Fix some web broser bugs with enter key
+  Application.OnMessage := MsgHandler;
+  
+  // Initialize url combobox content
+  pReg := TRegistry.Create;
+  lstValues := TStringList.Create;
+
+  if pReg.OpenKey('\Software\LuaEdit\InternalBrowser\Recent', False) then
+  begin
+    pReg.GetValueNames(lstValues);
+
+    for x := 0 to lstValues.Count - 1 do
+    begin
+      if StrToDateTime(lstValues.Strings[x]) < IncDay(Now, -10) then
+      begin
+        pReg.DeleteValue(lstValues.Strings[x]);
+      end
+      else
+      begin
+        pURLDateTime := TURLDateTime.Create(StrToDateTime(lstValues.Strings[x]));
+        cboURL.AddItem(pReg.ReadString(lstValues.Strings[x]), pURLDateTime);
+        pRingButton := frmRings.jvRings.Pages[JVPAGE_RING_BRWHISTORY].Buttons.Add;
+        pRingButton.Caption := pReg.ReadString(lstValues.Strings[x]);
+        pRingButton.OnClick := btnXHistoryClick;
+      end;
+    end;
+  end;
+
+  lstValues.Free;
+  pReg.Free;
+  InternalBrowser.GoHome;
+end;
+
+procedure TfrmInternalBrowser.FormDestroy(Sender: TObject);
+var
+  pReg: TRegistry;
+  pURLDateTime: TURLDateTime;
+  x: Integer;
+begin
+  // wipe all current values and write new ones...
+  pReg := TRegistry.Create;
+  pReg.DeleteKey('\Software\LuaEdit\InternalBrowser\Recent');
+  
+  if pReg.OpenKey('\Software\LuaEdit\InternalBrowser\Recent', True) then
+  begin
+    for x := 0 to cboURL.Items.Count - 1 do
+    begin
+      pURLDateTime := TURLDateTime(cboURL.Items.Objects[x]);
+      pReg.WriteString(DateTimeToStr(pURLDateTime.Date), cboURL.Items.Strings[x]);
+      pURLDateTime.Free;
+    end;
+  end;
+
+  FOleInPlaceActiveObject := nil;
+  pReg.Free;
+end;
+
+// Added to fix [Enter] key pressed inside the browser
+procedure TfrmInternalBrowser.MsgHandler(var Msg: TMsg; var Handled: Boolean);
+const
+  StdKeys = [VK_BACK, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT];
+var IOIPAO: IOleInPlaceActiveObject;
+  Dispatch: IDispatch;
+begin
+  if InternalBrowser = nil then
+  begin
+    Handled := False;
+    Exit;
+  end;
+  Handled := (IsDialogMessage(InternalBrowser.Handle, Msg) = True);
+  if (Handled) and (not InternalBrowser.Busy) then
+  begin
+    if FOleInPlaceActiveObject = nil then
+    begin
+      Dispatch := InternalBrowser.Application;
+      if Dispatch <> nil then
+      begin
+        Dispatch.QueryInterface(IOleInPlaceActiveObject, IOIPAO);
+        if IOIPAO <> nil then FOleInPlaceActiveObject := IOIPAO;
+      end;
+    end;
+    if FOleInPlaceActiveObject <> nil then
+    begin
+      if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
+        (Msg.wParam in StdKeys) then
+        //nothing  -  do not pass on Backspace, Left, Right, Up, Down arrows
+      else FOleInPlaceActiveObject.TranslateAccelerator(Msg);
+    end;
+  end;
+end;
+
+
+procedure TfrmInternalBrowser.AddURLToList(URL: String);
+var
+  x: Integer;
+  pURLDateTime: TURLDateTime;
+  pRingButton: TJvOutlookBarButton;
+  bFound: Boolean;
+begin
+  // Initialize to false
+  bFound := False;
+
+  // Try to find string in the list
+  for x := 0 to cboURL.Items.Count - 1 do
+  begin
+    // Set found flag to true if got match
+    if cboURL.Items.Strings[x] = URL then
+    begin
+      bFound := True;
+      break;
+    end;
+  end;
+
+  // Add url to current list if not found
+  if not bFound then
+  begin
+    pURLDateTime := TURLDateTime.Create(Now);
+    cboURL.AddItem(URL, pURLDateTime);
+    pRingButton := frmRings.jvRings.Pages[JVPAGE_RING_BRWHISTORY].Buttons.Add;
+    pRingButton.Caption := URL;
+    pRingButton.OnClick := btnXHistoryClick;
+  end;
+end;
+
+procedure TfrmInternalBrowser.actBackToExecute(Sender: TObject);
+begin
+  InternalBrowser.GoBack;
+end;
+
+procedure TfrmInternalBrowser.actFowardToExecute(Sender: TObject);
+begin
+  InternalBrowser.GoForward;
+end;
+
+procedure TfrmInternalBrowser.actHomeExecute(Sender: TObject);
+begin
+  InternalBrowser.GoHome;
+end;
+
+procedure TfrmInternalBrowser.actStopExecute(Sender: TObject);
+begin
+  InternalBrowser.Stop;
+end;
+
+procedure TfrmInternalBrowser.actRefreshExecute(Sender: TObject);
+begin
+  InternalBrowser.Refresh2;
+end;
+
+procedure TfrmInternalBrowser.actSearchExecute(Sender: TObject);
+begin
+  InternalBrowser.GoSearch;
+end;
+
+procedure TfrmInternalBrowser.actGoExecute(Sender: TObject);
+begin
+  if cboURL.Text <> '' then
+    InternalBrowser.Navigate(cboURL.Text);
+end;
+
+procedure TfrmInternalBrowser.InternalBrowserNavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
+begin
+  jvgifBrowser.Animate := False;
+  cboURL.Text := InternalBrowser.LocationURL;
+  AddURLToList(InternalBrowser.LocationURL);
+end;
+
+procedure TfrmInternalBrowser.InternalBrowserCommandStateChange(Sender: TObject; Command: Integer; Enable: WordBool);
+begin
+  case Command of
+    CSC_NAVIGATEBACK: actBackTo.Enabled := Enable;
+    CSC_NAVIGATEFORWARD: actFowardTo.Enabled := Enable;
+    CSC_UPDATECOMMANDS: actStop.Enabled := Enable;
+  end;
+end;
+
+procedure TfrmInternalBrowser.InternalBrowserBeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
+begin
+  jvgifBrowser.Animate := True;
+end;
+
+procedure TfrmInternalBrowser.cboURLKeyPress(Sender: TObject; var Key: Char);
+begin
+  if Ord(Key) = VK_RETURN then
+    actGo.Execute;
+end;
+
+initialization
+  OleInitialize(nil);
+
+finalization
+  OleUninitialize
+
+end.

+ 3 - 4
LuaEdit/LuaCore/LuaUtils.pas

@@ -119,7 +119,7 @@ function LuaDataStrToStrings(const TableStr: string; Strings: TStrings): string;
 function LuaDoFile(L: Plua_State): Integer; cdecl;
 function LuaDoFile(L: Plua_State): Integer; cdecl;
 
 
 const
 const
-  LuaGlobalVariableStr = '{グローバル変数}';
+  LuaGlobalVariableStr = '[LUA_GLOBALSINDEX]';
 var
 var
   OnLuaStdout: TOnLuaStdout;
   OnLuaStdout: TOnLuaStdout;
   DefaultMaxTable: Integer;
   DefaultMaxTable: Integer;
@@ -642,7 +642,7 @@ function LuaStackToStr(L: Plua_State; Index: Integer; MaxTable: Integer): string
       else
       else
         Value := LuaStackToStr(L, -1, MaxTable);
         Value := LuaStackToStr(L, -1, MaxTable);
       if (lua_type(L, -1) = LUA_TFUNCTION) then
       if (lua_type(L, -1) = LUA_TFUNCTION) then
-        Result := Result + Format('%s() ', [Key])
+        Result := Result + Format('%s()=%p ', [Key, lua_topointer(L, -1)])
       else
       else
         Result := Result + Format('%s=%s ', [Key, Value]);
         Result := Result + Format('%s=%s ', [Key, Value]);
       // Key は次のために残す
       // Key は次のために残す
@@ -874,7 +874,7 @@ procedure LuaTableToTreeView(L: Plua_State; Index: Integer; TV: TTreeView; MaxTa
       else
       else
       begin
       begin
         if (Key = '_G') then
         if (Key = '_G') then
-          TV.Items.AddChild(TreeNode, Key + '={グローバル変数}')
+          TV.Items.AddChild(TreeNode, Key + '=[LUA_GLOBALSINDEX]')
         else
         else
           ParseTreeNode(TV.Items.AddChild(TreeNode, Key), -1);
           ParseTreeNode(TV.Items.AddChild(TreeNode, Key), -1);
       end;
       end;
@@ -1066,7 +1066,6 @@ function LuaPCallFunction(L: Plua_State; FunctionName :String;
 var
 var
    NArgs,
    NArgs,
    i        :Integer;
    i        :Integer;
-   auxVar   :Variant;
 
 
 begin
 begin
      //Put Function To Call on the Stack
      //Put Function To Call on the Stack

+ 6 - 5
LuaEdit/LuaEdit.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=2
 MajorVer=2
 MinorVer=2
 MinorVer=2
 Release=1
 Release=1
-Build=132
+Build=264
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=1252
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=Open Source
 CompanyName=Open Source
 FileDescription=IDE for Lua 5.0.2
 FileDescription=IDE for Lua 5.0.2
-FileVersion=2.2.1.132
+FileVersion=2.2.1.264
 InternalName=LuaEdit
 InternalName=LuaEdit
 LegalCopyright=LuaEdit Copyright 2004-2005 ©
 LegalCopyright=LuaEdit Copyright 2004-2005 ©
 LegalTrademarks=
 LegalTrademarks=
@@ -138,10 +138,11 @@ Comments=This project was originally created by Jean-Francois Goulet
 Count=1
 Count=1
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 [HistoryLists\hlSearchPath]
 [HistoryLists\hlSearchPath]
-Count=3
+Count=4
 Item0=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
 Item0=$(DELPHI)\Lib\Debug;C:\Prog\Delphi\Component\JEDI\jcl\lib\D7\debug;.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
-Item1=C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\Component\SynEdit\Source
-Item2=C:\Prog\Delphi\Component\SynEdit\Packages
+Item1=.\Syntax;.\LuaCore;C:\Prog\Delphi\Component\XPMenu;C:\Prog\Delphi\Component\SynEdit\Source
+Item2=C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\Component\SynEdit\Source
+Item3=C:\Prog\Delphi\Component\SynEdit\Packages
 [HistoryLists\hlOutputDirectorry]
 [HistoryLists\hlOutputDirectorry]
 Count=1
 Count=1
 Item0=.\bin
 Item0=.\bin

+ 8 - 1
LuaEdit/LuaEdit.dpr

@@ -45,7 +45,12 @@ uses
   AsciiTable in 'AsciiTable.pas' {frmAsciiTable},
   AsciiTable in 'AsciiTable.pas' {frmAsciiTable},
   ReadOnlyMsgBox in 'ReadOnlyMsgBox.pas' {frmReadOnlyMsgBox},
   ReadOnlyMsgBox in 'ReadOnlyMsgBox.pas' {frmReadOnlyMsgBox},
   Rings in 'Rings.pas' {frmRings},
   Rings in 'Rings.pas' {frmRings},
-  SearchPath in 'SearchPath.pas' {frmSearchPath};
+  SearchPath in 'SearchPath.pas' {frmSearchPath},
+  InternalBrowser in 'InternalBrowser.pas' {frmInternalBrowser},
+  FindInFiles in 'FindInFiles.pas' {frmFindInFiles},
+  SIFReport in 'SIFReport.pas' {frmSIFReport},
+  FindWindow1 in 'FindWindow1.pas' {frmFindWindow1},
+  FindWindow2 in 'FindWindow2.pas' {frmFindWindow2};
 
 
 {$R *.res}
 {$R *.res}
 
 
@@ -77,6 +82,8 @@ begin
   Application.CreateForm(TfrmAddBreakpoint, frmAddBreakpoint);
   Application.CreateForm(TfrmAddBreakpoint, frmAddBreakpoint);
   Application.CreateForm(TfrmEditorSettings, frmEditorSettings);
   Application.CreateForm(TfrmEditorSettings, frmEditorSettings);
   Application.CreateForm(TfrmAsciiTable, frmAsciiTable);
   Application.CreateForm(TfrmAsciiTable, frmAsciiTable);
+  Application.CreateForm(TfrmFindInFiles, frmFindInFiles);
+  Application.CreateForm(TfrmSIFReport, frmSIFReport);
   frmMain.CheckButtons;
   frmMain.CheckButtons;
 
 
   // show splash screen...
   // show splash screen...

BIN
LuaEdit/LuaEdit.res


+ 8 - 8
LuaEdit/LuaEditDebug/LuaEditDebug.cfg

@@ -14,7 +14,7 @@
 -$N+
 -$N+
 -$O+
 -$O+
 -$P+
 -$P+
--$Q-
+-$Q+
 -$R-
 -$R-
 -$S-
 -$S-
 -$T-
 -$T-
@@ -31,13 +31,13 @@
 -M
 -M
 -$M16384,1048576
 -$M16384,1048576
 -K$00400000
 -K$00400000
--N"E:\Programming\Borland\Delphi7\Libs\DCU"
--LE"E:\Programming\Borland\Delphi7\Libs\Pal_bpl"
--LN"E:\Programming\Borland\Delphi7\Libs\Pal_dcp"
--U"E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run"
--O"E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run"
--I"E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run"
--R"E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run"
+-E"..\bin"
+-LE"c:\program files\borland\delphi7\Projects\Bpl"
+-LN"c:\program files\borland\delphi7\Projects\Bpl"
+-U"C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug"
+-O"C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug"
+-I"C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug"
+-R"C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug"
 -DDELPHI_7
 -DDELPHI_7
 -w-UNSAFE_TYPE
 -w-UNSAFE_TYPE
 -w-UNSAFE_CODE
 -w-UNSAFE_CODE

+ 14 - 8
LuaEdit/LuaEditDebug/LuaEditDebug.dof

@@ -17,7 +17,7 @@ M=0
 N=1
 N=1
 O=1
 O=1
 P=1
 P=1
-Q=0
+Q=1
 R=0
 R=0
 S=0
 S=0
 T=0
 T=0
@@ -90,11 +90,11 @@ MaxStackSize=1048576
 ImageBase=4194304
 ImageBase=4194304
 ExeDescription=
 ExeDescription=
 [Directories]
 [Directories]
-OutputDir=
-UnitOutputDir=E:\Programming\Borland\Delphi7\Libs\DCU
-PackageDLLOutputDir=E:\Programming\Borland\Delphi7\Libs\Pal_bpl
-PackageDCPOutputDir=E:\Programming\Borland\Delphi7\Libs\Pal_dcp
-SearchPath=E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run
+OutputDir=..\bin
+UnitOutputDir=
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug
 Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;ZMstr7R178
 Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;ZMstr7R178
 Conditionals=DELPHI_7
 Conditionals=DELPHI_7
 DebugSourceDirs=
 DebugSourceDirs=
@@ -141,11 +141,17 @@ Item0=DELPHI_7
 Count=1
 Count=1
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 [HistoryLists\hlSearchPath]
 [HistoryLists\hlSearchPath]
-Count=1
-Item0=E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run
+Count=4
+Item0=C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore;C:\Prog\Delphi\LuaEdit\RunTimeDebug
+Item1=C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages;C:\Prog\Delphi\LuaEdit\LuaCore
+Item2=C:\Prog\Delphi\Component\JEDI\jcl\packages\d7;C:\Prog\Delphi\Component\JEDI\jvcl\packages\d7;C:\Prog\Delphi\Component\SynEdit\Packages
+Item3=E:\Programming\Borland\Comuni;E:\Programming\Borland\Comuni\LUA;E:\Programming\Borland\Delphi\Packages\PropEditors;E:\Programming\Borland\Delphi\Packages\ActiveX;E:\Programming\Borland\Delphi\Packages\Altri;E:\Programming\Borland\Delphi\Packages\Compress;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG;E:\Programming\Borland\Delphi\Packages\MaxMBeppeG\Printset;E:\Programming\Borland\Delphi\Packages\Database;E:\Programming\Borland\Delphi\Packages\Inspector;E:\Programming\Borland\Delphi\Packages\Internet;E:\Programming\Borland\Delphi\Packages\Multimedia;E:\Programming\Borland\Delphi\Packages\Special;E:\Programming\Borland\Delphi\Packages\ui;E:\Programming\Borland\Delphi\Packages\ImageLib;E:\Programming\Borland\Delphi7\Packages\Indy 9;E:\Programming\Borland\Delphi7\Packages\DIB;E:\Programming\Borland\Delphi7\Packages\fpiette\ics\Delphi\Vc32;E:\Programming\Borland\Delphi7\Packages\Graphics;E:\Programming\Borland\Delphi7\Libs\Pal_dcp;E:\Programming\Borland\Delphi7\Libs\Pal_bpl;E:\Programming\Borland\Delphi7\Packages\ZipMaster\vcl;E:\Programming\Borland\Delphi\Packages\KOL;E:\Programming\Borland\Delphi7\Packages\synedit\Source;E:\Programming\Borland\Delphi7\Libs\DCU;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\common;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\vcl;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\windows;E:\Programming\Borland\Delphi\Packages\Jedi\jcl\source\visclx;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\common;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\Resources;E:\Programming\Borland\Delphi\Packages\Jedi\jvcl\run
 [HistoryLists\hlUnitOutputDirectory]
 [HistoryLists\hlUnitOutputDirectory]
 Count=1
 Count=1
 Item0=E:\Programming\Borland\Delphi7\Libs\DCU
 Item0=E:\Programming\Borland\Delphi7\Libs\DCU
+[HistoryLists\hlOutputDirectorry]
+Count=1
+Item0=..\bin
 [HistoryLists\hlBPLOutput]
 [HistoryLists\hlBPLOutput]
 Count=1
 Count=1
 Item0=E:\Programming\Borland\Delphi7\Libs\Pal_bpl
 Item0=E:\Programming\Borland\Delphi7\Libs\Pal_bpl

+ 3 - 4
LuaEdit/LuaEditDebug/LuaEditDebug.dpr

@@ -96,7 +96,7 @@ Var
 
 
 begin
 begin
 try
 try
-RTAssert(0, true, 'Freeing', '', 0);
+  RTAssert(0, true, 'Freeing', '', 0);
   MainFormHandle :=frmMain.Handle;
   MainFormHandle :=frmMain.Handle;
   for i :=0 to Screen.CustomFormCount-1 do
   for i :=0 to Screen.CustomFormCount-1 do
    if (Screen.CustomForms[0]<>Nil) then
    if (Screen.CustomForms[0]<>Nil) then
@@ -109,8 +109,7 @@ RTAssert(0, true, 'Freeing', '', 0);
      Sleep(100);
      Sleep(100);
   Until not(IsWindow(MainFormHandle));
   Until not(IsWindow(MainFormHandle));
 
 
-RTAssert(0, true, 'Free Done', '', 0);
-
+  RTAssert(0, true, 'Free Done', '', 0);
 except
 except
    RTAssert(0, true, 'Free exception', '', 0);
    RTAssert(0, true, 'Free exception', '', 0);
 
 
@@ -139,7 +138,7 @@ Var
    pLuaUnit: TLuaUnit;
    pLuaUnit: TLuaUnit;
 
 
 begin
 begin
-   RTAssert(0, true, 'Starting '+Filename, '', 0);
+     RTAssert(0, true, 'Starting '+Filename, '', 0);
      Result :=LUA_ERRRUN;
      Result :=LUA_ERRRUN;
      MainForm :=LuaGetTableLightUserData(LState, LUA_REGISTRYINDEX, 'LuaEditDebug_MainForm');
      MainForm :=LuaGetTableLightUserData(LState, LUA_REGISTRYINDEX, 'LuaEditDebug_MainForm');
      if (MainForm<>Nil)
      if (MainForm<>Nil)

+ 2 - 1
LuaEdit/LuaStack.dfm

@@ -16,6 +16,7 @@ object frmLuaStack: TfrmLuaStack
   Font.Style = []
   Font.Style = []
   FormStyle = fsStayOnTop
   FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
+  Position = poOwnerFormCenter
   OnActivate = FormActivate
   OnActivate = FormActivate
   PixelsPerInch = 96
   PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
@@ -23,7 +24,7 @@ object frmLuaStack: TfrmLuaStack
     Left = 0
     Left = 0
     Top = 0
     Top = 0
     Width = 442
     Width = 442
-    Height = 116
+    Height = 123
     Align = alClient
     Align = alClient
     Font.Charset = ANSI_CHARSET
     Font.Charset = ANSI_CHARSET
     Font.Color = clWindowText
     Font.Color = clWindowText

File diff suppressed because it is too large
+ 1733 - 1554
LuaEdit/Main.dfm


File diff suppressed because it is too large
+ 397 - 117
LuaEdit/Main.pas


+ 40 - 18
LuaEdit/ProjectTree.dfm

@@ -1,11 +1,13 @@
 object frmProjectTree: TfrmProjectTree
 object frmProjectTree: TfrmProjectTree
   Left = 501
   Left = 501
   Top = 320
   Top = 320
-  Width = 271
-  Height = 230
+  Width = 250
+  Height = 200
   BorderStyle = bsSizeToolWin
   BorderStyle = bsSizeToolWin
   Caption = 'Project Tree'
   Caption = 'Project Tree'
   Color = clBtnFace
   Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 250
   DockSite = True
   DockSite = True
   DragKind = dkDock
   DragKind = dkDock
   DragMode = dmAutomatic
   DragMode = dmAutomatic
@@ -22,32 +24,52 @@ object frmProjectTree: TfrmProjectTree
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 263
-    Height = 196
+    Width = 242
+    Height = 173
     Align = alClient
     Align = alClient
     BevelOuter = bvNone
     BevelOuter = bvNone
     TabOrder = 0
     TabOrder = 0
-    object trvProjectTree: TJvDotNetTreeView
+    object vstProjectTree: TVirtualStringTree
       Left = 0
       Left = 0
       Top = 0
       Top = 0
-      Width = 263
-      Height = 196
+      Width = 242
+      Height = 173
       Align = alClient
       Align = alClient
+      Header.AutoSizeIndex = 1
+      Header.Font.Charset = DEFAULT_CHARSET
+      Header.Font.Color = clWindowText
+      Header.Font.Height = -11
+      Header.Font.Name = 'MS Sans Serif'
+      Header.Font.Style = []
+      Header.Options = [hoAutoResize, hoColumnResize, hoDrag, hoVisible]
+      Header.Style = hsFlatButtons
       Images = imlProjectTree
       Images = imlProjectTree
-      Indent = 19
       PopupMenu = ppmProjectTree
       PopupMenu = ppmProjectTree
-      ReadOnly = True
-      RowSelect = True
       TabOrder = 0
       TabOrder = 0
-      OnAdvancedCustomDrawItem = trvProjectTreeAdvancedCustomDrawItem
-      OnDblClick = trvProjectTreeDblClick
-      OnMouseDown = trvProjectTreeMouseDown
-      LineColor = 13160660
+      TreeOptions.MiscOptions = [toAcceptOLEDrop, toFullRepaintOnResize, toInitOnSave, toReportMode, toToggleOnDblClick, toWheelPanning]
+      OnAfterItemPaint = vstProjectTreeAfterItemPaint
+      OnDblClick = vstProjectTreeDblClick
+      OnGetText = vstProjectTreeGetText
+      OnPaintText = vstProjectTreePaintText
+      OnGetImageIndex = vstProjectTreeGetImageIndex
+      OnGetNodeDataSize = vstProjectTreeGetNodeDataSize
+      OnMouseDown = vstProjectTreeMouseDown
+      Columns = <
+        item
+          Position = 0
+          Width = 100
+          WideText = 'Files'
+        end
+        item
+          Position = 1
+          Width = 138
+          WideText = 'Path'
+        end>
     end
     end
   end
   end
   object imlProjectTree: TImageList
   object imlProjectTree: TImageList
-    Left = 8
-    Top = 9
+    Left = 40
+    Top = 41
     Bitmap = {
     Bitmap = {
       494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000001000000001002000000000000010
       0000000000003600000028000000400000001000000001002000000000000010
@@ -190,8 +212,8 @@ object frmProjectTree: TfrmProjectTree
   end
   end
   object ppmProjectTree: TPopupMenu
   object ppmProjectTree: TPopupMenu
     OnPopup = ppmProjectTreePopup
     OnPopup = ppmProjectTreePopup
-    Left = 40
-    Top = 8
+    Left = 8
+    Top = 72
     object ActivateSelectedProject1: TMenuItem
     object ActivateSelectedProject1: TMenuItem
       Action = frmMain.actActiveSelPrj
       Action = frmMain.actActiveSelPrj
     end
     end

+ 218 - 97
LuaEdit/ProjectTree.pas

@@ -5,9 +5,17 @@ interface
 uses
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ComCtrls, CommCtrl, ExtCtrls, ImgList, Menus, JvComponent,
   Dialogs, ComCtrls, CommCtrl, ExtCtrls, ImgList, Menus, JvComponent,
-  JvDockControlForm, JvExComCtrls, JvComCtrls, JvDotNetControls;
+  JvDockControlForm, JvExComCtrls, JvComCtrls, JvDotNetControls, Main,
+  VirtualTrees;
 
 
 type
 type
+  PProjectTreeData = ^TProjectTreeData;
+  TProjectTreeData = record
+    pLuaUnit: TLuaUnit;
+    pLuaPrj: TLuaProject;
+    ActiveProject: Boolean;
+  end;
+
   TfrmProjectTree = class(TForm)
   TfrmProjectTree = class(TForm)
     Panel1: TPanel;
     Panel1: TPanel;
     imlProjectTree: TImageList;
     imlProjectTree: TImageList;
@@ -16,17 +24,20 @@ type
     N1: TMenuItem;
     N1: TMenuItem;
     UnloadFileProject1: TMenuItem;
     UnloadFileProject1: TMenuItem;
     JvDockClient1: TJvDockClient;
     JvDockClient1: TJvDockClient;
-    trvProjectTree: TJvDotNetTreeView;
     N2: TMenuItem;
     N2: TMenuItem;
     AddUnittoProject1: TMenuItem;
     AddUnittoProject1: TMenuItem;
     RemoveUnitFromProject1: TMenuItem;
     RemoveUnitFromProject1: TMenuItem;
     Options1: TMenuItem;
     Options1: TMenuItem;
-    procedure trvProjectTreeDblClick(Sender: TObject);
-    procedure trvProjectTreeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-    procedure trvProjectTreeAdvancedCustomDrawItem(Sender: TCustomTreeView;
-      Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
+    vstProjectTree: TVirtualStringTree;
     procedure UnloadFileProject1Click(Sender: TObject);
     procedure UnloadFileProject1Click(Sender: TObject);
     procedure ppmProjectTreePopup(Sender: TObject);
     procedure ppmProjectTreePopup(Sender: TObject);
+    procedure vstProjectTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
+    procedure vstProjectTreeGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
+    procedure vstProjectTreeGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
+    procedure vstProjectTreePaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType);
+    procedure vstProjectTreeDblClick(Sender: TObject);
+    procedure vstProjectTreeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure vstProjectTreeAfterItemPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
   private
   private
     { Private declarations }
     { Private declarations }
   public
   public
@@ -39,34 +50,43 @@ var
 
 
 implementation
 implementation
 
 
-uses Main;
-
 {$R *.dfm}
 {$R *.dfm}
 
 
-procedure TfrmProjectTree.trvProjectTreeDblClick(Sender: TObject);
+procedure TfrmProjectTree.vstProjectTreeDblClick(Sender: TObject);
 var
 var
+  pNode: PVirtualNode;
+  pData: PProjectTreeData;
   pLuaUnit: TLuaUnit;
   pLuaUnit: TLuaUnit;
 begin
 begin
-  if (Assigned(frmProjectTree.trvProjectTree.Selected) and ((frmProjectTree.trvProjectTree.Selected.ImageIndex = 1) and (frmProjectTree.trvProjectTree.Selected.SelectedIndex = 1))) then
+  pNode := vstProjectTree.GetFirstSelected;
+
+  if Assigned(pNode) then
   begin
   begin
-    pLuaUnit := TLuaUnit(frmProjectTree.trvProjectTree.Selected.Data);
-    
-    if pLuaUnit.IsLoaded then
+    pData := vstProjectTree.GetNodeData(pNode);
+
+    if Assigned(pData.pLuaUnit) then
     begin
     begin
-      if LuaOpenedUnits.IndexOf(pLuaUnit) = -1 then
-      begin
-        frmMain.AddFileInTab(pLuaUnit);
-      end
-      else
+      pLuaUnit := pData.pLuaUnit;
+
+      if pLuaUnit.IsLoaded then
       begin
       begin
-        frmMain.GetAssociatedTab(pLuaUnit).Selected := True;
-        
-        if pLuaUnit.HasChanged then
-          frmMain.stbMain.Panels[2].Text := 'Modified'
+        if LuaOpenedUnits.IndexOf(pLuaUnit) = -1 then
+        begin
+          // Insert new tab in the page control to view the requested unit
+          frmMain.AddFileInTab(pLuaUnit);
+        end
         else
         else
-          frmMain.stbMain.Panels[2].Text := '';
+        begin
+          // Activate the tab associated to the requested unit
+          frmMain.jvUnitBar.SelectedTab := frmMain.GetAssociatedTab(pLuaUnit);
 
 
-        frmMain.synEditClick(pLuaUnit.synUnit);
+          if pLuaUnit.HasChanged then
+            frmMain.stbMain.Panels[2].Text := 'Modified'
+          else
+            frmMain.stbMain.Panels[2].Text := '';
+
+          frmMain.synEditClick(pLuaUnit.synUnit);
+        end;
       end;
       end;
     end;
     end;
   end;
   end;
@@ -77,20 +97,23 @@ end;
 procedure TfrmProjectTree.BuildProjectTree(HandleNotifier: Boolean);
 procedure TfrmProjectTree.BuildProjectTree(HandleNotifier: Boolean);
 var
 var
   pTempPrj: TLuaProject;
   pTempPrj: TLuaProject;
-  pNewPrjNode, pNewNode: TTreeNode;
-  x, y: integer;
+  pNewPrjNode, pNewNode, pSingleUnitLastNode: PVirtualNode;
+  pData: PProjectTreeData;
+  x, y: Integer;
 begin
 begin
-  pNewPrjNode := nil;
+  // Initialize stuff
   pNewNode := nil;
   pNewNode := nil;
+  pSingleUnitLastNode := nil;
 
 
+  // If the changes notifier is handled, we stop it while building the tree
   if HandleNotifier then
   if HandleNotifier then
   begin
   begin
     frmMain.jvchnNotifier.Active := False;
     frmMain.jvchnNotifier.Active := False;
     frmMain.jvchnNotifier.Notifications.Clear;
     frmMain.jvchnNotifier.Notifications.Clear;
   end;
   end;
 
 
-  frmProjectTree.trvProjectTree.Items.BeginUpdate;
-  frmProjectTree.trvProjectTree.Items.Clear;
+  vstProjectTree.BeginUpdate;
+  vstProjectTree.Clear;
 
 
   for x := 0 to LuaProjects.Count - 1 do
   for x := 0 to LuaProjects.Count - 1 do
   begin
   begin
@@ -98,91 +121,70 @@ begin
 
 
     if pTempPrj.sPrjName <> '[@@SingleUnits@@]' then
     if pTempPrj.sPrjName <> '[@@SingleUnits@@]' then
     begin
     begin
-      // Adding single unit (projectless) to the tree
-      pNewPrjNode := frmProjectTree.trvProjectTree.Items.Add(nil, pTempPrj.sPrjName + ' (' + pTempPrj.sPrjPath + ')');
-      pNewPrjNode.Data := pTempPrj;
-      pNewPrjNode.ImageIndex := 0;
-      pNewPrjNode.SelectedIndex := 0;
+      // Create the node
+      pNewPrjNode := vstProjectTree.AddChild(vstProjectTree.RootNode);
+      pData := vstProjectTree.GetNodeData(pNewPrjNode);
+      pData.pLuaUnit := nil;
+      pData.pLuaPrj := pTempPrj;
+      pData.ActiveProject := (pTempPrj = ActiveProject);
 
 
       // Adding project root to change notifier...
       // Adding project root to change notifier...
       if ((not pTempPrj.IsNew) and HandleNotifier) then
       if ((not pTempPrj.IsNew) and HandleNotifier) then
         frmMain.AddToNotifier(ExtractFileDir(pTempPrj.sPrjPath));
         frmMain.AddToNotifier(ExtractFileDir(pTempPrj.sPrjPath));
-    end;
+    end
+    else
+      pNewPrjNode := pSingleUnitLastNode;
 
 
     for y := 0 to pTempPrj.lstUnits.Count - 1 do
     for y := 0 to pTempPrj.lstUnits.Count - 1 do
     begin
     begin
-      pNewNode := frmProjectTree.trvProjectTree.Items.AddChild(pNewPrjNode, ExtractFileName(TLuaUnit(pTempPrj.lstUnits.Items[y]).sName) + '   (' + TLuaUnit(pTempPrj.lstUnits.Items[y]).sUnitPath + ')');
-      if TLuaUnit(pTempPrj.lstUnits.Items[y]).IsLoaded then
-      begin
-        pNewNode.ImageIndex := 1;
-        pNewNode.SelectedIndex := 1;
-      end
+      // Adding single unit (projectless) to the tree
+      if pTempPrj.sPrjName = '[@@SingleUnits@@]' then
+        pNewNode := vstProjectTree.InsertNode(pNewPrjNode, amInsertAfter)
       else
       else
-      begin
-        pNewNode.ImageIndex := 2;
-        pNewNode.SelectedIndex := 2;
-      end;
+        pNewNode := vstProjectTree.AddChild(pNewPrjNode);
+
+      // Update last single unit node
+      pSingleUnitLastNode := pNewNode;
 
 
-      pNewNode.Data := TLuaUnit(pTempPrj.lstUnits.Items[y]);
+      // Create the node
+      pData := vstProjectTree.GetNodeData(pNewNode);
+      pData.pLuaUnit := TLuaUnit(pTempPrj.lstUnits.Items[y]);
+      pData.pLuaPrj := nil;
+      pData.ActiveProject := False;
 
 
       // Adding unit root to change notifier...
       // Adding unit root to change notifier...
       if ((not TLuaUnit(pTempPrj.lstUnits.Items[y]).IsNew) and HandleNotifier) then
       if ((not TLuaUnit(pTempPrj.lstUnits.Items[y]).IsNew) and HandleNotifier) then
         frmMain.AddToNotifier(ExtractFileDir(TLuaUnit(pTempPrj.lstUnits.Items[y]).sUnitPath));
         frmMain.AddToNotifier(ExtractFileDir(TLuaUnit(pTempPrj.lstUnits.Items[y]).sUnitPath));
     end;
     end;
-
-    if Assigned(pNewPrjNode) then
-      pNewPrjNode.Expand(True);
   end;
   end;
 
 
-  frmProjectTree.trvProjectTree.Items.EndUpdate;
+  vstProjectTree.EndUpdate;
+
+  // Set back on the changes notifier if required
   if ((frmMain.jvchnNotifier.Notifications.Count > 0) and HandleNotifier) then
   if ((frmMain.jvchnNotifier.Notifications.Count > 0) and HandleNotifier) then
     frmMain.jvchnNotifier.Active := True;
     frmMain.jvchnNotifier.Active := True;
 end;
 end;
 
 
-procedure TfrmProjectTree.trvProjectTreeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
-  frmMain.CheckButtons;
-end;
-
-procedure TfrmProjectTree.trvProjectTreeAdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
-begin
-  if Stage = cdPrepaint then
-  begin
-    Sender.Canvas.Font.Style := [];
-
-    if ((Node.ImageIndex = 2) or (Node.SelectedIndex = 2)) then
-    begin
-      if not TLuaUnit(Node.Data).IsLoaded then
-      begin
-        Sender.Canvas.Font.Color := clGray;
-      end;
-    end
-    else if ((Node.ImageIndex = 0) or (Node.SelectedIndex = 0)) then
-    begin
-      if TLuaProject(Node.Data) = ActiveProject then
-      begin
-        Sender.Canvas.Font.Style := [fsBold];
-        frmMain.Caption := 'LuaEdit - ' + TLuaProject(Node.Data).sPrjName;
-      end;
-    end;
-  end;
-end;
-
 procedure TfrmProjectTree.UnloadFileProject1Click(Sender: TObject);
 procedure TfrmProjectTree.UnloadFileProject1Click(Sender: TObject);
 var
 var
   pLuaPrj: TLuaProject;
   pLuaPrj: TLuaProject;
   pLuaUnit: TLuaUnit;
   pLuaUnit: TLuaUnit;
   Answer, x: Integer;
   Answer, x: Integer;
   UnitsToDelete: TList;
   UnitsToDelete: TList;
+  pNode: PVirtualNode;
+  pData: PProjectTreeData;
 begin
 begin
-  if Assigned(trvProjectTree.Selected) then
+  pNode := vstProjectTree.GetFirstSelected;
+
+  if Assigned(pNode) then
   begin
   begin
+    pData := vstProjectTree.GetNodeData(pNode);
     UnitsToDelete := TList.Create;
     UnitsToDelete := TList.Create;
-    
+
     // Case where the selected file was a project
     // Case where the selected file was a project
-    if ((trvProjectTree.Selected.ImageIndex = 0) or (trvProjectTree.Selected.SelectedIndex = 0)) then
+    if Assigned(pData.pLuaPrj) then
     begin
     begin
-      pLuaPrj := TLuaProject(trvProjectTree.Selected.Data);
+      pLuaPrj := pData.pLuaPrj;
 
 
       // Ssaving any new or modified project's files
       // Ssaving any new or modified project's files
       for x := 0 to pLuaPrj.lstUnits.Count - 1 do
       for x := 0 to pLuaPrj.lstUnits.Count - 1 do
@@ -227,9 +229,9 @@ begin
         end;
         end;
       end;
       end;
     end
     end
-    else if ((trvProjectTree.Selected.ImageIndex = 1) or (trvProjectTree.Selected.SelectedIndex = 1)) then
+    else if Assigned(pData.pLuaUnit) then
     begin
     begin
-      pLuaUnit := TLuaUnit(trvProjectTree.Selected.Data);
+      pLuaUnit := pData.pLuaUnit;
 
 
       if pLuaUnit.pPrjOwner.sPrjName = '[@@SingleUnits@@]' then
       if pLuaUnit.pPrjOwner.sPrjName = '[@@SingleUnits@@]' then
       begin
       begin
@@ -294,28 +296,147 @@ end;
 
 
 procedure TfrmProjectTree.ppmProjectTreePopup(Sender: TObject);
 procedure TfrmProjectTree.ppmProjectTreePopup(Sender: TObject);
 var
 var
-  pNode: TTreeNode;
+  pNode: PVirtualNode;
+  pData: PProjectTreeData;
 begin
 begin
   // set all menus status initially to false
   // set all menus status initially to false
   UnloadFileProject1.Enabled := False;
   UnloadFileProject1.Enabled := False;
   AddUnittoProject1.Enabled := False;
   AddUnittoProject1.Enabled := False;
   RemoveUnitFromProject1.Enabled := False;
   RemoveUnitFromProject1.Enabled := False;
   Options1.Enabled := False;
   Options1.Enabled := False;
+  pNode := vstProjectTree.GetFirstSelected;
 
 
   // Only if a menu is selected
   // Only if a menu is selected
-  if Assigned(trvProjectTree.Selected) then
+  if Assigned(pNode) then
   begin
   begin
-    // Only if data is attached to the selected node
-    if Assigned(trvProjectTree.Selected.Data) then
+    // Retreive data from selected node
+    pData := vstProjectTree.GetNodeData(pNode);
+
+    // setting menu status
+    AddUnitToProject1.Enabled := (pData.pLuaPrj = ActiveProject);
+    RemoveUnitFromProject1.Enabled := (pData.pLuaPrj = ActiveProject);
+    Options1.Enabled := (pData.pLuaPrj = ActiveProject);
+    UnloadFileProject1.Enabled := (((Assigned(pData.pLuaUnit)) and (pNode.Parent = vstProjectTree.RootNode)) or (Assigned(pData.pLuaPrj)));
+  end;
+end;
+
+procedure TfrmProjectTree.vstProjectTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
+var
+  pData: PProjectTreeData;
+begin
+  // Set text to display for all nodes
+  if TextType = ttNormal then
+  begin
+    case Column of
+      0:
+      begin
+        pData := Sender.GetNodeData(Node);
+        if Assigned(pData.pLuaPrj) then
+          CellText := pData.pLuaPrj.sPrjName
+        else
+          CellText := pData.pLuaUnit.sName;
+      end;
+      1:
+      begin
+        pData := Sender.GetNodeData(Node);
+        if Assigned(pData.pLuaPrj) then
+          CellText := pData.pLuaPrj.sPrjPath
+        else
+          CellText := pData.pLuaUnit.sUnitPath;
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmProjectTree.vstProjectTreePaintText(Sender: TBaseVirtualTree; const TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType);
+var
+  pData: PProjectTreeData;
+begin
+  pData := Sender.GetNodeData(Node);
+
+  if Assigned(pData.pLuaPrj) then
+  begin
+    // Set bold style on the active project node
+    if pData.ActiveProject then
+    begin
+      TargetCanvas.Font.Style := [fsBold];
+      frmMain.Caption := 'LuaEdit - ' + TLuaProject(pData.pLuaPrj).sPrjName;
+    end;
+  end
+  else
+  begin
+    // Set disabled color for non-loaded units
+    if not pData.pLuaUnit.IsLoaded then
+      TargetCanvas.Pen.Color := clInactiveCaption;
+  end;
+end;
+
+procedure TfrmProjectTree.vstProjectTreeGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: Integer);
+var
+  pData: PProjectTreeData;
+begin
+  // Set image index for all nodes
+  if Column = 0 then
+  begin
+    pData := Sender.GetNodeData(Node);
+
+    if Assigned(pData.pLuaPrj) then
+    begin
+      ImageIndex := 0;
+    end
+    else
+    begin
+      if pData.pLuaUnit.IsLoaded then
+        ImageIndex := 1
+      else
+        ImageIndex := 2;
+    end;
+  end;
+end;
+
+procedure TfrmProjectTree.vstProjectTreeGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
+begin
+  NodeDataSize := SizeOf(TProjectTreeData);
+end;
+
+procedure TfrmProjectTree.vstProjectTreeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  frmMain.CheckButtons;
+end;
+
+procedure TfrmProjectTree.vstProjectTreeAfterItemPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
+var
+  pRect: TRect;
+begin
+  pRect := ItemRect;
+  InflateRect(pRect, 0, 1);
+  pRect.Right := pRect.Left + 22;
+  TargetCanvas.Brush.Color := clWhite;
+  TargetCanvas.FillRect(pRect);
+
+  // Draw node button since the noda has some child
+  if ((Node.Parent = Sender.RootNode) and (Node.ChildCount <> 0)) then
+  begin
+    // Draw the frame around the button
+    TargetCanvas.Pen.Color := clBtnShadow;
+    TargetCanvas.Rectangle(5, 4, 14, 13);
+    TargetCanvas.MoveTo(14, 8);
+    TargetCanvas.LineTo(20, 8);
+    TargetCanvas.Pen.Color := clBlack;
+
+    if not (vsExpanded in Node.States) then
+    begin
+      // Draw expandable node button (plus sign)
+      TargetCanvas.MoveTo(7, 8);
+      TargetCanvas.LineTo(12, 8);
+      TargetCanvas.MoveTo(9, 6);
+      TargetCanvas.LineTo(9, 11);
+    end
+    else
     begin
     begin
-      // getting selected node
-      pNode := trvProjectTree.Selected;
-
-      // setting menu status
-      AddUnittoProject1.Enabled := (trvProjectTree.Selected.Data = ActiveProject);
-      RemoveUnitFromProject1.Enabled := (trvProjectTree.Selected.Data = ActiveProject);
-      Options1.Enabled := (trvProjectTree.Selected.Data = ActiveProject);
-      UnloadFileProject1.Enabled := (((((pNode.ImageIndex = 1) or (pNode.SelectedIndex = 1)) and (not Assigned(pNode.Parent))) or ((pNode.ImageIndex = 0) or (pNode.SelectedIndex = 0))));
+      // Draw non-expandable node button (minus sign)
+      TargetCanvas.MoveTo(7, 8);
+      TargetCanvas.LineTo(12, 8);
     end;
     end;
   end;
   end;
 end;
 end;

+ 33 - 4
LuaEdit/Replace.dfm

@@ -1,6 +1,6 @@
 object frmReplace: TfrmReplace
 object frmReplace: TfrmReplace
-  Left = 249
-  Top = 113
+  Left = 441
+  Top = 192
   BorderIcons = [biSystemMenu]
   BorderIcons = [biSystemMenu]
   BorderStyle = bsSingle
   BorderStyle = bsSingle
   Caption = 'Replace Text'
   Caption = 'Replace Text'
@@ -12,6 +12,35 @@ object frmReplace: TfrmReplace
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
+  Icon.Data = {
+    0000010001001010000001001800680300001600000028000000100000002000
+    0000010018000000000040030000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000C6C6C6000000000000
+    000000000000000000000000000000C6C6C60000000000000000000000000000
+    0000000000000000000000000084848400000000000000000084848400000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    00000000000000C6C6C6000000000000000000000000C6C6C600000000000000
+    0000000000000000000000000000000000000000000000C6C6C6000000000000
+    000000000000C6C6C60000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000008484840000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    000000000000000000000000000000000000000000000000000000000000B6E7
+    0000B76B000084270000B76B0000CEE70000FFFF0000C7C70000C7C70000C387
+    0000C0070000C0070000C0070000C0070000C0070000F39F0000F39F0000}
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poOwnerFormCenter
   Position = poOwnerFormCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
@@ -21,9 +50,9 @@ object frmReplace: TfrmReplace
   object Label1: TLabel
   object Label1: TLabel
     Left = 8
     Left = 8
     Top = 12
     Top = 12
-    Width = 52
+    Width = 49
     Height = 13
     Height = 13
-    Caption = '&Search for:'
+    Caption = '&Find what:'
   end
   end
   object Label2: TLabel
   object Label2: TLabel
     Left = 8
     Left = 8

+ 20 - 2
LuaEdit/Rings.dfm

@@ -23,7 +23,7 @@ object frmRings: TfrmRings
     Left = 0
     Left = 0
     Top = 0
     Top = 0
     Width = 335
     Width = 335
-    Height = 237
+    Height = 244
     Align = alClient
     Align = alClient
     Pages = <
     Pages = <
       item
       item
@@ -62,8 +62,26 @@ object frmRings: TfrmRings
         Font.Style = []
         Font.Style = []
         ParentColor = True
         ParentColor = True
         TopButtonIndex = 0
         TopButtonIndex = 0
+      end
+      item
+        Alignment = taLeftJustify
+        Buttons = <>
+        ButtonSize = olbsLarge
+        Caption = 'Internal Browser History'
+        DownFont.Charset = DEFAULT_CHARSET
+        DownFont.Color = clWindowText
+        DownFont.Height = -11
+        DownFont.Name = 'MS Sans Serif'
+        DownFont.Style = []
+        Font.Charset = DEFAULT_CHARSET
+        Font.Color = clWhite
+        Font.Height = -11
+        Font.Name = 'MS Sans Serif'
+        Font.Style = []
+        ParentColor = True
+        TopButtonIndex = 0
       end>
       end>
-    ActivePageIndex = 1
+    ActivePageIndex = 2
     ThemedBackground = False
     ThemedBackground = False
     OnCustomDraw = jvRingsCustomDraw
     OnCustomDraw = jvRingsCustomDraw
     Font.Charset = DEFAULT_CHARSET
     Font.Charset = DEFAULT_CHARSET

+ 2 - 2
LuaEdit/Rings.pas

@@ -4,8 +4,8 @@ interface
 
 
 uses
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
-  Dialogs, JvOutlookBar, JvDockControlForm,
-  ExtCtrls, JvNavigationPane, JvJVCLUtils, JvComponent, JvExControls;
+  Dialogs, JvOutlookBar, JvDockControlForm, JvExControls,
+  ExtCtrls, JvNavigationPane, JvJVCLUtils, JvComponent;
 
 
 type
 type
   TfrmRings = class(TForm)
   TfrmRings = class(TForm)

+ 145 - 0
LuaEdit/SIFReport.dfm

@@ -0,0 +1,145 @@
+object frmSIFReport: TfrmSIFReport
+  Left = 458
+  Top = 255
+  BorderStyle = bsToolWindow
+  Caption = 'Find in Files Report'
+  ClientHeight = 150
+  ClientWidth = 247
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  FormStyle = fsStayOnTop
+  OldCreateOrder = False
+  Position = poOwnerFormCenter
+  OnPaint = FormPaint
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Label1: TLabel
+    Left = 8
+    Top = 8
+    Width = 81
+    Height = 13
+    Caption = 'Last/Current File:'
+  end
+  object lblCurrentFile: TJvLabel
+    Left = 8
+    Top = 24
+    Width = 233
+    Height = 13
+    AutoSize = False
+    Color = clBtnFace
+    ParentColor = False
+    AutoOpenURL = False
+    HotTrackFont.Charset = DEFAULT_CHARSET
+    HotTrackFont.Color = clWindowText
+    HotTrackFont.Height = -11
+    HotTrackFont.Name = 'MS Sans Serif'
+    HotTrackFont.Style = []
+    TextEllipsis = tePathEllipsis
+  end
+  object Label4: TLabel
+    Left = 8
+    Top = 48
+    Width = 66
+    Height = 13
+    Caption = 'Match Found:'
+  end
+  object Label5: TLabel
+    Left = 128
+    Top = 48
+    Width = 74
+    Height = 13
+    Caption = 'Scanned Lines:'
+  end
+  object Label3: TLabel
+    Left = 128
+    Top = 88
+    Width = 66
+    Height = 13
+    Caption = 'Skipped Files:'
+  end
+  object Label2: TLabel
+    Left = 8
+    Top = 88
+    Width = 70
+    Height = 13
+    Caption = 'Scanned Files:'
+  end
+  object lblMatchFound: TJvLabel
+    Left = 8
+    Top = 64
+    Width = 113
+    Height = 13
+    AutoSize = False
+    Color = clBtnFace
+    ParentColor = False
+    AutoOpenURL = False
+    HotTrackFont.Charset = DEFAULT_CHARSET
+    HotTrackFont.Color = clWindowText
+    HotTrackFont.Height = -11
+    HotTrackFont.Name = 'MS Sans Serif'
+    HotTrackFont.Style = []
+    TextEllipsis = tePathEllipsis
+  end
+  object lblScannedLines: TJvLabel
+    Left = 128
+    Top = 64
+    Width = 113
+    Height = 13
+    AutoSize = False
+    Color = clBtnFace
+    ParentColor = False
+    AutoOpenURL = False
+    HotTrackFont.Charset = DEFAULT_CHARSET
+    HotTrackFont.Color = clWindowText
+    HotTrackFont.Height = -11
+    HotTrackFont.Name = 'MS Sans Serif'
+    HotTrackFont.Style = []
+    TextEllipsis = tePathEllipsis
+  end
+  object lblScannedFiles: TJvLabel
+    Left = 8
+    Top = 104
+    Width = 113
+    Height = 13
+    AutoSize = False
+    Color = clBtnFace
+    ParentColor = False
+    AutoOpenURL = False
+    HotTrackFont.Charset = DEFAULT_CHARSET
+    HotTrackFont.Color = clWindowText
+    HotTrackFont.Height = -11
+    HotTrackFont.Name = 'MS Sans Serif'
+    HotTrackFont.Style = []
+    TextEllipsis = tePathEllipsis
+  end
+  object lblSkippedFiles: TJvLabel
+    Left = 128
+    Top = 104
+    Width = 113
+    Height = 13
+    AutoSize = False
+    Color = clBtnFace
+    ParentColor = False
+    AutoOpenURL = False
+    HotTrackFont.Charset = DEFAULT_CHARSET
+    HotTrackFont.Color = clWindowText
+    HotTrackFont.Height = -11
+    HotTrackFont.Name = 'MS Sans Serif'
+    HotTrackFont.Style = []
+    TextEllipsis = tePathEllipsis
+  end
+  object chkKeepReportOpened: TCheckBox
+    Left = 8
+    Top = 128
+    Width = 233
+    Height = 17
+    Caption = 'Keep this window opened when finished'
+    TabOrder = 0
+    OnClick = chkKeepReportOpenedClick
+  end
+end

+ 147 - 0
LuaEdit/SIFReport.pas

@@ -0,0 +1,147 @@
+unit SIFReport;
+
+interface
+
+uses
+  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+  Dialogs, StdCtrls, ExtCtrls, JvExExtCtrls, JvShape, JvExForms,
+  JvCustomItemViewer, JvOwnerDrawViewer, JvComponent, JvPanel,
+  JvExControls, JvLabel;
+
+type
+  TfrmSIFReport = class(TForm)
+    Label1: TLabel;
+    lblCurrentFile: TJvLabel;
+    Label4: TLabel;
+    Label5: TLabel;
+    Label3: TLabel;
+    Label2: TLabel;
+    chkKeepReportOpened: TCheckBox;
+    lblMatchFound: TJvLabel;
+    lblScannedLines: TJvLabel;
+    lblScannedFiles: TJvLabel;
+    lblSkippedFiles: TJvLabel;
+    procedure FormPaint(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure chkKeepReportOpenedClick(Sender: TObject);
+  private
+    { Private declarations }
+    FCurrentFile: String;
+    FMatchFound: Integer;
+    FScannedLines: Integer;
+    FScannedFiles: Integer;
+    FSkippedFiles: Integer;
+
+    procedure UpdateUI;
+    procedure SetCurrentFile(FileName: String);
+    procedure SetMatchFound(Count: Integer);
+    procedure SetScannedLines(Count: Integer);
+    procedure SetScannedFiles(Count: Integer);
+    procedure SetSkippedFiles(Count: Integer);
+  public
+    { Public declarations }
+    procedure ResetReport;
+    
+    property CurrentFile: String read FCurrentFile write SetCurrentFile;
+    property MatchFound: Integer read FMatchFound write SetMatchFound;
+    property ScannedLines: Integer read FScannedLines write SetScannedLines;
+    property ScannedFiles: Integer read FScannedFiles write SetScannedFiles;
+    property SkippedFiles: Integer read FSkippedFiles write SetSkippedFiles;
+  end;
+
+var
+  frmSIFReport: TfrmSIFReport;
+
+implementation
+
+uses Main;
+
+{$R *.dfm}
+
+procedure TfrmSIFReport.ResetReport;
+begin
+  FCurrentFile := '[None]';
+  FMatchFound := 0;
+  FScannedLines := 0;
+  FScannedFiles := 0;
+  FSkippedFiles := 0;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.UpdateUI;
+var
+  pRect: TRect;
+begin
+  // Initialize stuff...
+  lblCurrentFile.Caption := FCurrentFile;
+  lblMatchFound.Caption := IntToStr(FMatchFound);
+  lblScannedLines.Caption := IntToStr(FScannedLines);
+  lblScannedFiles.Caption := IntToStr(FScannedFiles);
+  lblSkippedFiles.Caption := IntToStr(FSkippedFiles);
+  Self.Canvas.Brush.Color := clInactiveCaption;
+
+  // Draw the frame rectangle to add some style
+  pRect := lblCurrentFile.BoundsRect;
+  InflateRect(pRect, 2, 1);
+  Self.Canvas.FrameRect(pRect);
+  pRect := lblMatchFound.BoundsRect;
+  InflateRect(pRect, 2, 1);
+  Self.Canvas.FrameRect(pRect);
+  pRect := lblScannedLines.BoundsRect;
+  InflateRect(pRect, 2, 1);
+  Self.Canvas.FrameRect(pRect);
+  pRect := lblScannedFiles.BoundsRect;
+  InflateRect(pRect, 2, 1);
+  Self.Canvas.FrameRect(pRect);
+  pRect := lblSkippedFiles.BoundsRect;
+  InflateRect(pRect, 2, 1);
+  Self.Canvas.FrameRect(pRect);
+  Application.ProcessMessages;
+end;
+
+procedure TfrmSIFReport.SetCurrentFile(FileName: String);
+begin
+  FCurrentFile := FileName;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.SetMatchFound(Count: Integer);
+begin
+  FMatchFound := Count;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.SetScannedLines(Count: Integer);
+begin
+  FScannedLines := Count;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.SetScannedFiles(Count: Integer);
+begin
+  FScannedFiles := Count;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.SetSkippedFiles(Count: Integer);
+begin
+  FSkippedFiles := Count;
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.FormPaint(Sender: TObject);
+begin
+  UpdateUI;
+end;
+
+procedure TfrmSIFReport.FormShow(Sender: TObject);
+begin
+  chkKeepReportOpened.Checked := KeepSIFWindowOpened;
+end;
+
+procedure TfrmSIFReport.chkKeepReportOpenedClick(Sender: TObject);
+begin
+  KeepSIFWindowOpened := chkKeepReportOpened.Checked;
+end;
+
+end.

+ 34 - 5
LuaEdit/Search.dfm

@@ -1,9 +1,9 @@
 object frmSearch: TfrmSearch
 object frmSearch: TfrmSearch
-  Left = 249
-  Top = 113
+  Left = 450
+  Top = 224
   BorderIcons = [biSystemMenu]
   BorderIcons = [biSystemMenu]
   BorderStyle = bsSingle
   BorderStyle = bsSingle
-  Caption = 'Search Text'
+  Caption = 'Find Text'
   ClientHeight = 241
   ClientHeight = 241
   ClientWidth = 329
   ClientWidth = 329
   Color = clBtnFace
   Color = clBtnFace
@@ -12,6 +12,35 @@ object frmSearch: TfrmSearch
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
+  Icon.Data = {
+    0000010001001010000001001800680300001600000028000000100000002000
+    0000010018000000000040030000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000FFFFFF000000000000000000000000
+    000000000000000000000000000000FFFFFF0000000000000000000000000000
+    00FFFFFF000000000000000000000000000000000000000000000000000000FF
+    FFFF000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    00000000FFFFFF000000000000000000000000000000000000FFFFFF00000000
+    0000000000000000000000000000000000000000FFFFFF000000000000000000
+    C6C6C6000000000000FFFFFF0000000000000000000000000000000000000000
+    00000000FFFFFF000000000000000000C6C6C6000000000000FFFFFF00000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    00000000000000FFFFFF000000000000000000000000000000FFFFFF00000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000FFFFFF000000
+    000000000000000000000000FFFFFF0000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    0000000000000000000000000000000000000000000000000000000000000000
+    000000000000000000000000000000000000000000000000000000000000FFFF
+    0000FFFF000007C1000007C1000007C100000101000000010000000100000001
+    000080030000C1070000C1070000E38F0000E38F0000E38F0000FFFF0000}
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poOwnerFormCenter
   Position = poOwnerFormCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
@@ -21,9 +50,9 @@ object frmSearch: TfrmSearch
   object Label1: TLabel
   object Label1: TLabel
     Left = 8
     Left = 8
     Top = 12
     Top = 12
-    Width = 52
+    Width = 49
     Height = 13
     Height = 13
-    Caption = '&Search for:'
+    Caption = '&Find what:'
   end
   end
   object cboSearchText: TComboBox
   object cboSearchText: TComboBox
     Left = 96
     Left = 96

+ 1 - 1
LuaEdit/Stack.pas

@@ -55,7 +55,7 @@ begin
       frmStack.lstCallStack.Items.EndUpdate;
       frmStack.lstCallStack.Items.EndUpdate;
       lstCallStack.Selected.ImageIndex := 1;
       lstCallStack.Selected.ImageIndex := 1;
       frmMain.PopUpUnitToScreen(pBreakInfo.FileName, pBreakInfo.Line).pDebugInfos.iStackMarker := pBreakInfo.Line+1;
       frmMain.PopUpUnitToScreen(pBreakInfo.FileName, pBreakInfo.Line).pDebugInfos.iStackMarker := pBreakInfo.Line+1;
-      pCurrentSynEdit.Refresh;
+      TLuaUnit(frmMain.jvUnitBar.SelectedTab.Data).synUnit.Refresh;
     end;
     end;
   end;
   end;
 end;
 end;

+ 227 - 38
LuaEdit/Watch.dfm

@@ -1,14 +1,13 @@
 object frmWatch: TfrmWatch
 object frmWatch: TfrmWatch
   Left = 444
   Left = 444
   Top = 272
   Top = 272
-  Width = 335
-  Height = 150
+  Width = 300
+  Height = 200
   BorderStyle = bsSizeToolWin
   BorderStyle = bsSizeToolWin
   Caption = 'Watch List'
   Caption = 'Watch List'
   Color = clBtnFace
   Color = clBtnFace
-  DockSite = True
-  DragKind = dkDock
-  DragMode = dmAutomatic
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 300
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
   Font.Height = -11
   Font.Height = -11
@@ -17,36 +16,8 @@ object frmWatch: TfrmWatch
   FormStyle = fsStayOnTop
   FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poOwnerFormCenter
   Position = poOwnerFormCenter
-  OnResize = FormResize
-  OnShow = FormShow
   PixelsPerInch = 96
   PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
-  object lvwWatch: TStringGrid
-    Left = 0
-    Top = 0
-    Width = 327
-    Height = 116
-    Align = alClient
-    ColCount = 2
-    Ctl3D = False
-    DefaultColWidth = 150
-    DefaultRowHeight = 16
-    FixedCols = 0
-    RowCount = 99
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -13
-    Font.Name = 'Arial'
-    Font.Style = []
-    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing]
-    ParentCtl3D = False
-    ParentFont = False
-    PopupMenu = ppmWatch
-    TabOrder = 0
-    OnKeyDown = lvwWatchKeyDown
-    OnKeyPress = lvwWatchKeyPress
-    OnSetEditText = lvwWatchSetEditText
-  end
   object memoSwap: TMemo
   object memoSwap: TMemo
     Left = 40
     Left = 40
     Top = 24
     Top = 24
@@ -54,13 +25,88 @@ object frmWatch: TfrmWatch
     Height = 49
     Height = 49
     Lines.Strings = (
     Lines.Strings = (
       'memoSwap')
       'memoSwap')
-    TabOrder = 1
+    TabOrder = 0
     Visible = False
     Visible = False
   end
   end
+  object vstWatch: TVirtualStringTree
+    Left = 0
+    Top = 24
+    Width = 292
+    Height = 149
+    Align = alClient
+    EditDelay = 200
+    Header.AutoSizeIndex = 1
+    Header.Font.Charset = DEFAULT_CHARSET
+    Header.Font.Color = clWindowText
+    Header.Font.Height = -11
+    Header.Font.Name = 'MS Sans Serif'
+    Header.Font.Style = []
+    Header.Options = [hoColumnResize, hoDrag, hoVisible]
+    Header.Style = hsFlatButtons
+    LineStyle = lsSolid
+    TabOrder = 1
+    TreeOptions.AutoOptions = [toAutoDropExpand, toAutoScrollOnExpand, toAutoSpanColumns, toAutoTristateTracking, toAutoDeleteMovedNodes]
+    TreeOptions.MiscOptions = [toEditable, toFullRepaintOnResize, toInitOnSave, toReportMode, toToggleOnDblClick, toWheelPanning]
+    TreeOptions.PaintOptions = [toShowButtons, toShowDropmark, toShowHorzGridLines, toShowRoot, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages]
+    OnAfterItemPaint = vstWatchAfterItemPaint
+    OnCreateEditor = vstWatchCreateEditor
+    OnDragOver = vstWatchDragOver
+    OnDragDrop = vstWatchDragDrop
+    OnEdited = vstWatchEdited
+    OnEditing = vstWatchEditing
+    OnGetText = vstWatchGetText
+    OnGetNodeDataSize = vstWatchGetNodeDataSize
+    Columns = <
+      item
+        Position = 0
+        Width = 125
+        WideText = 'Variable'
+      end
+      item
+        Position = 1
+        Width = 400
+        WideText = 'Value'
+      end>
+    WideDefaultText = ''
+  end
+  object tblWatch: TToolBar
+    Left = 0
+    Top = 0
+    Width = 292
+    Height = 24
+    AutoSize = True
+    Flat = True
+    Images = imlWatch
+    ParentShowHint = False
+    ShowHint = True
+    TabOrder = 2
+    object tbtnAddWatch: TToolButton
+      Left = 0
+      Top = 0
+      Hint = 'Add Watch...'
+      ImageIndex = 0
+      OnClick = tbtnAddWatchClick
+    end
+    object ToolButton1: TToolButton
+      Left = 23
+      Top = 0
+      Width = 8
+      Caption = 'ToolButton1'
+      ImageIndex = 1
+      Style = tbsSeparator
+    end
+    object tbtnRefreshWatch: TToolButton
+      Left = 31
+      Top = 0
+      Hint = 'Refresh Watch List'
+      ImageIndex = 1
+      OnClick = tbtnRefreshWatchClick
+    end
+  end
   object ppmWatch: TPopupMenu
   object ppmWatch: TPopupMenu
     Images = frmMain.imlActions
     Images = frmMain.imlActions
-    Left = 8
-    Top = 24
+    Left = 48
+    Top = 48
   end
   end
   object JvDockClient1: TJvDockClient
   object JvDockClient1: TJvDockClient
     LRDockWidth = 100
     LRDockWidth = 100
@@ -69,7 +115,150 @@ object frmWatch: TfrmWatch
     ShowHint = True
     ShowHint = True
     EnableCloseButton = True
     EnableCloseButton = True
     DockStyle = frmMain.jvDockVSNet
     DockStyle = frmMain.jvDockVSNet
-    Left = 8
-    Top = 56
+    Left = 80
+    Top = 48
+  end
+  object imlWatch: TImageList
+    Left = 16
+    Top = 48
+    Bitmap = {
+      494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000001000000001002000000000000010
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF000000000000000000000000008484840084848400000000000000
+      00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF008484840000000000FF00
+      FF0000000000C6C6C600C6C6C600C6C6C6000000000000000000C6C6C600C6C6
+      C600C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
+      FF0000000000FFFFFF00FFFFFF00C6C6C6000000000000000000FFFFFF00FFFF
+      FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF0000000000FF00FF00FF00
+      FF0000000000C6C6C600FFFFFF00C6C6C6000000000000000000C6C6C600FFFF
+      FF00C6C6C60000000000FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF0000000000FF00FF000000
+      0000848484000000000000000000000000000000000084848400000000000000
+      00000000000084848400FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF0084848400000000008484
+      8400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008484
+      840000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084
+      0000FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF0000840000FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
+      000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF000084000000840000008400000084000000840000FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
+      000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000084000000840000FFFFFF00FFFF
+      FF00FFFFFF00FFFFFF0000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
+      0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000840000FFFFFF00FFFFFF000000
+      0000000000000000000000000000FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0084000000840000008400
+      0000840000008400000084000000FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      0000FFFFFF0000000000FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
+      000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0000000000FFFF
+      FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
+      000000000000FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FF00FF00FF00FF00FF00FF00FF00
+      FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008400
+      000084000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000FF00FF00FF00FF00FF00FF00FF00FF000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000}
   end
   end
 end
 end

+ 280 - 23
LuaEdit/Watch.pas

@@ -4,22 +4,60 @@ interface
 
 
 uses
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
-  Dialogs, Grids, ValEdit, ComCtrls, Menus, StdCtrls, ExtCtrls,
-  JvComponent, JvDockControlForm;
+  Dialogs, Grids, ValEdit, ComCtrls, Menus, StdCtrls, ExtCtrls, SynEdit,
+  JvComponent, JvDockControlForm, JvDragDrop, VirtualTrees, ActiveX,
+  ImgList, ToolWin;
 
 
 type
 type
+  PWatchNodeData = ^TWatchNodeData;
+  TWatchNodeData = record
+    Value: String;
+    Name: String;
+    NestedTableCount: Integer;
+  end;
+
+  // Our own edit link to implement several different node editors.
+  TEditLinker = class(TInterfacedObject, IVTEditLink)
+  private
+    FEdit: TWinControl;        // One of the property editor classes.
+    FTree: TVirtualStringTree; // A back reference to the tree calling.
+    FNode: PVirtualNode;       // The node being edited.
+    FColumn: Integer;          // The column of the node being edited.
+  protected
+    procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+  public
+    destructor Destroy; override;
+
+    function BeginEdit: Boolean; stdcall;
+    function CancelEdit: Boolean; stdcall;
+    function EndEdit: Boolean; stdcall;
+    function GetBounds: TRect; stdcall;
+    function PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean; stdcall;
+    procedure SetBounds(R: TRect); stdcall;
+    procedure ProcessMessage(var Message: TMessage); stdcall;
+  end;
+
   TfrmWatch = class(TForm)
   TfrmWatch = class(TForm)
-    lvwWatch: TStringGrid;
     ppmWatch: TPopupMenu;
     ppmWatch: TPopupMenu;
     memoSwap: TMemo;
     memoSwap: TMemo;
     JvDockClient1: TJvDockClient;
     JvDockClient1: TJvDockClient;
-    procedure FormShow(Sender: TObject);
-    procedure FormResize(Sender: TObject);
-    procedure lvwWatchKeyPress(Sender: TObject; var Key: Char);
-    procedure lvwWatchKeyDown(Sender: TObject; var Key: Word;
-      Shift: TShiftState);
-    procedure lvwWatchSetEditText(Sender: TObject; ACol, ARow: Integer;
-      const Value: String);
+    vstWatch: TVirtualStringTree;
+    tblWatch: TToolBar;
+    tbtnAddWatch: TToolButton;
+    ToolButton1: TToolButton;
+    tbtnRefreshWatch: TToolButton;
+    imlWatch: TImageList;
+    procedure vstWatchGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
+    procedure vstWatchEditing(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean);
+    procedure vstWatchCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
+    procedure vstWatchGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
+    procedure vstWatchAfterItemPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
+    procedure vstWatchDragDrop(Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
+    procedure vstWatchDragOver(Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
+    procedure tbtnRefreshWatchClick(Sender: TObject);
+    procedure tbtnAddWatchClick(Sender: TObject);
+    procedure vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode;
+      Column: TColumnIndex);
   private
   private
     { Private declarations }
     { Private declarations }
   public
   public
@@ -35,31 +73,250 @@ uses Main;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
-procedure TfrmWatch.FormShow(Sender: TObject);
+////////////////////////////////////// TEditLinker implementation //////////////////////////////////////
+
+destructor TEditLinker.Destroy;
+
+begin
+  FreeAndNil(FEdit);
+  inherited;
+end;
+
+procedure TEditLinker.EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+var
+  CanAdvance: Boolean;
 begin
 begin
-  lvwWatch.Rows[0].Strings[0] := 'Key';
-  lvwWatch.Rows[0].Strings[1] := 'Value';
-  lvwWatch.EditorMode := True;
+  CanAdvance := true;
+
+  case Key of
+    VK_ESCAPE:
+      if CanAdvance then
+      begin
+        FTree.CancelEditNode;
+        Key := 0;
+      end;
+    VK_RETURN:
+      if CanAdvance then
+      begin
+        FTree.EndEditNode;
+        Key := 0;
+      end;
+
+    VK_UP,
+    VK_DOWN:
+      begin
+        // Consider special cases before finishing edit mode.
+        CanAdvance := Shift = [];
+
+        if CanAdvance then
+        begin
+          // Forward the keypress to the tree. It will asynchronously change the focused node.
+          PostMessage(FTree.Handle, WM_KEYDOWN, Key, 0);
+          Key := 0;
+        end;
+      end;
+  end;
 end;
 end;
 
 
-procedure TfrmWatch.FormResize(Sender: TObject);
+function TEditLinker.BeginEdit: Boolean;
 begin
 begin
-  lvwWatch.ColWidths[1] := lvwWatch.Width - lvwWatch.ColWidths[0] - 22;
+  Result := True;
+  FEdit.Show;
+  FEdit.SetFocus;
 end;
 end;
 
 
-procedure TfrmWatch.lvwWatchKeyPress(Sender: TObject; var Key: Char);
+function TEditLinker.CancelEdit: Boolean;
 begin
 begin
-  if lvwWatch.Col = 1 then
-    Key := #0;
+  Result := True;
+  FEdit.Hide;
 end;
 end;
 
 
-procedure TfrmWatch.lvwWatchKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
+function TEditLinker.EndEdit: Boolean;
+var
+  Data: PWatchNodeData;
+  Buffer: array[0..1024] of Char;
+  S: String;
 begin
 begin
-  if lvwWatch.Col = 1 then
-    Key := 0;
+  Result := True;
+
+  Data := FTree.GetNodeData(FNode);
+  GetWindowText(FEdit.Handle, Buffer, 1024);
+  S := Buffer;
+
+  if S <> Data.Name then
+  begin
+    Data.Name := S;
+    FTree.InvalidateNode(FNode);
+  end;
+
+  FEdit.Hide;
+  FTree.SetFocus;
+end;
+
+procedure TEditLinker.SetBounds(R: TRect);
+var
+  Dummy: Integer;
+begin
+  // Since we don't want to activate grid extensions in the tree (this would influence how the selection is drawn)
+  // we have to set the edit's width explicitly to the width of the column.
+  FTree.Header.Columns.GetColumnBounds(FColumn, Dummy, R.Right);
+  FEdit.BoundsRect := R;
+end;
+
+function TEditLinker.GetBounds: TRect;
+begin
+  Result := FEdit.BoundsRect;
+end;
+
+function TEditLinker.PrepareEdit(Tree: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex): Boolean;
+var
+  Data: PWatchNodeData;
+begin
+  Result := True;
+  FTree := Tree as TVirtualStringTree;
+  FNode := Node;
+  FColumn := Column;
+
+  // determine what edit type actually is needed
+  FreeAndNil(FEdit);
+  Data := FTree.GetNodeData(Node);
+  FEdit := TEdit.Create(Tree);
+  with FEdit as TEdit do
+  begin
+    Visible := False;
+    Parent := Tree;
+    AutoSize := False;
+    MaxLength := 1000;
+    Ctl3D := False;
+    Text := Data.Name;
+    OnKeyDown := EditKeyDown;
+  end;
+end;
+
+procedure TEditLinker.ProcessMessage(var Message: TMessage);
+begin
+  // Do nothing
+end;
+
+////////////////////////////////////// TfrmWatch implementation //////////////////////////////////////
+
+procedure TfrmWatch.vstWatchCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; out EditLink: IVTEditLink);
+begin
+  // Create the editor class wich will interact with the user when editing a variable name
+  EditLink := TEditLinker.Create;
+end;
+
+// This is called whenever the tree needs to get the text for the current cell
+procedure TfrmWatch.vstWatchGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
+var
+  pData: PWatchNodeData;
+begin
+  if TextType = ttNormal then
+  begin
+    case Column of
+      0:
+      begin
+        pData := Sender.GetNodeData(Node);
+        CellText := pData.Name;
+      end;
+      1:
+      begin
+        pData := Sender.GetNodeData(Node);
+        CellText := pData.Value
+      end;
+    end;
+  end;
+end;
+
+procedure TfrmWatch.vstWatchEditing(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; var Allowed: Boolean);
+begin
+  Allowed := ((Column = 0) and (Node.Parent = Sender.RootNode));
+end;
+
+procedure TfrmWatch.vstWatchGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
+begin
+  NodeDataSize := SizeOf(TWatchNodeData);
+end;
+
+procedure TfrmWatch.vstWatchAfterItemPaint(Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; ItemRect: TRect);
+var
+  pRect: TRect;
+begin
+  pRect := ItemRect;
+  pRect.Bottom := pRect.Bottom - 1;
+  pRect.Right := pRect.Left + 22;
+  TargetCanvas.Brush.Color := clWhite;
+  TargetCanvas.FillRect(pRect);
+
+  // Draw node button since the noda has some child
+  if ((Node.Parent = Sender.RootNode) and (Node.ChildCount <> 0)) then
+  begin
+    // Draw the frame around the button
+    TargetCanvas.Pen.Color := clBtnShadow;
+    TargetCanvas.Rectangle(5, 4, 14, 13);
+    TargetCanvas.MoveTo(14, 8);
+    TargetCanvas.LineTo(20, 8);
+    TargetCanvas.Pen.Color := clBlack;
+
+    if not (vsExpanded in Node.States) then
+    begin
+      // Draw expandable node button (plus sign)
+      TargetCanvas.MoveTo(7, 8);
+      TargetCanvas.LineTo(12, 8);
+      TargetCanvas.MoveTo(9, 6);
+      TargetCanvas.LineTo(9, 11);
+    end
+    else
+    begin
+      // Draw non-expandable node button (minus sign)
+      TargetCanvas.MoveTo(7, 8);
+      TargetCanvas.LineTo(12, 8);
+    end;
+  end;
+end;
+
+procedure TfrmWatch.vstWatchDragDrop(Sender: TBaseVirtualTree; Source: TObject; DataObject: IDataObject; Formats: TFormatArray; Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);
+var
+  pNode: PVirtualNode;
+  pData: PWatchNodeData;
+begin
+  // Only works over the list view lvwWatch
+  if ((Sender = vstWatch) and (TSynEdit(Source).SelText <> ''))then
+  begin
+    pNode := Sender.AddChild(Sender.RootNode);
+    pData := Sender.GetNodeData(pNode);
+    pData.Name := TSynEdit(Source).SelText;
+    frmMain.PrintWatch(frmMain.LuaState);
+  end;
+end;
+
+procedure TfrmWatch.vstWatchDragOver(Sender: TBaseVirtualTree; Source: TObject; Shift: TShiftState; State: TDragState; Pt: TPoint; Mode: TDropMode; var Effect: Integer; var Accept: Boolean);
+begin
+  Accept := (Source is TSynEdit);
+end;
+
+procedure TfrmWatch.tbtnRefreshWatchClick(Sender: TObject);
+begin
+  frmMain.PrintWatch(frmMain.LuaState);
+end;
+
+procedure TfrmWatch.tbtnAddWatchClick(Sender: TObject);
+var
+  pNode: PVirtualNode;
+  pData: PWatchNodeData;
+  sVarName: String;
+begin
+  sVarName := InputBox('Add Watch', 'Enter the name of the variable to watch:', 'VarName');
+  if 'VarName' <> sVarName then
+  begin
+    vstWatch.RootNodeCount := vstWatch.RootNodeCount + 1;
+    pNode := vstWatch.GetLast;
+    pData := vstWatch.GetNodeData(pNode);
+    pData.Name := sVarName;
+  end;
 end;
 end;
 
 
-procedure TfrmWatch.lvwWatchSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);
+procedure TfrmWatch.vstWatchEdited(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
 begin
 begin
   frmMain.PrintWatch(frmMain.LuaState);
   frmMain.PrintWatch(frmMain.LuaState);
 end;
 end;

Some files were not shown because too many files changed in this diff