Top = 602
Width = 494
Height = 480
- Caption = '\83\8d\83O - \83_\83u\83\8b\83N\83\8a\83b\83N\82Å\8dÄ\90¶'
+ Caption = #12525#12464' - '#12480#12502#12523#12463#12522#12483#12463#12391#20877#29983
Color = clBtnFace
Font.Charset = SHIFTJIS_CHARSET
Font.Color = clWindowText
Font.Height = -12
- Font.Name = '\82l\82r \82o\83S\83V\83b\83N'
+ Font.Name = #65325#65331' '#65328#12468#12471#12483#12463
Font.Style = []
OldCreateOrder = False
ShowHint = True
object tbtnClear: TToolButton
Left = 0
Top = 0
- Hint = '\83\8d\83O\8fÁ\8b\8e|\82·\82×\82Ä\82Ì\95\\8e¦\82³\82ê\82Ä\82¢\82é\83\8d\83O\82ð\8fÁ\8b\8e\82µ\82Ü\82·'
- Caption = '\83\8d\83O\8fÁ\8b\8e'
+ Hint = #12525#12464#28040#21435'|'#12377#12409#12390#12398#34920#31034#12373#12428#12390#12356#12427#12525#12464#12434#28040#21435#12375#12414#12377
+ Caption = #12525#12464#28040#21435
ImageIndex = 21
OnClick = tbtnClearClick
end
object tbtnSaveLog: TToolButton
Left = 23
Top = 0
- Hint = '\83\8d\83O\83t\83@\83C\83\8b\95Û\91¶'
- Caption = '\95Û\91¶'
+ Hint = #12525#12464#12501#12449#12452#12523#20445#23384
+ Caption = #20445#23384
DropdownMenu = PopupMenuSaveLog
Enabled = False
ImageIndex = 27
ImageIndex = 29
Style = tbsSeparator
end
- object tbtnVoteMessage: TToolButton
+ object tbtnPreviewStyle: TToolButton
Left = 65
Top = 0
- Action = frmSender.actVoteMessage
+ Hint = #12525#12464#12503#12524#12499#12517#12540#12398#34920#31034#24418#24335#12434#22793#26356#12375#12414#12377
+ Caption = 'tbtnPreviewStyle'
+ DropdownMenu = PopupMenuPreviewStyle
+ ImageIndex = 33
+ Style = tbsDropDown
+ OnClick = tbtnPreviewStyleClick
end
- object tbtnAgreeMessage: TToolButton
- Left = 88
+ object tbtnDownloadLog: TToolButton
+ Left = 99
Top = 0
- Action = frmSender.actAgreeMessage
+ Action = frmSender.actDownloadLog
end
object ToolButton2: TToolButton
- Left = 111
+ Left = 122
Top = 0
Width = 8
Caption = 'ToolButton2'
+ Enabled = False
ImageIndex = 33
Style = tbsSeparator
end
- object tbtnPreviewStyle: TToolButton
- Left = 119
+ object tbtnVoteMessage: TToolButton
+ Left = 130
Top = 0
- Hint = '\83\8d\83O\83v\83\8c\83r\83\85\81[\82Ì\95\\8e¦\8c`\8e®\82ð\95Ï\8dX\82µ\82Ü\82·'
- Caption = 'tbtnPreviewStyle'
- DropdownMenu = PopupMenuPreviewStyle
- ImageIndex = 33
- Style = tbsDropDown
- OnClick = tbtnPreviewStyleClick
+ Action = frmSender.actVoteMessage
+ end
+ object tbtnAgreeMessage: TToolButton
+ Left = 153
+ Top = 0
+ Action = frmSender.actAgreeMessage
end
end
object pnlUpper: TPanel
item
Width = 50
end>
- SimplePanel = False
end
object pnlPanel: TPanel
Left = 0
Align = alBottom
ResizeStyle = rsUpdate
end
- object lvwLog: TListView
- Left = 0
- Top = 0
- Width = 486
- Height = 314
- Align = alClient
- Columns = <
- item
- Caption = '\93ú\95t'
- Width = 120
- end
- item
- Caption = '\83`\83\83\83\93\83l\83\8b'
- Width = 100
- end
- item
- Alignment = taRightJustify
- Caption = '\93\8a\95['
- Width = 40
- end
- item
- Alignment = taRightJustify
- Caption = '\93¯\88Ó'
- Width = 40
- end
- item
- Caption = '\83X\83N\83\8a\83v\83g'
- Width = 400
- end>
- HideSelection = False
- OwnerData = True
- ReadOnly = True
- RowSelect = True
- PopupMenu = PopupMenuListView
- SmallImages = frmSender.imgIcon
- TabOrder = 0
- ViewStyle = vsReport
- OnChange = lvwLogChange
- OnClick = lvwLogClick
- OnColumnClick = lvwLogColumnClick
- OnCustomDrawItem = lvwLogCustomDrawItem
- OnCustomDrawSubItem = lvwLogCustomDrawSubItem
- OnData = lvwLogData
- OnDblClick = lvwLogDblClick
- OnKeyPress = lvwLogKeyPress
- end
object edtScript: TRichEdit
Left = 0
Top = 317
Font.Charset = SHIFTJIS_CHARSET
Font.Color = clWindowText
Font.Height = -12
- Font.Name = '\82l\82r \83S\83V\83b\83N'
+ Font.Name = #65325#65331' '#12468#12471#12483#12463
Font.Style = []
HideScrollBars = False
ParentFont = False
PopupMenu = PopupMenuPreview
ReadOnly = True
ScrollBars = ssVertical
+ TabOrder = 0
+ end
+ object Panel1: TPanel
+ Left = 0
+ Top = 0
+ Width = 486
+ Height = 314
+ Align = alClient
TabOrder = 1
+ object TabControl1: TTabControl
+ Left = 1
+ Top = 1
+ Width = 484
+ Height = 26
+ Align = alTop
+ TabOrder = 0
+ Tabs.Strings = (
+ #12459#12524#12531#12488)
+ TabIndex = 0
+ end
+ object lvwLog: TListView
+ Left = 1
+ Top = 27
+ Width = 484
+ Height = 286
+ Align = alClient
+ BevelInner = bvNone
+ BorderStyle = bsNone
+ Columns = <
+ item
+ Caption = #26085#20184
+ Width = 120
+ end
+ item
+ Caption = #12481#12515#12531#12493#12523
+ Width = 100
+ end
+ item
+ Alignment = taRightJustify
+ Caption = #25237#31080
+ Width = 40
+ end
+ item
+ Alignment = taRightJustify
+ Caption = #21516#24847
+ Width = 40
+ end
+ item
+ Caption = #12473#12463#12522#12503#12488
+ Width = 400
+ end>
+ HideSelection = False
+ OwnerData = True
+ ReadOnly = True
+ RowSelect = True
+ PopupMenu = PopupMenuListView
+ SmallImages = frmSender.imgIcon
+ TabOrder = 1
+ ViewStyle = vsReport
+ OnChange = lvwLogChange
+ OnClick = lvwLogClick
+ OnColumnClick = lvwLogColumnClick
+ OnCustomDrawItem = lvwLogCustomDrawItem
+ OnCustomDrawSubItem = lvwLogCustomDrawSubItem
+ OnData = lvwLogData
+ OnDblClick = lvwLogDblClick
+ OnKeyPress = lvwLogKeyPress
+ end
end
end
end
Left = 376
Top = 56
object mnPopUpCopyScript: TMenuItem
- Caption = '\82±\82ÌBottle\83X\83N\83\8a\83v\83g\82ð\83R\83s\81['
+ Caption = #12371#12398'Bottle'#12473#12463#12522#12503#12488#12434#12467#12500#12540
Enabled = False
OnClick = mnPopUpCopyScriptClick
end
Action = frmSender.actAgreeMessage
end
object mnJumpURL: TMenuItem
- Caption = '&URL\83W\83\83\83\93\83v'
+ Caption = '&URL'#12472#12515#12531#12503
Enabled = False
end
end
object SaveDialog: TSaveDialog
DefaultExt = 'txt'
Filter =
- '\83\8d\83O\83t\83@\83C\83\8b (*.log)|*.log|\83e\83L\83X\83g\83t\83@\83C\83\8b (*.txt)|*.txt|XML\83t' +
- '\83@\83C\83\8b (*.xml)|*.xml|\82·\82×\82Ä\82Ì\83t\83@\83C\83\8b (*.*)|*.*'
+ #12525#12464#12501#12449#12452#12523' (*.log)|*.log|'#12486#12461#12473#12488#12501#12449#12452#12523' (*.txt)|*.txt|XML'#12501#12449#12452#12523' (*.xml)|*.xm' +
+ 'l|'#12377#12409#12390#12398#12501#12449#12452#12523' (*.*)|*.*'
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
- Title = '\83\8d\83O\83t\83@\83C\83\8b\82Ì\95Û\91¶'
+ Title = #12525#12464#12501#12449#12452#12523#12398#20445#23384
Left = 344
Top = 56
end
Left = 304
Top = 56
object mnSaveLog: TMenuItem
- Caption = 'sstp.log\8c`\8e®(&S)'
+ Caption = 'sstp.log'#24418#24335'(&S)'
Default = True
OnClick = mnSaveLogClick
end
object mnSaveLogChannel: TMenuItem
- Caption = 'sstp.log\8c`\8e®(\83`\83\83\83\93\83l\83\8b\95t)(&C)'
+ Caption = 'sstp.log'#24418#24335'('#12481#12515#12531#12493#12523#20184')(&C)'
OnClick = mnSaveLogChannelClick
end
object mnSaveLogScript: TMenuItem
- Caption = '\83X\83N\83\8a\83v\83g\82Ì\82Ý(&N)'
+ Caption = #12473#12463#12522#12503#12488#12398#12415'(&N)'
OnClick = mnSaveLogScriptClick
end
object mnSaveLogXML: TMenuItem
- Caption = '&XML\8c`\8e®'
+ Caption = '&XML'#24418#24335
OnClick = mnSaveLogXMLClick
end
end
Left = 272
Top = 54
object mnPreviewStyleConversation: TMenuItem
- Caption = '\91Î\98b\8c`\8e®(&D)'
+ Caption = #23550#35441#24418#24335'(&D)'
OnClick = mnPreviewStyleClick
end
object mnPreviewStyleScript: TMenuItem
Tag = 1
- Caption = '\83X\83N\83\8a\83v\83g\95\\8e¦(&S)'
+ Caption = #12473#12463#12522#12503#12488#34920#31034'(&S)'
OnClick = mnPreviewStyleClick
end
object mnPreviewStyleScriptWithLineBreak: TMenuItem
Tag = 2
- Caption = '\83X\83N\83\8a\83v\83g\95\\8e¦(\89ü\8ds\82 \82è)(&N)'
+ Caption = #12473#12463#12522#12503#12488#34920#31034'('#25913#34892#12354#12426')(&N)'
OnClick = mnPreviewStyleClick
end
end
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ToolWin, StdCtrls, ExtCtrls, SsParser, BottleDef, Menus,
- Clipbrd, Logs, ShellAPI, Commctrl, DirectSstp;
+ Clipbrd, Logs, ShellAPI, Commctrl, DirectSstp, Contnrs;
type
TSaveLogType = (stLog, stLogWithChannels, stText, stXML);
mnPopUpVoteMessage: TMenuItem;
SaveDialog: TSaveDialog;
pnlPanel: TPanel;
- lvwLog: TListView;
Splitter: TSplitter;
edtScript: TRichEdit;
mnPopUpCopyScript: TMenuItem;
mnPreviewStyleConversation: TMenuItem;
mnPreviewStyleScript: TMenuItem;
mnPreviewStyleScriptWithLineBreak: TMenuItem;
+ Panel1: TPanel;
+ TabControl1: TTabControl;
+ lvwLog: TListView;
+ tbtnDownloadLog: TToolButton;
procedure tbtnClearClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure lvwLogChange(Sender: TObject; Item: TListItem;
SortColumn: integer; //\97ñ\83N\83\8a\83b\83N\83\\81[\83g\97p
SortDesc: boolean; //\97ñ\83N\83\8a\83b\83N\83\\81[\83g\97p
FLastScript: String; //\83X\83N\83\8a\83v\83g\8dÄ\95`\89æ\97}\90§\97p
+ FExtendedBottleLogList: TObjectList;
procedure UpdateScript(const Script: String);
procedure UpdateScriptConversationColor(const Script: String);
procedure UpdateScriptConversationNoColor(const Script: String);
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public \90é\8c¾ }
+ function SelectedBottleLog: TBottleLogList;
procedure AddScriptLog(const Script, Channel, MID, Ghost: String);
procedure AddSystemLog(const MessageString: String);
procedure SetBottleStatusToPlaying(const MID: String);
lvwLog.OnChange := nil; //\83C\83x\83\93\83g\94\90¶(\82¢\82ë\82¢\82ë\8dÄ\95`\89æ\82ª\8bN\82«\82é)\82Ì\97}\90§
if lvwLog.Selected <> nil then Sel := lvwLog.Selected.Index else Sel := -1;
LogItem := TLogItem.Create(ltBottle, MID, Channel, Script, Ghost, Now());
- BottleLog.Insert(0, LogItem);
- lvwLog.Items.Count := BottleLog.Count;
+ CurrentBottleLog.Insert(0, LogItem);
+ lvwLog.Items.Count := CurrentBottleLog.Count;
UpdateWindow;
if Sel >= 0 then begin
lvwLog.Selected := lvwLog.Items[Sel + 1];
lvwLog.OnChange := nil;
if lvwLog.Selected <> nil then Sel := lvwLog.Selected.Index else Sel := -1;
LogItem := TLogItem.Create(ltSystemLog, '', '', MessageString, '', Now());
- BottleLog.Insert(0, LogItem);
- lvwLog.Items.Count := BottleLog.Count;
+ CurrentBottleLog.Insert(0, LogItem);
+ lvwLog.Items.Count := CurrentBottleLog.Count;
UpdateWindow;
if Sel >= 0 then begin
lvwLog.Selected := lvwLog.Items[Sel + 1];
procedure TfrmLog.tbtnClearClick(Sender: TObject);
begin
- BottleLog.Clear;
- lvwLog.Items.Count := 0;
- lvwLog.Invalidate;
- lvwLogChange(Self, nil, ctState);
+ if SelectedBottleLog = CurrentBottleLog then begin
+ CurrentBottleLog.Clear;
+ lvwLog.Items.Count := 0;
+ lvwLog.Invalidate;
+ lvwLogChange(Self, nil, ctState);
+ end else begin
+ {TODO: \83\8d\83O\8dí\8f\9c\83{\83^\83\93\82Ì\8f\88\97\9d}
+ end;
end;
procedure TfrmLog.FormCreate(Sender: TObject);
begin
+ FExtendedBottleLogList := TObjectList.Create;
+
SsParser.TagPattern.Assign(frmSender.SsParser.TagPattern);
SsParser.MetaPattern.Assign(frmSender.SsParser.MetaPattern);
Bottom := Self.Top + Self.Height - 1;
end;
Pref.LogWindowDividerPos := edtScript.Height;
+
+ FreeAndNil(FExtendedBottleLogList);
end;
procedure TfrmLog.lvwLogChange(Sender: TObject; Item: TListItem;
if Change = ctState then begin
Script := '';
if lvwLog.Selected <> nil then begin
- Log := BottleLog.Bottles[lvwLog.Selected.Index];
- if Log.LogType = ltBottle then begin
+ Log := SelectedBottleLog.Bottles[lvwLog.Selected.Index];
+ if (Log.LogType = ltBottle) and not frmSender.Connecting then begin
Script := Log.Script;
frmSender.actVoteMessage.Enabled := true;
frmSender.actAgreeMessage.Enabled := true;
begin
if lvwLog.Selected = nil then Exit;
//Log := TLogItem(lvwLog.Selected.Data);
- Log := BottleLog.Bottles[lvwLog.Selected.Index];
+ Log := SelectedBottleLog.Bottles[lvwLog.Selected.Index];
if Log = nil then Exit;
if Log.LogType <> ltBottle then Exit;
Script := Log.Script;
SelectedMID: String;
begin
if lvwLog.Selected <> nil then
- SelectedMID := BottleLog.Bottles[lvwLog.Selected.Index].MID;
+ SelectedMID := SelectedBottleLog.Bottles[lvwLog.Selected.Index].MID;
if SortColumn = Column.Index then
SortDesc := not SortDesc
else begin
subScript: SortType := stScript;
else SortType := stLogTime;
end;
- BottleLog.SortBottles(SortType, SortDesc);
+ SelectedBottleLog.SortBottles(SortType, SortDesc);
lvwLog.Invalidate;
SelAndFocusMessage(SelectedMID);
end;
Log: TLogItem;
Clip: TClipBoard;
begin
- Log := BottleLog.Bottles[frmLog.lvwLog.Selected.Index];
+ Log := SelectedBottleLog.Bottles[frmLog.lvwLog.Selected.Index];
if Log = nil then Exit;
Clip := ClipBoard();
Clip.SetTextBuf(PChar(Log.Script));
procedure TfrmLog.SetBottleStatusToOpened(const MID: String);
begin
- if BottleLog.Bottle(MID) <> nil then begin
- BottleLog.Bottle(MID).State := lsOpened;
+ if CurrentBottleLog.Bottle(MID) <> nil then begin
+ CurrentBottleLog.Bottle(MID).State := lsOpened;
lvwLog.OnChange := nil;
lvwLog.Invalidate;
lvwLog.OnChange := lvwLogChange;
procedure TfrmLog.SetBottleStatusToPlaying(const MID: String);
begin
- if BottleLog.Bottle(MID) <> nil then begin
- BottleLog.Bottle(MID).State := lsPlaying;
+ if CurrentBottleLog.Bottle(MID) <> nil then begin
+ CurrentBottleLog.Bottle(MID).State := lsPlaying;
lvwLog.OnChange := nil;
lvwLog.Invalidate;
lvwLog.OnChange := lvwLogChange;
Log := TStringList.Create;
case SaveType of
stLog, stLogWithChannels: begin
- for i := 0 to BottleLog.Count -1 do begin
- LogItem := BottleLog.Bottles[i];
+ for i := 0 to SelectedBottleLog.Count -1 do begin
+ LogItem := SelectedBottleLog.Bottles[i];
if LogItem = nil then Continue;
if LogItem.LogType <> ltBottle then Continue;
Date := FormatDateTime('yyyy/mm/dd hh:nn:ss ', LogItem.LogTime);
end;
end;
stText: begin
- for i := 0 to BottleLog.Count -1 do begin
- LogItem := BottleLog.Bottles[i];
+ for i := 0 to SelectedBottleLog.Count -1 do begin
+ LogItem := SelectedBottleLog.Bottles[i];
if LogItem = nil then Continue;
if LogItem.LogType <> ltBottle then Continue;
Log.Add(LogItem.Script);
stXML: begin
Log.Add('<?xml version=''1.0'' encoding=''Shift_JIS''?>');
Log.Add('<bottlelog>');
- for i := 0 to BottleLog.Count -1 do begin
- LogItem := BottleLog.Bottles[i];
+ for i := 0 to SelectedBottleLog.Count -1 do begin
+ LogItem := SelectedBottleLog.Bottles[i];
if LogItem = nil then Continue;
if LogItem.LogType <> ltBottle then Continue;
Date := FormatDateTime('yyyy/mm/dd hh:nn:ss', LogItem.LogTime);
Log: TLogItem;
begin
i := Item.Index;
- Log := BottleLog.Bottles[i];
+ Log := SelectedBottleLog.Bottles[i];
with Item do begin
Caption := FormatDateTime('yy/mm/dd hh:nn:ss', Log.LogTime);
SubItems.Clear;
if lvwLog.Color <> clWindow then lvwLog.Color := clWindow;
if lvwLog.Font.Color <> clWindowText then lvwLog.Font.Color := clWindowText;
end;
- lvwLog.Items.Count := BottleLog.Count;
+ lvwLog.Items.Count := SelectedBottleLog.Count;
lvwLog.Invalidate;
//lvwLogChange(Self, lvwLog.Selected, ctState);
end;
end;
mnJumpURL.Enabled := false;
if lvwLog.Selected = nil then Exit;
- Log := BottleLog.Bottles[lvwLog.Selected.Index];
+ Log := SelectedBottleLog.Bottles[lvwLog.Selected.Index];
if Log = nil then Exit;
Urls := nil;
try
var i: integer;
Log: TLogItem;
begin
- for i := 0 to BottleLog.Count-1 do begin
- Log := BottleLog.Items[i] as TLogItem;
+ for i := 0 to SelectedBottleLog.Count-1 do begin
+ Log := SelectedBottleLog.Items[i] as TLogItem;
if Log.MID = MID then begin
lvwLog.Items[i].Selected := true;
lvwLog.Items[i].Focused := true;
Result := S;
end;
+function TfrmLog.SelectedBottleLog: TBottleLogList;
+begin
+ Result := CurrentBottleLog;
+end;
+
end.
private
function GetBottles(Index: integer): TLogItem;
public
+ constructor Create;
procedure SortBottles(LogSortType: TBottleLogSortType; Desc: boolean);
function Bottle(MID: String): TLogItem;
property Bottles[Index: integer]: TLogItem read GetBottles;
end;
var
- BottleLog: TBottleLogList;
+ CurrentBottleLog: TBottleLogList; //\83J\83\8c\83\93\83g
ASortType: TBottleLogSortType; //LogCompare\8aÖ\90\94\82©\82ç\8c©\82¦\82é\82æ\82¤\82É\88ê\8e\9e\91Þ\94ð\97p
ASortDesc: boolean;
end;
end;
+constructor TBottleLogList.Create;
+begin
+ inherited;
+ OwnsObjects := true;
+end;
+
function TBottleLogList.GetBottles(Index: integer): TLogItem;
begin
Result := Items[Index] as TLogItem;
initialization
try
- BottleLog := TBottleLogList.Create;
- BottleLog.OwnsObjects := true;
+ CurrentBottleLog := TBottleLogList.Create;
except
ShowMessage('BottleLog\8f\89\8aú\89»\8e¸\94s');
Application.Terminate;
end;
finalization
- BottleLog.Free;
+ CurrentBottleLog.Free;
end.
end
end
end
- object ColorDialog: TColorDialog
- Left = 232
- Top = 72
- end
object ActionList: TActionList
Images = imgIcon
Left = 200
ShortCut = 16462
OnExecute = actResetGhostExecute
end
+ object actDownloadLog: TAction
+ Caption = #12525#12464#12480#12454#12531#12525#12540#12489
+ Hint = #12508#12488#12523#12469#12540#12496#12363#12425#12508#12488#12523#12398#12525#12464#12434#12480#12454#12531#12525#12540#12489
+ ImageIndex = 36
+ OnExecute = actDownloadLogExecute
+ end
end
object mnPopUp: TPopupMenu
Images = imgIcon
Left = 8
Top = 72
Bitmap = {
- 494C010124002700040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+ 494C010125002700040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000A0000000010020000000000000A0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 0000D4F0FF00D4F0FF00D4F0FF00D4F0FF00D4F0FF00D4F0FF00D4F0FF000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF000000FF0000000000
+ 0000B1E2FF00B1E2FF00B1E2FF00B1E2FF00B1E2FF00B1E2FF00B1E2FF00B1E2
+ FF00B1E2FF00B1E2FF00B1E2FF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF000000FF0000000000
+ 0000B1E2FF000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF000000FF6B8F000000
+ 0000B1E2FF00B1E2FF0000000000000000000000000000000000000000000000
+ 0000B1E2FF00B1E2FF00B1E2FF00000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000000000000000000000000000FF6B8F00FF6B8F000000
+ 00000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000F0FBFF00F0FBFF00FFFF0000FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000F0FBFF00F0FBFF00F0FBFF00FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000F0FBFF00F0FBFF00F0FBFF00FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000FFFF0000F0FBFF00F0FBFF00F0FBFF00FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000FFFF0000F0FBFF00F0FBFF00FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 00000000000000000000FFFF000000969600009696000096960000969600FFFF
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000009696000096960000969600009696000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000009696000096960000969600009696000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000424D3E000000000000003E000000
2800000040000000A00000000100010000000000000500000000000000000000
- 000000000000000000000000FFFFFF0000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 0000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000E0FFFFFFFFFFFFFF807FFFFFFFFFFFFF
+ 000000000000000000000000FFFFFF00F01F0000000000000001000000000000
+ 0000000000000000000100000000000000000000000000000001000000000000
+ 0807000000000000F807000000000000F807000000000000F807000000000000
+ F807000000000000F807000000000000F807000000000000FC0F000000000000
+ FE1F000000000000FE1F000000000000E0FFFFFFFFFFFFFF807FFFFFFFFFFFFF
807F0000FFFFFFFFC1FF0000FF7FFEFFF1FF0000FE7FFE7FF0E70000FC7FFE3F
C0E30000F807E01FC0630000F007E00FE0630000E007E007F0010000F007E00F
F8010000F807E01FFC010000FC7FFE3FFE010000FE7FFE7FFF000001FF7FFEFF
F00BFFFFFC018000F00BFB7FFC010000F00BF93FFC010000F00BF81F00010000
F00B800F00010001F00B800700010003B00B8003000100038003800700030003
C027800F00070003802FF81F000F0FC3C01FF93F00FF0003C0FFFB7F01FF8007
- 93FFFFFF03FFF87FB33FFFFFFFFFFFFF00000000000000000000000000000000
- 000000000000}
+ 93FFFFFF03FFF87FB33FFFFFFFFFFFFF}
end
object mnPopupConst: TPopupMenu
Images = imgIcon
end
object DirectSstp: TDirectSstp
SstpSender = 'My Program'
+ Interval = 2000
Sleep = False
TargetHWnd = 0
OnResendTrying = DirectSstpResendTrying
RichEdit, Clipbrd, SsParser, MPlayer, SakuraSeeker,
HeadValue, Logs,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdSLPP20,
- IdException, HttpThread, IdHTTP, IdURI, DirectSstp, XPMan;
+ IdException, HttpThread, IdHTTP, IdURI, DirectSstp, XPMan, LogDownload;
type
TfrmSender = class(TForm)
mnHelp: TMenuItem;
mnAbout: TMenuItem;
mnEditConst: TMenuItem;
- ColorDialog: TColorDialog;
ActionList: TActionList;
actEditCopy: TEditCopy;
actEditCut: TEditCut;
timDisconnectCheckTimer: TTimer;
DirectSstp: TDirectSstp;
XPManifest: TXPManifest;
+ actDownloadLog: TAction;
procedure actConfirmExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure actNextGhostExecute(Sender: TObject);
procedure actResetGhostExecute(Sender: TObject);
procedure timDisconnectCheckTimerTimer(Sender: TObject);
+ procedure actDownloadLogExecute(Sender: TObject);
private
FSleeping: boolean;
FStatusText: String;
procedure SetConnecting(const Value: boolean);
procedure SetAdded(const Value: boolean);
procedure mnConstClick(Sender: TObject);
- property Connecting: boolean read FConnecting write SetConnecting;
property Added: boolean read FAdded write SetAdded;
property Sleeping: boolean read FSleeping write SetSleeping;
property StatusText: String read FStatusText write SetStatusText;
procedure RetryBeginConnect;
procedure EndConnect;
procedure Notified;
+ property Connecting: boolean read FConnecting write SetConnecting;
property ChannelList: TChannelList read FChannelList;
function SetHWndToFavoriteGhost(const Ghost: String): String;
function GhostNameToSetName(const Ghost: String): String;
actStart.Enabled := true;
actStop.Enabled := true;
actSend.Enabled := true;
- actVoteMessage.Enabled := true;
- actAgreeMessage.Enabled := true;
+ //actVoteMessage.Enabled := true;
+ //actAgreeMessage.Enabled := true;
+ frmLog.lvwLogChange(Self, nil, ctState);
mnGetNewId.Enabled := Pref.LUID = '';
Screen.Cursor := crDefault;
end;
end;
etForceBroadcastInformation: begin
if HeadValue['Type'] = 'Vote' then begin
- if BottleLog.Bottle(HeadValue['MID']) <> nil then begin
- BottleLog.Bottle(HeadValue['MID']).Votes := StrToIntDef(HeadValue['Num'], 0);
+ if CurrentBottleLog.Bottle(HeadValue['MID']) <> nil then begin
+ CurrentBottleLog.Bottle(HeadValue['MID']).Votes := StrToIntDef(HeadValue['Num'], 0);
frmLog.lvwLog.Invalidate;
end;
end else if HeadValue['Type'] = 'Agree' then begin
- if BottleLog.Bottle(HeadValue['MID']) <> nil then begin
- BottleLog.Bottle(HeadValue['MID']).Agrees := StrToIntDef(HeadValue['Num'], 0);
+ if CurrentBottleLog.Bottle(HeadValue['MID']) <> nil then begin
+ CurrentBottleLog.Bottle(HeadValue['MID']).Agrees := StrToIntDef(HeadValue['Num'], 0);
frmLog.lvwLog.Invalidate;
end;
end;
if Re = mrOk then begin
DirectSstp.ClearCue;
end;
- for i := 0 to BottleLog.Count-1 do
- BottleLog.Bottles[i].State := lsOpened;
+ for i := 0 to CurrentBottleLog.Count-1 do
+ CurrentBottleLog.Bottles[i].State := lsOpened;
frmLog.UpdateWindow;
end;
procedure TfrmSender.actVoteMessageExecute(Sender: TObject);
var Log: TLogItem;
begin
- Log := BottleLog[frmLog.lvwLog.Selected.Index] as TLogItem;
+ if frmLog.lvwLog.Selected = nil then Exit;
+ Log := frmLog.SelectedBottleLog[frmLog.lvwLog.Selected.Index] as TLogItem;
if Log = nil then Exit;
if Log.LogType <> ltBottle then Exit;
PostCommand([
procedure TfrmSender.actAgreeMessageExecute(Sender: TObject);
var Log: TLogItem;
begin
- Log := BottleLog[frmLog.lvwLog.Selected.Index] as TLogItem;
+ if frmLog.lvwLog.Selected = nil then Exit;
+ Log := frmLog.SelectedBottleLog[frmLog.lvwLog.Selected.Index] as TLogItem;
if Log = nil then Exit;
if Log.LogType <> ltBottle then Exit;
PostCommand([
end;
end;
+procedure TfrmSender.actDownloadLogExecute(Sender: TObject);
+begin
+ frmLogDownload.Execute;
+end;
+
end.
ChannelListForm in 'ChannelListForm.pas' {frmChannelList},
MessageBox in 'MessageBox.pas' {frmMessageBox},
Logs in 'Logs.pas',
- HttpThread in 'HttpThread.pas';
+ HttpThread in 'HttpThread.pas',
+ LogDownload in 'LogDownload.pas' {frmLogDownload};
{$R *.RES}
{$DEFINE Mani}
Application.CreateForm(TfrmLog, frmLog);
Application.CreateForm(TfrmChannelList, frmChannelList);
Application.CreateForm(TfrmMessageBox, frmMessageBox);
+ Application.CreateForm(TfrmLogDownload, frmLogDownload);
if not Application.Terminated then frmSender.Show;
Application.Run;
end.