OSDN Git Service

(none)
authornaru <bottle@mikage.to>
Sat, 21 Dec 2002 16:33:42 +0000 (16:33 +0000)
committernaru <bottle@mikage.to>
Sat, 21 Dec 2002 16:33:42 +0000 (16:33 +0000)
bottleclient/ConstEditor.dfm
bottleclient/ConstEditor.pas
bottleclient/ScriptConsts.pas

index 74606d6..f8f16e7 100755 (executable)
@@ -33,7 +33,7 @@ object frmConstEditor: TfrmConstEditor
     RightClickSelect = True
     RowSelect = True
     ShowRoot = False
-    TabOrder = 0
+    TabOrder = 2
     OnChange = tvwConstChange
     OnChanging = tvwConstChanging
   end
@@ -47,7 +47,7 @@ object frmConstEditor: TfrmConstEditor
     EdgeBorders = []
     Flat = True
     Images = imgIcon
-    TabOrder = 1
+    TabOrder = 0
     object tbtnNewGroup: TToolButton
       Left = 0
       Top = 0
@@ -81,7 +81,7 @@ object frmConstEditor: TfrmConstEditor
     Height = 111
     Align = alBottom
     BevelOuter = bvNone
-    TabOrder = 2
+    TabOrder = 3
     DesignSize = (
       260
       111)
@@ -90,7 +90,7 @@ object frmConstEditor: TfrmConstEditor
       Top = 0
       Width = 260
       Height = 81
-      ActivePage = tstConst
+      ActivePage = tstMenu
       Align = alTop
       Style = tsButtons
       TabOrder = 0
@@ -120,6 +120,7 @@ object frmConstEditor: TfrmConstEditor
           Height = 20
           Anchors = [akLeft, akTop, akRight]
           TabOrder = 0
+          OnExit = edtExit
         end
         object edtMenuIfGhost: TEdit
           Left = 76
@@ -128,6 +129,7 @@ object frmConstEditor: TfrmConstEditor
           Height = 20
           Anchors = [akLeft, akTop, akRight]
           TabOrder = 1
+          OnExit = edtExit
         end
       end
       object tstConst: TTabSheet
@@ -164,6 +166,7 @@ object frmConstEditor: TfrmConstEditor
           Height = 20
           Anchors = [akLeft, akTop, akRight]
           TabOrder = 0
+          OnExit = edtExit
         end
         object edtConstScript: TEdit
           Left = 76
@@ -171,7 +174,8 @@ object frmConstEditor: TfrmConstEditor
           Width = 177
           Height = 20
           Anchors = [akLeft, akTop, akRight]
-          TabOrder = 1
+          TabOrder = 2
+          OnExit = edtExit
         end
         object cbxConstShortCut: TComboBox
           Left = 76
@@ -180,7 +184,8 @@ object frmConstEditor: TfrmConstEditor
           Height = 20
           Anchors = [akLeft, akTop, akRight]
           ItemHeight = 12
-          TabOrder = 2
+          TabOrder = 1
+          OnExit = edtExit
         end
       end
     end
@@ -203,7 +208,7 @@ object frmConstEditor: TfrmConstEditor
     Height = 27
     Align = alTop
     BevelOuter = bvNone
-    TabOrder = 3
+    TabOrder = 1
     DesignSize = (
       260
       27)
@@ -226,15 +231,6 @@ object frmConstEditor: TfrmConstEditor
       OnChange = cbxConstFileChange
     end
   end
-  object Button1: TButton
-    Left = 96
-    Top = 192
-    Width = 75
-    Height = 25
-    Caption = 'Button1'
-    TabOrder = 4
-    OnClick = Button1Click
-  end
   object imgIcon: TImageList
     Left = 224
     Top = 64
@@ -790,12 +786,12 @@ object frmConstEditor: TfrmConstEditor
       Hint = #23450#22411#21477#36861#21152
       ImageIndex = 2
       ShortCut = 45
