OSDN Git Service

Confirm option added
[winbottle/winbottle.git] / bottleclient / SettingForm.pas
1 unit SettingForm;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7   ComCtrls, StdCtrls, ExtCtrls, BottleDef, EllipsEd, Spin,
8   CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance;
9
10 type
11   TfrmSetting = class(TForm)
12     PageControl: TPageControl;
13     btnClose: TButton;
14     tstGeneral: TTabSheet;
15     tstColor: TTabSheet;
16     tstKeys: TTabSheet;
17     rgpWhenReturn: TRadioGroup;
18     rgpWhenShiftReturn: TRadioGroup;
19     rgpWhenCtrlReturn: TRadioGroup;
20     memDefaultScript: TMemo;
21     lblDefaultScript: TLabel;
22     grpLocalConfirm: TGroupBox;
23     cbxColorScript: TCheckBox;
24     trkColorTimeLag: TTrackBar;
25     trkColorSpeed: TTrackBar;
26     cbxIgnoreTimeCritical: TCheckBox;
27     lblColorTimeLag: TLabel;
28     lblColorSpeed: TLabel;
29     tstReceive: TTabSheet;
30     rgpTabPosition: TRadioGroup;
31     OpenDialog: TOpenDialog;
32     spnWaitScriptEnd: TSpinEdit;
33     lblWaitScriptEnd: TLabel;
34     cbxNoSendGhostList: TCheckBox;
35     cbxConfirmOnExit: TCheckBox;
36     ctvBottle: TCPCConfigTreeView;
37     lblGhostDropDownCount: TLabel;
38     spnGhostDropDownCount: TSpinEdit;
39     gbxColor: TGroupBox;
40     frmColorSetting: TfrmColorSetting;
41     tstRule: TTabSheet;
42     frmRuleList: TfrmBottleChainList;
43     tstDetailed: TTabSheet;
44     lblAdditionalFMOName: TLabel;
45     memAdditionalFMOName: TMemo;
46     Label6: TLabel;
47     grpProxy: TGroupBox;
48     lblProxyAddress: TLabel;
49     lblProxyPort: TLabel;
50     edtProxyAddress: TEdit;
51     edtProxyPort: TEdit;
52     cbxUseHttpProxy: TCheckBox;
53     tstChannel: TTabSheet;
54     lblAutoJoinChannels: TLabel;
55     memAutoJoinChannels: TMemo;
56     cbxAutoStart: TCheckBox;
57     btnUseCurrentJoinChannels: TButton;
58     procedure FormClose(Sender: TObject; var Action: TCloseAction);
59     procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
60     procedure ctvBottleNodeChecked(Sender: TObject;
61       Node: TCPCConfigItemNode);
62     procedure ctvBottleNodeChecking(Sender: TObject;
63       Node: TCPCConfigItemNode; var Allow: Boolean);
64     procedure tstRuleShow(Sender: TObject);
65     procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
66   private
67     { Private \90é\8c¾ }
68   public
69     { Public \90é\8c¾ }
70     procedure Execute;
71   end;
72
73 var
74   frmSetting: TfrmSetting;
75
76 const
77   DefaultNode = -1;
78   ChannelDefaultGhost = '(\83`\83\83\83\93\83l\83\8b\90\84\8f§\83S\81[\83X\83g)';
79   CheckedBottle = 22;
80   UnCheckedBottle = 17;
81
82 implementation
83
84 {$R *.DFM}
85
86 procedure TfrmSetting.Execute;
87 begin
88   PageControl.ActivePage := tstGeneral;
89   memDefaultScript.Text := Pref.DefaultScript;
90   cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
91   cbxNoSendGhostList.Checked := Pref.NoSendGhostList;
92   cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
93   //
94   cbxColorScript.Checked := Pref.ColorScript;
95   with frmColorSetting do begin
96     Color['H'] := Pref.TalkColorH;
97     Color['U'] := Pref.TalkColorU;
98     Color['Synchro'] := Pref.TalkColorS;
99     Color['Tag'] := Pref.MarkUpColor;
100     Color['Meta'] := Pref.MetaWordColor;
101     Color['Error'] := Pref.MarkErrorColor;
102     Color['Background'] := Pref.BgColor;
103   end;
104   trkColorTimeLag.Position := Pref.ColorTimeLagValue;
105   trkColorSpeed.Position := Pref.ColorSpeed;
106   //
107   cbxAutoStart.Checked := Pref.AutoStart;
108   rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
109   spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
110   try
111     with ctvBottle do begin
112       (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
113       (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
114       if Pref.NoTransUrl then
115         (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
116       else
117         (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
118       (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
119       (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
120       (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
121       (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
122       (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
123     end;
124   except
125     on E: Exception do ShowMessage(E.Message);
126   end;
127   //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
128   spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
129   //
130   rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
131   rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
132   rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
133   //
134   cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
135   edtProxyAddress.Text := Pref.ProxyAddress;
136   edtProxyPort.Text := IntToStr(Pref.ProxyPort);
137   //
138   memAdditionalFMOName.Lines := Pref.AdditionalFMOName;
139   memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
140   //
141   ShowModal;
142 end;
143
144 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
145 begin
146   Pref.DefaultScript := memDefaultScript.Text;
147   Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
148   Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
149   Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
150   //
151   Pref.ColorScript := cbxColorScript.Checked;
152   with frmColorSetting do begin
153     Pref.TalkColorH := Color['H'];
154     Pref.TalkColorU := Color['U'];
155     Pref.TalkColorS := Color['Synchro'];
156     Pref.MarkUpColor := Color['Tag'];
157     Pref.MetaWordColor := Color['Meta'];
158     Pref.MarkErrorColor := Color['Error'];
159     Pref.BgColor := Color['Background'];
160   end;
161   Pref.ColorTimeLagValue := trkColorTimeLag.Position;
162   Pref.ColorSpeed := trkColorSpeed.Position;
163   //
164   Pref.AutoStart := cbxAutoStart.Checked;
165   Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
166   Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
167   try
168     with ctvBottle do begin
169       Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
170       Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
171       Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
172       Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
173       Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
174       Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
175       Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
176       Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
177     end;
178   except
179     on E: Exception do ShowMessage(E.Message);
180   end;
181   //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
182   Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
183   //
184   Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
185   Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
186   Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
187   //
188   Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
189   Pref.ProxyAddress := edtProxyAddress.Text;
190   Pref.ProxyPort := StrToInt(edtProxyPort.Text);
191   //
192   Pref.AdditionalFMOName := memAdditionalFMOName.Lines;
193   //
194   Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
195 end;
196
197 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
198 begin
199   if not(Key in ['0'..'9']) then Key := Char(0);
200 end;
201
202 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
203   Node: TCPCConfigItemNode);
204 begin
205   //ShowMessage(ctvBottle.GetFullKeyPath(Node));
206 end;
207
208 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
209   Node: TCPCConfigItemNode; var Allow: Boolean);
210 begin
211   if Node.KeyName = 'IgnoreBottle' then begin
212     MessageDlg('\82±\82Ì\8b@\94\\82Í\8eÀ\91\95\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ', mtError, [mbOk], 0);
213     Allow := false;
214   end;
215 end;
216
217 procedure TfrmSetting.tstRuleShow(Sender: TObject);
218 begin
219   frmRuleList.UpdateDisplay;
220 end;
221
222 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
223 begin
224   memAutoJoinChannels.Lines := JoinChannels;
225 end;
226
227 end.