Settings.pas 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. unit Settings;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ComCtrls, StdCtrls, ExtCtrls, Registry, ToolWin, ImgList, XPMenu;
  6. type
  7. TfrmSettings = class(TForm)
  8. Panel1: TPanel;
  9. btnCancel: TButton;
  10. btnOK: TButton;
  11. Panel2: TPanel;
  12. pgcMain: TPageControl;
  13. TabSheet1: TTabSheet;
  14. TabSheet2: TTabSheet;
  15. Label1: TLabel;
  16. odlgTemplate: TOpenDialog;
  17. txtFctTemplatePath: TEdit;
  18. btnBrowseFctTpl: TButton;
  19. TabSheet3: TTabSheet;
  20. btnEditFctTpl: TButton;
  21. Label2: TLabel;
  22. txtFileTemplatePath: TEdit;
  23. btnBrowseFileTpl: TButton;
  24. btnEditFileTpl: TButton;
  25. lvwTags: TListView;
  26. tlbMain: TToolBar;
  27. tbtnAddTag: TToolButton;
  28. tbtnRemoveTag: TToolButton;
  29. xmpMenuPainter: TXPMenu;
  30. imlToolbar: TImageList;
  31. tbtnEdit: TToolButton;
  32. procedure btnBrowseFctTplClick(Sender: TObject);
  33. procedure btnBrowseFileTplClick(Sender: TObject);
  34. procedure txtFileTemplatePathChange(Sender: TObject);
  35. procedure txtFctTemplatePathChange(Sender: TObject);
  36. procedure FormShow(Sender: TObject);
  37. procedure btnOKClick(Sender: TObject);
  38. procedure tbtnRemoveTagClick(Sender: TObject);
  39. procedure tbtnAddTagClick(Sender: TObject);
  40. procedure tbtnEditClick(Sender: TObject);
  41. procedure lvwTagsDblClick(Sender: TObject);
  42. private
  43. { Private declarations }
  44. function Browse(sInitial: String): String;
  45. procedure CheckButtons;
  46. public
  47. { Public declarations }
  48. end;
  49. var
  50. frmSettings: TfrmSettings;
  51. implementation
  52. uses EditTag;
  53. {$R *.dfm}
  54. function TfrmSettings.Browse(sInitial: String): String;
  55. var
  56. pReg: TRegistry;
  57. begin
  58. pReg := TRegistry.Create;
  59. Result := '';
  60. if sInitial = '' then
  61. begin
  62. if pReg.OpenKey('\Software\LuaEdit\HdrBld', False) then
  63. sInitial := pReg.ReadString('LastBrowsePath');
  64. end;
  65. odlgTemplate.InitialDir := sInitial;
  66. if odlgTemplate.Execute then
  67. begin
  68. Result := odlgTemplate.FileName;
  69. if pReg.OpenKey('\Software\LuaEdit\HdrBld', True) then
  70. pReg.WriteString('LastBrowsePath', ExtractFilePath(odlgTemplate.FileName));
  71. end;
  72. pReg.Free;
  73. end;
  74. procedure TfrmSettings.btnBrowseFctTplClick(Sender: TObject);
  75. begin
  76. txtFctTemplatePath.Text := Browse(txtFctTemplatePath.Text);
  77. end;
  78. procedure TfrmSettings.btnBrowseFileTplClick(Sender: TObject);
  79. begin
  80. txtFileTemplatePath.Text := Browse(txtFileTemplatePath.Text);
  81. end;
  82. procedure TfrmSettings.txtFileTemplatePathChange(Sender: TObject);
  83. begin
  84. btnEditFileTpl.Enabled := (txtFileTemplatePath.Text <> '');
  85. end;
  86. procedure TfrmSettings.txtFctTemplatePathChange(Sender: TObject);
  87. begin
  88. btnEditFctTpl.Enabled := (txtFctTemplatePath.Text <> '');
  89. end;
  90. procedure TfrmSettings.FormShow(Sender: TObject);
  91. var
  92. pReg: TRegistry;
  93. strTags: TStringList;
  94. pItem: TListItem;
  95. x: Integer;
  96. begin
  97. // Getting saved values from registry
  98. pReg := TRegistry.Create;
  99. pgcMain.ActivePageIndex := 0;
  100. // Loading Tags tab informations
  101. if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
  102. begin
  103. strTags := TStringList.Create;
  104. pReg.GetValueNames(strTags);
  105. lvwTags.Clear;
  106. lvwTags.Items.BeginUpdate;
  107. for x := 0 to strTags.Count - 1 do
  108. begin
  109. pItem := lvwTags.Items.Add;
  110. pItem.Caption := strTags.Strings[x];
  111. pItem.SubItems.Add(pReg.ReadString(strTags.Strings[x]));
  112. end;
  113. lvwTags.Items.EndUpdate;
  114. strTags.Free;
  115. end;
  116. // Loading Funtions tab informations
  117. if pReg.OpenKey('\Software\LuaEdit\HdrBld\FunctionsHdr', False) then
  118. begin
  119. if pReg.ValueExists('Template') then
  120. txtFctTemplatePath.Text := pReg.ReadString('Template')
  121. else
  122. txtFctTemplatePath.Text := '';
  123. end;
  124. // Loading Files tab informations
  125. if pReg.OpenKey('\Software\LuaEdit\HdrBld\FilesHdr', False) then
  126. begin
  127. if pReg.ValueExists('Template') then
  128. txtFileTemplatePath.Text := pReg.ReadString('Template')
  129. else
  130. txtFileTemplatePath.Text := '';
  131. end;
  132. CheckButtons;
  133. pReg.Free;
  134. end;
  135. procedure TfrmSettings.btnOKClick(Sender: TObject);
  136. var
  137. pReg: TRegistry;
  138. x: Integer;
  139. begin
  140. // Saving informations in registry
  141. pReg := TRegistry.Create;
  142. // Writing Tags tab informations
  143. if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', True) then
  144. begin
  145. for x := 0 to lvwTags.Items.Count - 1 do
  146. pReg.WriteString(lvwTags.Items[x].Caption, lvwTags.Items[x].SubItems.Strings[0]);
  147. end;
  148. // Writing Functions tab informations
  149. if pReg.OpenKey('\Software\LuaEdit\HdrBld\FunctionsHdr', True) then
  150. begin
  151. pReg.WriteString('Template', txtFctTemplatePath.Text);
  152. end;
  153. // Writing Files tab informations
  154. if pReg.OpenKey('\Software\LuaEdit\HdrBld\FilesHdr', True) then
  155. begin
  156. pReg.WriteString('Template', txtFileTemplatePath.Text);
  157. end;
  158. pReg.Free;
  159. end;
  160. procedure TfrmSettings.CheckButtons;
  161. begin
  162. tbtnRemoveTag.Enabled := not (lvwTags.Items.Count = 0);
  163. tbtnEdit.Enabled := not (lvwTags.Items.Count = 0);
  164. end;
  165. procedure TfrmSettings.tbtnRemoveTagClick(Sender: TObject);
  166. var
  167. x: Integer;
  168. pReg: TRegistry;
  169. begin
  170. if Assigned(lvwTags.Selected) then
  171. begin
  172. pReg := TRegistry.Create;
  173. // Remove tag from registry
  174. if pReg.OpenKey('\Software\LuaEdit\HdrBld\Tags', False) then
  175. pReg.DeleteValue(lvwTags.Selected.Caption);
  176. pReg.Free;
  177. lvwTags.Items.Delete(lvwTags.Selected.Index);
  178. if lvwTags.Items.Count > 0 then
  179. lvwTags.Selected := lvwTags.Items[0];
  180. CheckButtons;
  181. end;
  182. end;
  183. procedure TfrmSettings.tbtnAddTagClick(Sender: TObject);
  184. var
  185. pItem: TListItem;
  186. begin
  187. pItem := lvwTags.Items.Add;
  188. pItem.Caption := '*New Tag*';
  189. pItem.SubItems.Add('');
  190. CheckButtons;
  191. end;
  192. procedure TfrmSettings.tbtnEditClick(Sender: TObject);
  193. begin
  194. if Assigned(lvwTags.Selected) then
  195. begin
  196. frmEditTag := TfrmEditTag.Create(nil);
  197. frmEditTag.txtName.Text := lvwTags.Selected.Caption;
  198. frmEditTag.txtValue.Text := lvwTags.Selected.SubItems[0];
  199. if frmEditTag.ShowModal = mrOk then
  200. begin
  201. lvwTags.Selected.Caption := frmEditTag.txtName.Text;
  202. lvwTags.Selected.SubItems[0] := frmEditTag.txtValue.Text;
  203. end;
  204. FreeAndNil(frmEditTag);
  205. end;
  206. end;
  207. procedure TfrmSettings.lvwTagsDblClick(Sender: TObject);
  208. begin
  209. tbtnEdit.Click;
  210. end;
  211. end.