OSDN Git Service

ReplacePresetListFrameを追加して、設定画面に貼り付け。
[winbottle/winbottle.git] / bottleclient / ReplacePresetListFrame.pas
1 unit ReplacePresetListFrame;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7   Dialogs, BottleDef, StrReplace, StdCtrls, ReplacePresetEditor;
8
9 type
10   TfrmReplacePresetList = class(TFrame)
11     lstPresets: TListBox;
12     btnMoveUp: TButton;
13     btnMoveDown: TButton;
14     btnEdit: TButton;
15     btnClone: TButton;
16     btnDelete: TButton;
17     btnAdd: TButton;
18     procedure btnMoveUpClick(Sender: TObject);
19     procedure btnMoveDownClick(Sender: TObject);
20     procedure btnEditClick(Sender: TObject);
21     procedure btnCloneClick(Sender: TObject);
22     procedure btnDeleteClick(Sender: TObject);
23     procedure btnAddClick(Sender: TObject);
24   protected
25     procedure MoveItem(const Delta: Integer);
26   public
27     procedure UpdateControls;
28   end;
29
30 implementation
31
32 {$R *.dfm}
33
34 { TfrmReplacePresetList }
35
36 procedure TfrmReplacePresetList.UpdateControls;
37 var
38   i: Integer;
39   Presets: TReplacePresetCollection;
40 begin
41   Presets := Pref.ReplacePresets.Presets;
42   with lstPresets.Items do
43   begin
44     BeginUpdate;
45     try
46       Clear;
47       for i := 0 to Presets.Count-1 do
48       begin
49         Add(Presets[i].Title);
50       end;
51     finally
52       EndUpdate;
53     end;
54   end;
55 end;
56
57 procedure TfrmReplacePresetList.btnMoveUpClick(Sender: TObject);
58 begin
59   MoveItem(-1);
60 end;
61
62 procedure TfrmReplacePresetList.btnMoveDownClick(Sender: TObject);
63 begin
64   MoveItem(1);
65 end;
66
67 procedure TfrmReplacePresetList.MoveItem(const Delta: Integer);
68 var
69   TargetIndex: Integer;
70   Presets: TReplacePresetCollection;
71   Item: TReplacePreset;
72 begin
73   TargetIndex := lstPresets.ItemIndex;
74   if TargetIndex < 0 then
75     Exit;
76   if (TargetIndex + Delta < 0) or (TargetIndex + Delta >= lstPresets.Count) then
77     Exit;
78   Presets := Pref.ReplacePresets.Presets;
79   // \88ê\92U\83A\83C\83e\83\80\82ð\94²\82«\8fo\82·
80   Item := Presets[TargetIndex];
81   Item.Collection := nil; // \82±\82ê\82Å\83R\83\8c\83N\83V\83\87\83\93\82©\82ç\8aO\82ê\82é
82   // \90V\82µ\82¢\8fê\8f\8a\82É\83A\83C\83e\83\80\82ð\8dì\82Á\82Ä\91ã\93ü\82·\82é
83   Presets.Insert(TargetIndex + Delta).Assign(Item);
84   lstPresets.Items.Move(TargetIndex, TargetIndex + Delta);
85 end;
86
87 procedure TfrmReplacePresetList.btnEditClick(Sender: TObject);
88 var
89   Target: TReplacePreset;
90   Index: Integer;
91   Form: TfrmReplacePresetEditor;
92 begin
93   Index := lstPresets.ItemIndex;
94   if Index < 0 then
95     Exit;
96   Target := Pref.ReplacePresets.Presets[Index];
97   Application.CreateForm(TfrmReplacePresetEditor, Form);
98   try
99     with Form do
100     begin
101       AskForTitle := true;
102       Title    := Target.Title;
103       ShortCut := Target.ShortCut;
104       Pairs    := Target.Pairs;
105       if Execute then
106       begin
107         Target.Title    := Title;
108         Target.ShortCut := ShortCut;
109         Target.Pairs    := Pairs;
110         lstPresets.Invalidate;
111       end;
112     end;
113   finally
114     Form.Release;
115   end;
116 end;
117
118 procedure TfrmReplacePresetList.btnCloneClick(Sender: TObject);
119 var
120   Index: Integer;
121   Target, New: TReplacePreset;
122 begin
123   Index := lstPresets.ItemIndex;
124   if Index < 0 then
125     Exit;
126   Target := Pref.ReplacePresets.Presets[Index];
127   New := Pref.ReplacePresets.Presets.Add;
128   New.Assign(Target);
129   New.Title := Target.Title + '\82Ì\83R\83s\81[';
130   lstPresets.Items.Add(New.Title);
131   lstPresets.ItemIndex := lstPresets.Items.Count-1;
132 end;
133
134 procedure TfrmReplacePresetList.btnDeleteClick(Sender: TObject);
135 var
136   Index: Integer;
137   Target: TReplacePreset;
138 begin
139   Index := lstPresets.ItemIndex;
140   Target := Pref.ReplacePresets.Presets[Index];
141   Target.Free; // \8f\9f\8eè\82É\83R\83\8c\83N\83V\83\87\83\93\82Ì\83\8a\83X\83g\82©\82ç\8aO\82ê\82é
142   lstPresets.Items.Delete(Index);
143 end;
144
145 procedure TfrmReplacePresetList.btnAddClick(Sender: TObject);
146 var
147   New: TReplacePreset;
148   Form: TfrmReplacePresetEditor;
149 begin
150   New := TReplacePreset.Create(nil);
151   try
152     Application.CreateForm(TfrmReplacePresetEditor, Form);
153     try
154       with Form do
155       begin
156         AskForTitle := true;
157         Title    := New.Title;
158         ShortCut := New.ShortCut;
159         Pairs    := New.Pairs;
160         if Execute then
161         begin
162           Pref.ReplacePresets.Presets.Add.Assign(New);
163           lstPresets.Items.Add(New.Title);
164         end;
165       end;
166     finally
167       Form.Release;
168     end;
169   finally
170     New.Free;
171   end;
172 end;
173
174 end.