FNotYenETrans: boolean;
FNotScriptTime: boolean;
FNotScriptTimeLen: integer;
+ FScriptBackUpMode: boolean;
+ FLogDir: String;
+ FTextDir: String;
procedure SetDblClkInsert(const Value: boolean);
procedure SetDefaultScript(const Value: String);
procedure SetNotYenETrans(const Value: boolean);
procedure SetNotScriptTime(const Value: boolean);
procedure SetNotScriptTimeLen(const Value: integer);
+ procedure SetScriptBackUpMode(const Value: boolean);
+ procedure SetLogDir(const Value: String);
+ procedure SetTextDir(const Value: String);
protected
function InScreen(ARect: TRect): boolean;
public
property NotYenETrans: boolean read FNotYenETrans write SetNotYenETrans;
property NotScriptTime: boolean read FNotScriptTime write SetNotScriptTime;
property NotScriptTimeLen: Integer read FNotScriptTimeLen write SetNotScriptTimeLen;
+ property ScriptBackUpMode: boolean read FScriptBackUpMode write SetScriptBackUpMode;
+ property LogDir: String read FLogDir write SetLogDir;
+ property TextDir: String read FTextDir write SetTextDir;
//\83R\83\93\83X\83g\83\89\83N\83^\81E\83f\83X\83g\83\89\83N\83^\81E\95Û\91¶
constructor Create;
NotYenETrans := FIni2.ReadBool('System', 'NotYenETrans', false);
NotScriptTime := FIni2.ReadBool('System', 'NotScriptTime', true);
NotScriptTimeLen := FIni2.ReadInteger('System', 'NotScriptTimeLen', 20000);
+ ScriptBackUpMode := FIni2.ReadBool('System', 'ScriptBackUpMode', false);
+ FLogDir := FIni2.ReadString('System', 'LogDir', '');
+ FTextDir := FIni2.ReadString('System', 'TextDir', '');
except
on E: Exception do
FIni2.WriteBool('System', 'NotYenETrans', NotYenETrans);
FIni2.WriteBool('System', 'NotScriptTime', NotScriptTime);
FIni2.WriteInteger('System', 'NotScriptTimeLen', NotScriptTimeLen);
+ FIni2.WriteBool('System', 'ScriptBackUpMode', ScriptBackUpMode);
+ FIni2.WriteString('System', 'LogDir', FLogDir);
+ FIni2.WriteString('System', 'TextDir', FTextDir);
end;
function TBottlePrefs.GetDefaultScript: String;
FNotScriptTimeLen := Value;
end;
+procedure TBottlePrefs.SetScriptBackUpMode(const Value: boolean);
+begin
+ FScriptBackUpMode := Value;
+end;
+
+procedure TBottlePrefs.SetLogDir(const Value: String);
+begin
+ FLogDir := Value;
+end;
+
+procedure TBottlePrefs.SetTextDir(const Value: String);
+begin
+ FTextDir := Value;
+end;
+
initialization
Classes.RegisterClass(TSsPlayTimeParams);
begin
if SelectedBottleLog = nil then Exit;
SaveDialog.FileName := GetDefaultFileName(SelectedBottleLog.Title, '.log');
- SaveDialog.InitialDir := ExtractFileDir(Application.ExeName);
+ SaveDialog.InitialDir := ExtractFileDir(Pref.LogDir);
SaveDialog.DefaultExt := 'log';
SaveDialog.FilterIndex := 1;
if SaveDialog.Execute then
begin
if SelectedBottleLog = nil then Exit;
SaveDialog.FileName := GetDefaultFileName(SelectedBottleLog.Title, '.log');
- SaveDialog.InitialDir := ExtractFileDir(Application.ExeName);
+ SaveDialog.InitialDir := ExtractFileDir(Pref.LogDir);
SaveDialog.DefaultExt := 'log';
SaveDialog.FilterIndex := 1;
if SaveDialog.Execute then
begin
if SelectedBottleLog = nil then Exit;
SaveDialog.FileName := GetDefaultFileName(SelectedBottleLog.Title, '.txt');
- SaveDialog.InitialDir := ExtractFileDir(Application.ExeName);
+ SaveDialog.InitialDir := ExtractFileDir(Pref.LogDir);
SaveDialog.DefaultExt := 'txt';
SaveDialog.FilterIndex := 2;
if SaveDialog.Execute then
i, Index: integer;
begin
Index := -1;
+ OpenDialog.InitialDir := Pref.LogDir;
if OpenDialog.Execute then begin
for i := 0 to OpenDialog.Files.Count-1 do begin
BottleLog := TBottleLogList.Create(ExtractFileName(OpenDialog.Files[i]));
begin
Res := idYes;
SaveDialog.FileName := GetDefaultFileName(Log.Title, '.xml');
- SaveDialog.InitialDir := ExtractFileDir(Application.ExeName);
+ SaveDialog.InitialDir := ExtractFileDir(Pref.LogDir);
SaveDialog.DefaultExt := 'xml';
SaveDialog.FilterIndex := 3;
if SaveDialog.Execute then
Res := idNo;
if (BottleLogList[Index] as TBottleLogList).LogModified then
begin
- Confirm := Format('\83^\83u"%s"\82Ì\93à\97e\82Í\95Ï\8dX\82³\82ê\82Ä\82¢\82Ü\82·\81B'#13#10#13#10 +
+ Confirm := Format('\83^\83u %s \82Ì\93à\97e\82Í\95Ï\8dX\82³\82ê\82Ä\82¢\82Ü\82·\81B'#13#10#13#10 +
'\95Û\91¶\82µ\82Ü\82·\82©\81H', [(FBottleLogList[Index] as TBottleLogList).Title]);
Res := MessageDlg(Confirm, mtConfirmation, mbYesNoCancel, 0);
if Res = idYes then
FScriptBackModified: boolean; //\83X\83N\83\8a\83v\83g\8e©\93®\95Û\91¶\83t\83\89\83O
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
- //FSubFileName: string; //\95Ê\96¼
//
// FDragTabIndex: integer; //\83^\83u\83h\83\89\83b\83O\83h\83\8d\83b\83v\8aÖ\98A
// FDragTabDest: integer; //\83h\83\8d\83b\83v\82·\82é\88Ê\92u(\82·\82®\89E\82É\82\82é\83^\83u\82Ì\83C\83\93\83f\83b\83N\83X)
procedure ClearEditor;
procedure CopyFromLogToEditor(Log: TLogItem);
//
- procedure AppendTextLog(const FileName, Line: String);
+ procedure AppendTextLog(const FileName, Line: String; FAppend: boolean);
procedure AppendXMLLog(const FileName: String; Args: THeadValue);
//\8e©\93®\95Û\91¶\90Ý\92è
procedure SetScriptAutoBackUp;
//\92P\91Ì\83t\83@\83C\83\8b\93ü\8fo\97Í\8aÖ\8cW
- procedure PerformFileOpen(AFileName: string);
+ procedure PerformFileOpen(const AFileName: string);
procedure PerformFileSave(const AFileName: string);
procedure SetFileName(const FileName: String; const Value: boolean);
- function CheckFileSave(Sender: TObject): integer;
+ function CheckFileModified(Sender: TObject): integer;
function FileSave(Sender: TObject): integer;
function FileSaveAs(Sender: TObject): integer;
procedure EditerStatusChange;
procedure SetFileModified(const Value: boolean);
- function FileCheck(const AFileName: string): boolean;
+ function CheckFileExt(const AFileName: string): boolean;
protected
procedure WndProc(var Message: TMessage); override;
//\83u\83\89\83E\83U\94»\92f\82ÆURL\88ø\93n\82µ
procedure OpenBrowser(const Url: string);
//Log\83E\83B\83\93\83h\83E\82©\82ç\8fð\8c\8f\95t\82Å\8cÄ\82Î\82ê\82é
- procedure LogInsertCue(const TestAction: boolean);
+ procedure LogInsertCue(TestAction: boolean);
end;
WarningColor = clRed;
SendButtonLongHint = 'Bottle\82Ì\91\97\90M';
- NewFileTitle = '\96¼\8fÌ\96¢\92è';
- AutoSaveFile = 'Script.bak';
+ 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¤
function Token(const Str: String; const Delimiter: char;
const Index: integer): String;
var
Script: String;
Text: String;
+ Len: integer;
begin
// \83X\83e\81[\83^\83X\95Ï\8dX\82¾\82¯
// \93à\97e\82ª\83h\83\89\83b\83O\82³\82ê\82½\82Æ\82«\82à\8cÄ\82Ñ\8fo\82³\82ê\82é
Script := GetScriptText;
+ Len := Length(Script);
// \94»\92è\82·\82é\95ª\8fd\82¢\82©\82à\81H
- if Pref.NotScriptTime AND (Length(Script) > Pref.NotScriptTimeLen) then
- Text := Format('%d\83o\83C\83g/?', [Length(Script)])
+ if Pref.NotScriptTime AND (Len > Pref.NotScriptTimeLen) then
+ Text := Format('%d\83o\83C\83g/?', [Len])
else
begin
Script := StringReplace(Script, #13#10, '', [rfReplaceAll]);
if Action is TBottleChainSaveTextLogAction then
AppendTextLog(StringReplaceEx((Action as TBottleChainSaveTextLogAction).FileName, ReplaceHash),
Format('%s,%s,%s,%s', [Dat['Channel'], Dat['IfGhost'],
- FormatDateTime('yy/mm/dd hh:nn:ss', Now), Dat['Script']]));
+ FormatDateTime('yy/mm/dd hh:nn:ss', Now), Dat['Script']]), true);
if Action is TBottleChainSaveXMLLogAction then
AppendXMLLog(StringReplaceEx((Action as TBottleChainSaveXMLLogAction).FileName, ReplaceHash),
Dat);
var CanClose: Boolean);
begin
//\83t\83@\83C\83\8b\82Ì\8dX\90V\83`\83F\83b\83N\81i\83G\83f\83B\83^\95\94\81j
- if CheckFileSave(Self) = idCancel then
+ if CheckFileModified(Self) = idCancel then
begin
CanClose := false;
exit;
frmLog.SetBottleState(MID, lsPlaying);
end;
-procedure TfrmSender.LogInsertCue(const TestAction: boolean);
+procedure TfrmSender.LogInsertCue(TestAction: boolean);
var InsertItem: TLogItem;
i, errCount, Res: integer;
Log: TBottleLogList;
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~
Ghost := Log.Ghost;
//\83`\83\83\83\93\83l\83\8b\83S\81[\83X\83g\91Î\8dô
if Ghost = '' then
// \90Ý\92è\82É\82æ\82è\83N\83\8a\83A\8e\9e\82É\83t\83@\83C\83\8b\83Z\81[\83u\82·\82é\82©\8am\94F\82·\82é
// \8e©\93®\83N\83\8a\83b\83v\82ª\97L\8cø\82Å\82 \82ê\82Î\83X\83L\83b\83v\82·\82é
if (NOT Pref.NotCheckClear) AND (NOT Pref.AutoClip) then
- if CheckFileSave(Self) = idCancel then exit;
+ if CheckFileModified(Self) = idCancel then abort;
// \83X\83N\83\8a\83v\83g\82Ì\83N\83\8a\83A
// \82Ü\82¸\81A\83X\83N\83\8a\83v\83g\83N\83\8a\83A\83o\83b\83t\83@\82É\8c»\8dÝ\82Ì\83X\83N\83\8a\83v\83g\82ð\95Û\91¶\82·\82é
DoSaveBuffer := false;
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); //
- EditerStatusChange; //\83X\83e\81[\83^\83X\8dX\90V
+ 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
end;
-procedure TfrmSender.AppendTextLog(const FileName, Line: String);
+procedure TfrmSender.AppendTextLog(const FileName, Line: String; FAppend: boolean);
var
F: TextFile;
begin
try
ForceDirectories(ExtractFileDir(FileName));
AssignFile(F, FileName);
- if FileExists(FileName) then
+ if FileExists(FileName) AND FAppend then // \92Ç\8bL\82©\8fã\8f\91\82«\94»\92è
Append(F)
else
Rewrite(F);
//\83X\83N\83\8a\83v\83g\82Ì\8e©\93®\83o\83b\83N\83A\83b\83v
if FScriptBackModified then
begin
- Script := GetScriptText;
+ Script := FormatDateTime('yy/mm/dd hh:nn:ss', Now) + #13#10 + GetScriptText;
AppendTextLog(ExtractFilePath(Application.ExeName) + AutoSaveFile,
- FormatDateTime('yy/mm/dd hh:nn:ss', Now) + #13#10 + Script);
+ Script, Pref.ScriptBackUpMode);
ShowHintLabel('\83o\83b\83N\83A\83b\83v\8eÀ\8ds');
FScriptBackModified := False;
end;
Ch: TChannelListItem;
i: integer;
begin
- //\83`\83\83\83\93\83l\83\8b\83S\81[\83X\83g\92è\8b`
+ // \83`\83\83\83\93\83l\83\8b\83S\81[\83X\83g\92è\8b`
ChannelList.Clear;
- //\83t\83\89\83O\82ð\8c©\82Ä\94»\92f
+ // \83t\83\89\83O\82ð\8c©\82Ä\94»\92f
if NOT Pref.GhostCh then exit;
- //if (Pref.GhostChList.Count mod 2) = 1 then Pref.GhostChList.Add('');
+ if (Pref.GhostChList.Count mod 2) = 1 then
+ begin
+ Pref.GhostChList.Add(''); // \95s\91«\82µ\82Ä\82¢\82é\82Ì\82Å\93K\93\96\82É\92Ç\89Á
+ ShowMessage('\83`\83\83\83\93\83l\83\8b\82ð\8dÄ\90Ý\92è\82µ\82Ä\82\82¾\82³\82¢');
+ exit;
+ end;
i := 0;
while i < Pref.GhostChList.Count-1 do
begin
procedure TfrmSender.UpdateJoinChannelList;
begin
- UpdateChannelList; //\83`\83\83\83\93\83l\83\8b\90Ý\92è
- with tabChannel do
+ UpdateChannelList; // \83`\83\83\83\93\83l\83\8b\90Ý\92è
+ with tabChannel do // \96¢\8eg\97p
begin
OnChange := nil;
Tabs.BeginUpdate;
end;
end;
-procedure TfrmSender.PerformFileOpen(AFileName: string);
+procedure TfrmSender.PerformFileOpen(const AFileName: string);
begin
// \8eÀ\8dÛ\82É\83t\83@\83C\83\8b\82ð\8aJ\82
- if FileCheck(AFileName) = false then exit;
Screen.Cursor := crHourGlass;
try
memScript.Lines.LoadFromFile(AFileName);
SetFileModified(false);
+ SetFileName(AFileName, true);
+ Pref.TextDir := ExtractFileDir(AFileName);
except
on E: Exception do
begin
ShowMessage('\83G\83\89\81[:'#13#10#13#10 + E.Message);
- AFileName := NewFileTitle; // \8e¸\94s\82µ\82½\8e\9e\82Í\83^\83C\83g\83\8b\8f\89\8aú\89»\81B
+ SetFileName(NewFileTitle, true); // \8e¸\94s\82µ\82½\8e\9e\82Í\83^\83C\83g\83\8b\8f\89\8aú\89»\81B
end;
end;
Screen.Cursor := crDefault;
- SetFileName(AFileName, true);
memScript.SetFocus;
EditerStatusChange;
end;
try
memScript.Lines.SaveToFile(AFileName);
SetFileModified(false);
+ Pref.TextDir := ExtractFileDir(AFileName);
except
on E: Exception do
ShowMessage('\83G\83\89\81[:'#13#10#13#10 + E.Message);
procedure TfrmSender.actFileOpenExecute(Sender: TObject);
begin
// \8aJ\82
- if CheckFileSave(Self) = idCancel then exit;
+ if CheckFileModified(Self) = idCancel then exit;
+ OpenDialog.InitialDir := Pref.TextDir;
if OpenDialog.Execute then
- PerformFileOpen(OpenDialog.FileName);
+ if CheckFileExt(OpenDialog.FileName) then // \8ag\92£\8eq\82Ì\83`\83F\83b\83N
+ PerformFileOpen(OpenDialog.FileName);
end;
procedure TfrmSender.SetFileName(const FileName: String; const Value: boolean);
// \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;
- //else FSubFileName := ExtractFileName(FileName);
Self.Caption := Format('%s - %s', [ExtractFileName(FileName), FOriginalCaption]);
end;
-function TfrmSender.CheckFileSave(Sender: TObject): integer;
+function TfrmSender.CheckFileModified(Sender: TObject): integer;
var
Res: integer;
begin
// \96¼\91O\82ð\95t\82¯\82Ä\95Û\91¶
Res := idYes;
SaveDialog.FileName := ExtractFileName(FFileName);
- //SaveDialog.InitialDir := ExtractFileDir(Application.ExeName);
+ SaveDialog.InitialDir := Pref.TextDir;
if SaveDialog.Execute then
begin
- if FileCheck(SaveDialog.FileName) = false then
+ if CheckFileExt(SaveDialog.FileName) = false then // \8ag\92£\8eq\83`\83F\83b\83N
begin
Res := idCancel;
abort;
end;
end;
-function TfrmSender.FileCheck(const AFileName: string): boolean;
+function TfrmSender.CheckFileExt(const AFileName: string): boolean;
var
Res: boolean;
begin
- // \8e©\93®\95Û\91¶\82Å\8ew\92è\82³\82ê\82Ä\82¢\82é\83t\83@\83C\83\8b\82Í\93Ç\8f\91\82«\82µ\82È\82¢\81B
+ // \8ag\92£\8eq.bak\82Ì\83t\83@\83C\83\8b\82Í\93Ç\8f\91\82«\82µ\82È\82¢\81B
Res := true;
- if (ExtractFilePath(Application.ExeName) + AutoSaveFile) = AFileName then
+ if LowerCase(ExtractFileExt(AFileName)) = '.bak' then
begin
beep;
- ShowMessage('\8e©\93®\95Û\91¶\91Î\8fÛ\83t\83@\83C\83\8b\82Í\93Ç\8f\91\82«\82Å\82«\82Ü\82¹\82ñ\81B');
+ 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');
Res := false;
end;
Result := Res;
frmLog.AgreeLog(HeadValue['MID'], StrToIntDef(HeadValue['Num'], 0))
else if (HeadValue['Num'] <> '') AND (HeadValue['Channel'] = '') AND
(HeadValue['Entry'] = '') then
- StatusBar.Panels[PanelMembers].Text := HeadValue['Num'] + '\90l';
+ StatusBar.Panels[PanelMembers].Text := HeadValue['Num'] + '\90l';
finally
HeadValue.Free;
end;