+      OnExecute = actNewConstExecute
     end
     object actDelete: TAction
       Caption = #21066#38500
       Hint = #21066#38500
       ImageIndex = 7
-      ShortCut = 46
       OnExecute = actDeleteExecute
     end
     object actMoveUp: TAction
@@ -818,26 +814,13 @@ object frmConstEditor: TfrmConstEditor
     OnPopup = PopUpMenuPopup
     Left = 160
     Top = 64
-    object mnInsert: TMenuItem
-      Caption = #25407#20837
-      ImageIndex = 5
-      ShortCut = 13
-    end
-    object N5: TMenuItem
-      Caption = '-'
-    end
     object mnNewGroup: TMenuItem
       Action = actNewGroup
     end
     object mnAddConst: TMenuItem
       Action = actNewConst
     end
-    object mnEditConst: TMenuItem
-      Caption = #23450#22411#21477#32232#38598
-      Hint = #23450#22411#21477#32232#38598
-      ImageIndex = 1
-    end
-    object mnDelete: TMenuItem
+    object mnDeleteConst: TMenuItem
       Action = actDelete
     end
     object mnUp: TMenuItem
index 9865b41..62d1628 100755 (executable)
@@ -26,12 +26,8 @@ type
     PopUpMenu: TPopupMenu;
     mnNewGroup: TMenuItem;
     mnAddConst: TMenuItem;
-    mnEditConst: TMenuItem;
-    mnDelete: TMenuItem;
     mnUp: TMenuItem;
     mnDown: TMenuItem;
-    mnInsert: TMenuItem;
-    N5: TMenuItem;
     pnlConstText: TPanel;
     pageConstText: TPageControl;
     tstMenu: TTabSheet;
@@ -50,9 +46,8 @@ type
     pnlConstFile: TPanel;
     Label6: TLabel;
     cbxConstFile: TComboBox;
-    Button1: TButton;
+    mnDeleteConst: TMenuItem;
     procedure actDeleteExecute(Sender: TObject);
-    procedure actNewGroupExecute(Sender: TObject);
     procedure actMoveUpExecute(Sender: TObject);
     procedure actMoveDownExecute(Sender: TObject);
     procedure tvwConstChange(Sender: TObject; Node: TTreeNode);
@@ -61,8 +56,10 @@ type
     procedure btnCloseClick(Sender: TObject);
     procedure tvwConstChanging(Sender: TObject; Node: TTreeNode;
       var AllowChange: Boolean);
-    procedure Button1Click(Sender: TObject);
     procedure cbxConstFileChange(Sender: TObject);
+    procedure actNewGroupExecute(Sender: TObject);
+    procedure actNewConstExecute(Sender: TObject);
+    procedure edtExit(Sender: TObject);
   private
     { Private \90é\8c¾ }
     FTargetConstFile: TScriptConstFile;
@@ -121,15 +118,11 @@ begin
   tvwConst.OnChanging := tvwConstChanging;
 end;
 
-procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
-begin
-  //
-end;
-
 procedure TfrmConstEditor.actMoveUpExecute(Sender: TObject);
 var Node, DestNode: TTreeNode;
 begin
   Node := tvwConst.Selected;
+  FTargetConstFile.MoveUp(integer(Node.Data));
   if Node.getPrevSibling <> nil then begin
     DestNode := Node.getPrevSibling;
     Node.MoveTo(DestNode, naInsert);
@@ -145,6 +138,7 @@ procedure TfrmConstEditor.actMoveDownExecute(Sender: TObject);
 var Node, DestNode, NextNode: TTreeNode;
 begin
   Node := tvwConst.Selected;
+  FTargetConstFile.MoveDown(integer(Node.Data));
   if Node.getNextSibling <> nil then begin
     NextNode := Node.getNextSibling;
     NextNode.MoveTo(Node, naInsert);
