OSDN Git Service

HUTagTo01Tag implemented
[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, 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     lblFMOName: TLabel;
45     memFMOName: TMemo;
46     grpProxy: TGroupBox;
47     lblProxyAddress: TLabel;
48     lblProxyPort: TLabel;
49     edtProxyAddress: TEdit;
50     edtProxyPort: TEdit;
51     cbxUseHttpProxy: TCheckBox;
52     tstChannel: TTabSheet;
53     lblAutoJoinChannels: TLabel;
54     memAutoJoinChannels: TMemo;
55     cbxAutoStart: TCheckBox;
56     btnUseCurrentJoinChannels: TButton;
57     Label6: TLabel;
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('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
121       (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
122       (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
123       (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
124     end;
125   except
126     on E: Exception do ShowMessage(E.Message);
127   end;
128   //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
129   spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
130   //
131   rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
132   rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
133   rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
134   //
135   cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
136   edtProxyAddress.Text := Pref.ProxyAddress;
137   edtProxyPort.Text := IntToStr(Pref.ProxyPort);
138   //
139   memFMOName.Lines := Pref.FMOName;
140   memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
141   //
142   ShowModal;
143 end;
144
145 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
146 begin
147   Pref.DefaultScript := memDefaultScript.Text;
148   Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
149   Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
150   Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
151   //
152   Pref.ColorScript := cbxColorScript.Checked;
153   with frmColorSetting do begin
154     Pref.TalkColorH := Color['H'];
155     Pref.TalkColorU := Color['U'];
156     Pref.TalkColorS := Color['Synchro'];
157     Pref.MarkUpColor := Color['Tag'];
158     Pref.MetaWordColor := Color['Meta'];
159     Pref.MarkErrorColor := Color['Error'];
160     Pref.BgColor := Color['Background'];
161   end;
162   Pref.ColorTimeLagValue := trkColorTimeLag.Position;
163   Pref.ColorSpeed := trkColorSpeed.Position;
164   //
165   Pref.AutoStart := cbxAutoStart.Checked;
166   Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
167   Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
168   try
169     with ctvBottle do begin
170       Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
171       Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
172       Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
173       Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
174       Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
175       Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
176       Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
177       Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
178       Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
179     end;
180   except
181     on E: Exception do ShowMessage(E.Message);
182   end;
183   //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
184   Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
185   //
186   Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
187   Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
188   Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
189   //
190   Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
191   Pref.ProxyAddress := edtProxyAddress.Text;
192   Pref.ProxyPort := StrToInt(edtProxyPort.Text);
193   //
194   Pref.FMOName := memFMOName.Lines;
195   SakuraSeeker.FileMappingTarget := Pref.FMOName;
196   //
197   Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
198 end;
199
200 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
201 begin
202   if not(Key in ['0'..'9']) then Key := Char(0);
203 end;
204
205 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
206   Node: TCPCConfigItemNode);
207 begin
208   //ShowMessage(ctvBottle.GetFullKeyPath(Node));
209 end;
210
211 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
212   Node: TCPCConfigItemNode; var Allow: Boolean);
213 begin
214   if Node.KeyName = 'IgnoreBottle' then begin
215     MessageDlg('\82±\82Ì\8b@\94\\82Í\8eÀ\91\95\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ', mtError, [mbOk], 0);
216     Allow := false;
217   end;
218 end;
219
220 procedure TfrmSetting.tstRuleShow(Sender: TObject);
221 begin
222   frmRuleList.UpdateDisplay;
223 end;
224
225 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
226 begin
227   memAutoJoinChannels.Lines := JoinChannels;
228 end;
229
230 end.