6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7 ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
8 CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
9 ImgList, StrListEditor, SppList, Plugins;
12 TfrmSetting = class(TForm)
13 PageControl: TPageControl;
15 tstGeneral: TTabSheet;
18 rgpWhenReturn: TRadioGroup;
19 rgpWhenShiftReturn: TRadioGroup;
20 rgpWhenCtrlReturn: TRadioGroup;
21 memDefaultScript: TMemo;
22 lblDefaultScript: TLabel;
23 grpLocalConfirm: TGroupBox;
24 cbxIgnoreTimeCritical: TCheckBox;
25 tstReceive: TTabSheet;
26 rgpTabPosition: TRadioGroup;
27 OpenDialog: TOpenDialog;
28 spnWaitScriptEnd: TSpinEdit;
29 lblWaitScriptEnd: TLabel;
30 cbxNoSendGhostList: TCheckBox;
31 cbxConfirmOnExit: TCheckBox;
32 ctvBottle: TCPCConfigTreeView;
33 lblGhostDropDownCount: TLabel;
34 spnGhostDropDownCount: TSpinEdit;
36 frmColorSetting: TfrmColorSetting;
38 frmRuleList: TfrmBottleChainList;
39 tstDetailed: TTabSheet;
43 lblProxyAddress: TLabel;
45 edtProxyAddress: TEdit;
47 cbxUseHttpProxy: TCheckBox;
48 tstChannel: TTabSheet;
49 lblAutoJoinChannels: TLabel;
50 memAutoJoinChannels: TMemo;
51 cbxAutoStart: TCheckBox;
52 btnUseCurrentJoinChannels: TButton;
54 ImageList: TImageList;
55 cbxShowRuler: TCheckBox;
56 tstSurfacePreview: TTabSheet;
57 lblSurfacePreview: TLabel;
58 lvwPluginList: TListView;
59 lblPluginList: TLabel;
60 ctvSurfacePreview: TCPCConfigTreeView;
61 btnVisibleGhosts: TButton;
62 cbxHideGhosts: TCheckBox;
63 cbxNoExtraSSTPHeaders: TCheckBox;
66 procedure FormClose(Sender: TObject; var Action: TCloseAction);
67 procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
68 procedure ctvBottleNodeChecked(Sender: TObject;
69 Node: TCPCConfigItemNode);
70 procedure ctvBottleNodeChecking(Sender: TObject;
71 Node: TCPCConfigItemNode; var Allow: Boolean);
72 procedure tstRuleShow(Sender: TObject);
73 procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
74 procedure btnVisibleGhostsClick(Sender: TObject);
75 procedure lvwPluginListDblClick(Sender: TObject);
76 procedure edtLUIDEnter(Sender: TObject);
77 procedure edtLUIDExit(Sender: TObject);
87 frmSetting: TfrmSetting;
91 ChannelDefaultGhost = '(
\83`
\83\83\83\93\83l
\83\8b\90\84\8f§
\83S
\81[
\83X
\83g)';
99 procedure TfrmSetting.Execute;
103 PageControl.ActivePage := tstGeneral;
104 memDefaultScript.Text := Pref.DefaultScript;
105 cbxShowRuler.Checked := Pref.ShowRuler;
106 cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
107 cbxNoSendGhostList.Checked := Pref.NoSendGhostList;
108 cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
110 with frmColorSetting do begin
111 Color['H'] := Pref.TalkColorH;
112 Color['U'] := Pref.TalkColorU;
113 Color['Synchro'] := Pref.TalkColorS;
114 Color['Tag'] := Pref.MarkUpColor;
115 Color['Meta'] := Pref.MetaWordColor;
116 Color['Error'] := Pref.MarkErrorColor;
117 Color['Background'] := Pref.BgColor;
120 cbxAutoStart.Checked := Pref.AutoStart;
121 rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
122 spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
124 with ctvBottle do begin
125 (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
126 (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
127 if Pref.NoTransUrl then
128 (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
130 (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
131 (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
132 (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
133 (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
134 (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
135 (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
136 (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
137 (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
138 (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
139 (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
142 on E: Exception do ShowMessage(E.Message);
144 //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
145 spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
147 rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
148 rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
149 rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
151 cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
152 edtProxyAddress.Text := Pref.ProxyAddress;
153 edtProxyPort.Text := IntToStr(Pref.ProxyPort);
154 edtLUID.Text := Pref.LUID;
156 memFMOName.Lines := Pref.FMOName;
157 cbxHideGhosts.Checked := Pref.HideGhosts;
158 memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
159 cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
161 with ctvSurfacePreview do
163 (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
164 (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
165 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
166 (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
168 for i := 0 to Spps.Count-1 do
170 with lvwPluginList.Items.Add do
172 Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
173 SubItems.Add(Spps.SppItem[i].ModuleName);
180 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
184 Pref.DefaultScript := memDefaultScript.Text;
185 Pref.ShowRuler := cbxShowRuler.Checked;
186 Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
187 Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
188 Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
190 with frmColorSetting do begin
191 Pref.TalkColorH := Color['H'];
192 Pref.TalkColorU := Color['U'];
193 Pref.TalkColorS := Color['Synchro'];
194 Pref.MarkUpColor := Color['Tag'];
195 Pref.MetaWordColor := Color['Meta'];
196 Pref.MarkErrorColor := Color['Error'];
197 Pref.BgColor := Color['Background'];
200 Pref.AutoStart := cbxAutoStart.Checked;
201 Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
202 Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
204 with ctvBottle do begin
205 Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
206 Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
207 Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
208 Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
209 Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
210 Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
211 Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
212 Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
213 Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
214 Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
215 Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
216 Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
219 on E: Exception do ShowMessage(E.Message);
221 //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
222 Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
224 Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
225 Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
226 Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
228 Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
229 Pref.ProxyAddress := edtProxyAddress.Text;
230 Pref.ProxyPort := StrToInt(edtProxyPort.Text);
231 Pref.LUID := edtLUID.Text;
233 Pref.FMOName := memFMOName.Lines;
234 SakuraSeeker.FileMappingTarget := Pref.FMOName;
235 Pref.HideGhosts := cbxHideGhosts.Checked;
236 Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
238 Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
240 with ctvSurfacePreview do
242 Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
243 Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
244 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
245 for i := 0 to Node.Count-1 do
246 if (Node.Item[i] as TCPCRadioNode).Checked then
247 Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
251 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
253 if not(Key in ['0'..'9']) then Key := Char(0);
256 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
257 Node: TCPCConfigItemNode);
259 //ShowMessage(ctvBottle.GetFullKeyPath(Node));
262 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
263 Node: TCPCConfigItemNode; var Allow: Boolean);
265 if Node.KeyName = 'IgnoreBottle' then begin
266 MessageDlg('
\82±
\82Ì
\8b@
\94\
\82Í
\8eÀ
\91\95\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ', mtError, [mbOk], 0);
271 procedure TfrmSetting.tstRuleShow(Sender: TObject);
273 frmRuleList.UpdateDisplay;
276 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
278 memAutoJoinChannels.Lines := JoinChannels;
281 procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
283 FullGhosts: TStringList;
285 FullGhosts := TStringList.Create;
286 SakuraSeeker.BeginDetect;
288 for i := 0 to SakuraSeeker.Count-1 do
289 FullGhosts.Add(SakuraSeeker[i].Name);
290 StrListEdit(Pref.VisibleGhostsList, '
\83S
\81[
\83X
\83g
\82ð
\8ew
\92è', true, FullGhosts);
296 procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
299 if lvwPluginList.Selected = nil then
301 Index := lvwPluginList.Selected.Index;
302 if pfConfigure in Spps.SppItem[Index].PluginFunctions then
303 Spps.SppItem[Index].Configure
305 ShowMessage('
\92Ç
\89Á
\82Ì
\90Ý
\92è
\8d\80\96Ú
\82Í
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
308 procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
310 FOldLUID := edtLUID.Text;
313 procedure TfrmSetting.edtLUIDExit(Sender: TObject);
318 TmpLUID := edtLUID.Text;
321 if Length(TmpLUID) <> 82 then
324 while i <= Length(TmpLUID) do
326 if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
335 ShowMessage('LUID
\82Ì
\93à
\97e
\82ª
\95s
\90³
\82Å
\82·');
336 edtLUID.Text := FOldLUID;