init:ClipLogger
Verfasst: 03.04.2014 12:24
Code: Alles auswählen
EnableExplicit
Global Dim ImageField(8192, 0)
Global Window, ListIcon, Button
Define PreviousImage, PreviousText$
Procedure.d Max(Value.d, Maximum.d)
If Value > Maximum
ProcedureReturn Maximum
EndIf
ProcedureReturn Value
EndProcedure
Procedure NewText(Text$)
AddGadgetItem(ListIcon, #PB_Any, "<text>" + Chr(10) + ReplaceString(Text$, Chr(10), Chr(0)))
EndProcedure
Procedure NewImage(Image)
Protected Image$
Image$ = GetTemporaryDirectory() + "image.bmp"
SaveImage(Image, Image$)
AddGadgetItem(ListIcon, #PB_Any, Chr(10) + FormatDate("%hh:%ii:%ss", Date()) + " " + Str(FileSize(Image$) / 1024) + " Kb", ImageID(Image))
EndProcedure
Procedure AskForImage()
Shared PreviousImage
Static PreviousImageWidth, PreviousImageHeight
Protected Image, DifferenceInImage, ImageX, ImageY
Image = GetClipboardImage(#PB_Any)
If Image
If IsImage(PreviousImage)
PreviousImageWidth = ImageWidth(PreviousImage)
PreviousImageHeight = ImageHeight(PreviousImage)
EndIf
If Not ImageWidth(Image) = PreviousImageWidth Or Not ImageHeight(Image) = PreviousImageHeight
DifferenceInImage = #True
Else
StartDrawing(ImageOutput(Image))
For ImageX = 0 To ImageWidth(Image) - 1
For ImageY = 0 To ImageHeight(Image) - 1
If Not Point(ImageX, ImageY) = ImageField(ImageX, ImageY)
DifferenceInImage = #True
Break 2
EndIf
Next
Next
StopDrawing()
EndIf
If DifferenceInImage
NewImage(Image)
StartDrawing(ImageOutput(Image))
ReDim ImageField(8192, ImageHeight(Image))
For ImageX = 0 To ImageWidth(Image) - 1
For ImageY = 0 To ImageHeight(Image) - 1
ImageField(ImageX, ImageY) = Point(ImageX, ImageY)
Next
Next
PreviousImage = Image
StopDrawing()
EndIf
EndIf
EndProcedure
Procedure AskForText()
Shared PreviousText$
Protected Text$
Text$ = GetClipboardText()
If Not Text$ = PreviousText$ And Not Text$ = ""
NewText(Text$)
EndIf
PreviousText$ = Text$
EndProcedure
ExamineDesktops()
Window = OpenWindow(#PB_Any, DesktopWidth(#Null) - 240, 5, 230, DesktopHeight(#Null) - 80, "init:ClipLogger", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
StickyWindow(Window, #True)
ListIcon = ListIconGadget(#PB_Any, 0, 20, WindowWidth(Window), WindowHeight(Window) - 50, "Typ", 40, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(listicon, 1, "Value", 120)
Button = ButtonGadget(#PB_Any, 5, WindowHeight(Window)-25, 80, 20, "Reaktivieren")
Repeat
Select WaitWindowEvent(10)
Case #PB_Event_SizeWindow
ResizeGadget(Button, 5, WindowHeight(Window)-25, 80, 20)
ResizeGadget(ListIcon, 0, 20, WindowWidth(Window), WindowHeight(Window)-50)
SetGadgetItemAttribute(ListIcon, #PB_Ignore, #PB_ListIcon_ColumnWidth, Max(40.0/190 * WindowWidth(Window), 65), 0)
SetGadgetItemAttribute(ListIcon, #PB_Ignore, #PB_ListIcon_ColumnWidth, WindowWidth(Window) - GetGadgetItemAttribute(listicon, #PB_Ignore, #PB_ListIcon_ColumnWidth, 0) - 30, 1)
Case ListIcon
If EventType() = #PB_EventType_LeftDoubleClick
Gosub FillClipboardWithSelectedText
EndIf
Case Button
Gosub FillClipboardWithSelectedText
Case #PB_Event_CloseWindow
End
EndSelect
If Not GetGadgetState(ListIcon) = #PB_Any
DisableGadget(Button, #False)
Else
DisableGadget(Button, #True)
EndIf
AskForImage()
AskForText()
ForEver
End
FillClipboardWithSelectedText:
If Not GetGadgetState(ListIcon) = #PB_Any
If GetGadgetItemText(ListIcon, GetGadgetState(ListIcon), 0) = "<text>"
SetClipboardText(ReplaceString(GetGadgetItemText(ListIcon, GetGadgetState(ListIcon), 1), Chr(0), Chr(10)))
Else
Debug GetGadgetItemText(ListIcon, GetGadgetState(ListIcon), 1)
EndIf
EndIf
Return