procedure actPasteExecute(Sender: TObject);
procedure actCutExecute(Sender: TObject);
procedure actSelectAllExecute(Sender: TObject);
+ procedure memScriptMouseMove(Sender: TObject; Shift: TShiftState; X,
+ Y: Integer);
private
FSleeping: boolean;
FStatusText: String;
//
FHttp: THTTPDownloadThread; //HTTP\83_\83E\83\93\83\8d\81[\83h\83X\83\8c\83b\83h(\83C\83\93\83X\83^\83\93\83X\82Í1\8cÂ\82Ì\82Ý)
FBeginConnectFailCount: integer; //\89½\93x\82à\90Ú\91±\8e¸\94s\82µ\82½\82ç\83\8a\83g\83\89\83C\92\86\8e~
+ //
+ FVisiblePreviewGhost: String;
+ FVisiblePreviewSurface: integer; //\83T\81[\83t\83B\83X\83v\83\8c\83r\83\85\81[\82Å\8c©\82¦\82Ä\82¢\82é\82à\82Ì
+ //
procedure SetStatusText(const Value: String);
procedure SetSleeping(const Value: boolean);
procedure YenETrans;
procedure BottleSstpResendTrying(Sender: TObject; MID: String);
procedure BottleSstpResendEnd(Sender: TObject; MID: String);
function IsSurfaceTag(const Script: String; var ID: integer): boolean;
+ procedure DoSurfacePreview(Surface: integer);
public
function DoTrans(var Script: String;
Options: TScriptTransOptions): String;
procedure TfrmSender.ApplicationEventsHint(Sender: TObject);
var id: integer;
- ghost: String;
- Bmp: TBitmap;
- CPos: TPoint;
begin
if Length(Application.Hint) > 0 then
begin
if IsSurfaceTag(Application.Hint, id) and Pref.SurfacePreviewOnHint then
begin
// \83T\81[\83t\83B\83X\83v\83\8c\83r\83\85\81[
- if cbxTargetGhost.ItemIndex > 0 then
- ghost := cbxTargetGhost.Text
- else if FNowChannel <> '' then
- ghost := ChannelList.Channel[FNowChannel].Ghost;
- if ghost <> '' then
- begin
- Bmp := TBitmap.Create;
- try
- if Spps.TryGetImage(ghost, id, Bmp) then
- GetCursorPos(CPos);
- frmSurfacePreview.ShowPreview(Bmp, Self.Left-Bmp.Width, CPos.Y);
- finally
- Bmp.Free;
- end;
- end;
+ DoSurfacePreview(id);
end;
end else
begin
Result := true;
ID := Ord(Script[3]) - Ord('0')
end
- else if SsParser.Match(Script, '\s[%D]') = Length(Script) then
+ else if (Length(Script) > 0) and (SsParser.Match(Script, '\s[%D]') = Length(Script)) then
begin
Result := true;
ID := StrToIntDef(SsParser.GetParam(Script, 1), 0);
end;
end;
+procedure TfrmSender.memScriptMouseMove(Sender: TObject;
+ Shift: TShiftState; X, Y: Integer);
+var id: integer;
+ token: String;
+begin
+ // \95Ò\8fW\83E\83B\83\93\83h\83E\82Å\83}\83E\83X\83|\83C\83\93\83g\82·\82é\82Æ\83T\81[\83t\83B\83X\83v\83\8c\83r\83\85\81[
+ token := memScript.TokenStringFromPos(Point(X, Y));
+ if IsSurfaceTag(token, id) then
+ begin
+ DoSurfacePreview(id);
+ end else
+ begin
+ frmSurfacePreview.HideAway;
+ end;
+end;
+
+procedure TfrmSender.DoSurfacePreview(Surface: integer);
+var Ghost: String;
+ Bmp: TBitmap;
+ CPos: TPoint;
+begin
+ if cbxTargetGhost.ItemIndex > 0 then
+ ghost := cbxTargetGhost.Text
+ else if FNowChannel <> '' then
+ ghost := ChannelList.Channel[FNowChannel].Ghost;
+
+ // \93ñ\8fd\95\\8e¦\82Ì\97}\90§
+ if (FVisiblePreviewGhost = Ghost) and (FVisiblePreviewSurface = Surface) and
+ not (frmSurfacePreview.IsHidden) then
+ begin
+ Exit;
+ end;
+
+
+ if ghost <> '' then
+ begin
+ Bmp := TBitmap.Create;
+ try
+ if Spps.TryGetImage(ghost, Surface, Bmp) then
+ GetCursorPos(CPos);
+ frmSurfacePreview.ShowPreview(Bmp, Self.Left-Bmp.Width, CPos.Y);
+ FVisiblePreviewGhost := Ghost;
+ FVisiblePreviewSurface := Surface;
+ finally
+ Bmp.Free;
+ end;
+ end;
+end;
+
end.