changes by ssb
This commit is contained in:
parent
01d23d5e6e
commit
d6f44ddf73
|
@ -171,11 +171,11 @@ class RemoteData:
|
|||
ui.showInfo("Die Daten werden geladen:",True)
|
||||
#print("download to %s" % self.localZIP)
|
||||
with open(self.localZIP, "wb") as zipped:
|
||||
for chunk in r.iter_content(chunk_size = 4096):
|
||||
for chunk in r.iter_content(chunk_size = 4*1024):
|
||||
if chunk:
|
||||
zipped.write(chunk)
|
||||
length += len(chunk)
|
||||
ui.showInfo("Daten werden geladen: %d kB" % (length/1024))
|
||||
ui.showInfo("Daten werden geladen: %d kB" % (length/1024), _clear = True)
|
||||
#print("%d kB" % (length/1024), end="\r")
|
||||
ui.showInfo("Daten wurden erfolgreich geladen: %d kB" % (length/1024))
|
||||
time.sleep(1)
|
||||
|
@ -235,6 +235,9 @@ class WatchTime():
|
|||
return t['h'] * 60 + t['m']
|
||||
|
||||
def checkNTPClock(self):
|
||||
if sys.platform.startswith('darwin') or sys.platform.startswith('win'):
|
||||
# on macOS and WIndows timedatectl is not available, we assume the clock is sync'ed
|
||||
self.synced = True
|
||||
if self.synced != True:
|
||||
# timedatectl show tells me, if the clock is synchronized via NTP
|
||||
for line in subprocess.check_output(["timedatectl","show"]).split():
|
||||
|
@ -427,19 +430,37 @@ class Mediafile:
|
|||
img.save(filename)
|
||||
w,h = img.size
|
||||
img.close()
|
||||
subname = os.path.basename(filename).split('.')[0]
|
||||
if '_#s' in subname:
|
||||
duration = int(subname.split('_#s')[-1])
|
||||
if duration > 0:
|
||||
self.duration = duration*1000
|
||||
self.valid = True
|
||||
if DEBUG_PREVIEW == True:
|
||||
print("image file: "+os.path.basename(filename)+"(%d"%w+"x%d)"%h, "resized:",resize)
|
||||
if self.duration == 0:
|
||||
print("Bild Datei: "+os.path.basename(filename)+" (%d"%w+"x%d)"%h,
|
||||
"skaliert:",int(resize), "Dauer: standard")
|
||||
else:
|
||||
print("Bild Datei: "+os.path.basename(filename)+" (%d"%w+"x%d)"%h,
|
||||
"skaliert:",int(resize), "Dauer: %d Sekunden" % (self.duration/1000))
|
||||
elif extension in movie_extensions:
|
||||
media = caller.instance.media_new(filename)
|
||||
media.parse()
|
||||
self.duration = media.get_duration()
|
||||
self.valid = True
|
||||
if DEBUG_PREVIEW == True:
|
||||
print("movie file: "+os.path.basename(filename)+ " (%d Sekunden)"%(self.duration/1000))
|
||||
print("Film Datei: "+os.path.basename(filename)+ " (Dauer %d Sekunden)"%(self.duration/1000))
|
||||
else:
|
||||
print("unknwon file type: "+os.path.basename(filename))
|
||||
print("unbekannte Datei: "+os.path.basename(filename))
|
||||
|
||||
if sys.platform.startswith('darwin'):
|
||||
from ctypes import c_void_p, cdll
|
||||
dylib = cdll.LoadLibrary('libtk8.6.dylib')
|
||||
_GetNSView = dylib.TkMacOSXGetRootControl
|
||||
_GetNSView.restype = c_void_p
|
||||
_GetNSView.argtypes = (c_void_p,)
|
||||
# print(_GetNSView)
|
||||
del dylib
|
||||
|
||||
class MySlideShow(tk.Toplevel):
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
@ -448,6 +469,7 @@ class MySlideShow(tk.Toplevel):
|
|||
self.overrideredirect(True)
|
||||
self.info = None
|
||||
self.infoText = tk.StringVar()
|
||||
self.infoText.set('')
|
||||
#by default info widget is hidden
|
||||
self.infoHidden = True
|
||||
self.bg = (0,0,0)
|
||||
|
@ -461,25 +483,31 @@ class MySlideShow(tk.Toplevel):
|
|||
#set the geometry of the playback window
|
||||
self.scr_w, self.scr_h = self.winfo_screenwidth(), self.winfo_screenheight()
|
||||
if DEBUG_PREVIEW == None or DEBUG_PREVIEW == True:
|
||||
self.scr_w = int(self.scr_w / 4)
|
||||
self.scr_h = int(self.scr_h / 4)
|
||||
self.scr_t = self.scr_h*3 - 10
|
||||
self.scr_l = self.scr_w*3 - 10
|
||||
self.font = "Courier 8"
|
||||
self.scr_w = int(self.scr_w / 3.0)
|
||||
self.scr_h = int(self.scr_w * 9.0 / 16.0)
|
||||
self.scr_t = self.winfo_screenheight() - self.scr_h - 10
|
||||
self.scr_l = self.winfo_screenwidth() - self.scr_w - 10
|
||||
self.font = "Courier 10"
|
||||
else:
|
||||
self.scr_t = 0
|
||||
self.scr_l = 0
|
||||
self.font = "Courier 12"
|
||||
# hide the mouse cursor if not in debug mode
|
||||
self.config(cursor="none")
|
||||
self.wm_attributes('-fullscreen',True)
|
||||
self.wm_attributes('-topmost', True)
|
||||
emptyMenu = tk.Menu(self)
|
||||
self['menu'] = None
|
||||
emptyMenu.delete(0,tk.END)
|
||||
|
||||
#This creates the widget where files are played back
|
||||
self.player = None
|
||||
self.videopanel = tk.Frame(self, bg="black")
|
||||
self.videopanel.pack(side="top",fill=tk.BOTH,expand=1)
|
||||
self.videopanel.update_idletasks()
|
||||
|
||||
#VLC player init
|
||||
self.instance = vlc.Instance("--no-xlib --quiet --fullscreen --")
|
||||
self.instance = vlc.Instance("--quiet --fullscreen --")
|
||||
self.player = self.instance.media_player_new()
|
||||
self.player.video_set_scale(0)
|
||||
#self.player.video_set_aspect_ratio('16:9')
|
||||
|
@ -489,7 +517,18 @@ class MySlideShow(tk.Toplevel):
|
|||
|
||||
#setup the window
|
||||
self.wm_geometry("{}x{}+{}+{}".format(self.scr_w, self.scr_h,self.scr_l,self.scr_t))
|
||||
# different platforms require different assignment below
|
||||
if sys.platform.startswith('linux'):
|
||||
self.player.set_xwindow(self.GetHandle()) # this line messes up windows
|
||||
elif sys.platform.startswith('darwin'):
|
||||
# print(_GetNSView(self.GetHandle()))
|
||||
self.player.set_nsobject(_GetNSView(self.GetHandle()))
|
||||
elif sys.platform.startswith('win'):
|
||||
self.player.set_hwnd(self.GetHandle()) # should work on windows
|
||||
else:
|
||||
print( "Unbekannte Platform (%s), das Skript wird abgebrochen:" % sys.platform )
|
||||
exit(-1)
|
||||
|
||||
|
||||
#some brief internal initializers
|
||||
self.mediaList = list()
|
||||
|
@ -511,21 +550,31 @@ class MySlideShow(tk.Toplevel):
|
|||
# This creates an info widget
|
||||
if self.infoHidden == True or self.info == None:
|
||||
self.infoHidden = False
|
||||
self.info = tk.Label(self, bg="#00FF44", font=self.font, height=-1, width=-1, textvariable=self.infoText, wraplength=self.scr_w-16)
|
||||
self.info.place(x=8,y=6)
|
||||
self.info = tk.Label(self, bg="#2F6B1A", font=self.font, height=-1, width=-1, textvariable=self.infoText, wraplength=self.scr_w-16)
|
||||
self.info.place(x=16,y=32)
|
||||
else:
|
||||
self.infoHidden = True
|
||||
self.info.destroy()
|
||||
self.info = None
|
||||
|
||||
|
||||
def showInfo(self,_text,_force=False):
|
||||
def showInfo(self,_text,_force=False,_clear=False):
|
||||
if self.infoHidden == True and _force == True:
|
||||
self.toggleInfo()
|
||||
self.infoText.set(_text)
|
||||
if len(_text.strip()) == 0:
|
||||
return
|
||||
if _clear == True:
|
||||
lines = []
|
||||
else:
|
||||
lines = self.infoText.get().strip().split('\n')
|
||||
if len(lines) > 18:
|
||||
lines = lines[1:]
|
||||
lines.append(_text.strip())
|
||||
self.infoText.set('\n'.join(lines).strip())
|
||||
self.update()
|
||||
|
||||
def hideInfo(self):
|
||||
self.infoText.set('')
|
||||
if self.infoHidden == False:
|
||||
self.toggleInfo()
|
||||
|
||||
|
@ -650,7 +699,11 @@ readConfig()
|
|||
|
||||
try:
|
||||
slideShow = HiddenRoot()
|
||||
except:
|
||||
except Exception as e:
|
||||
if hasattr(e, 'message'):
|
||||
print(e.message)
|
||||
else:
|
||||
print(e)
|
||||
print("Es ist ein Tcl-Fehler aufgetreten. Das Skript muss im Desktop-Modus gestartet werden.")
|
||||
exit(0)
|
||||
timedEvents = WatchTime()
|
||||
|
|
Loading…
Reference in a new issue