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, SsPlayTime, StrUtils,
15 SpecialCharEditor, ReplacePresetListFrame;
18 TfrmSetting = class(TForm)
19 PageControl: TPageControl;
21 tstGeneral: TTabSheet;
22 tstDisplay: TTabSheet;
24 rgpWhenReturn: TRadioGroup;
25 rgpWhenShiftReturn: TRadioGroup;
26 rgpWhenCtrlReturn: TRadioGroup;
27 memDefaultScript: TMemo;
28 lblDefaultScript: TLabel;
29 tstReceive: TTabSheet;
30 OpenDialog: TOpenDialog;
31 spnWaitScriptEnd: TSpinEdit;
32 lblWaitScriptEnd: TLabel;
33 cbxConfirmOnExit: TCheckBox;
34 ctvBottle: TCPCConfigTreeView;
36 frmColorSetting: TfrmColorSetting;
38 frmRuleList: TfrmBottleChainList;
39 tstDetailed: TTabSheet;
42 tstChannel: TTabSheet;
43 lblAutoJoinChannels: TLabel;
44 memAutoJoinChannels: TMemo;
45 cbxAutoStart: TCheckBox;
46 btnUseCurrentJoinChannels: TButton;
47 ImageList: TImageList;
48 tstSurfacePreview: TTabSheet;
49 lblSurfacePreview: TLabel;
50 lvwPluginList: TListView;
51 lblPluginList: TLabel;
52 ctvSurfacePreview: TCPCConfigTreeView;
53 btnVisibleGhosts: TButton;
54 cbxHideGhosts: TCheckBox;
55 cbxNoExtraSSTPHeaders: TCheckBox;
58 cbxShowRuler: TCheckBox;
59 rgpTabPosition: TRadioGroup;
60 lblGhostDropDownCount: TLabel;
61 spnGhostDropDownCount: TSpinEdit;
62 cbxIgnoreTimeCritical: TCheckBox;
63 cbxAutoClip: TCheckBox;
65 tvwCategory: TTreeView;
68 cbxConfirmOnTabClose: TCheckBox;
69 tstConnection: TTabSheet;
71 lblProxyAddress: TLabel;
74 edtProxyAddress: TEdit;
76 cbxUseHttpProxy: TCheckBox;
77 spnReconnectWait: TSpinEdit;
78 lblReconnectWait: TLabel;
79 lblPartialConfirmFormat: TLabel;
80 edtPartialConfirmFormat: TEdit;
81 cbxAutoPartialConfirm: TCheckBox;
82 tstPlayTime: TTabSheet;
83 grpPlayTimeParams: TGroupBox;
84 lblPlayTimeProfile: TLabel;
85 cbxPlayTimeProfile: TComboBox;
86 spnCostDBChar: TSpinEdit;
87 spnCostWait: TSpinEdit;
88 spnCostSurface: TSpinEdit;
89 spnCostChar: TSpinEdit;
90 spnCostQuickChar: TSpinEdit;
92 lblCostSurface: TLabel;
94 lblCostDBChar: TLabel;
95 lblCostQuickChar: TLabel;
96 btnSavePlayTimeProfile: TButton;
97 lvwCostSpecials: TListView;
98 lblCostSpecials: TLabel;
99 btnPlaySpecialAdd: TButton;
100 btnPlaySpecialDelete: TButton;
101 gbxTabWidth: TGroupBox;
102 cbxAutoTabWidth: TCheckBox;
103 spnTabWidth: TSpinEdit;
105 edtBrowserName: TEdit;
106 BrowserLocateOpenDialog: TOpenDialog;
107 btnBrowserLocate: TButton;
108 tstPresetReplace: TTabSheet;
109 ReplacePresetList: TfrmReplacePresetList;
110 cbxAskUseHttpProxy: TCheckBox;
111 cbxNoWarnOfEmptyFMO: TCheckBox;
112 cbxProxyNeedAuthentication: TCheckBox;
115 lblProxyUser: TLabel;
116 lblProxyPass: TLabel;
117 procedure FormClose(Sender: TObject; var Action: TCloseAction);
118 procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
119 procedure ctvBottleNodeChecked(Sender: TObject;
120 Node: TCPCConfigItemNode);
121 procedure ctvBottleNodeChecking(Sender: TObject;
122 Node: TCPCConfigItemNode; var Allow: Boolean);
123 procedure tstRuleShow(Sender: TObject);
124 procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
125 procedure btnVisibleGhostsClick(Sender: TObject);
126 procedure lvwPluginListDblClick(Sender: TObject);
127 procedure edtLUIDEnter(Sender: TObject);
128 procedure edtLUIDExit(Sender: TObject);
129 procedure btnCopyLUIDClick(Sender: TObject);
130 procedure FormCreate(Sender: TObject);
131 procedure tvwCategoryChange(Sender: TObject; Node: TTreeNode);
132 procedure tvwCategoryMouseMove(Sender: TObject; Shift: TShiftState; X,
134 procedure cbxPlayTimeProfileChange(Sender: TObject);
135 procedure btnSavePlayTimeProfileClick(Sender: TObject);
136 procedure spnCostWaitChange(Sender: TObject);
137 procedure btnPlaySpecialAddClick(Sender: TObject);
138 procedure btnPlaySpecialDeleteClick(Sender: TObject);
139 procedure lvwCostSpecialsDblClick(Sender: TObject);
140 procedure spnTabWidthChange(Sender: TObject);
141 procedure cbxAutoTabWidthClick(Sender: TObject);
142 procedure btnBrowserLocateClick(Sender: TObject);
143 procedure tstPresetReplaceShow(Sender: TObject);
144 procedure cbxProxyNeedAuthenticationClick(Sender: TObject);
148 FSpinUpdateFlag: boolean;
149 procedure LoadPlayTimeProfiles;
150 procedure PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
151 procedure SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
152 procedure UpdateSpecialChars;
159 frmSetting: TfrmSetting;
163 ChannelDefaultGhost = '(
\83`
\83\83\83\93\83l
\83\8b\90\84\8f§
\83S
\81[
\83X
\83g)';
165 UnCheckedBottle = 17;
174 procedure TfrmSetting.Execute;
178 PageControl.ActivePage := tstGeneral;
179 memDefaultScript.Text := Pref.DefaultScript;
180 cbxShowRuler.Checked := Pref.ShowRuler;
181 cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
182 edtPartialConfirmFormat.Text := Pref.PartialConfirmFormat;
183 cbxAutoPartialConfirm.Checked := Pref.AutoPartialConfirm;
184 cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
185 cbxConfirmOnTabClose.Checked := Pref.ConfirmOnTabClose;
186 cbxAutoClip.Checked := Pref.AutoClip;
188 with frmColorSetting do begin
189 Color['H'] := Pref.TalkColorH;
190 Color['U'] := Pref.TalkColorU;
191 Color['Synchro'] := Pref.TalkColorS;
192 Color['Tag'] := Pref.MarkUpColor;
193 Color['Meta'] := Pref.MetaWordColor;
194 Color['Error'] := Pref.MarkErrorColor;
195 Color['Text'] := Pref.TextColor;
196 Color['Background'] := Pref.BgColor;
199 cbxPlayTimeProfile.Items.Clear;
200 cbxPlayTimeProfile.Items.Add(Pref.PlayTimeParams.ProfileName);
201 cbxPlayTimeProfile.ItemIndex := 0;
202 LoadPlayTimeProfiles;
203 PlayTimeParamsToSpinControl(Pref.PlayTimeParams);
206 cbxAutoStart.Checked := Pref.AutoStart;
207 rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
208 spnTabWidth.Value := Pref.TabWidth;
209 if Pref.TabWidth <= 0 then
210 spnTabWidth.Value := 0;
211 cbxAutoTabWidth.Checked := Pref.TabWidth <= 0;
212 spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
214 with ctvBottle do begin
215 (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
216 (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
217 if Pref.NoTransUrl then
218 (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
220 (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
221 (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
222 (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
223 (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
224 (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
225 (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
226 (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
227 (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
228 (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
229 (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
232 on E: Exception do ShowMessage(E.Message);
234 //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
235 spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
237 rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
238 rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
239 rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
241 cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
242 cbxAskUseHttpProxy.Checked := Pref.AskUseHttpProxy;
243 cbxProxyNeedAuthentication.Checked := Pref.ProxyNeedAuthentication;
244 cbxProxyNeedAuthenticationClick(Self);
245 edtProxyAddress.Text := Pref.ProxyAddress;
246 edtProxyPort.Text := IntToStr(Pref.ProxyPort);
247 edtProxyUser.Text := Pref.ProxyUser;
248 edtProxyPass.Text := Pref.ProxyPass;
250 spnReconnectWait.Value := Pref.ReconnectWait;
252 edtLUID.Text := Pref.LUID;
254 memFMOName.Lines := Pref.FMOName;
255 cbxHideGhosts.Checked := Pref.HideGhosts;
256 memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
257 cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
259 with ctvSurfacePreview do
261 (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
262 (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
263 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
264 (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
266 for i := 0 to Spps.Count-1 do
268 with lvwPluginList.Items.Add do
270 Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
271 SubItems.Add(Spps.SppItem[i].PluginName);
274 edtBrowserName.Text := Pref.BrowserExeName;
275 cbxNoWarnOfEmptyFMO.Checked := Pref.NoWarnOfEmptyFMO;
281 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
285 Pref.DefaultScript := memDefaultScript.Text;
286 Pref.ShowRuler := cbxShowRuler.Checked;
287 Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
288 Pref.PartialConfirmFormat := edtPartialConfirmFormat.Text;
289 Pref.AutoPartialConfirm := cbxAutoPartialConfirm.Checked;
290 Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
291 Pref.ConfirmOnTabClose := cbxConfirmOnTabClose.Checked;
292 Pref.AutoClip := cbxAutoClip.Checked;
294 with frmColorSetting do begin
295 Pref.TalkColorH := Color['H'];
296 Pref.TalkColorU := Color['U'];
297 Pref.TalkColorS := Color['Synchro'];
298 Pref.MarkUpColor := Color['Tag'];
299 Pref.MetaWordColor := Color['Meta'];
300 Pref.MarkErrorColor := Color['Error'];
301 Pref.TextColor := Color['Text'];
302 Pref.BgColor := Color['Background'];
305 Pref.PlayTimeParams.ProfileName := cbxPlayTimeProfile.Text;
306 SpinControlToPlayTimeParams(Pref.PlayTimeParams);
308 Pref.AutoStart := cbxAutoStart.Checked;
309 Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
310 Pref.TabWidth := spnTabWidth.Value;
311 if cbxAutoTabWidth.Checked then
313 Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
315 with ctvBottle do begin
316 Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
317 Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
318 Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
319 Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
320 Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
321 Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
322 Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
323 Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
324 Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
325 Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
326 Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
327 Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
330 on E: Exception do ShowMessage(E.Message);
332 //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
333 Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
335 Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
336 Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
337 Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
339 Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
340 Pref.AskUseHttpProxy := cbxAskUseHttpProxy.Checked;
341 Pref.ProxyAddress := edtProxyAddress.Text;
342 Pref.ProxyPort := StrToInt(edtProxyPort.Text);
343 Pref.ProxyUser := edtProxyUser.Text;
344 Pref.ProxyPass := edtProxyPass.Text;
345 Pref.ProxyNeedAuthentication := cbxProxyNeedAuthentication.Checked;
347 Pref.ReconnectWait := spnReconnectWait.Value;
349 Pref.LUID := edtLUID.Text;
351 Pref.FMOName := memFMOName.Lines;
352 SakuraSeeker.FileMappingTarget := Pref.FMOName;
353 Pref.HideGhosts := cbxHideGhosts.Checked;
354 Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
356 Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
358 with ctvSurfacePreview do
360 Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
361 Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
362 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
363 for i := 0 to Node.Count-1 do
364 if (Node.Item[i] as TCPCRadioNode).Checked then
365 Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
368 Pref.BrowserExeName := edtBrowserName.Text;
369 Pref.NoWarnOfEmptyFMO := cbxNoWarnOfEmptyFMO.Checked;
372 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
374 if not(Key in ['0'..'9']) then Key := Char(0);
377 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
378 Node: TCPCConfigItemNode);
380 //ShowMessage(ctvBottle.GetFullKeyPath(Node));
383 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
384 Node: TCPCConfigItemNode; var Allow: Boolean);
386 if Node.KeyName = 'IgnoreBottle' then begin
387 MessageDlg('
\82±
\82Ì
\8b@
\94\
\82Í
\8eÀ
\91\95\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ', mtError, [mbOk], 0);
392 procedure TfrmSetting.tstRuleShow(Sender: TObject);
394 frmRuleList.UpdateDisplay;
397 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
399 memAutoJoinChannels.Lines := JoinChannels;
402 procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
404 FullGhosts: TStringList;
406 FullGhosts := TStringList.Create;
407 SakuraSeeker.BeginDetect;
409 for i := 0 to SakuraSeeker.Count-1 do
410 FullGhosts.Add(SakuraSeeker[i].Name);
411 StrListEdit(Pref.VisibleGhostsList, '
\83S
\81[
\83X
\83g
\82ð
\8ew
\92è', true, FullGhosts);
417 procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
420 if lvwPluginList.Selected = nil then
422 Index := lvwPluginList.Selected.Index;
423 if pfConfigure in Spps.SppItem[Index].PluginFunctions then
424 Spps.SppItem[Index].Configure
426 ShowMessage('
\92Ç
\89Á
\82Ì
\90Ý
\92è
\8d\80\96Ú
\82Í
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
429 procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
431 FOldLUID := edtLUID.Text;
434 procedure TfrmSetting.edtLUIDExit(Sender: TObject);
439 TmpLUID := edtLUID.Text;
442 if Length(TmpLUID) <> 82 then
445 while i <= Length(TmpLUID) do
447 if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
456 ShowMessage('LUID
\82Ì
\93à
\97e
\82ª
\95s
\90³
\82Å
\82·');
457 edtLUID.Text := FOldLUID;
461 procedure TfrmSetting.btnCopyLUIDClick(Sender: TObject);
463 Clipboard.SetTextBuf(PChar(edtLUID.Text));
466 procedure TfrmSetting.FormCreate(Sender: TObject);
472 for i := 0 to PageControl.PageCount-1 do
474 Cap := PageControl.Pages[i].Caption;
475 if Pos(':', Cap) > 0 then
476 Cap := Copy(Cap, 1, Pos(':', Cap)-1);
477 Node := tvwCategory.Items.Add(nil, Cap);
478 Node.ImageIndex := -1;
479 Node.SelectedIndex := SettingIcon;
481 tvwCategoryChange(Self, tvwCategory.Items[0]);
482 tvwCategory.Items[0].Selected := true;
485 procedure TfrmSetting.tvwCategoryChange(Sender: TObject; Node: TTreeNode);
487 PageControl.ActivePageIndex := Node.Index;
488 pnlHeading.Caption := PageControl.ActivePage.Caption;
491 procedure TfrmSetting.tvwCategoryMouseMove(Sender: TObject;
492 Shift: TShiftState; X, Y: Integer);
498 Node := tvwCategory.GetNodeAt(X, Y);
501 NewHint := PageControl.Pages[Node.Index].Caption;
502 if tvwCategory.Hint <> NewHint then
504 tvwCategory.Hint := NewHint;
506 Application.ActivateHint(CPos);
510 tvwCategory.Hint := '';
511 Application.HideHint;
515 procedure TfrmSetting.PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
517 FSpinUpdateFlag := true;
520 spnCostWait.Value := CostWait;
521 spnCostSurface.Value := CostSurface;
522 spnCostChar.Value := CostChar;
523 spnCostDBChar.Value := CostDBChar;
524 spnCostQuickChar.Value := CostQuickChar;
525 lvwCostSpecials.Items.Clear;
527 FSpinUpdateFlag := false;
530 procedure TfrmSetting.SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
534 CostWait := spnCostWait.Value;
535 CostSurface := spnCostSurface.Value;
536 CostChar := spnCostChar.Value;
537 CostDBChar := spnCostDBChar.Value;
538 CostQuickChar := spnCostQuickChar.Value;
543 procedure TfrmSetting.LoadPlayTimeProfiles;
548 Path := ExtractFilePath(Application.ExeName);
549 i := FindFirst(Path + 'playtime\*.txt', 0, F);
552 Item := ChangeFileExt(F.Name, '');
553 if cbxPlayTimeProfile.Items.IndexOf(Item) < 0 then
554 cbxPlayTimeProfile.Items.Add(ChangeFileExt(F.Name, ''));
561 procedure TfrmSetting.cbxPlayTimeProfileChange(Sender: TObject);
563 Params: TSsPlayTimeParams;
565 Path, ProName: String;
568 Strs := TStringList.Create;
569 ProName := cbxPlayTimeProfile.Text;
571 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
572 Strs.LoadFromFile(Path + ProName + '.txt');
573 Params := StringToComponent(Strs.Text) as TSsPlayTimeParams;
575 PlayTimeParamsToSpinControl(Params);
576 Pref.PlayTimeParams.Assign(Params);
584 with cbxPlayTimeProfile do
587 LoadPlayTimeProfiles;
588 ItemIndex := Items.IndexOf(ProName);
595 procedure TfrmSetting.btnSavePlayTimeProfileClick(Sender: TObject);
597 ProfileName, Path, FileName: String;
600 ProfileName := cbxPlayTimeProfile.Text;
601 if InputQuery('
\83v
\83\8d\83t
\83@
\83C
\83\8b\96¼', '
\95Û
\91¶
\82·
\82é
\83v
\83\8d\83t
\83@
\83C
\83\8b\96¼', ProfileName) then
604 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
605 FileName := Path + ProfileName + '.txt';
606 if FileExists(FileName) then
607 if MessageDlg(Format('
\83v
\83\8d\83t
\83@
\83C
\83\8b"%s"
\82ð
\8fã
\8f\91\82«
\82µ
\82Ü
\82·', [ProfileName]),
608 mtConfirmation, mbOkCancel, 0) = mrCancel then
610 Strs := TStringList.Create;
612 SpinControlToPlayTimeParams(Pref.PlayTimeParams);
613 Pref.PlayTimeParams.ProfileName := ProfileName;
614 Strs.Text := ComponentToString(Pref.PlayTimeParams);
615 Strs.SaveToFile(FileName);
619 with cbxPlayTimeProfile do
622 Items.Add(ProfileName);
624 LoadPlayTimeProfiles;
628 ShowMessage('
\95Û
\91¶
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B' + E.Message);
633 procedure TfrmSetting.spnCostWaitChange(Sender: TObject);
637 Modified = '(
\95Ï
\8dX
\8dÏ
\82Ý)';
639 if FSpinUpdateFlag then
641 ProName := cbxPlayTimeProfile.Text;
642 if Copy(ProName, Length(ProName)-Length(Modified)+1, Length(Modified)) <> Modified then
644 ProName := Format('%s%s', [ProName, Modified]);
645 with cbxPlayTimeProfile do
650 LoadPlayTimeProfiles;
655 procedure TfrmSetting.btnPlaySpecialAddClick(Sender: TObject);
658 SPChar: TSsPlayTimeSpecialChar;
660 Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
662 with frmSpecialCharEditor do
668 SPChar := Pref.PlayTimeParams.SpecialChars.Add as TSsPlayTimeSpecialChar;
669 SPChar.Char := SpecialChar;
671 Item := lvwCostSpecials.Items.Add;
672 Item.Caption := SPChar.DisplayChar;
673 Item.SubItems.Add(IntToStr(Cost));
674 spnCostWaitChange(Self);
678 frmSpecialCharEditor.Release;
682 procedure TfrmSetting.btnPlaySpecialDeleteClick(Sender: TObject);
684 with lvwCostSpecials do
685 if Selected <> nil then
687 Pref.PlayTimeParams.SpecialChars.Delete(Selected.Index);
689 spnCostWaitChange(Self);
693 procedure TfrmSetting.lvwCostSpecialsDblClick(Sender: TObject);
696 SPChar: TSsPlayTimeSpecialChar;
698 with lvwCostSpecials do
703 Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
705 with frmSpecialCharEditor do
707 SPChar := Pref.PlayTimeParams.SpecialChars.Items[Item.Index] as TSsPlayTimeSpecialChar;
708 SpecialChar := SPChar.Char;
712 SPChar.Char := SpecialChar;
714 Item.Caption := SPChar.DisplayChar;
715 Item.SubItems[0] := IntToStr(Cost);
716 spnCostWaitChange(Self);
720 frmSpecialCharEditor.Release;
726 procedure TfrmSetting.UpdateSpecialChars;
730 SPChar: TSsPlayTimeSpecialChar;
732 with lvwCostSpecials do
735 for i := 0 to Pref.PlayTimeParams.SpecialChars.Count-1 do
737 SPChar := Pref.PlayTimeParams.SpecialChars.Items[i] as TSsPlayTimeSpecialChar;
739 Item.Caption := SPChar.DisplayChar;
740 Item.SubItems.Add(IntToStr(SPChar.Wait));
745 procedure TfrmSetting.spnTabWidthChange(Sender: TObject);
747 with cbxAutoTabWidth do
750 cbxAutoTabWidth.Checked := false;
751 OnClick := cbxAutoTabWidthClick;
755 procedure TfrmSetting.cbxAutoTabWidthClick(Sender: TObject);
761 if not cbxAutoTabWidth.Checked then
765 OnChange := spnTabWidthChange;
770 procedure TfrmSetting.btnBrowserLocateClick(Sender: TObject);
772 with BrowserLocateOpenDialog do
774 FileName := edtBrowserName.Text;
776 edtBrowserName.Text := FileName;
780 procedure TfrmSetting.tstPresetReplaceShow(Sender: TObject);
782 ReplacePresetList.UpdateControls;
785 procedure TfrmSetting.cbxProxyNeedAuthenticationClick(Sender: TObject);
787 with cbxProxyNeedAuthentication do
789 edtProxyUser.Enabled := Checked;
790 edtProxyPass.Enabled := Checked;
791 lblProxyUser.Enabled := Checked;
792 lblProxyPass.Enabled := Checked;