@@ -218,10 +212,9 @@ end;
 
 procedure TfrmConstEditor.UpdateList;
 var i, j: integer;
-    SelOld, MenuNode, ConstNode: TTreeNode;
+    MenuNode, ConstNode: TTreeNode;
 begin
   tvwConst.OnChanging := nil;
-  SelOld := tvwConst.Selected;
   tvwConst.Items.BeginUpdate;
   for i := tvwConst.Items.Count-1 downto 0 do begin
     tvwConst.Items[i].Delete;
@@ -239,6 +232,7 @@ begin
         ConstNode.SelectedIndex := 1;
         ConstNode.Data := Pointer(FTargetConstFile[i][j].ID);
       end;
+      MenuNode.Expand(false);
     end;
   end;
   tvwConst.Items.EndUpdate;
@@ -266,6 +260,11 @@ begin
     if CanUpdate then begin
       ConstData.Caption := edtConstCaption.Text;
       ConstData.ConstText := edtConstScript.Text;
+      try
+        ConstData.ShortCut := TextToShortCut(cbxConstShortCut.Text);
+      except
+        ConstData.ShortCut := 0;
+      end;
       GetNodeByID(FTargetItemID).Text := ConstData.Caption;
     end;
   end else begin
@@ -281,11 +280,6 @@ begin
   end;
 end;
 
-procedure TfrmConstEditor.Button1Click(Sender: TObject);
-begin
-  UpdateList;
-end;
-
 function TfrmConstEditor.GetNodeByID(ID: integer): TTreeNode;
 var i: integer;
 begin
@@ -303,4 +297,43 @@ begin
   UpdateList;
 end;
 
+procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
+var MenuData: TScriptConstMenu;
+    Node: TTreeNode;
+begin
+  MenuData := FTargetConstFile.AddMenu;
+  Node := tvwConst.Items.Add(nil, MenuData.Caption);
+  Node.Data := Pointer(MenuData.ID);
+  Node.Selected := true;
+  edtMenuCaption.SetFocus;
+  edtMenuCaption.SelectAll;
+end;
+
+procedure TfrmConstEditor.actNewConstExecute(Sender: TObject);
+var ConstData: TScriptConst;
+    MenuData: TScriptConstMenu;
+    MenuNode, NewNode: TTreeNode;
+    ID: integer;
+begin
+  if tvwConst.Selected = nil then Exit;
+  if tvwConst.Selected.Level = 0 then MenuNode := tvwConst.Selected
+  else MenuNode := tvwConst.Selected.Parent;
+  ID := integer(MenuNode.Data);
+  MenuData := FTargetConstFile.GetMenuByID(ID);
+  ConstData := MenuData.AddConst;
+  NewNode := tvwConst.Items.AddChild(MenuNode, ConstData.Caption);
+  NewNode.ImageIndex := 1;
+  NewNode.SelectedIndex := 1;
+  NewNode.Data := Pointer(ConstData.ID);
+  NewNode.Selected := true;
+  edtConstCaption.SetFocus;
+  edtConstCaption.SelectAll;
+end;
+
+procedure TfrmConstEditor.edtExit(Sender: TObject);
+var dummy: boolean;
+begin
+  tvwConstChanging(self, nil, dummy);
+end;
+
 end.
index a9d638e..73be6bb 100755 (executable)
@@ -47,11 +47,14 @@ type
     property ID: integer read FID;
     property Count: integer read GetCount;
     property Consts[Index: integer]: TScriptConst read GetConsts; default;
+    property List: TObjectList read FConsts;
     property Caption: String read FCaption write SetCaption;
     property IfGhost: String read FIfGhost write SetIfGhost;
     procedure Load(Lines: TStrings);
     procedure Save(Lines: TStrings);
     procedure Delete(const ID: integer);
