unit SettingForm;
+{
+ \90Ý\92è\89æ\96Ê\81B\82»\82ê\96¢\96\9e\82Å\82à\82»\82ê\88È\8fã\82Å\82à\82È\82¢\81B
+ Pref\83I\83u\83W\83F\83N\83g\82ð\8eÀ\8dÛ\82É\91\80\8dì\82·\82é\81B
+}
+
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
- CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance;
+ CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
+ ImgList, StrListEditor, SppList, Plugins, Clipbrd;
type
TfrmSetting = class(TForm)
PageControl: TPageControl;
btnClose: TButton;
tstGeneral: TTabSheet;
- tstColor: TTabSheet;
+ tstDisplay: TTabSheet;
tstKeys: TTabSheet;
rgpWhenReturn: TRadioGroup;
rgpWhenShiftReturn: TRadioGroup;
rgpWhenCtrlReturn: TRadioGroup;
memDefaultScript: TMemo;
lblDefaultScript: TLabel;
- grpLocalConfirm: TGroupBox;
- cbxColorScript: TCheckBox;
- trkColorTimeLag: TTrackBar;
- trkColorSpeed: TTrackBar;
- cbxIgnoreTimeCritical: TCheckBox;
- lblColorTimeLag: TLabel;
- lblColorSpeed: TLabel;
tstReceive: TTabSheet;
- rgpTabPosition: TRadioGroup;
OpenDialog: TOpenDialog;
spnWaitScriptEnd: TSpinEdit;
lblWaitScriptEnd: TLabel;
cbxNoSendGhostList: TCheckBox;
cbxConfirmOnExit: TCheckBox;
ctvBottle: TCPCConfigTreeView;
- lblGhostDropDownCount: TLabel;
- spnGhostDropDownCount: TSpinEdit;
gbxColor: TGroupBox;
frmColorSetting: TfrmColorSetting;
tstRule: TTabSheet;
frmRuleList: TfrmBottleChainList;
tstDetailed: TTabSheet;
- lblAdditionalFMOName: TLabel;
- memAdditionalFMOName: TMemo;
- grpProxy: TGroupBox;
- lblProxyAddress: TLabel;
- lblProxyPort: TLabel;
- edtProxyAddress: TEdit;
- edtProxyPort: TEdit;
- cbxUseHttpProxy: TCheckBox;
+ lblFMOName: TLabel;
+ memFMOName: TMemo;
tstChannel: TTabSheet;
lblAutoJoinChannels: TLabel;
memAutoJoinChannels: TMemo;
cbxAutoStart: TCheckBox;
btnUseCurrentJoinChannels: TButton;
+ ImageList: TImageList;
+ tstSurfacePreview: TTabSheet;
+ lblSurfacePreview: TLabel;
+ lvwPluginList: TListView;
+ lblPluginList: TLabel;
+ ctvSurfacePreview: TCPCConfigTreeView;
+ btnVisibleGhosts: TButton;
+ cbxHideGhosts: TCheckBox;
+ cbxNoExtraSSTPHeaders: TCheckBox;
+ lblLUID: TLabel;
+ edtLUID: TEdit;
+ cbxShowRuler: TCheckBox;
+ rgpTabPosition: TRadioGroup;
+ lblGhostDropDownCount: TLabel;
+ spnGhostDropDownCount: TSpinEdit;
+ cbxIgnoreTimeCritical: TCheckBox;
+ cbxAutoClip: TCheckBox;
+ btnCopyLUID: TButton;
+ tvwCategory: TTreeView;
+ Label1: TLabel;
+ pnlHeading: TPanel;
+ cbxConfirmOnTabClose: TCheckBox;
+ tstConnection: TTabSheet;
+ grpProxy: TGroupBox;
+ lblProxyAddress: TLabel;
+ lblProxyPort: TLabel;
Label6: TLabel;
+ edtProxyAddress: TEdit;
+ edtProxyPort: TEdit;
+ cbxUseHttpProxy: TCheckBox;
+ spnReconnectWait: TSpinEdit;
+ lblReconnectWait: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
procedure ctvBottleNodeChecked(Sender: TObject;
Node: TCPCConfigItemNode; var Allow: Boolean);
procedure tstRuleShow(Sender: TObject);
procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
+ procedure btnVisibleGhostsClick(Sender: TObject);
+ procedure lvwPluginListDblClick(Sender: TObject);
+ procedure edtLUIDEnter(Sender: TObject);
+ procedure edtLUIDExit(Sender: TObject);
+ procedure btnCopyLUIDClick(Sender: TObject);
+ procedure FormCreate(Sender: TObject);
+ procedure tvwCategoryChange(Sender: TObject; Node: TTreeNode);
+ procedure tvwCategoryMouseMove(Sender: TObject; Shift: TShiftState; X,
+ Y: Integer);
private
{ Private \90é\8c¾ }
+ FOldLUID: String;
public
{ Public \90é\8c¾ }
procedure Execute;
{$R *.DFM}
+const
+ SettingIcon = 4;
+
procedure TfrmSetting.Execute;
+var i: integer;
+ Node: TCPCGroupNode;
begin
PageControl.ActivePage := tstGeneral;
memDefaultScript.Text := Pref.DefaultScript;
+ cbxShowRuler.Checked := Pref.ShowRuler;
cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
cbxNoSendGhostList.Checked := Pref.NoSendGhostList;
cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
+ cbxConfirmOnTabClose.Checked := Pref.ConfirmOnTabClose;
+ cbxAutoClip.Checked := Pref.AutoClip;
//
- cbxColorScript.Checked := Pref.ColorScript;
with frmColorSetting do begin
Color['H'] := Pref.TalkColorH;
Color['U'] := Pref.TalkColorU;
Color['Error'] := Pref.MarkErrorColor;
Color['Background'] := Pref.BgColor;
end;
- trkColorTimeLag.Position := Pref.ColorTimeLagValue;
- trkColorSpeed.Position := Pref.ColorSpeed;
//
cbxAutoStart.Checked := Pref.AutoStart;
rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
(GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
(GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
(GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
+ (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
(GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
(GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
+ (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
(GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
+ (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
+ (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
end;
except
on E: Exception do ShowMessage(E.Message);
edtProxyAddress.Text := Pref.ProxyAddress;
edtProxyPort.Text := IntToStr(Pref.ProxyPort);
//
- memAdditionalFMOName.Lines := Pref.AdditionalFMOName;
+ spnReconnectWait.Value := Pref.ReconnectWait;
+ //
+ edtLUID.Text := Pref.LUID;
+ //
+ memFMOName.Lines := Pref.FMOName;
+ cbxHideGhosts.Checked := Pref.HideGhosts;
memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
+ cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
+ //
+ with ctvSurfacePreview do
+ begin
+ (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
+ (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
+ Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
+ (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
+ end;
+ for i := 0 to Spps.Count-1 do
+ begin
+ with lvwPluginList.Items.Add do
+ begin
+ Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
+ SubItems.Add(Spps.SppItem[i].PluginName);
+ end;
+ end;
//
ShowModal;
end;
procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
+var i: integer;
+ Node: TCPCGroupNode;
begin
Pref.DefaultScript := memDefaultScript.Text;
+ Pref.ShowRuler := cbxShowRuler.Checked;
Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
+ Pref.ConfirmOnTabClose := cbxConfirmOnTabClose.Checked;
+ Pref.AutoClip := cbxAutoClip.Checked;
//
- Pref.ColorScript := cbxColorScript.Checked;
with frmColorSetting do begin
Pref.TalkColorH := Color['H'];
Pref.TalkColorU := Color['U'];
Pref.MarkErrorColor := Color['Error'];
Pref.BgColor := Color['Background'];
end;
- Pref.ColorTimeLagValue := trkColorTimeLag.Position;
- Pref.ColorSpeed := trkColorSpeed.Position;
//
Pref.AutoStart := cbxAutoStart.Checked;
Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
+ Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
+ Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
+ Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
+ Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
end;
except
on E: Exception do ShowMessage(E.Message);
Pref.ProxyAddress := edtProxyAddress.Text;
Pref.ProxyPort := StrToInt(edtProxyPort.Text);
//
- Pref.AdditionalFMOName := memAdditionalFMOName.Lines;
- while SakuraSeeker.FileMappingTarget.Count >= 2 do
- SakuraSeeker.FileMappingTarget.Delete(1); // 'Sakura' \88È\8aO\82ð\8fÁ\8b\8e
- SakuraSeeker.FileMappingTarget.AddStrings(Pref.AdditionalFMOName);
+ Pref.ReconnectWait := spnReconnectWait.Value;
+ //
+ Pref.LUID := edtLUID.Text;
+ //
+ Pref.FMOName := memFMOName.Lines;
+ SakuraSeeker.FileMappingTarget := Pref.FMOName;
+ Pref.HideGhosts := cbxHideGhosts.Checked;
+ Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
//
Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
+ //
+ with ctvSurfacePreview do
+ begin
+ Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
+ Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
+ Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
+ for i := 0 to Node.Count-1 do
+ if (Node.Item[i] as TCPCRadioNode).Checked then
+ Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
+ end;
end;
procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
memAutoJoinChannels.Lines := JoinChannels;
end;
+procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
+var i: integer;
+ FullGhosts: TStringList;
+begin
+ FullGhosts := TStringList.Create;
+ SakuraSeeker.BeginDetect;
+ try
+ for i := 0 to SakuraSeeker.Count-1 do
+ FullGhosts.Add(SakuraSeeker[i].Name);
+ StrListEdit(Pref.VisibleGhostsList, '\83S\81[\83X\83g\82ð\8ew\92è', true, FullGhosts);
+ finally
+ FullGhosts.Free;
+ end;
+end;
+
+procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
+var Index: integer;
+begin
+ if lvwPluginList.Selected = nil then
+ Exit;
+ Index := lvwPluginList.Selected.Index;
+ if pfConfigure in Spps.SppItem[Index].PluginFunctions then
+ Spps.SppItem[Index].Configure
+ else
+ ShowMessage('\92Ç\89Á\82Ì\90Ý\92è\8d\80\96Ú\82Í\82 \82è\82Ü\82¹\82ñ\81B');
+end;
+
+procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
+begin
+ FOldLUID := edtLUID.Text;
+end;
+
+procedure TfrmSetting.edtLUIDExit(Sender: TObject);
+var TmpLUID: String;
+ i: integer;
+ Err: boolean;
+begin
+ TmpLUID := edtLUID.Text;
+ i := 1;
+ Err := false;
+ if Length(TmpLUID) <> 82 then
+ Err := true
+ else
+ while i <= Length(TmpLUID) do
+ begin
+ if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
+ begin
+ Err := true;
+ Break;
+ end;
+ Inc(i);
+ end;
+ if Err then
+ begin
+ ShowMessage('LUID\82Ì\93à\97e\82ª\95s\90³\82Å\82·');
+ edtLUID.Text := FOldLUID;
+ end;
+end;
+
+procedure TfrmSetting.btnCopyLUIDClick(Sender: TObject);
+begin
+ Clipboard.SetTextBuf(PChar(edtLUID.Text));
+end;
+
+procedure TfrmSetting.FormCreate(Sender: TObject);
+var
+ i: integer;
+ Cap: String;
+ Node: TTreeNode;
+begin
+ for i := 0 to PageControl.PageCount-1 do
+ begin
+ Cap := PageControl.Pages[i].Caption;
+ if Pos(':', Cap) > 0 then
+ Cap := Copy(Cap, 1, Pos(':', Cap)-1);
+ Node := tvwCategory.Items.Add(nil, Cap);
+ Node.ImageIndex := -1;
+ Node.SelectedIndex := SettingIcon;
+ end;
+ tvwCategoryChange(Self, tvwCategory.Items[0]);
+ tvwCategory.Items[0].Selected := true;
+end;
+
+procedure TfrmSetting.tvwCategoryChange(Sender: TObject; Node: TTreeNode);
+begin
+ PageControl.ActivePageIndex := Node.Index;
+ pnlHeading.Caption := PageControl.ActivePage.Caption;
+end;
+
+procedure TfrmSetting.tvwCategoryMouseMove(Sender: TObject;
+ Shift: TShiftState; X, Y: Integer);
+var
+ Node: TTreeNode;
+ NewHint: String;
+ CPos: TPoint;
+begin
+ Node := tvwCategory.GetNodeAt(X, Y);
+ if Node <> nil then
+ begin
+ NewHint := PageControl.Pages[Node.Index].Caption;
+ if tvwCategory.Hint <> NewHint then
+ begin
+ tvwCategory.Hint := NewHint;
+ GetCursorPos(CPos);
+ Application.ActivateHint(CPos);
+ end;
+ end else
+ begin
+ tvwCategory.Hint := '';
+ Application.HideHint;
+ end;
+end;
+
end.