6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 StdCtrls, Buttons, ImgList, ComCtrls, Menus, BottleDef,
8 ActnList, ToolWin, ExtCtrls, ScriptConsts;
11 TfrmConstEditor = class(TForm)
15 tbtnNewGroup: TToolButton;
16 tbtnAddConst: TToolButton;
17 tbtnDelete: TToolButton;
19 tbtnDown: TToolButton;
20 ActionList1: TActionList;
26 PopUpMenu: TPopupMenu;
27 mnNewGroup: TMenuItem;
28 mnAddConst: TMenuItem;
32 pageConstText: TPageControl;
36 edtMenuCaption: TEdit;
38 edtMenuIfGhost: TEdit;
42 edtConstCaption: TEdit;
43 edtConstScript: TEdit;
44 cbxConstShortCut: TComboBox;
48 cbxConstFile: TComboBox;
49 mnDeleteConst: TMenuItem;
50 procedure actDeleteExecute(Sender: TObject);
51 procedure actMoveUpExecute(Sender: TObject);
52 procedure actMoveDownExecute(Sender: TObject);
53 procedure tvwConstChange(Sender: TObject; Node: TTreeNode);
54 procedure FormCreate(Sender: TObject);
55 procedure PopUpMenuPopup(Sender: TObject);
56 procedure btnCloseClick(Sender: TObject);
57 procedure tvwConstChanging(Sender: TObject; Node: TTreeNode;
58 var AllowChange: Boolean);
59 procedure cbxConstFileChange(Sender: TObject);
60 procedure actNewGroupExecute(Sender: TObject);
61 procedure actNewConstExecute(Sender: TObject);
62 procedure edtExit(Sender: TObject);
65 FTargetConstFile: TScriptConstFile;
66 FTargetItemID: integer;
68 function GetNodeByID(ID: integer): TTreeNode;
69 procedure ChangeActionStatus;
72 function Execute: boolean;
76 frmConstEditor: TfrmConstEditor;
92 function TfrmConstEditor.Execute: boolean;
95 cbxConstFile.Items.Clear;
96 for i := 0 to ScriptConstList.Count-1 do begin
97 cbxConstFile.Items.Add(ExtractFileName(ScriptConstList.Files[i].FileName));
99 if ScriptConstList.Count > 0 then begin
100 FTargetConstFile := ScriptConstList[0];
101 cbxConstFile.ItemIndex := 0;
103 FTargetConstFile := nil;
104 cbxConstFile.Text := '';
112 procedure TfrmConstEditor.actDeleteExecute(Sender: TObject);
115 if tvwConst.Selected = nil then Exit;
116 Node := tvwConst.Selected;
117 if Node.Level = 0 then begin
118 if Node.HasChildren then begin
119 if MessageDlg(Node.Text + '
\82É
\91®
\82·
\82é' + IntToStr(Node.Count) + '
\8cÂ
\82Ì
\92è
\8c^
\8bå
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\82©?',
120 mtConfirmation, mbOkCancel, 0) = mrCancel then Exit;
123 FTargetConstFile.Delete(integer(Node.Data));
124 tvwConst.OnChanging := nil;
125 tvwConst.Items.Delete(Node);
126 tvwConst.OnChanging := tvwConstChanging;
130 procedure TfrmConstEditor.actMoveUpExecute(Sender: TObject);
131 var Node, DestNode: TTreeNode;
133 Node := tvwConst.Selected;
136 FTargetConstFile.MoveUp(integer(Node.Data));
137 if Node.getPrevSibling <> nil then begin
138 DestNode := Node.getPrevSibling;
139 Node.MoveTo(DestNode, naInsert);
140 end else if Node.Level = 1 then begin
141 //
\91O
\82Ì
\83O
\83\8b\81[
\83v
\82Ì
\96\96\94ö
\82É
\88Ú
\93®
\82·
\82é
142 if Node.Parent.getPrevSibling = nil then Exit;
143 DestNode := Node.Parent.getPrevSibling;
144 Node.MoveTo(DestNode, naAddChild);
148 procedure TfrmConstEditor.actMoveDownExecute(Sender: TObject);
149 var Node, DestNode, NextNode: TTreeNode;
151 Node := tvwConst.Selected;
154 FTargetConstFile.MoveDown(integer(Node.Data));
155 if Node.getNextSibling <> nil then begin
156 NextNode := Node.getNextSibling;
157 NextNode.MoveTo(Node, naInsert);
158 end else if Node.Level = 1 then begin
159 //
\8e\9f\82Ì
\83O
\83\8b\81[
\83v
\82Ì
\90æ
\93ª
\82É
\88Ú
\93®
\82·
\82é
160 if Node.Parent.getNextSibling = nil then Exit;
161 DestNode := Node.Parent.getNextSibling;
162 Node.MoveTo(DestNode, naAddChildFirst);
166 procedure TfrmConstEditor.tvwConstChange(Sender: TObject; Node: TTreeNode);
167 var ConstData: TScriptConst;
168 MenuData: TScriptConstMenu;
174 pageConstText.Enabled := true;
175 ID := integer(Node.Data); //
\96{
\93\96\82Í
\82â
\82è
\82½
\82
\82È
\82¢
\83L
\83\83\83X
\83g
176 if Node.Level = 0 then begin
177 MenuData := ScriptConstList.GetMenuByID(ID);
178 pageConstText.ActivePage := tstMenu;
179 edtMenuCaption.Text := MenuData.Caption;
180 edtMenuIfGhost.Text := MenuData.IfGhost;
182 ConstData := ScriptConstList.GetConstByID(ID);
183 pageConstText.ActivePage := tstConst;
184 edtConstCaption.Text := ConstData.Caption;
185 edtConstScript.Text := ConstData.ConstText;
186 cbxConstShortCut.Text := ShortCutToText(ConstData.ShortCut);
192 procedure TfrmConstEditor.FormCreate(Sender: TObject);
196 if Application.Terminated then Exit;
197 //
\83\81\83j
\83\85\81[
\8dì
\90¬
198 for c := 'A' to 'Z' do begin
199 cbxConstShortCut.Items.Add('Ctrl+' + c);
201 for c := 'A' to 'Z' do begin
202 cbxConstShortCut.Items.Add('Shift+Ctrl+' + c);
204 for c := 'A' to 'Z' do begin
205 cbxConstShortCut.Items.Add('Alt+Ctrl+' + c);
207 for i := 1 to 12 do begin
208 cbxConstShortCut.Items.Add('F' + IntToStr(i));
210 for i := 1 to 12 do begin
211 cbxConstShortCut.Items.Add('Shift+F' + IntToStr(i));
213 tvwConst.DoubleBuffered := true;
216 procedure TfrmConstEditor.PopUpMenuPopup(Sender: TObject);
219 //
\88È
\89º
\82Í
\89E
\83N
\83\8a\83b
\83N
\8e\9e\82É
\83G
\83\89\81[
\82ð
\8bN
\82±
\82³
\82È
\82¢
\82½
\82ß
\82Ì
220 //
\83g
\83\8a\83b
\83N
\93I
\82È
\83R
\81[
\83h
221 if tvwConst.Selected <> nil then
222 tvwConst.Selected.Selected := true;
225 procedure TfrmConstEditor.btnCloseClick(Sender: TObject);
230 procedure TfrmConstEditor.UpdateList;
232 MenuNode, ConstNode: TTreeNode;
234 tvwConst.OnChanging := nil;
235 tvwConst.Items.BeginUpdate;
236 for i := tvwConst.Items.Count-1 downto 0 do begin
237 tvwConst.Items[i].Delete;
239 if FTargetConstFile <> nil then begin
241 for i := 0 to FTargetConstFile.Count-1 do begin
242 MenuNode := tvwConst.Items.Add(MenuNode, FTargetConstFile[i].Caption);
243 if FTargetConstFile[i].IfGhost <> '' then begin
244 MenuNode.ImageIndex := IcoIfGhostGroup;
245 MenuNode.SelectedIndex := IcoIfGhostGroup;
247 MenuNode.ImageIndex := IcoGroup;
248 MenuNode.SelectedIndex := IcoGroup;
250 MenuNode.Data := Pointer(FTargetConstFile[i].ID);
251 for j := 0 to FTargetConstFile[i].Count-1 do begin
252 ConstNode := tvwConst.Items.AddChild(MenuNode, FTargetConstFile[i][j].Caption);
253 ConstNode.ImageIndex := IcoConst;
254 ConstNode.SelectedIndex := IcoConst;
255 ConstNode.Data := Pointer(FTargetConstFile[i][j].ID);
257 MenuNode.Expand(false);
260 tvwConst.Items.EndUpdate;
261 if tvwConst.Items.Count > 0 then tvwConst.Items[0].Selected := true;
262 tvwConst.OnChanging := tvwConstChanging;
265 procedure TfrmConstEditor.tvwConstChanging(Sender: TObject;
266 Node: TTreeNode; var AllowChange: Boolean);
267 var ConstData: TScriptConst;
268 MenuData: TScriptConstMenu;
271 //
\91I
\91ð
\82ª
\88Ú
\93®
\82·
\82é
\82Ü
\82¦
\82Ì
\83A
\83C
\83e
\83\80\82Ì
\83f
\81[
\83^
\82ð
\8dX
\90V
\82·
\82é
272 if FTargetItemID = 0 then Exit; //
\88È
\91O
\82É
\89½
\82à
\91I
\91ð
\82µ
\82Ä
\82¢
\82È
\82¢
\82Ì
\82È
\82ç
\89½
\82à
\82µ
\82È
\82¢
274 ConstData := ScriptConstList.GetConstByID(FTargetItemID);
275 CanUpdate := false; //
\83t
\83\89\83O
276 if ConstData <> nil then begin
277 if edtConstCaption.Text <> ConstData.Caption then CanUpdate := true;
278 if edtConstScript.Text <> ConstData.ConstText then CanUpdate := true;
279 if TextToShortCut(cbxConstShortCut.Text) <> ConstData.ShortCut then CanUpdate := true;
280 if edtConstCaption.Text = '' then CanUpdate := false;
281 if edtConstScript.Text = '' then CanUpdate := false;
282 if CanUpdate then begin
283 ConstData.Caption := edtConstCaption.Text;
284 ConstData.ConstText := edtConstScript.Text;
286 ConstData.ShortCut := TextToShortCut(cbxConstShortCut.Text);
288 ConstData.ShortCut := 0;
290 GetNodeByID(FTargetItemID).Text := ConstData.Caption;
293 MenuData := ScriptConstList.GetMenuByID(FTargetItemId);
294 if edtMenuCaption.Text <> MenuData.Caption then CanUpdate := true;
295 if edtMenuIfGhost.Text <> MenuData.IfGhost then CanUpdate := true;
296 if edtMenuCaption.Text = '' then CanUpdate := false;
297 if CanUpdate then begin
298 MenuData.Caption := edtMenuCaption.Text;
299 MenuData.IfGhost := edtMenuIfGhost.Text;
300 with GetNodeByID(FTargetItemID) do begin
301 Text := MenuData.Caption;
302 if MenuData.IfGhost <> '' then begin
303 ImageIndex := IcoIfGhostGroup;
304 SelectedIndex := IcoIfGhostGroup;
306 ImageIndex := IcoGroup;
307 SelectedIndex := IcoGroup;
314 function TfrmConstEditor.GetNodeByID(ID: integer): TTreeNode;
318 for i := 0 to tvwConst.Items.Count-1 do
319 if integer(tvwConst.Items[i].Data) = ID then begin
320 Result := tvwConst.Items[i];
325 procedure TfrmConstEditor.cbxConstFileChange(Sender: TObject);
327 FTargetConstFile := ScriptConstList[cbxConstFile.ItemIndex];
332 procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
333 var MenuData: TScriptConstMenu;
336 MenuData := FTargetConstFile.AddMenu;
337 Node := tvwConst.Items.Add(nil, MenuData.Caption);
338 Node.Data := Pointer(MenuData.ID);
339 Node.Selected := true;
340 edtMenuCaption.SetFocus;
341 edtMenuCaption.SelectAll;
344 procedure TfrmConstEditor.actNewConstExecute(Sender: TObject);
345 var ConstData: TScriptConst;
346 MenuData: TScriptConstMenu;
347 MenuNode, NewNode: TTreeNode;
350 if tvwConst.Selected = nil then
352 ShowMessage('
\83O
\83\8b\81[
\83v
\82ð
\8dì
\90¬
\81E
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
355 if tvwConst.Selected.Level = 0 then
356 MenuNode := tvwConst.Selected
358 MenuNode := tvwConst.Selected.Parent;
359 ID := integer(MenuNode.Data);
360 MenuData := FTargetConstFile.GetMenuByID(ID);
361 ConstData := MenuData.AddConst;
362 NewNode := tvwConst.Items.AddChild(MenuNode, ConstData.Caption);
363 NewNode.ImageIndex := 1;
364 NewNode.SelectedIndex := 1;
365 NewNode.Data := Pointer(ConstData.ID);
366 NewNode.Selected := true;
367 edtConstCaption.SetFocus;
368 edtConstCaption.SelectAll;
371 procedure TfrmConstEditor.edtExit(Sender: TObject);
374 tvwConstChanging(self, nil, dummy);
377 procedure TfrmConstEditor.ChangeActionStatus;
381 //
\8fó
\91Ô
\82É
\89\9e\82¶
\82Ä
\83\81\83j
\83\85\81[
\93\99\82Ì
\97L
\8cø
\81E
\96³
\8cø
\82ð
\90Ø
\91Ö
\82¦
\82é
382 Selected := tvwConst.Selected;
383 pageConstText.Enabled := Selected <> nil;
384 actMoveDown.Enabled := Selected <> nil;
385 actNewConst.Enabled := Selected <> nil;
386 actDelete.Enabled := Selected <> nil;
387 actMoveUp.Enabled := Selected <> nil;