+    function GetConstByID(const ID: integer): TScriptConst;
+    function AddConst: TScriptConst;
   end;
 
   TScriptConstFile = class(TObject) // \8eq\81BTScriptConstMenu\82Ì\83\8a\83X\83g\81B
@@ -67,9 +70,15 @@ type
     property FileName: String read FFileName write SetFileName;
     property Count: integer read GetCount;
     property Menus[Index: integer]: TScriptConstMenu read GetMenus; default;
+    property List: TObjectList read FMenus;
     procedure LoadFromFile(LoadFileName: String);
     procedure SaveToFile;
     procedure Delete(const ID: integer);
+    procedure MoveUp(const ID: integer);
+    procedure MoveDown(const ID: integer);
+    function GetConstByID(const ID: integer): TScriptConst;
+    function GetMenuByID(const ID: integer): TScriptConstMenu;
+    function AddMenu: TScriptConstMenu;
   end;
 
   TScriptConstList = class(TObject) // \90e\81BScriptConstFile\82Ì\83\8a\83X\83g\81B
@@ -84,10 +93,9 @@ type
     procedure Save;
     property Files[Index: integer]: TScriptConstFile read GetFiles; default;
     property Count: integer read GetCount;
+    property List: TObjectList read FFiles;
     function GetConstByID(const ID: integer): TScriptConst;
     function GetMenuByID(const ID: integer): TScriptConstMenu;
-    //procedure MoveUp(const ID: integer);
-    //procedure MoveDown(const ID: integer);
     procedure Delete(const ID: integer);
   end;
 
@@ -139,18 +147,12 @@ begin
 end;
 
 function TScriptConstList.GetConstByID(const ID: integer): TScriptConst;
-var i, j, k: integer;
+var i: integer;
 begin
   Result := nil;
   for i := 0 to Count-1 do begin
-    for j := 0 to Files[i].Count-1 do begin
-      for k := 0 to Files[i][j].Count-1 do begin
-        if Files[i][j][k].ID = ID then begin
-          Result := Files[i][j][k];
-          Exit;
-        end;
-      end;
-    end;
+    Result := Files[i].GetConstByID(ID);
+    if Result <> nil then Exit;
   end;
 end;
 
@@ -165,16 +167,12 @@ begin
 end;
 
 function TScriptConstList.GetMenuByID(const ID: integer): TScriptConstMenu;
-var i, j: integer;
+var i: integer;
 begin
   Result := nil;
   for i := 0 to Count-1 do begin
-    for j := 0 to Files[i].Count-1 do begin
-      if Files[i][j].ID = ID then begin
-        Result := Files[i][j];
-        Exit;
-      end;
-    end;
+    Result := Files[i].GetMenuByID(ID);
+    if Result <> nil then Exit;
   end;
 end;
 
@@ -263,6 +261,14 @@ end;
 
 { TScriptConstFile }
 
+function TScriptConstFile.AddMenu: TScriptConstMenu;
+begin
+  Result := TScriptConstMenu.Create;
+  Result.Caption := '\90V\82µ\82¢\83O\83\8b\81[\83v';
+  Result.IfGhost := '';
+  FMenus.Add(Result);
+end;
+
 constructor TScriptConstFile.Create;
 begin
   FMenus := TObjectList.Create(true);
@@ -286,11 +292,32 @@ begin
   inherited;
 end;
 
+function TScriptConstFile.GetConstByID(const ID: integer): TScriptConst;
+var i: integer;
+begin
+  Result := nil;
+  for i := 0 to Count-1 do begin
+    Result := Menus[i].GetConstByID(ID);
+    if Result <> nil then Exit;
+  end;
+end;
+
 function TScriptConstFile.GetCount: integer;
 begin
   Result := FMenus.Count;
 end;
 
