mnUndo: TMenuItem;
mnRedo: TMenuItem;
N9: TMenuItem;
- ScriptBackUp: TTimer;
mnPresetReplaceRoot: TMenuItem;
+ ScriptBackup: TTimer;
OpenDialog: TOpenDialog;
mnFileOpen: TMenuItem;
actFileOpen: TAction;
procedure actUndoExecute(Sender: TObject);
procedure actRedoExecute(Sender: TObject);
// procedure IdSLPP20ConnectFailed(Sender: TObject);
- procedure ScriptBackUpTimer(Sender: TObject);
+ procedure ScriptBackupTimer(Sender: TObject);
procedure actFileOpenExecute(Sender: TObject);
procedure actFileSaveAsExecute(Sender: TObject);
procedure actFileSaveExecute(Sender: TObject);
// // \83\8d\81[\83J\83\8b\8am\94F\8b\90§\97p\83t\83\89\83O\81BTRichEdit.Modified\82Í
// //\95Ê\82Ì\97p\93r\82Å\8eg\82Á\82Ä\82¢\82é\82Ì\82Å\8eg\82¦\82È\82¢
//
- FScriptBackModified: boolean; //\83X\83N\83\8a\83v\83g\8e©\93®\95Û\91¶\83t\83\89\83O
+ FScriptBackupModified: boolean; // \83X\83N\83\8a\83v\83g\83o\83b\83N\83A\83b\83v\83t\83\89\83O
+ FScriptBackupFile: string; // \8c»\8dÝ\82Ì\83o\83b\83N\83A\83b\83v\83t\83@\83C\83\8b\96¼
+ FScriptBackupDir: string; // \83o\83b\83N\83A\83b\83v\90æ\82Ì\83t\83H\83\8b\83_\96¼
+ //
FFileModified: boolean; //\83t\83@\83C\83\8b\93à\97e\82ª\95Ï\8dX\82³\82ê\82Ä\82¢\82é\82©\81B
FFileName: string; //\90V\8bK\82©\8aù\91¶\83t\83@\83C\83\8b\82Ì\94»\92f\81A\82Ü\82½\82Í\8aù\91¶\83t\83@\83C\83\8b\82Ì\8fê\8f\8a
//
procedure AppendTextLog(const FileName, Line: String; FAppend: boolean);
procedure AppendXMLLog(const FileName: String; Args: THeadValue);
//\8e©\93®\95Û\91¶\90Ý\92è
- procedure SetScriptAutoBackUp;
+ procedure SetScriptAutoBackup;
//\92P\91Ì\83t\83@\83C\83\8b\93ü\8fo\97Í\8aÖ\8cW
procedure PerformFileOpen(const AFileName: string);
procedure PerformFileSave(const AFileName: string);
function FileSaveAs(Sender: TObject): integer;
procedure EditerStatusChange;
procedure SetFileModified(Value: boolean);
- function CheckFileExt(const AFileName: string): boolean;
+ function CheckFileExt(const FileName: string): boolean;
+ procedure DeleteBackupFile(const FileName: string);
protected
procedure WndProc(var Message: TMessage); override;
SendButtonLongHint = 'Bottle\82Ì\91\97\90M';
NewFileTitle = '\96¼\8fÌ\96¢\92è'; // \90V\8bK\83^\83C\83g\83\8b
- AutoSaveFile = 'Script.bak'; // FileCheck\8ew\92è\82Ì\8ag\92£\8eq\82ð\8eg\82¤
+ StdBackupFile = 'Script.bak'; // FileCheck\8ew\92è\82Ì\8ag\92£\8eq\82ð\8eg\82¤
function Token(const Str: String; const Delimiter: char;
const Index: integer): String;
Spps.LoadFromDirectory(FSppDir);
ConstructMenu(false);
BuildReplaceMenu(mnPresetReplaceRoot);
+ FScriptBackupDir := ExtractFileDir(Application.ExeName) + '\temp\';
Str := TStringList.Create;
try
Self.Show;
SakuraSeeker.BeginDetect;
SakuraSeekerDetectResultChanged(self);
- SetScriptAutoBackUp; // \8e©\93®\95Û\91¶\90Ý\92è\82Ì\83\8d\81[\83h
+ SetScriptAutoBackup; // \8e©\93®\95Û\91¶\90Ý\92è\82Ì\83\8d\81[\83h
{
if (SakuraSeeker.Count = 0) and (Pref.NotWarnGhostIsntExists = False) then
frmMessageBox.ShowMessage('\83S\81[\83X\83g(SSTP\83T\81[\83o)\82ª1\82Â\82à\8bN\93®\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B'#13#10 +
begin
//\83G\83f\83B\83^\93à\97e\82ª\95Ï\8dX\82³\82ê\82½\82Æ\82«
EditerStatusChange; // \83X\83e\81[\83^\83X\8dX\90V\82Ö
- FScriptBackModified := true; // \8e©\93®\95Û\91¶\8dÄ\8aJ
+ FScriptBackupModified := true; // \8e©\93®\95Û\91¶\8dÄ\8aJ
SetFileModified(true); // \83t\83@\83C\83\8b\95Ï\8dX\83t\83\89\83O
end;
//\83\81\83b\83Z\81[\83W\8eó\90M
DispatchBottle(EventType, HeadValue);
end;
+
etMemberCount: begin
+ //\91\8d\8eQ\89Á\8eÒ\90\94
StatusBar.Panels[PanelMembers].Text := HeadValue['Num'] + '\90l'
end;
+
etChannelCount: begin
+ //\83`\83\83\83\93\83l\83\8b\95Ê\8eQ\89Á\8eÒ\90\94
try
- ChannelList.Channel[HeadValue['Channel']].Members := StrToInt(HeadValue['Num']);
+ if HeadValue['Channel'] <> '' then begin
+ if ChannelList.Channel[HeadValue['Channel']] <> nil then begin
+ ChannelList.Channel[HeadValue['Channel']].Members := StrToInt(HeadValue['Num']);
+ end;
+ end;
except
end;
end;
+
etConnectOk: begin
ShowHintLabel('SSTP Bottle\83T\81[\83o\82Æ\92Ê\90M\8am\97§\81B');
Added := true;
//\83`\83\83\83\93\83l\83\8b\8e©\93®\93o\98^
if not Connecting then
PostCommand(['Command: getChannels']);
- SakuraSeeker.BeginDetect;
+ try
+ SakuraSeeker.BeginDetect;
+ except
+ on E: Exception do ShowHintLabel(E.Message,WarningColor);
+ end;
end;
+
etChannelList: begin
UpdateJoinChannelList(HeadValue);
// \8dÅ\8cã\82É\8eQ\89Á\82µ\82Ä\82¢\82½\83`\83\83\83\93\83l\83\8b\82ð\8bL\98^\82·\82é
if JoinChannelsBackup = nil then JoinChannelsBackup := TStringList.Create;
JoinChannelsBackup.Assign(JoinChannels);
end;
+
etCloseChannel: begin
- with JoinChannels do
- if IndexOf(HeadValue['Channel']) >= 0 then
- Delete(IndexOf(HeadValue['Channel']));
- with tabChannel do begin
- if Tabs.IndexOf(HeadValue['Channel']) >= 0 then
- Tabs.Delete(Tabs.IndexOf(HeadValue['Channel']));
- if Tabs.Count > 0 then TabIndex := 0 else TabIndex := -1;
- tabChannelChange(self);
+ //\83`\83\83\83\93\83l\83\8b\94p\8e~
+ if HeadValue['Channel'] <> '' then begin
+ with JoinChannels do
+ if IndexOf(HeadValue['Channel']) >= 0 then
+ Delete(IndexOf(HeadValue['Channel']));
+ with tabChannel do begin
+ if Tabs.IndexOf(HeadValue['Channel']) >= 0 then
+ Tabs.Delete(Tabs.IndexOf(HeadValue['Channel']));
+ if Tabs.Count > 0 then TabIndex := 0 else TabIndex := -1;
+ tabChannelChange(self);
+ end;
+ ShowHintLabel(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½',
+ WarningColor);
+ frmLog.AddCurrentSystemLog('SYSTEM', HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
+ frmMessageBox.ShowMessage(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
end;
- ShowHintLabel(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½',
- WarningColor);
- frmLog.AddCurrentSystemLog('SYSTEM', HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
- frmMessageBox.ShowMessage(HeadValue['Channel'] + '\83`\83\83\83\93\83l\83\8b\82Í\94p\8e~\82³\82ê\82Ü\82µ\82½');
end;
+
etForceBroadcastInformation: begin
- if HeadValue['Type'] = 'Vote' then begin
- frmLog.VoteLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
- end else if HeadValue['Type'] = 'Agree' then begin
- frmLog.AgreeLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+ //\93\8a\95[\81^\93¯\88Ó\81^\82»\82Ì\91¼\83u\83\8d\81[\83h\83L\83\83\83X\83g\8fî\95ñ
+ if HeadValue['MID'] <> '' then begin
+ try //Num\82ª\90\94\92l\82Å\82È\82©\82Á\82½\82Æ\82«\91Î\8dô
+ if HeadValue['Type'] = 'Vote' then begin
+ frmLog.VoteLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+ end else if HeadValue['Type'] = 'Agree' then begin
+ frmLog.AgreeLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0));
+ end;
+ except
+ end;
end;
end;
end;
end;
procedure TfrmSender.actSettingExecute(Sender: TObject);
+var
+ FTBackupMode: boolean;
begin
+ FTBackupMode := Pref.ScriptBackupMode;
Application.CreateForm(TfrmSetting, frmSetting);
try
frmSetting.Execute;
UpdateLayout;
tabChannel.Repaint;
frmLog.UpdateWindow;
- SetScriptAutoBackUp; //\83X\83N\83\8a\83v\83g\8e©\93®\95Û\91¶\90Ý\92è\8dX\90V
+ SetScriptAutoBackup; //\83X\83N\83\8a\83v\83g\8e©\93®\95Û\91¶\90Ý\92è\8dX\90V
UpdateChannelList; //\83`\83\83\83\93\83l\83\8b\83S\81[\83X\83g\8dÄ\83\8d\81[\83h
+
+ // \83o\83b\83N\83A\83b\83v\83\82\81[\83h\82ª\95Ï\8dX\82³\82ê\82½\82Æ\82«FScriptBackupFile\82à\95Ï\8dX\82·\82é
+ if FTBackupMode <> Pref.ScriptBackupMode then
+ SetFileName(FFileName, false);
end;
procedure TfrmSender.memScriptKeyPress(Sender: TObject; var Key: Char);
Tabs.Clear;
for i := 0 to JoinChannels.Count-1 do begin
//\8eó\90M\90ê\97p\83`\83\83\83\93\83l\83\8b\82Í\95\\8e¦\82µ\82È\82¢
- if not ChannelList.Channel[JoinChannels[i]].NoPost then
- Tabs.Add(JoinChannels[i]);
+ if ChannelList.Channel[JoinChannels[i]] <> nil then
+ if not ChannelList.Channel[JoinChannels[i]].NoPost then
+ Tabs.Add(JoinChannels[i]);
end;
Tabs.EndUpdate;
// \8c³\82©\82ç\83`\83\83\83\93\83l\83\8b\82É\8eQ\89Á\82µ\82Ä\82¢\82½\8fê\8d\87\82Í
CueItem: TLogItem;
ReplaceHash: THeadValue;
begin
+ Channel := Dat['Channel'];
+
Opt := [];
if Pref.NoTranslate then Opt := Opt + [soNoTranslate];
if Pref.NoDescript then Opt := Opt + [soNoDescript];
- Channel := Dat['Channel'];
{
case EventType of
etScript: Sender := Channel;
exit;
end;
if (not Pref.ConfirmOnExit) or FEndSession then
+ begin
+ DeleteBackupFile(FScriptBackupFile); // \88ê\8e\9e\83t\83@\83C\83\8b\8dí\8f\9c\82Ö
Exit;
+ end;
if MessageDlg('Yasagure Client\82ð\8fI\97¹\82µ\82Ü\82·', mtConfirmation,
mbOkCancel, 0) = mrCancel then
- CanClose := false;
+ begin
+ CanClose := false;
+ exit;
+ end;
+ DeleteBackupFile(FScriptBackupFile); // \88ê\8e\9e\83t\83@\83C\83\8b\8dí\8f\9c\82Ö
end;
procedure TfrmSender.UpdateIfGhostBox;
frmSender.actClear.Execute; // \8c»\8dÝ\82Ì\83X\83N\83\8a\83v\83g\82ð\83N\83\8a\83b\83v\82·\82é(\90Ý\92è\82É\82æ\82Á\82Ä)
memScript.Lines.Clear;
memScript.Lines.Add(Log.Script);
- SetFileName(Log.MID, false); //\83^\83C\83g\83\8b\82¾\82¯\95Ï\8dX
- SetFileModified(false); //\95Ï\8dX\96³\82µ\82É
- FScriptBackModified := false; //\8e©\93®\95Û\91¶\88ê\8e\9e\92â\8e~
+ SetFileName(Log.MID, false); //\83^\83C\83g\83\8b\82¾\82¯\95Ï\8dX
+ SetFileModified(false); //\95Ï\8dX\96³\82µ\82É
+ FScriptBackupModified := false; //\8e©\93®\95Û\91¶\88ê\8e\9e\92â\8e~
Ghost := Log.Ghost;
//\83`\83\83\83\93\83l\83\8b\83S\81[\83X\83g\91Î\8dô
if Ghost = '' then
if Visible then memScript.SetFocus;
// FScriptModified := false;
- FScriptBackModified := false; // \8e©\93®\95Û\91¶\88ê\8e\9e\92â\8e~
- SetFileName(NewFileTitle, true); // \83t\83@\83C\83\8b\82ð\90V\8bK\88µ\82¢\82É\82·\82é
- SetFileModified(false); // \95Ï\8dX\96³\82µ
- EditerStatusChange; // \83X\83e\81[\83^\83X\8dX\90V
+
+ DeleteBackupFile(FScriptBackupFile); // \88ê\8e\9e\83t\83@\83C\83\8b\8dí\8f\9c\82Ö
+ FScriptBackupModified := false; // \8e©\93®\95Û\91¶\88ê\8e\9e\92â\8e~
+ SetFileName(NewFileTitle, true); // \83t\83@\83C\83\8b\82ð\90V\8bK\88µ\82¢\82É\82·\82é
+ SetFileModified(false); // \95Ï\8dX\96³\82µ
+ EditerStatusChange; // \83X\83e\81[\83^\83X\8dX\90V
end;
procedure TfrmSender.AppendTextLog(const FileName, Line: String; FAppend: boolean);
try
ForceDirectories(ExtractFileDir(FileName));
AssignFile(F, FileName);
- // if FileExists(FileName) AND FAppend then // \92Ç\8bL\82©\8fã\8f\91\82«\94»\92è
- if FileExists(FileName) then
+ if FileExists(FileName) AND FAppend then // \92Ç\8bL\82©\8fã\8f\91\82«\94»\92è
Append(F)
else
Rewrite(F);
end;
end;
-procedure TfrmSender.SetScriptAutoBackUp;
+procedure TfrmSender.SetScriptAutoBackup;
begin
//\83o\83b\83N\83A\83b\83v\83^\83C\83}\81[\82Ö\92l\82Ì\83Z\83b\83g
- frmSender.ScriptBackUp.Enabled := Pref.ScriptBackUp;
- frmSender.ScriptBackUp.Interval := Pref.ScriptBackUpTime * 60000;
+ frmSender.ScriptBackup.Enabled := Pref.ScriptBackup;
+ frmSender.ScriptBackup.Interval := Pref.ScriptBackupTime * 60000;
end;
-procedure TfrmSender.ScriptBackUpTimer(Sender: TObject);
+procedure TfrmSender.ScriptBackupTimer(Sender: TObject);
var
Script: string;
begin
- //\83X\83N\83\8a\83v\83g\82Ì\8e©\93®\83o\83b\83N\83A\83b\83v
- if FScriptBackModified then
+ // \83X\83N\83\8a\83v\83g\82Ì\83o\83b\83N\83A\83b\83v
+ if FScriptBackupModified then
begin
Script := FormatDateTime('yy/mm/dd hh:nn:ss', Now) + #13#10 + GetScriptText;
- AppendTextLog(ExtractFilePath(Application.ExeName) + AutoSaveFile,
- Script, Pref.ScriptBackUpMode);
+
+ AppendTextLog(FScriptBackupDir + FScriptBackupFile, Script,
+ not Pref.ScriptBackupMode);
+
ShowHintLabel('\83o\83b\83N\83A\83b\83v\8eÀ\8ds');
- FScriptBackModified := False;
+ FScriptBackupModified := False;
end;
end;
end;
procedure TfrmSender.SetFileName(const FileName: string; Value: boolean);
+var
+ FPath: string;
begin
// \83^\83C\83g\83\8b\95Ï\8dX\82Æ\83t\83@\83C\83\8b\83p\83X\83Z\83b\83g
// \82à\82µ\81A\91æ\93ñ\88ø\90\94\82ªfalse\82È\82ç\83^\83C\83g\83\8b\82¾\82¯\95Ï\8dX
- if Value then FFileName := FileName;
- Self.Caption := Format('%s - %s', [ExtractFileName(FileName), FOriginalCaption]);
+ if Value then
+ FFileName := FileName;
+
+ FPath := ExtractFileName(FileName);
+
+ if Pref.ScriptBackupMode then
+ FScriptBackupFile := FormatDateTime('yymmddhhnnss', Now) + FPath
+ else
+ FScriptBackupFile := StdBackupFile;
+ Self.Caption := Format('%s - %s', [FPath, FOriginalCaption]);
end;
function TfrmSender.CheckFileModified(Sender: TObject): integer;
end;
end;
-function TfrmSender.CheckFileExt(const AFileName: string): boolean;
+function TfrmSender.CheckFileExt(const FileName: string): boolean;
var
Res: boolean;
begin
// \8ag\92£\8eq.bak\82Ì\83t\83@\83C\83\8b\82Í\93Ç\8f\91\82«\82µ\82È\82¢\81B
Res := true;
- if LowerCase(ExtractFileExt(AFileName)) = '.bak' then
+ if LowerCase(ExtractFileExt(FileName)) = '.bak' then // StdBackupFile\82Æ\93¯\8ag\92£\8eq
begin
beep;
ShowMessage('\8ag\92£\8eqbak\82Í\88µ\82¦\82Ü\82¹\82ñ\81B'#13#10 + '\91¼\82Ì\83G\83f\83B\83^\82ð\8eg\97p\82µ\82Ä\82\82¾\82³\82¢\81B');
Result := Res;
end;
+procedure TfrmSender.DeleteBackupFile(const FileName: string);
+var
+ FPath: string;
+begin
+ // \8fã\8f\91\95Û\91¶\82Ì\88ê\8e\9e\83t\83@\83C\83\8b\82ð\8dí\8f\9c
+ if not Pref.ScriptBackupMode or (FileName = '') or
+ (StdBackupFile = FileName) then exit;
+
+ FPath := FScriptBackupDir + FileName;
+ try
+ if FileExists(FPath) then
+ DeleteFile(FPath);
+ except
+ on E: Exception do
+ ShowMessage('\88ê\8e\9e\83t\83@\83C\83\8b\8dí\8f\9c\83G\83\89\81[:'#13#10#13#10 + E.Message);
+ end;
+end;
+
{$IFDEF PASS}
procedure TfrmSender.CopyDataMessage(var WMCopyData: TWMCopyData);
var