4 \90Ý
\92è
\89æ
\96Ê
\81B
\82»
\82ê
\96¢
\96\9e\82Å
\82à
\82»
\82ê
\88È
\8fã
\82Å
\82à
\82È
\82¢
\81B
5 Pref
\83I
\83u
\83W
\83F
\83N
\83g
\82ð
\8eÀ
\8dÛ
\82É
\91\80\8dì
\82·
\82é
\81B
11 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
12 ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
13 CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
14 ImgList, StrListEditor, SppList, Plugins, Clipbrd;
17 TfrmSetting = class(TForm)
18 PageControl: TPageControl;
20 tstGeneral: TTabSheet;
21 tstDisplay: TTabSheet;
23 rgpWhenReturn: TRadioGroup;
24 rgpWhenShiftReturn: TRadioGroup;
25 rgpWhenCtrlReturn: TRadioGroup;
26 memDefaultScript: TMemo;
27 lblDefaultScript: TLabel;
28 tstReceive: TTabSheet;
29 OpenDialog: TOpenDialog;
30 spnWaitScriptEnd: TSpinEdit;
31 lblWaitScriptEnd: TLabel;
32 cbxNoSendGhostList: TCheckBox;
33 cbxConfirmOnExit: TCheckBox;
34 ctvBottle: TCPCConfigTreeView;
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 tstSurfacePreview: TTabSheet;
56 lblSurfacePreview: TLabel;
57 lvwPluginList: TListView;
58 lblPluginList: TLabel;
59 ctvSurfacePreview: TCPCConfigTreeView;
60 btnVisibleGhosts: TButton;
61 cbxHideGhosts: TCheckBox;
62 cbxNoExtraSSTPHeaders: TCheckBox;
65 cbxShowRuler: TCheckBox;
66 rgpTabPosition: TRadioGroup;
67 lblGhostDropDownCount: TLabel;
68 spnGhostDropDownCount: TSpinEdit;
69 cbxIgnoreTimeCritical: TCheckBox;
70 cbxAutoClip: TCheckBox;
72 tvwCategory: TTreeView;
75 cbxConfirmOnTabClose: TCheckBox;
76 procedure FormClose(Sender: TObject; var Action: TCloseAction);
77 procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
78 procedure ctvBottleNodeChecked(Sender: TObject;
79 Node: TCPCConfigItemNode);
80 procedure ctvBottleNodeChecking(Sender: TObject;
81 Node: TCPCConfigItemNode; var Allow: Boolean);
82 procedure tstRuleShow(Sender: TObject);
83 procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
84 procedure btnVisibleGhostsClick(Sender: TObject);
85 procedure lvwPluginListDblClick(Sender: TObject);
86 procedure edtLUIDEnter(Sender: TObject);
87 procedure edtLUIDExit(Sender: TObject);
88 procedure btnCopyLUIDClick(Sender: TObject);
89 procedure FormCreate(Sender: TObject);
90 procedure tvwCategoryChange(Sender: TObject; Node: TTreeNode);
100 frmSetting: TfrmSetting;
104 ChannelDefaultGhost = '(
\83`
\83\83\83\93\83l
\83\8b\90\84\8f§
\83S
\81[
\83X
\83g)';
106 UnCheckedBottle = 17;
112 procedure TfrmSetting.Execute;
116 PageControl.ActivePage := tstGeneral;
117 memDefaultScript.Text := Pref.DefaultScript;
118 cbxShowRuler.Checked := Pref.ShowRuler;
119 cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
120 cbxNoSendGhostList.Checked := Pref.NoSendGhostList;
121 cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
122 cbxConfirmOnTabClose.Checked := Pref.ConfirmOnTabClose;
123 cbxAutoClip.Checked := Pref.AutoClip;
125 with frmColorSetting do begin
126 Color['H'] := Pref.TalkColorH;
127 Color['U'] := Pref.TalkColorU;
128 Color['Synchro'] := Pref.TalkColorS;
129 Color['Tag'] := Pref.MarkUpColor;
130 Color['Meta'] := Pref.MetaWordColor;
131 Color['Error'] := Pref.MarkErrorColor;
132 Color['Background'] := Pref.BgColor;
135 cbxAutoStart.Checked := Pref.AutoStart;
136 rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
137 spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
139 with ctvBottle do begin
140 (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
141 (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
142 if Pref.NoTransUrl then
143 (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
145 (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
146 (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
147 (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
148 (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
149 (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
150 (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
151 (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
152 (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
153 (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
154 (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
157 on E: Exception do ShowMessage(E.Message);
159 //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
160 spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
162 rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
163 rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
164 rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
166 cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
167 edtProxyAddress.Text := Pref.ProxyAddress;
168 edtProxyPort.Text := IntToStr(Pref.ProxyPort);
169 edtLUID.Text := Pref.LUID;
171 memFMOName.Lines := Pref.FMOName;
172 cbxHideGhosts.Checked := Pref.HideGhosts;
173 memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
174 cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
176 with ctvSurfacePreview do
178 (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
179 (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
180 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
181 (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
183 for i := 0 to Spps.Count-1 do
185 with lvwPluginList.Items.Add do
187 Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
188 SubItems.Add(Spps.SppItem[i].PluginName);
195 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
199 Pref.DefaultScript := memDefaultScript.Text;
200 Pref.ShowRuler := cbxShowRuler.Checked;
201 Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
202 Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
203 Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
204 Pref.ConfirmOnTabClose := cbxConfirmOnTabClose.Checked;
205 Pref.AutoClip := cbxAutoClip.Checked;
207 with frmColorSetting do begin
208 Pref.TalkColorH := Color['H'];
209 Pref.TalkColorU := Color['U'];
210 Pref.TalkColorS := Color['Synchro'];
211 Pref.MarkUpColor := Color['Tag'];
212 Pref.MetaWordColor := Color['Meta'];
213 Pref.MarkErrorColor := Color['Error'];
214 Pref.BgColor := Color['Background'];
217 Pref.AutoStart := cbxAutoStart.Checked;
218 Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
219 Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
221 with ctvBottle do begin
222 Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
223 Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
224 Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
225 Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
226 Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
227 Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
228 Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
229 Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
230 Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
231 Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
232 Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
233 Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
236 on E: Exception do ShowMessage(E.Message);
238 //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
239 Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
241 Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
242 Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
243 Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
245 Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
246 Pref.ProxyAddress := edtProxyAddress.Text;
247 Pref.ProxyPort := StrToInt(edtProxyPort.Text);
248 Pref.LUID := edtLUID.Text;
250 Pref.FMOName := memFMOName.Lines;
251 SakuraSeeker.FileMappingTarget := Pref.FMOName;
252 Pref.HideGhosts := cbxHideGhosts.Checked;
253 Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
255 Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
257 with ctvSurfacePreview do
259 Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
260 Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
261 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
262 for i := 0 to Node.Count-1 do
263 if (Node.Item[i] as TCPCRadioNode).Checked then
264 Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
268 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
270 if not(Key in ['0'..'9']) then Key := Char(0);
273 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
274 Node: TCPCConfigItemNode);
276 //ShowMessage(ctvBottle.GetFullKeyPath(Node));
279 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
280 Node: TCPCConfigItemNode; var Allow: Boolean);
282 if Node.KeyName = 'IgnoreBottle' then begin
283 MessageDlg('
\82±
\82Ì
\8b@
\94\
\82Í
\8eÀ
\91\95\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ', mtError, [mbOk], 0);
288 procedure TfrmSetting.tstRuleShow(Sender: TObject);
290 frmRuleList.UpdateDisplay;
293 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
295 memAutoJoinChannels.Lines := JoinChannels;
298 procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
300 FullGhosts: TStringList;
302 FullGhosts := TStringList.Create;
303 SakuraSeeker.BeginDetect;
305 for i := 0 to SakuraSeeker.Count-1 do
306 FullGhosts.Add(SakuraSeeker[i].Name);
307 StrListEdit(Pref.VisibleGhostsList, '
\83S
\81[
\83X
\83g
\82ð
\8ew
\92è', true, FullGhosts);
313 procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
316 if lvwPluginList.Selected = nil then
318 Index := lvwPluginList.Selected.Index;
319 if pfConfigure in Spps.SppItem[Index].PluginFunctions then
320 Spps.SppItem[Index].Configure
322 ShowMessage('
\92Ç
\89Á
\82Ì
\90Ý
\92è
\8d\80\96Ú
\82Í
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
325 procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
327 FOldLUID := edtLUID.Text;
330 procedure TfrmSetting.edtLUIDExit(Sender: TObject);
335 TmpLUID := edtLUID.Text;
338 if Length(TmpLUID) <> 82 then
341 while i <= Length(TmpLUID) do
343 if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
352 ShowMessage('LUID
\82Ì
\93à
\97e
\82ª
\95s
\90³
\82Å
\82·');
353 edtLUID.Text := FOldLUID;
357 procedure TfrmSetting.btnCopyLUIDClick(Sender: TObject);
359 Clipboard.SetTextBuf(PChar(edtLUID.Text));
362 procedure TfrmSetting.FormCreate(Sender: TObject);
368 for i := 0 to PageControl.PageCount-1 do
370 Cap := PageControl.Pages[i].Caption;
371 Node := tvwCategory.Items.Add(nil, Cap);
372 Node.ImageIndex := 0;
374 tvwCategoryChange(Self, tvwCategory.Items[0]);
377 procedure TfrmSetting.tvwCategoryChange(Sender: TObject; Node: TTreeNode);
379 PageControl.ActivePageIndex := Node.Index;
380 pnlHeading.Caption := Node.Text;