Browse Source

CH: Major developments across the project

Jean-Francois Goulet 20 years ago
parent
commit
288a97ef37

+ 0 - 1
LuaEdit/HeaderBuilder/EditParam.dfm

@@ -11,7 +11,6 @@ object frmEditParam: TfrmEditParam
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
-  FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poScreenCenter
   Position = poScreenCenter
   DesignSize = (
   DesignSize = (

+ 17 - 13
LuaEdit/HeaderBuilder/FctHdrBld.dfm

@@ -11,7 +11,6 @@ object frmFctHdrBld: TfrmFctHdrBld
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
-  FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poScreenCenter
   Position = poScreenCenter
   OnShow = FormShow
   OnShow = FormShow
@@ -49,32 +48,32 @@ object frmFctHdrBld: TfrmFctHdrBld
   end
   end
   object Panel2: TPanel
   object Panel2: TPanel
     Left = 0
     Left = 0
-    Top = 32
+    Top = 30
     Width = 376
     Width = 376
-    Height = 356
+    Height = 358
     Align = alClient
     Align = alClient
     BevelOuter = bvNone
     BevelOuter = bvNone
     TabOrder = 1
     TabOrder = 1
     object Label2: TLabel
     object Label2: TLabel
       Left = 16
       Left = 16
       Top = 144
       Top = 144
-      Width = 56
+      Width = 129
       Height = 13
       Height = 13
-      Caption = 'Parameters:'
+      Caption = '<Parameters/> Parameters:'
     end
     end
     object Label1: TLabel
     object Label1: TLabel
       Left = 16
       Left = 16
       Top = 8
       Top = 8
-      Width = 75
+      Width = 136
       Height = 13
       Height = 13
-      Caption = 'Function Name:'
+      Caption = '<Function/> Function Name:'
     end
     end
     object Label3: TLabel
     object Label3: TLabel
       Left = 16
       Left = 16
       Top = 56
       Top = 56
-      Width = 47
+      Width = 111
       Height = 13
       Height = 13
-      Caption = 'Comment:'
+      Caption = '<Comment/> Comment:'
     end
     end
     object lblCallSample: TLabel
     object lblCallSample: TLabel
       Left = 16
       Left = 16
@@ -86,9 +85,9 @@ object frmFctHdrBld: TfrmFctHdrBld
     object Label5: TLabel
     object Label5: TLabel
       Left = 16
       Left = 16
       Top = 264
       Top = 264
-      Width = 65
+      Width = 117
       Height = 13
       Height = 13
-      Caption = 'Return Value:'
+      Caption = '<Return/> Return Value:'
     end
     end
     object txtFunctionName: TEdit
     object txtFunctionName: TEdit
       Left = 16
       Left = 16
@@ -130,6 +129,7 @@ object frmFctHdrBld: TfrmFctHdrBld
       RowSelect = True
       RowSelect = True
       TabOrder = 3
       TabOrder = 3
       ViewStyle = vsReport
       ViewStyle = vsReport
+      OnDblClick = lvwParamsDblClick
     end
     end
     object txtReturn: TEdit
     object txtReturn: TEdit
       Left = 16
       Left = 16
@@ -143,8 +143,11 @@ object frmFctHdrBld: TfrmFctHdrBld
     Left = 0
     Left = 0
     Top = 0
     Top = 0
     Width = 376
     Width = 376
+    Height = 30
     AutoSize = True
     AutoSize = True
     BorderWidth = 2
     BorderWidth = 2
+    EdgeInner = esNone
+    EdgeOuter = esNone
     Flat = True
     Flat = True
     Images = imlToolbar
     Images = imlToolbar
     TabOrder = 2
     TabOrder = 2
@@ -248,7 +251,7 @@ object frmFctHdrBld: TfrmFctHdrBld
     Left = 272
     Left = 272
     Top = 5
     Top = 5
     Bitmap = {
     Bitmap = {
-      494C010108000900040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
+      494C010108000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000003000000001002000000000000030
       0000000000003600000028000000400000003000000001002000000000000030
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -648,7 +651,8 @@ object frmFctHdrBld: TfrmFctHdrBld
       00088FE1000F8000000107C3000F800000030387000F80000003810F000F8000
       00088FE1000F8000000107C3000F800000030387000F80000003810F000F8000
       0003C01F000F80000003E03F000F00000003F03F000F00000007F00F000E8000
       0003C01F000F80000003E03F000F00000003F03F000F00000007F00F000E8000
       000FE00700040000000FC00300000001000F8303000081FF001F07C7F80024FF
       000FE00700040000000FC00300000001000F8303000081FF001F07C7F80024FF
-      003F0FFFFC0066FF007F1FFFFE04E7FF}
+      003F0FFFFC0066FF007F1FFFFE04E7FF00000000000000000000000000000000
+      000000000000}
   end
   end
   object xmpMenuPainter: TXPMenu
   object xmpMenuPainter: TXPMenu
     DimLevel = 30
     DimLevel = 30

+ 62 - 15
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;
+  ValEdit, XPMan, Registry, System;
 
 
 type
 type
   TfrmFctHdrBld = class(TForm)
   TfrmFctHdrBld = class(TForm)
@@ -45,6 +45,7 @@ type
     procedure btnOKClick(Sender: TObject);
     procedure btnOKClick(Sender: TObject);
     procedure tbtnCallSampleClick(Sender: TObject);
     procedure tbtnCallSampleClick(Sender: TObject);
     procedure tbtnSettingsClick(Sender: TObject);
     procedure tbtnSettingsClick(Sender: TObject);
+    procedure lvwParamsDblClick(Sender: TObject);
   private
   private
     { Private declarations }
     { Private declarations }
   public
   public
@@ -173,29 +174,64 @@ end;
 function TfrmFctHdrBld.GetHeader: String;
 function TfrmFctHdrBld.GetHeader: String;
 var
 var
   pReg: TRegistry;
   pReg: TRegistry;
-  sTemplate, sToday, sInitialRealese: String;
-  sCopyright, sDevelopperName: String;
+  TagNotFound: Boolean;
+  x, TagO, TagC, TagIndex: Integer;
+  sTemplatePath, sToday, sInitialRealese: String;
+  sCopyright, sDevelopperName, sTemp, sTag: String;
+  strTemplate, strTags: TStringList;
 begin
 begin
+  Result := '';
   pReg := TRegistry.Create;
   pReg := TRegistry.Create;
   sToday := DateTimeToStr(Now);
   sToday := DateTimeToStr(Now);
 
 
-  if pReg.OpenKey('\Software\LuaEdit\HdrBld', False) then
+  // Get template path and start parsing the template
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\FunctionsHdr', False) then
   begin
   begin
-    sDevelopperName := pReg.ReadString('DevelopperName');
-    sInitialRealese := pReg.ReadString('InitialRelease');
-    sCopyright := pReg.ReadString('Copyright');
+    sTemplatePath := pReg.ReadString('Template');
 
 
-    if pReg.OpenKey('\Software\LuaEdit\HdrBld\FctHdr', False) then
+    if not FileExists(sTemplatePath) then
     begin
     begin
-      sTemplate := pReg.ReadString('Template');
-
-      if not FileExists(sTemplate) then
-      begin
-        Windows.MessageBox(Self.Handle, Pchar('The template ' + sTemplate + ' is innexistant! No header was generated.'), 'Header Builder', MB_OK+MB_ICONERROR);
-      end
-      else
+      Windows.MessageBox(Self.Handle, Pchar('The template ' + sTemplatePath + ' is innexistant! No header was generated.'), 'Header Builder', MB_OK+MB_ICONERROR);
+    end
+    else
+    begin
+      // Get tags from registry and parse the template to replace tags by their assigned value
+      if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
       begin
       begin
+        pReg.GetValueNames(strTags);
+        strTemplate := TStringList.Create;
+        strTemplate.LoadFromFile(sTemplatePath);
+        strTags.Add('Function');
+        strTags.Sort;
+        sTemp := strTemplate.Text;
+
+        // parsing template
+        repeat
+          // look for possible tag opening
+          if ((TagO := Pos('<', sTemp)) <> 0) then
+          begin
+            if ((TagC := Pos('>', sTemp)) <> 0) then
+            begin
+              // Extract current tag
+              sTag := Copy(sTemp, TagO + 1, (TagC - 1) - (TagO + 1));
+              TagNotFound := False;
+
+              case UpperCase(sTag) of
+                'FUNCTION':
+                begin
+                  
+                end;
+              else
+              end;
+            end;
+          end;
+        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;
+        strTemplate.Free;
       end;
       end;
     end;
     end;
   end;
   end;
@@ -219,10 +255,16 @@ begin
 end;
 end;
 
 
 procedure TfrmFctHdrBld.tbtnRemoveParamClick(Sender: TObject);
 procedure TfrmFctHdrBld.tbtnRemoveParamClick(Sender: TObject);
+var
+  x: Integer;
 begin
 begin
   if Assigned(lvwParams.Selected) then
   if Assigned(lvwParams.Selected) then
   begin
   begin
     lvwParams.Items.Delete(lvwParams.Selected.Index);
     lvwParams.Items.Delete(lvwParams.Selected.Index);
+
+    if lvwParams.Items.Count > 0 then
+      lvwParams.Selected := lvwParams.Items[0];
+      
     CheckButtons;
     CheckButtons;
   end;
   end;
 end;
 end;
@@ -282,4 +324,9 @@ begin
   FreeAndNil(frmSettings);
   FreeAndNil(frmSettings);
 end;
 end;
 
 
+procedure TfrmFctHdrBld.lvwParamsDblClick(Sender: TObject);
+begin
+  tbtnEdit.Click;
+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=14
+Build=21
 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.14
+FileVersion=1.0.0.21
 InternalName=
 InternalName=
 LegalCopyright=
 LegalCopyright=
 LegalTrademarks=
 LegalTrademarks=

+ 2 - 1
LuaEdit/HeaderBuilder/HdrBld.dpr

@@ -16,7 +16,8 @@ uses
   FctHdrBld in 'FctHdrBld.pas' {frmFctHdrBld},
   FctHdrBld in 'FctHdrBld.pas' {frmFctHdrBld},
   HdrBldMain in 'HdrBldMain.pas',
   HdrBldMain in 'HdrBldMain.pas',
   EditParam in 'EditParam.pas' {frmEditParam},
   EditParam in 'EditParam.pas' {frmEditParam},
-  Settings in 'Settings.pas' {frmSettings};
+  Settings in 'Settings.pas' {frmSettings},
+  EditTag in 'EditTag.pas' {frmEditTag};
 
 
 {$R *.res}
 {$R *.res}
 
 

BIN
LuaEdit/HeaderBuilder/HdrBld.res


+ 4 - 3
LuaEdit/HeaderBuilder/HdrBldMain.pas

@@ -3,16 +3,16 @@ unit HdrBldMain;
 interface
 interface
 
 
 uses
 uses
-  Windows, Messages, SysUtils, Themes, UxTheme;
+  Windows, Messages, SysUtils, Controls, Forms, Themes, UxTheme;
 
 
-function FunctionHeaderBuilder(sLine: PChar): PChar;
+function FunctionHeaderBuilder(OwnerAppHandle: HWND; sLine: PChar): PChar; stdcall;
 
 
 implementation
 implementation
 
 
 uses
 uses
   FctHdrBld;
   FctHdrBld;
 
 
-function FunctionHeaderBuilder(sLine: PChar): PChar;
+function FunctionHeaderBuilder(OwnerAppHandle: HWND; sLine: PChar): PChar; stdcall;
 begin
 begin
   // leave those important lines here...
   // leave those important lines here...
   // There is a bug with the themes and forms placed in dll
   // There is a bug with the themes and forms placed in dll
@@ -22,6 +22,7 @@ begin
   InitThemeLibrary;
   InitThemeLibrary;
 
 
   // Create the form first
   // Create the form first
+  Application.Handle := OwnerAppHandle;
   frmFctHdrBld := TfrmFctHdrBld.Create(nil);
   frmFctHdrBld := TfrmFctHdrBld.Create(nil);
 
 
   if sLine <> '' then
   if sLine <> '' then

+ 234 - 43
LuaEdit/HeaderBuilder/Settings.dfm

@@ -11,9 +11,9 @@ object frmSettings: TfrmSettings
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
-  FormStyle = fsStayOnTop
   OldCreateOrder = False
   OldCreateOrder = False
   Position = poScreenCenter
   Position = poScreenCenter
+  OnShow = FormShow
   PixelsPerInch = 96
   PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object Panel1: TPanel
   object Panel1: TPanel
@@ -32,7 +32,7 @@ object frmSettings: TfrmSettings
       Cancel = True
       Cancel = True
       Caption = '&Cancel'
       Caption = '&Cancel'
       ModalResult = 2
       ModalResult = 2
-      TabOrder = 0
+      TabOrder = 1
     end
     end
     object btnOK: TButton
     object btnOK: TButton
       Left = 232
       Left = 232
@@ -42,7 +42,8 @@ object frmSettings: TfrmSettings
       Caption = '&OK'
       Caption = '&OK'
       Default = True
       Default = True
       ModalResult = 1
       ModalResult = 1
-      TabOrder = 1
+      TabOrder = 0
+      OnClick = btnOKClick
     end
     end
   end
   end
   object Panel2: TPanel
   object Panel2: TPanel
@@ -53,7 +54,7 @@ object frmSettings: TfrmSettings
     Align = alClient
     Align = alClient
     BevelOuter = bvNone
     BevelOuter = bvNone
     TabOrder = 1
     TabOrder = 1
-    object PageControl1: TPageControl
+    object pgcMain: TPageControl
       Left = 0
       Left = 0
       Top = 0
       Top = 0
       Width = 392
       Width = 392
@@ -62,49 +63,65 @@ object frmSettings: TfrmSettings
       Align = alClient
       Align = alClient
       TabOrder = 0
       TabOrder = 0
       object TabSheet3: TTabSheet
       object TabSheet3: TTabSheet
-        Caption = 'General'
+        Caption = 'Tags'
         ImageIndex = 2
         ImageIndex = 2
-        object Label3: TLabel
-          Left = 8
-          Top = 11
-          Width = 89
-          Height = 13
-          Caption = 'Developper Name:'
-        end
-        object Label4: TLabel
-          Left = 240
-          Top = 11
-          Width = 47
-          Height = 13
-          Caption = 'Copyright:'
-        end
-        object Label5: TLabel
-          Left = 8
-          Top = 56
-          Width = 69
-          Height = 13
-          Caption = 'Initial Release:'
-        end
-        object txtDevelopper: TEdit
-          Left = 8
-          Top = 26
-          Width = 225
-          Height = 21
+        object lvwTags: TListView
+          Left = 0
+          Top = 30
+          Width = 384
+          Height = 123
+          Align = alClient
+          Columns = <
+            item
+              Caption = 'Name'
+              Width = 125
+            end
+            item
+              AutoSize = True
+              Caption = 'Value'
+            end>
+          ReadOnly = True
+          RowSelect = True
           TabOrder = 0
           TabOrder = 0
+          ViewStyle = vsReport
+          OnDblClick = lvwTagsDblClick
         end
         end
-        object txtCopyright: TEdit
-          Left = 240
-          Top = 26
-          Width = 137
-          Height = 21
+        object tlbMain: TToolBar
+          Left = 0
+          Top = 0
+          Width = 384
+          Height = 30
+          AutoSize = True
+          BorderWidth = 2
+          EdgeInner = esNone
+          EdgeOuter = esNone
+          Flat = True
+          Images = imlToolbar
           TabOrder = 1
           TabOrder = 1
-        end
-        object txtInitialRelease: TEdit
-          Left = 8
-          Top = 71
-          Width = 369
-          Height = 21
-          TabOrder = 2
+          object tbtnAddTag: TToolButton
+            Left = 0
+            Top = 0
+            Hint = 'Add Tag Element'
+            Caption = 'tbtnAddTag'
+            ImageIndex = 0
+            ParentShowHint = False
+            ShowHint = True
+            OnClick = tbtnAddTagClick
+          end
+          object tbtnRemoveTag: TToolButton
+            Left = 23
+            Top = 0
+            Hint = 'Remove Selected Tag Element'
+            ImageIndex = 1
+            OnClick = tbtnRemoveTagClick
+          end
+          object tbtnEdit: TToolButton
+            Left = 46
+            Top = 0
+            Hint = 'Edit Selected Tag...'
+            ImageIndex = 2
+            OnClick = tbtnEditClick
+          end
         end
         end
       end
       end
       object TabSheet1: TTabSheet
       object TabSheet1: TTabSheet
@@ -189,4 +206,178 @@ object frmSettings: TfrmSettings
     Left = 10
     Left = 10
     Top = 184
     Top = 184
   end
   end
+  object xmpMenuPainter: TXPMenu
+    DimLevel = 30
+    GrayLevel = 10
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clMenuText
+    Font.Height = -11
+    Font.Name = 'Tahoma'
+    Font.Style = []
+    Color = clWhite
+    DrawMenuBar = True
+    IconBackColor = clBtnFace
+    MenuBarColor = clBtnFace
+    SelectColor = 15717318
+    SelectBorderColor = 13003057
+    SelectFontColor = clMenuText
+    DisabledColor = clGrayText
+    SeparatorColor = clBtnFace
+    CheckedColor = clHighlight
+    IconWidth = 24
+    DrawSelect = True
+    UseSystemColors = False
+    UseDimColor = False
+    OverrideOwnerDraw = False
+    Gradient = False
+    FlatMenu = False
+    AutoDetect = False
+    XPContainers = [xccToolbar, xccCoolbar, xccControlbar, xccScrollBox, xccPageScroller]
+    Active = True
+    Left = 72
+    Top = 185
+  end
+  object imlToolbar: TImageList
+    Left = 40
+    Top = 185
+    Bitmap = {
+      494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000001000000001002000000000000010
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000848484008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400848484008484840084848400848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000848484000000000000000000848484008484
+      8400848484008484840084848400848484008484840084848400848484008484
+      8400848484008484840084848400848484000000000000000000848484000000
+      0000000000000000000084848400848484008484840084848400848484008484
+      8400848484008484840084848400848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      0000FFFFFF0000FFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C60000000000FFFFFF0000000000848484000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      0000FFFFFF0000FFFF0000000000848484000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000
+      0000FFFFFF0000FFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF
+      FF00C6C6C600000000000000000084848400848484000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C60000000000FFFFFF000000000084848400000000000000000000FFFF000000
+      0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000000000C6C6
+      C60000000000FFFFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000848484000000840000000000FFFFFF0000FF
+      FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF
+      FF00C6C6C6000000000000000000848484000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF
+      FF00C6C6C6000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000000000FFFFFF008484
+      840000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF000000000084848400000084000000840000FFFF00FFFF
+      FF0000FFFF00FFFFFF00848484000000840000FFFF00FFFFFF00000000000000
+      000000000000000000000000000084848400000000000000000000FFFF000000
+      0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000
+      0000000000000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000FFFF0000FFFF008484
+      8400FFFFFF0000FFFF008484840000FFFF00FFFFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF00000000008484840084848400000084008484840000FF
+      FF00FFFFFF00848484000000840084848400FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF0000000000848484000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000084848400FFFFFF008484
+      840000FFFF008484840000FFFF00FFFFFF0000FFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF0000000000848484000000000000008400000084008484
+      840000FFFF000000840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF000000000084848400000000000000000000FFFF000000
+      0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000848484008484840084848400FFFF
+      FF0084848400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000848484000000000084848400000084000000
+      84000000840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF0000000000848484000000000000000000FFFFFF000000
+      00000000000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000FFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000FFFFFF0000FFFF008484840000FF
+      FF00FFFFFF008484840084848400848484008484840000000000000000000000
+      0000000000000000000000000000000000000000000084848400000084000000
+      840000008400FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF000000000084848400000000000000000000FFFF000000
+      0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
+      FF0000FFFF00FFFFFF0000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000008484840000FFFF008484
+      840000FFFF008484840000FFFF00000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000008400000084000000
+      8400000084008484840000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000008484840000FFFF00000000008484
+      8400FFFFFF00000000008484840000FFFF000000000000000000000000000000
+      0000000000000000000000000000000000000000840000008400848484000000
+      0000000084000000840084848400000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000FFFF0000000000000000008484
+      840000FFFF000000000000000000848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000840000008400848484000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000008484
+      8400FFFFFF000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000008400000084008484840000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000100000000100010000000000800000000000000000000000
+      000000000000000000000000FFFFFF00FFFFFFFF80FF0000C000FFFF80FF0000
+      8000C000C0000000800080008000000080008000800000008000000080000000
+      8000000080000000000000008000000000000000800000008000800080000000
+      0000800080000000000180008000000081FF00018001000024FF11FFE3FF0000
+      66FFF8FF80FF0000E7FFFC7F80FF000000000000000000000000000000000000
+      000000000000}
+  end
 end
 end

+ 163 - 9
LuaEdit/HeaderBuilder/Settings.pas

@@ -4,7 +4,7 @@ interface
 
 
 uses
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
-  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Registry;
+  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Registry, ToolWin, ImgList, XPMenu;
 
 
 type
 type
   TfrmSettings = class(TForm)
   TfrmSettings = class(TForm)
@@ -12,7 +12,7 @@ type
     btnCancel: TButton;
     btnCancel: TButton;
     btnOK: TButton;
     btnOK: TButton;
     Panel2: TPanel;
     Panel2: TPanel;
-    PageControl1: TPageControl;
+    pgcMain: TPageControl;
     TabSheet1: TTabSheet;
     TabSheet1: TTabSheet;
     TabSheet2: TTabSheet;
     TabSheet2: TTabSheet;
     Label1: TLabel;
     Label1: TLabel;
@@ -25,19 +25,27 @@ type
     txtFileTemplatePath: TEdit;
     txtFileTemplatePath: TEdit;
     btnBrowseFileTpl: TButton;
     btnBrowseFileTpl: TButton;
     btnEditFileTpl: TButton;
     btnEditFileTpl: TButton;
-    Label3: TLabel;
-    txtDevelopper: TEdit;
-    Label4: TLabel;
-    txtCopyright: TEdit;
-    Label5: TLabel;
-    txtInitialRelease: TEdit;
+    lvwTags: TListView;
+    tlbMain: TToolBar;
+    tbtnAddTag: TToolButton;
+    tbtnRemoveTag: TToolButton;
+    xmpMenuPainter: TXPMenu;
+    imlToolbar: TImageList;
+    tbtnEdit: TToolButton;
     procedure btnBrowseFctTplClick(Sender: TObject);
     procedure btnBrowseFctTplClick(Sender: TObject);
     procedure btnBrowseFileTplClick(Sender: TObject);
     procedure btnBrowseFileTplClick(Sender: TObject);
     procedure txtFileTemplatePathChange(Sender: TObject);
     procedure txtFileTemplatePathChange(Sender: TObject);
     procedure txtFctTemplatePathChange(Sender: TObject);
     procedure txtFctTemplatePathChange(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure btnOKClick(Sender: TObject);
+    procedure tbtnRemoveTagClick(Sender: TObject);
+    procedure tbtnAddTagClick(Sender: TObject);
+    procedure tbtnEditClick(Sender: TObject);
+    procedure lvwTagsDblClick(Sender: TObject);
   private
   private
     { Private declarations }
     { Private declarations }
     function Browse(sInitial: String): String;
     function Browse(sInitial: String): String;
+    procedure CheckButtons;
   public
   public
     { Public declarations }
     { Public declarations }
   end;
   end;
@@ -47,6 +55,8 @@ var
 
 
 implementation
 implementation
 
 
+uses EditTag;
+
 {$R *.dfm}
 {$R *.dfm}
 
 
 function TfrmSettings.Browse(sInitial: String): String;
 function TfrmSettings.Browse(sInitial: String): String;
@@ -59,7 +69,7 @@ begin
   if sInitial = '' then
   if sInitial = '' then
   begin
   begin
     if pReg.OpenKey('\Software\LuaEdit\HdrBld', False) then
     if pReg.OpenKey('\Software\LuaEdit\HdrBld', False) then
-      sInitialPath := pReg.ReadString('LastBrowsePath');
+      sInitial := pReg.ReadString('LastBrowsePath');
   end;
   end;
 
 
   odlgTemplate.InitialDir := sInitial;
   odlgTemplate.InitialDir := sInitial;
@@ -93,4 +103,148 @@ begin
   btnEditFctTpl.Enabled := (txtFctTemplatePath.Text <> '');
   btnEditFctTpl.Enabled := (txtFctTemplatePath.Text <> '');
 end;
 end;
 
 
+procedure TfrmSettings.FormShow(Sender: TObject);
+var
+  pReg: TRegistry;
+  strTags: TStringList;
+  pItem: TListItem;
+  x: Integer;
+begin
+  // Getting saved values from registry
+  pReg := TRegistry.Create;
+  pgcMain.ActivePageIndex := 0;
+
+  // Loading Tags tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
+  begin
+    strTags := TStringList.Create;
+    pReg.GetValueNames(strTags);
+    lvwTags.Clear;
+    lvwTags.Items.BeginUpdate;
+
+    for x := 0 to strTags.Count - 1 do
+    begin
+      pItem := lvwTags.Items.Add;
+      pItem.Caption := strTags.Strings[x];
+      pItem.SubItems.Add(pReg.ReadString(strTags.Strings[x]));
+    end;
+
+    lvwTags.Items.EndUpdate;
+    strTags.Free;
+  end;
+
+  // Loading Funtions tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\FunctionsHdr', False) then
+  begin
+    if pReg.ValueExists('Template') then
+      txtFctTemplatePath.Text := pReg.ReadString('Template')
+    else
+      txtFctTemplatePath.Text := '';
+  end;
+
+  // Loading Files tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\FilesHdr', False) then
+  begin
+    if pReg.ValueExists('Template') then
+      txtFileTemplatePath.Text := pReg.ReadString('Template')
+    else
+      txtFileTemplatePath.Text := '';
+  end;
+
+  CheckButtons;
+  pReg.Free;
+end;
+
+procedure TfrmSettings.btnOKClick(Sender: TObject);
+var
+  pReg: TRegistry;
+  x: Integer;
+begin
+  // Saving informations in registry
+  pReg := TRegistry.Create;
+
+  // Writing Tags tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', True) then
+  begin
+    for x := 0 to lvwTags.Items.Count - 1 do
+      pReg.WriteString(lvwTags.Items[x].Caption, lvwTags.Items[x].SubItems.Strings[0]);
+  end;
+
+  // Writing Functions tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\FunctionsHdr', True) then
+  begin
+    pReg.WriteString('Template', txtFctTemplatePath.Text);
+  end;
+
+  // Writing Files tab informations
+  if pReg.OpenKey('\Software\LuaEdit\HdrBld\FilesHdr', True) then
+  begin
+    pReg.WriteString('Template', txtFileTemplatePath.Text);
+  end;
+
+  pReg.Free;
+end;
+
+procedure TfrmSettings.CheckButtons;
+begin
+  tbtnRemoveTag.Enabled := not (lvwTags.Items.Count = 0);
+  tbtnEdit.Enabled := not (lvwTags.Items.Count = 0);
+end;
+
+procedure TfrmSettings.tbtnRemoveTagClick(Sender: TObject);
+var
+  x: Integer;
+  pReg: TRegistry;
+begin
+  if Assigned(lvwTags.Selected) then
+  begin
+    pReg := TRegistry.Create;
+
+    // Remove tag from registry
+    if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
+      pReg.DeleteValue(lvwTags.Selected.Caption)
+
+    pReg.Free;
+    lvwTags.Items.Delete(lvwTags.Selected.Index);
+
+    if lvwTags.Items.Count > 0 then
+      lvwTags.Selected := lvwTags.Items[0];
+      
+    CheckButtons;
+  end;
+end;
+
+procedure TfrmSettings.tbtnAddTagClick(Sender: TObject);
+var
+  pItem: TListItem;
+begin
+  pItem := lvwTags.Items.Add;
+  pItem.Caption := '*New Tag*';
+  pItem.SubItems.Add('');
+  CheckButtons;
+end;
+
+procedure TfrmSettings.tbtnEditClick(Sender: TObject);
+begin
+  if Assigned(lvwTags.Selected) then
+  begin
+    frmEditTag := TfrmEditTag.Create(nil);
+    frmEditTag.txtName.Text := lvwTags.Selected.Caption;
+    frmEditTag.txtValue.Text := lvwTags.Selected.SubItems[0];
+
+    if frmEditTag.ShowModal = mrOk then
+    begin
+      lvwTags.Selected.Caption := frmEditTag.txtName.Text;
+      lvwTags.Selected.SubItems[0] := frmEditTag.txtValue.Text;
+    end;
+
+    FreeAndNil(frmEditTag);
+  end;
+end;
+
+procedure TfrmSettings.lvwTagsDblClick(Sender: TObject);
+begin
+  tbtnEdit.Click;
+end;
+
 end.
 end.