+function TScriptConstFile.GetMenuByID(const ID: integer): TScriptConstMenu;
+var i: integer;
+begin
+  Result := nil;
+  for i := 0 to Count-1 do
+    if Menus[i].ID = ID then begin
+      Result := Menus[i];
+      Exit;
+    end;
+end;
+
 function TScriptConstFile.GetMenus(Index: integer): TScriptConstMenu;
 begin
   Result := FMenus[Index] as TScriptConstMenu;
@@ -316,6 +343,54 @@ begin
   FileName := LoadFileName; // \83t\83@\83C\83\8b\96¼\82Í\95Û\91\82µ\82Ä\82¨\82­
 end;
 
+procedure TScriptConstFile.MoveDown(const ID: integer);
+var i, j: integer;
+    ConstData: TObject;
+begin
+  for i := Count-1 downto 0 do begin
+    if Menus[i].ID = ID then begin
+      if i < Count-1 then FMenus.Move(i, i+1);
+      Exit;
+    end;
+    for j := Menus[i].Count-1 downto 0 do begin
+      if Menus[i][j].ID = ID then begin
+        if j < Menus[i].Count-1 then
+          Menus[i].List.Move(j, j+1) // \95\81\92Ê\82É\83\81\83j\83\85\81[\93à\82Å\88Ú\93®
+        else if i < Count-1 then begin // \83\81\83j\83\85\81[\82ð\92´\82¦\82Ä\88Ú\93®
+          ConstData := Menus[i][j];
+          Menus[i].List.Extract(ConstData);
+          Menus[i+1].List.Insert(0, ConstData);
+          Exit;
+        end;
+      end;
+    end;
+  end;
+end;
+
+procedure TScriptConstFile.MoveUp(const ID: integer);
+var i, j: integer;
+    ConstData: TObject;
+begin
+  for i := 0 to Count-1 do begin
+    if Menus[i].ID = ID then begin
+      if i > 0 then FMenus.Move(i, i-1);
+      Exit;
+    end;
+    for j := 0 to Menus[i].Count-1 do begin
+      if Menus[i][j].ID = ID then begin
+        if j > 0 then
+          Menus[i].List.Move(j, j-1) // \95\81\92Ê\82É\83\81\83j\83\85\81[\93à\82Å\88Ú\93®
+        else if i > 0 then begin // \83\81\83j\83\85\81[\82ð\92´\82¦\82Ä\88Ú\93®
+          ConstData := Menus[i][j];
+          Menus[i].List.Extract(ConstData);
+          Menus[i-1].List.Add(ConstData);
+          Exit;
+        end;
+      end;
+    end;
+  end;
+end;
+
 procedure TScriptConstFile.SaveToFile;
 var Lines: TStringList;
     i: integer;
@@ -339,6 +414,14 @@ end;
 
 { TScriptConstMenu }
 
+function TScriptConstMenu.AddConst: TScriptConst;
+begin
+  Result := TScriptConst.Create;
+  Result.Caption := '\92è\8c^\8bå';
+  Result.ConstText := '\83X\83N\83\8a\83v\83g';
+  FConsts.Add(Result);
+end;
+
 constructor TScriptConstMenu.Create;
 begin
   FID := OldID + 1;
@@ -360,6 +443,17 @@ begin
   inherited;
 end;
 
+function TScriptConstMenu.GetConstByID(const ID: integer): TScriptConst;
+var i: integer;
+begin
+  Result := nil;
+  for i := 0 to Count-1 do
+    if Consts[i].ID = ID then begin
+      Result := Consts[i];
+      Exit;
+    end;
+end;
+
 function TScriptConstMenu.GetConsts(Index: integer): TScriptConst;
 begin
   Result := FConsts[Index] as TScriptConst;
@@ -384,11 +478,11 @@ begin
       try
         ConstItem := TScriptConst.Create;
         ConstItem.FromString(Lines[0]);
-        Lines.Delete(0);
         FConsts.Add(ConstItem);
       except
         ConstItem.Free;
       end;
+      Lines.Delete(0);
     end else Break;
   end;
 end;