IdException, HttpThread, IdHTTP, LogDownload,
ScriptConsts, DateUtils, BottleChainRule, BottleChainEvent,
SakuraSeekerInstance, HEditor, HTSearch, heClasses, heFountain,
- SakuraScriptFountain, SppList, SurfacePreview, XDOM_2_3_J3, SsPlayTime;
+ SakuraScriptFountain, SppList, SurfacePreview, XDOM_2_3_J3, SsPlayTime,
+ RegexUtils, StrReplace, StrReplaceDialog, IdAntiFreezeBase, IdAntiFreeze;
type
TSurfacePreviewType = (spHint, spEditor);
actResetPlugins: TAction;
N7: TMenuItem;
mnResetPlugins: TMenuItem;
- ReplaceDialog: TReplaceDialog;
actReplace: TAction;
N10: TMenuItem;
mnReplace: TMenuItem;
actEditCopy: TEditCopy;
tbtnSendToLogWindow: TToolButton;
SsPlayTime: TSsPlayTime;
+ actUndo: TAction;
+ actRedo: TAction;
+ mnUndo: TMenuItem;
+ mnRedo: TMenuItem;
+ N9: TMenuItem;
+ AntiFreeze: TIdAntiFreeze;
procedure actConfirmExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure actResetPluginsExecute(Sender: TObject);
procedure IdSLPP20Connect(Sender: TObject);
procedure actReplaceExecute(Sender: TObject);
- procedure ReplaceDialogFind(Sender: TObject);
- procedure ReplaceDialogReplace(Sender: TObject);
procedure actSendToEditorExecute(Sender: TObject);
procedure actSendToLogWindowExecute(Sender: TObject);
procedure memScriptDragOver(Sender, Source: TObject; X, Y: Integer;
procedure memScriptDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure actDeleteLogItemExecute(Sender: TObject);
procedure memScriptSelectionChange(Sender: TObject; Selected: Boolean);
+ procedure actUndoExecute(Sender: TObject);
+ procedure actRedoExecute(Sender: TObject);
private
FSleeping: boolean; // \94z\91\97\83X\83\8a\81[\83v\92\86\82©\82Ç\82¤\82©
FStatusText: String;
FConnecting: boolean;
FAdded: boolean;
FBooted: boolean; //\8f\89\89ñ\8bN\93®\92Ê\90M\97p
+ FEndSession: Boolean; // Windows\8fI\97¹\82ð\8c\9f\92m\82µ\82Ätrue\82É\82È\82é
FOriginalCaption: String;
FAutoAddAfterGetChannel: boolean; //\83`\83\83\83\93\83l\83\8b\8eæ\93¾\8cã\82É\83_\83C\83A\83\8d\83O\82È\82µ\82É
//\83`\83\83\83\93\83l\83\8b\82É\8eQ\89Á\82·\82é\82©\82Ç\82¤\82©
FConstDir: String;
FSppDir: String;
//
- FMutex: THandle; //Mutex\83I\83u\83W\83F\83N\83g\81c\93ñ\8fd\8bN\93®\96h\8e~\97p
- //
FNowChannel: String; //\8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\83`\83\83\83\93\83l\83\8b
JoinChannelsBackup: TStringList; //\88ê\8e\9e\8eg\97p
//
procedure AppendXMLLog(const FileName: String; Args: THeadValue);
protected
procedure WndProc(var Message: TMessage); override;
+ procedure WMQueryEndSession(var msg: TWMQueryEndSession);
+ message WM_QUERYENDSESSION;
public
function DoTrans(var Script: String;
Options: TScriptTransOptions): String; overload;
FOriginalCaption := Self.Caption;
- {$IFDEF NOMUTEX}
- ShowMessage('\93ñ\8fd\8bN\93®\8b\96\89Â\83o\81[\83W\83\87\83\93\82Å\82·\81B'#13#10 + VersionString);
- {$ELSE}
- FMutex := CreateMutex(nil, true, 'SSTPBottleClient2');
- if GetLastError = ERROR_ALREADY_EXISTS then begin
- Beep;
- ShowMessage('SSTP Bottle Client\82Í\93ñ\8fd\8bN\93®\82Å\82«\82Ü\82¹\82ñ');
- CloseHandle(FMutex);
- Application.Terminate;
- Application.ProcessMessages; //WM_QUIT\82ð\97¬\82·
- Exit;
- end;
- {$ENDIF}
-
UpdateLayout;
mnShowToolBar.Checked := Pref.ShowToolBar;
mnShowConstBar.Checked := Pref.ShowConstBar;
SaveChainRuleList;
BottleChainRuleList.Free;
- {$IFDEF BOTTLEMUTEX}
- ReleaseMutex(FMutex);
- {$ENDIF}
end;
IdSlpp20.Port := Pref.ProxyPort;
IdSlpp20.ProxyMode := true;
end else begin
- IdSlpp20.Host := 'bottle.mikage.to';
- IdSlpp20.Port := 9871;
+ IdSlpp20.Host := Pref.BottleServer;
+ IdSlpp20.Port := Pref.BottleServerPort;
IdSlpp20.ProxyMode := false;
end;
IdSlpp20.Connect;
SynchronizedColor.Color := Pref.TalkColorS;
end;
memScript.Ruler.Visible := Pref.ShowRuler;
- memScript.Ruler.Color := Pref.TalkColorH;
+ memScript.Ruler.Color := Pref.TextColor;
memScript.Color := Pref.BgColor;
ToolBar.Visible := Pref.ShowToolBar;
tpTop: Align := alTop;
tpBottom: Align := alBottom;
end;
+ TabWidth := Pref.TabWidth;
end;
end;
PostStr := Command.Text;
PostStr := ParamsEncode(PostStr);
try
- FHttp := THTTPDownloadThread.Create(BottleServer, Pref.CgiName, PostStr);
+ FHttp := THTTPDownloadThread.Create(Pref.BottleServer, Pref.CgiName, PostStr);
if Pref.UseHttpProxy then begin
FHttp.ProxyServer := Pref.ProxyAddress;
FHttp.ProxyPort := Pref.ProxyPort;
procedure TfrmSender.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
- if not Pref.ConfirmOnExit then Exit;
+ if (not Pref.ConfirmOnExit) or FEndSession then
+ Exit;
if MessageDlg('SSTP Bottle Client\82ð\8fI\97¹\82µ\82Ü\82·', mtConfirmation,
- mbOkCancel, 0) = mrCancel then CanClose := false;
+ mbOkCancel, 0) = mrCancel then
+ CanClose := false;
end;
procedure TfrmSender.UpdateIfGhostBox;
memScript.SelectAll;
end;
+procedure TfrmSender.actUndoExecute(Sender: TObject);
+begin
+ memScript.Undo;
+end;
+
+procedure TfrmSender.actRedoExecute(Sender: TObject);
+begin
+ memScript.Redo;
+end;
+
function TfrmSender.IsSurfaceTag(const Script: String;
var ID: integer): boolean;
begin
inherited;
end;
-// \8c\9f\8dõ\81E\92u\8a·\83_\83C\83A\83\8d\83O\82ð\8f\89\8aú\89»\82µ\82Ä\95\\8e¦
+// \92u\8a·
procedure TfrmSender.actReplaceExecute(Sender: TObject);
+var
+ Form: TfrmStrReplaceDialog;
+ Lines: String;
+ Pair: TReplacePairRec;
+ Options: TReplaceFlags;
begin
- with ReplaceDialog do
- begin
- FindText := '';
- ReplaceText := '';
- Execute;
- end;
-end;
-
-// \8c\9f\8dõ\81E\92u\8a·
-procedure TfrmSender.ReplaceDialogFind(Sender: TObject);
-var Opt: TSearchOptions;
-begin
- Opt := [sfrDown];
- if frMatchCase in ReplaceDialog.Options then
- Opt := Opt + [sfrMatchCase];
- if frWholeWord in ReplaceDialog.Options then
- Opt := Opt + [sfrWholeWord];
- memScript.Search(ReplaceDialog.FindText, Opt);
-end;
-
-// \8c\9f\8dõ\81E\92u\8a·
-procedure TfrmSender.ReplaceDialogReplace(Sender: TObject);
-var Opt: TSearchOptions;
-begin
- Opt := [sfrDown];
- if frMatchCase in ReplaceDialog.Options then
- Opt := Opt + [sfrMatchCase];
- if frWholeWord in ReplaceDialog.Options then
- Opt := Opt + [sfrWholeWord];
- if frReplaceAll in ReplaceDialog.Options then
- while memScript.Search(ReplaceDialog.FindText, Opt) do
- memScript.SelText := ReplaceDialog.ReplaceText
- else
- begin
- if memScript.Search(ReplaceDialog.FindText, Opt) then
- memScript.SelText := ReplaceDialog.ReplaceText
+ Application.CreateForm(TfrmStrReplaceDialog, Form);
+ try
+ if Form.Execute then
+ begin
+ Pair := Form.PairRec;
+ with Pair do
+ begin
+ Lines := memScript.Lines.Text;
+ Options := [rfReplaceAll];
+ if IgnoreCase then
+ Options := Options + [rfIgnoreCase];
+ if UseRegExp then
+ Lines := StringReplaceRegExp(Lines, BeforeStr, AfterStr, Options)
+ else
+ Lines := StringReplace(Lines, BeforeStr, AfterStr, Options);
+ end;
+ if Lines <> memScript.Lines.Text then
+ begin
+ memScript.SelectAll;
+ memScript.SelText := Lines;
+ end;
+ end;
+ finally
+ Form.Release;
end;
end;
end;
end;
+procedure TfrmSender.WMQueryEndSession(var msg: TWMQueryEndSession);
+begin
+ // Windows\82ª\8fI\97¹\82µ\82æ\82¤\82Æ\82µ\82Ä\82¢\82é\82Ì\82ð\8a´\92m\82·\82é
+ FEndSession := true;
+ inherited;
+end;
+
end.