Tool friert ein, nach verlassen von Schleife in Thread
Verfasst: 27.06.2017 14:50
Hi
Also bevor weiter das Thema im Allgemein Forum völlig Offtopic gebracht wird mit dem Problem
das ich mit dem Code unter Linux hab, poste ich den Code halt hier
Hier die Windows Version vom Code. CPU Last praktisch nicht existent, Ram Verbrauch unter 32Bit OS 2-3MB, ich benutze das Tool so schon seit 8 Jahren, ohne jegliche Probleme.
Bitte Threadsafe aktivieren !
Jetzt der angepasste Code unter Linux (benutze Debian 8 Jessie, xfce, gtk)
Auch hier Bitte Threadsafe aktivieren.
Sobald unter Linux die Prozedure WatchForClipBoardImage verlassen wird (Checkbox mit Text Auto Create Image | Supervice Clipboard) durch auslösen von einem Break, weil stop_supervise gleich 1 ist, wird das komplette Tool eingefroren, es gibt auch keine Meldung im Debugger was los ist.
Ich bin völlig überfragt !
1) Wieso so ein abartiger Ram Verbrauch im Vergleich zu Windoof ?
2) Wieso reicht bei Windoof Delay(5) und bei Werten unter 50 krieg ich massive GTK Fehlermeldungen ?
3) Wieso ist die CPU Auslastung praktisch nicht existent, wie unter Windoof ?
4) Warum friert es ein, weil so etwas banales passiert, wie das verlassen einer Schleife die in einem Thread ist ?
5) Was soll diese komische Meldung wenn mann das Tool beendet ?
6) Wieso ist das Fenster vom Tool riesig unter Linux (Xfce unter 1024x768), wenn ich eine Fentergröße
von 255W hab und 309H, und unter Windows ist es unter 1024x768, schön kompakt wie es sein soll.
Ja das die Default Font Schriftgrößen unter Xfce anders sind, daß ergibt ja noch Sinn, aber das ein Fenster extrem groß im Vergleich ist, daß versteh ich wirklich nicht.
Ein Pixel bleibt doch noch immer ein Pixel oder nicht ?
Da ich keine Anhang Funktion gefunden hab, hab ich die TrayIcons (einmal als png für Linux, und einmal als ico für Windoof) und das ogg Sound File gezippz und hier hochgeladen.
http://www27.zippyshare.com/v/VLtQqRMD/file.html
Also bevor weiter das Thema im Allgemein Forum völlig Offtopic gebracht wird mit dem Problem
das ich mit dem Code unter Linux hab, poste ich den Code halt hier
Hier die Windows Version vom Code. CPU Last praktisch nicht existent, Ram Verbrauch unter 32Bit OS 2-3MB, ich benutze das Tool so schon seit 8 Jahren, ohne jegliche Probleme.
Bitte Threadsafe aktivieren !
Code: Alles auswählen
Enumeration
#MainWin
#CloseB
#MinimizeB
#PNG
#BMP
#JPG
#TrackBar
#TrayOption
#MessageB
#OpenFolderAfterSave
#AskForName
#UseDate
#SetDefFolder
#DefFolderText
#TrayIcon
#IMG
#Sound
#AUTO
#AUTOAsk
EndEnumeration
own$=GetCurrentDirectory()
If CountString(own$,"\") < 2
MessageRequester(" Put me","in a Folder and start me again",#MB_OK)
End
EndIf
If FileSize(own$+"TrayIcon.ico") < 1500
MessageRequester(" Tray","icon (TrayIcon.ico) not found",#MB_OK)
End
EndIf
Global config_valid
Global sndwork
Global stop_supervise
Global supervise_run
Procedure CreateScreenshot()
pic = GetClipboardImage(#PB_Any)
If IsImage(pic)
If GetGadgetState(#AUTOAsk)
If supervise_run
If MessageRequester(" INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
ClearClipboard()
ProcedureReturn
EndIf
EndIf
EndIf
If GetGadgetState(#PNG)
fpattern$="png | *.png" : ext$=".png" : format=1
EndIf
If GetGadgetState(#BMP)
fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
EndIf
If GetGadgetState(#JPG)
fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
EndIf
If GetGadgetState(#AskForName)
fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
If fname$
fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
If FileSize(fname$) > 0
If MessageRequester(" Overwrite",fname$,#MB_YESNO) = #PB_MessageRequester_No
ClearClipboard()
ProcedureReturn
EndIf
EndIf
fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
fname$=fname$+ext$
Else
ClearClipboard()
ProcedureReturn
EndIf
Else
ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
default_output$=GetGadgetText(#DefFolderText)
If FileSize(default_output$) = -1
default_output$=GetHomeDirectory()
SetGadgetText(#DefFolderText,default_output$)
MessageRequester(" Error","Default Folder don´t exist, saved Image @ "+default_output$,#MB_OK)
ProcedureReturn
EndIf
fname$=default_output$+ff$+ext$ : fp$=default_output$
EndIf
If format=1
SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
ElseIf format=2
SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
ElseIf format=3
SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
EndIf
ClearClipboard()
ff$=GetFilePart(fname$)
If GetGadgetState(#MessageB)
MessageRequester(" OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#MB_OK)
Else
If sndwork
PlaySound(#Sound)
EndIf
EndIf
If GetGadgetState(#OpenFolderAfterSave)
RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
EndIf
EndIf
EndProcedure
Procedure SaveActiveSettings(Close)
If CreatePreferences(own$+"TurboImageGrabber.ini")
WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
xxx=GetGadgetState(#TrayOption)
WritePreferenceLong("tray start",xxx)
xxx$=GetGadgetText(#DefFolderText)
WritePreferenceString("default output",xxx$)
If GetGadgetState(#PNG)
WritePreferenceString("default format","0")
EndIf
If GetGadgetState(#BMP)
WritePreferenceString("default format","1")
EndIf
If GetGadgetState(#JPG)
WritePreferenceString("default format","2")
EndIf
If GetGadgetState(#AUTO)
WritePreferenceString("supervise","1")
EndIf
If GetGadgetState(#AUTOAsk)
WritePreferenceString("supervise_ask","1")
EndIf
xxx=GetGadgetState(#TrackBar)
WritePreferenceLong("jpg compression",xxx)
xxx=GetGadgetState(#OpenFolderAfterSave)
WritePreferenceLong("open target",xxx)
xxx=GetGadgetState(#MessageB)
WritePreferenceLong("save message",xxx)
xxx=GetGadgetState(#AskForName)
WritePreferenceLong("save as user input",xxx)
ClosePreferences()
If Close
End
EndIf
Else
If Close
If MessageRequester(" Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
End
EndIf
Else
MessageRequester(" Error","Can´t Create/Save Preference File (maybe no System Right's)",#MB_OK)
EndIf
EndIf
EndProcedure
Procedure WatchForClipBoardImage(bla)
supervise_run=1
Repeat
If stop_supervise
Break
EndIf
Delay(5)
CreateScreenshot()
ForEver
supervise_run=0
EndProcedure
Procedure InitSettings()
If config_valid = 0
SetGadgetState(#PNG,1)
SetGadgetState(#MessageB,1)
SetGadgetState(#AskForName,1)
default_output$="C:\"
SetGadgetText(#DefFolderText,default_output$)
Else
default_output$ = ReadPreferenceString("default output","C:\")
If FileSize(default_output$) = -2
SetGadgetText(#DefFolderText,default_output$)
Else
default_output$="C:\"
SetGadgetText(#DefFolderText,default_output$)
EndIf
default_format = ReadPreferenceLong("default format",0)
If default_format < 0 Or default_format > 2
SetGadgetState(#PNG,1)
Else
If default_format = 0
SetGadgetState(#PNG,1)
ElseIf default_format = 1
SetGadgetState(#BMP,1)
ElseIf default_format = 2
SetGadgetState(#JPG,1)
EndIf
EndIf
jpg_compression = ReadPreferenceLong("jpg compression",7)
If jpg_compression < 0 Or jpg_compression > 10
jpg_compression=7
EndIf
SetGadgetState(#TrackBar,jpg_compression)
save_message = ReadPreferenceLong("save message",0)
If save_message < 0 Or save_message > 1
SetGadgetState(#MessageB,0)
Else
SetGadgetState(#MessageB,save_message)
EndIf
open_target = ReadPreferenceLong("open target",0)
If open_target < 0 Or open_target > 1
SetGadgetState(#OpenFolderAfterSave,0)
Else
SetGadgetState(#OpenFolderAfterSave,open_target)
EndIf
save_as_user_input = ReadPreferenceLong("save as user input",1)
If save_as_user_input < 0 Or save_as_user_input > 1
SetGadgetState(#AskForName,1)
Else
If save_as_user_input
SetGadgetState(#AskForName,1)
Else
SetGadgetState(#AskForName,0)
SetGadgetState(#UseDate,1)
EndIf
EndIf
If ReadPreferenceLong("supervise_ask",0)
SetGadgetState(#AUTOAsk,1)
EndIf
If ReadPreferenceLong("supervise",0)
SetGadgetState(#AUTO,1)
CreateThread(@WatchForClipBoardImage(),0)
EndIf
EndIf
ClosePreferences()
EndProcedure
If FileSize(own$+"TurboImageGrabber.ini") = -1
CreateDef=1 : default_output$="C:\"
Else
If OpenPreferences(own$+"TurboImageGrabber.ini")
ini_key$ = ReadPreferenceString("key","")
ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
If ini_key_chk
config_valid=1
Else
MessageRequester(" No","valid Turbo Image Grabber ini File found",#MB_OK)
config_valid=0
EndIf
EndIf
EndIf
#window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
#window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
Title$=" Turbo Image Grabber"
bla=309
If config_valid = 0
OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
Else
open_in_tray = ReadPreferenceLong("tray start",0)
If open_in_tray < 0 Or open_in_tray > 1
OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
Else
If open_in_tray = 0
OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
ElseIf open_in_tray = 1
OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon2)
EndIf
EndIf
EndIf
AddSysTrayIcon(#TrayIcon,WindowID(#MainWin), LoadImage(#IMG, own$+"TrayIcon.ico"))
UseJPEGImageEncoder() : UsePNGImageEncoder()
If InitSound()
UseOGGSoundDecoder()
If LoadSound(#Sound,own$+"krapkrap.ogg")
sndwork=1
EndIf
EndIf
ButtonGadget(#CloseB,195,10,50,60,"Close Turbo Image Grabber",#PB_Button_MultiLine)
ButtonGadget(#MinimizeB,130,10,50,60,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
OptionGadget(#PNG,10,10,80,20,"Save as png")
OptionGadget(#BMP,10,30,85,20,"Save as bmp")
OptionGadget(#JPG,10,50,80,20,"Save as jpg")
TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
SetGadgetState(#TrackBar,7)
CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
If open_in_tray = 1
SetGadgetState(#TrayOption,1)
EndIf
CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
SetGadgetState(#MessageB,1)
CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
SetGadgetState(#AskForName,1)
CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly)
CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image | Supervise Clipboard")
CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
If CreateDef
SaveActiveSettings(0) : InitSettings()
Else
InitSettings()
EndIf
ExamineDesktops()
Repeat
WindowEvent = WaitWindowEvent() : EventGadget = EventGadget()
If WindowEvent = #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
CreateScreenshot() : SaveActiveSettings(0)
EndIf
If EventType() = #PB_EventType_LeftDoubleClick
HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
EndIf
If EventType() = #PB_EventType_RightDoubleClick
If MessageRequester(" Close Turbo Image Grabber","Are you sure ?",#MB_YESNO) = #PB_MessageRequester_Yes
SaveActiveSettings(1)
EndIf
EndIf
EndIf
If WindowEvent = #PB_Event_Gadget
If EventGadget = #CloseB
If MessageRequester(" Close Turbo Image Grabber","Are you sure ?",#MB_YESNO) = #PB_MessageRequester_Yes
SaveActiveSettings(1)
EndIf
EndIf
If EventGadget = #MinimizeB
CreateScreenshot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
EndIf
If EventGadget = #AskForName
If GetGadgetState(#AskForName)
SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
Else
SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
EndIf
EndIf
If EventGadget = #UseDate
If GetGadgetState(#UseDate)
SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
Else
SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
EndIf
EndIf
If EventGadget = #AUTO
If GetGadgetState(#AUTO)
stop_supervise=0
CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
Else
SetGadgetState(#AUTO,0) : stop_supervise=1
EndIf
EndIf
If EventGadget = #SetDefFolder
If FileSize(default_output$) <> -2
default_output$="C:\"
EndIf
default_output$=PathRequester("Choose Default Output Path",default_output$)
If default_output$
SetGadgetText(#DefFolderText,default_output$)
SaveActiveSettings(0)
EndIf
EndIf
EndIf
If WindowEvent = #PB_Event_CloseWindow
CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
EndIf
ForEver
Jetzt der angepasste Code unter Linux (benutze Debian 8 Jessie, xfce, gtk)
Auch hier Bitte Threadsafe aktivieren.
Code: Alles auswählen
Enumeration
#MainWin
#CloseB
#MinimizeB
#PNG
#BMP
#JPG
#TrackBar
#TrayOption
#MessageB
#OpenFolderAfterSave
#AskForName
#UseDate
#SetDefFolder
#DefFolderText
#TrayIcon
#IMG
#Sound
#AUTO
#AUTOAsk
EndEnumeration
own$=GetCurrentDirectory()
If CountString(own$,"/") < 2
MessageRequester(" Put me","in a extra Folder and start me again",#PB_MessageRequester_Ok)
End
EndIf
If FileSize(own$+"trayicon.png") < 650
MessageRequester(" Tray","icon (trayicon.png) not found",#PB_MessageRequester_Ok)
End
EndIf
Global config_valid
Global sndwork
Global stop_supervise
Global supervise_run
Procedure CreateScreenShot()
pic = GetClipboardImage(#PB_Any)
If IsImage(pic)
If GetGadgetState(#AUTOAsk)
If supervise_run
If MessageRequester(" INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
ClearClipboard()
ProcedureReturn
EndIf
EndIf
EndIf
If GetGadgetState(#PNG)
fpattern$="png | *.png" : ext$=".png" : format=1
EndIf
If GetGadgetState(#BMP)
fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
EndIf
If GetGadgetState(#JPG)
fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
EndIf
If GetGadgetState(#AskForName)
fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
If fname$
fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
If FileSize(fname$) > 0
If MessageRequester(" Overwrite",fname$,#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
ClearClipboard()
ProcedureReturn
EndIf
EndIf
fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
fname$=fname$+ext$
Else
ClearClipboard()
ProcedureReturn
EndIf
Else
ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
default_output$=GetGadgetText(#DefFolderText)
If FileSize(default_output$) = -1
default_output$=GetHomeDirectory()
SetGadgetText(#DefFolderText,default_output$)
MessageRequester(" Error","Default Folder don´t exist, saved Image @ "+default_output$,#PB_MessageRequester_Ok)
ProcedureReturn
EndIf
fname$=default_output$+ff$+ext$ : fp$=default_output$
EndIf
If format=1
SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
ElseIf format=2
SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
ElseIf format=3
SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
EndIf
ClearClipboard()
ff$=GetFilePart(fname$)
If GetGadgetState(#MessageB)
MessageRequester(" OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#PB_MessageRequester_Ok)
Else
If sndwork
PlaySound(#Sound)
EndIf
EndIf
If GetGadgetState(#OpenFolderAfterSave)
RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
EndIf
EndIf
EndProcedure
Procedure SaveActiveSettings(Close)
If CreatePreferences(own$+"TurboImageGrabber.ini")
WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
xxx=GetGadgetState(#TrayOption)
WritePreferenceLong("tray start",xxx)
xxx$=GetGadgetText(#DefFolderText)
WritePreferenceString("default output",xxx$)
If GetGadgetState(#PNG)
WritePreferenceString("default format","0")
EndIf
If GetGadgetState(#BMP)
WritePreferenceString("default format","1")
EndIf
If GetGadgetState(#JPG)
WritePreferenceString("default format","2")
EndIf
If GetGadgetState(#AUTO)
WritePreferenceString("supervise","1")
EndIf
If GetGadgetState(#AUTOAsk)
WritePreferenceString("supervise_ask","1")
EndIf
xxx=GetGadgetState(#TrackBar)
WritePreferenceLong("jpg compression",xxx)
xxx=GetGadgetState(#OpenFolderAfterSave)
WritePreferenceLong("open target",xxx)
xxx=GetGadgetState(#MessageB)
WritePreferenceLong("save message",xxx)
xxx=GetGadgetState(#AskForName)
WritePreferenceLong("save as user input",xxx)
ClosePreferences()
If Close
End
EndIf
Else
If Close
If MessageRequester(" Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
End
EndIf
Else
MessageRequester(" Error","Can´t Create/Save Preference File (maybe no System Right's)",#PB_MessageRequester_Ok)
EndIf
EndIf
EndProcedure
Procedure WatchForClipBoardImage(bla)
supervise_run=1
Repeat
If stop_supervise
Break
EndIf
Delay(500)
CreateScreenShot()
ForEver
supervise_run=0
EndProcedure
Procedure InitSettings()
If config_valid = 0
SetGadgetState(#PNG,1)
SetGadgetState(#MessageB,1)
SetGadgetState(#AskForName,1)
default_output$="~/"
SetGadgetText(#DefFolderText,default_output$)
Else
default_output$ = ReadPreferenceString("default output","~/")
If FileSize(default_output$) = -2
SetGadgetText(#DefFolderText,default_output$)
Else
default_output$="~/"
SetGadgetText(#DefFolderText,default_output$)
EndIf
default_format = ReadPreferenceLong("default format",0)
If default_format < 0 Or default_format > 2
SetGadgetState(#PNG,1)
Else
If default_format = 0
SetGadgetState(#PNG,1)
ElseIf default_format = 1
SetGadgetState(#BMP,1)
ElseIf default_format = 2
SetGadgetState(#JPG,1)
EndIf
EndIf
jpg_compression = ReadPreferenceLong("jpg compression",7)
If jpg_compression < 0 Or jpg_compression > 10
jpg_compression=7
EndIf
SetGadgetState(#TrackBar,jpg_compression)
save_message = ReadPreferenceLong("save message",0)
If save_message < 0 Or save_message > 1
SetGadgetState(#MessageB,0)
Else
SetGadgetState(#MessageB,save_message)
EndIf
open_target = ReadPreferenceLong("open target",0)
If open_target < 0 Or open_target > 1
SetGadgetState(#OpenFolderAfterSave,0)
Else
SetGadgetState(#OpenFolderAfterSave,open_target)
EndIf
save_as_user_input = ReadPreferenceLong("save as user input",1)
If save_as_user_input < 0 Or save_as_user_input > 1
SetGadgetState(#AskForName,1)
Else
If save_as_user_input
SetGadgetState(#AskForName,1)
Else
SetGadgetState(#AskForName,0)
SetGadgetState(#UseDate,1)
EndIf
EndIf
If ReadPreferenceLong("supervise_ask",0)
SetGadgetState(#AUTOAsk,1)
EndIf
If ReadPreferenceLong("supervise",0)
SetGadgetState(#AUTO,1)
CreateThread(@WatchForClipBoardImage(),0)
EndIf
EndIf
ClosePreferences()
EndProcedure
If FileSize(own$+"TurboImageGrabber.ini") = -1
CreateDef=1 : default_output$="~/"
Else
If OpenPreferences(own$+"TurboImageGrabber.ini")
ini_key$ = ReadPreferenceString("key","")
ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
If ini_key_chk
config_valid=1
Else
MessageRequester(" No","valid Turbo Image Grabber ini File found",#PB_MessageRequester_Ok)
config_valid=0
EndIf
EndIf
EndIf
#window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
#window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
title$=" Turbo Image Grabber"
;bla1=255 anscheinend sind unter Linux Pixel anders, das fenster ist bei Selber Monitor Auflösung
;deutlich größer als unter Windows mit selber Auflösung
bla1=350
;bla2=309
bla2=350
If config_valid = 0
OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
Else
open_in_tray = ReadPreferenceLong("tray start",0)
If open_in_tray < 0 Or open_in_tray > 1
OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
Else
If open_in_tray = 0
OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
ElseIf open_in_tray = 1
OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon2)
EndIf
EndIf
EndIf
UseJPEGImageEncoder() : UsePNGImageEncoder() : UsePNGImageDecoder()
AddSysTrayIcon(#TrayIcon,WindowID(#MainWin),LoadImage(#IMG,own$+"trayicon.png"))
If InitSound()
UseOGGSoundDecoder()
If LoadSound(#Sound,own$+"krapkrap.ogg")
sndwork=1
EndIf
EndIf
ButtonGadget(#CloseB,195,10,50,60,"Close Turbo Image Grabber",#PB_Button_MultiLine)
ButtonGadget(#MinimizeB,130,10,50,60,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
OptionGadget(#PNG,10,10,80,20,"Save as png")
OptionGadget(#BMP,10,30,85,20,"Save as bmp")
OptionGadget(#JPG,10,50,80,20,"Save as jpg")
TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
SetGadgetState(#TrackBar,7)
CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
If open_in_tray = 1
SetGadgetState(#TrayOption,1)
EndIf
CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
SetGadgetState(#MessageB,1)
CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
SetGadgetState(#AskForName,1)
CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly)
CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image | Supervise Clipboard")
CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
If CreateDef
SaveActiveSettings(0) : InitSettings()
Else
InitSettings()
EndIf
ExamineDesktops()
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
CreateScreenShot() : SaveActiveSettings(0)
EndIf
If EventType() = #PB_EventType_LeftDoubleClick
HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
EndIf
If EventType() = #PB_EventType_RightDoubleClick
If MessageRequester(" Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
SaveActiveSettings(1)
EndIf
EndIf
EndIf
If WindowEvent = #PB_Event_Gadget
EventGadget = EventGadget()
If EventGadget = #CloseB
If MessageRequester(" Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
SaveActiveSettings(1)
EndIf
EndIf
If EventGadget = #MinimizeB
CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
EndIf
If EventGadget = #AskForName
If GetGadgetState(#AskForName)
SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
Else
SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
EndIf
EndIf
If EventGadget = #UseDate
If GetGadgetState(#UseDate)
SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
Else
SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
EndIf
EndIf
If EventGadget = #AUTO
If GetGadgetState(#AUTO)
stop_supervise=0
CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
Else
SetGadgetState(#AUTO,0) : stop_supervise=1
EndIf
EndIf
If EventGadget = #SetDefFolder
If FileSize(default_output$) <> -2
default_output$="~/"
EndIf
default_output$=PathRequester("Choose Default Output Path",default_output$)
If default_output$
SetGadgetText(#DefFolderText,default_output$)
SaveActiveSettings(0)
EndIf
EndIf
EndIf
If WindowEvent = #PB_Event_CloseWindow
CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
EndIf
ForEver
Ich bin völlig überfragt !
1) Wieso so ein abartiger Ram Verbrauch im Vergleich zu Windoof ?
2) Wieso reicht bei Windoof Delay(5) und bei Werten unter 50 krieg ich massive GTK Fehlermeldungen ?
3) Wieso ist die CPU Auslastung praktisch nicht existent, wie unter Windoof ?
4) Warum friert es ein, weil so etwas banales passiert, wie das verlassen einer Schleife die in einem Thread ist ?
5) Was soll diese komische Meldung wenn mann das Tool beendet ?
Code: Alles auswählen
[14:11:04] [WARNING] Gtk (MESSAGE): GtkDialog mapped without a transient parent. This is discouraged.
[14:11:12] Die Programmausführung ist abgeschlossen.
von 255W hab und 309H, und unter Windows ist es unter 1024x768, schön kompakt wie es sein soll.
Ja das die Default Font Schriftgrößen unter Xfce anders sind, daß ergibt ja noch Sinn, aber das ein Fenster extrem groß im Vergleich ist, daß versteh ich wirklich nicht.
Ein Pixel bleibt doch noch immer ein Pixel oder nicht ?
Da ich keine Anhang Funktion gefunden hab, hab ich die TrayIcons (einmal als png für Linux, und einmal als ico für Windoof) und das ogg Sound File gezippz und hier hochgeladen.
http://www27.zippyshare.com/v/VLtQqRMD/file.html