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.Name = 'MS Sans Serif'
   Font.Style = []
-  FormStyle = fsStayOnTop
   OldCreateOrder = False
   Position = poScreenCenter
   DesignSize = (

+ 17 - 13
LuaEdit/HeaderBuilder/FctHdrBld.dfm

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

+ 62 - 15
LuaEdit/HeaderBuilder/FctHdrBld.pas

@@ -5,7 +5,7 @@ interface
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ExtCtrls, XPMenu, ImgList, ComCtrls, ToolWin, Grids,
-  ValEdit, XPMan, Registry;
+  ValEdit, XPMan, Registry, System;
 
 type
   TfrmFctHdrBld = class(TForm)
@@ -45,6 +45,7 @@ type
     procedure btnOKClick(Sender: TObject);
     procedure tbtnCallSampleClick(Sender: TObject);
     procedure tbtnSettingsClick(Sender: TObject);
+    procedure lvwParamsDblClick(Sender: TObject);
   private
     { Private declarations }
   public
@@ -173,29 +174,64 @@ end;
 function TfrmFctHdrBld.GetHeader: String;
 var
   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
+  Result := '';
   pReg := TRegistry.Create;
   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
-    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
-      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
+        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;
@@ -219,10 +255,16 @@ begin
 end;
 
 procedure TfrmFctHdrBld.tbtnRemoveParamClick(Sender: TObject);
+var
+  x: Integer;
 begin
   if Assigned(lvwParams.Selected) then
   begin
     lvwParams.Items.Delete(lvwParams.Selected.Index);
+
+    if lvwParams.Items.Count > 0 then
+      lvwParams.Selected := lvwParams.Items[0];
+      
     CheckButtons;
   end;
 end;
@@ -282,4 +324,9 @@ begin
   FreeAndNil(frmSettings);
 end;
 
+procedure TfrmFctHdrBld.lvwParamsDblClick(Sender: TObject);
+begin
+  tbtnEdit.Click;
+end;
+
 end.

+ 2 - 2
LuaEdit/HeaderBuilder/HdrBld.dof

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

+ 2 - 1
LuaEdit/HeaderBuilder/HdrBld.dpr

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

BIN
LuaEdit/HeaderBuilder/HdrBld.res


+ 4 - 3
LuaEdit/HeaderBuilder/HdrBldMain.pas

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

+ 234 - 43
LuaEdit/HeaderBuilder/Settings.dfm

@@ -11,9 +11,9 @@ object frmSettings: TfrmSettings
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
-  FormStyle = fsStayOnTop
   OldCreateOrder = False
   Position = poScreenCenter
+  OnShow = FormShow
   PixelsPerInch = 96
   TextHeight = 13
   object Panel1: TPanel
@@ -32,7 +32,7 @@ object frmSettings: TfrmSettings
       Cancel = True
       Caption = '&Cancel'
       ModalResult = 2
-      TabOrder = 0
+      TabOrder = 1
     end
     object btnOK: TButton
       Left = 232
@@ -42,7 +42,8 @@ object frmSettings: TfrmSettings
       Caption = '&OK'
       Default = True
       ModalResult = 1
-      TabOrder = 1
+      TabOrder = 0
+      OnClick = btnOKClick
     end
   end
   object Panel2: TPanel
@@ -53,7 +54,7 @@ object frmSettings: TfrmSettings
     Align = alClient
     BevelOuter = bvNone
     TabOrder = 1
-    object PageControl1: TPageControl
+    object pgcMain: TPageControl
       Left = 0
       Top = 0
       Width = 392
@@ -62,49 +63,65 @@ object frmSettings: TfrmSettings
       Align = alClient
       TabOrder = 0
       object TabSheet3: TTabSheet
-        Caption = 'General'
+        Caption = 'Tags'
         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
+          ViewStyle = vsReport
+          OnDblClick = lvwTagsDblClick
         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
-        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
       object TabSheet1: TTabSheet
@@ -189,4 +206,178 @@ object frmSettings: TfrmSettings
     Left = 10
     Top = 184
   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

+ 163 - 9
LuaEdit/HeaderBuilder/Settings.pas

@@ -4,7 +4,7 @@ interface
 
 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
-  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Registry;
+  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Registry, ToolWin, ImgList, XPMenu;
 
 type
   TfrmSettings = class(TForm)
@@ -12,7 +12,7 @@ type
     btnCancel: TButton;
     btnOK: TButton;
     Panel2: TPanel;
-    PageControl1: TPageControl;
+    pgcMain: TPageControl;
     TabSheet1: TTabSheet;
     TabSheet2: TTabSheet;
     Label1: TLabel;
@@ -25,19 +25,27 @@ type
     txtFileTemplatePath: TEdit;
     btnBrowseFileTpl: 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 btnBrowseFileTplClick(Sender: TObject);
     procedure txtFileTemplatePathChange(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 declarations }
     function Browse(sInitial: String): String;
+    procedure CheckButtons;
   public
     { Public declarations }
   end;
@@ -47,6 +55,8 @@ var
 
 implementation
 
+uses EditTag;
+
 {$R *.dfm}
 
 function TfrmSettings.Browse(sInitial: String): String;
@@ -59,7 +69,7 @@ begin
   if sInitial = '' then
   begin
     if pReg.OpenKey('\Software\LuaEdit\HdrBld', False) then
-      sInitialPath := pReg.ReadString('LastBrowsePath');
+      sInitial := pReg.ReadString('LastBrowsePath');
   end;
 
   odlgTemplate.InitialDir := sInitial;
@@ -93,4 +103,148 @@ begin
   btnEditFctTpl.Enabled := (txtFctTemplatePath.Text <> '');
 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.