OSDN Git Service

TEditor、TTaskTrayの配布先変更に追従
[winbottle/winbottle.git] / bottleclient / ConstEditor.pas
index 9865b41..3f6f8ad 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,14 +56,17 @@ 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;
     FTargetItemID: integer;
     procedure UpdateList;
     function GetNodeByID(ID: integer): TTreeNode;
+    procedure ChangeActionStatus;
   public
     { Public \90é\8c¾ }
     function Execute: boolean;
@@ -79,6 +77,12 @@ var
 
 implementation
 
+const
+  IcoGroup = 0;
+  IcoConst = 1;
+  IcoIfGhostGroup = 7;
+
+
 {$R *.DFM}
 
 { TfrmConstEditor }
@@ -100,6 +104,7 @@ begin
     cbxConstFile.Text := '';
   end;
   UpdateList;
+  ChangeActionStatus;
   ShowModal;
   Result := true;
 end;
@@ -119,17 +124,16 @@ begin
   tvwConst.OnChanging := nil;
   tvwConst.Items.Delete(Node);
   tvwConst.OnChanging := tvwConstChanging;
-end;
-
-procedure TfrmConstEditor.actNewGroupExecute(Sender: TObject);
-begin
-  //
+  ChangeActionStatus;
 end;
 
 procedure TfrmConstEditor.actMoveUpExecute(Sender: TObject);
 var Node, DestNode: TTreeNode;
 begin
   Node := tvwConst.Selected;
+  if Node = nil then
+    Exit;
+  FTargetConstFile.MoveUp(integer(Node.Data));
   if Node.getPrevSibling <> nil then begin
     DestNode := Node.getPrevSibling;
     Node.MoveTo(DestNode, naInsert);
@@ -145,6 +149,9 @@ procedure TfrmConstEditor.actMoveDownExecute(Sender: TObject);
 var Node, DestNode, NextNode: TTreeNode;
 begin
   Node := tvwConst.Selected;
+  if Node = nil then
+    Exit;
+  FTargetConstFile.MoveDown(integer(Node.Data));
   if Node.getNextSibling <> nil then begin
     NextNode := Node.getNextSibling;
     NextNode.MoveTo(Node, naInsert);
@@ -161,9 +168,9 @@ var ConstData: TScriptConst;
     MenuData: TScriptConstMenu;
     ID: integer;
 begin
-  if Node = nil then begin
-    pageConstText.Enabled := false;
-  end else begin
+  ChangeActionStatus;
+  if Node <> nil then
+  begin
     pageConstText.Enabled := true;
     ID := integer(Node.Data); // \96{\93\96\82Í\82â\82è\82½\82­\82È\82¢\83L\83\83\83X\83g
     if Node.Level = 0 then begin
@@ -183,32 +190,20 @@ begin
 end;
 
 procedure TfrmConstEditor.FormCreate(Sender: TObject);
-var c: char;
-    i: integer;
 begin
   if Application.Terminated then Exit;
   //\83\81\83j\83\85\81[\8dì\90¬
-  for c := 'A' to 'Z' do begin
-    cbxConstShortCut.Items.Add('Ctrl+' + c);
-  end;
-  for c := 'A' to 'Z' do begin
-    cbxConstShortCut.Items.Add('Shift+Ctrl+' + c);
-  end;
-  for c := 'A' to 'Z' do begin
-    cbxConstShortCut.Items.Add('Alt+Ctrl+' + c);
-  end;
-  for i := 1 to 12 do begin
-    cbxConstShortCut.Items.Add('F' + IntToStr(i));
-  end;
-  for i := 1 to 12 do begin
-    cbxConstShortCut.Items.Add('Shift+F' + IntToStr(i));
-  end;
+  BuildShortCutList(cbxConstShortCut.Items);
   tvwConst.DoubleBuffered := true;
 end;
 
 procedure TfrmConstEditor.PopUpMenuPopup(Sender: TObject);
 begin
-  tvwConst.Selected.Selected := true;
+  ChangeActionStatus;
+  // \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Ì
+  // \83g\83\8a\83b\83N\93I\82È\83R\81[\83h
+  if tvwConst.Selected <> nil then
+    tvwConst.Selected.Selected := true;
 end;
 
 procedure TfrmConstEditor.btnCloseClick(Sender: TObject);
@@ -218,10 +213,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;
@@ -230,15 +224,21 @@ begin
     MenuNode := nil;
     for i := 0 to FTargetConstFile.Count-1 do begin
       MenuNode := tvwConst.Items.Add(MenuNode, FTargetConstFile[i].Caption);
-      MenuNode.ImageIndex := 0;
-      MenuNode.SelectedIndex := 0;
+      if FTargetConstFile[i].IfGhost <> '' then begin
+        MenuNode.ImageIndex := IcoIfGhostGroup;
+        MenuNode.SelectedIndex := IcoIfGhostGroup;
+      end else begin
+        MenuNode.ImageIndex := IcoGroup;
+        MenuNode.SelectedIndex := IcoGroup;
+      end;
       MenuNode.Data := Pointer(FTargetConstFile[i].ID);
       for j := 0 to FTargetConstFile[i].Count-1 do begin
         ConstNode := tvwConst.Items.AddChild(MenuNode, FTargetConstFile[i][j].Caption);
-        ConstNode.ImageIndex := 1;
-        ConstNode.SelectedIndex := 1;
+        ConstNode.ImageIndex := IcoConst;
+        ConstNode.SelectedIndex := IcoConst;
         ConstNode.Data := Pointer(FTargetConstFile[i][j].ID);
       end;
+      MenuNode.Expand(false);
     end;
   end;
   tvwConst.Items.EndUpdate;
@@ -266,6 +266,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
@@ -276,16 +281,20 @@ begin
     if CanUpdate then begin
       MenuData.Caption := edtMenuCaption.Text;
       MenuData.IfGhost := edtMenuIfGhost.Text;
-      GetNodeByID(FTargetItemID).Text := MenuData.Caption;
+      with GetNodeByID(FTargetItemID) do begin
+        Text := MenuData.Caption;
+        if MenuData.IfGhost <> '' then begin
+          ImageIndex := IcoIfGhostGroup;
+          SelectedIndex := IcoIfGhostGroup;
+        end else begin
+          ImageIndex := IcoGroup;
+          SelectedIndex := IcoGroup;
+        end;
+      end;
     end;
   end;
 end;
 
-procedure TfrmConstEditor.Button1Click(Sender: TObject);
-begin
-  UpdateList;
-end;
-
 function TfrmConstEditor.GetNodeByID(ID: integer): TTreeNode;
 var i: integer;
 begin
@@ -300,7 +309,66 @@ end;
 procedure TfrmConstEditor.cbxConstFileChange(Sender: TObject);
 begin
   FTargetConstFile := ScriptConstList[cbxConstFile.ItemIndex];
+  ChangeActionStatus;
   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
+  begin
+    ShowMessage('\83O\83\8b\81[\83v\82ð\8dì\90¬\81E\91I\91ð\82µ\82Ä\82­\82¾\82³\82¢');
+    Exit;
+  end;
+  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;
+
+procedure TfrmConstEditor.ChangeActionStatus;
+var
+  Selected: TTreeNode;
+begin
+  // \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é
+  Selected := tvwConst.Selected;
+  pageConstText.Enabled := Selected <> nil;
+  actMoveDown.Enabled := Selected <> nil;
+  actNewConst.Enabled := Selected <> nil;
+  actDelete.Enabled   := Selected <> nil;
+  actMoveUp.Enabled   := Selected <> nil;
+end;
+
 end.