diff --git a/bin/gwinwrap-0-0-1-x64.deb b/bin/gwinwrap-0-0-1-x64.deb index fb8b0fe..991b8b6 100644 Binary files a/bin/gwinwrap-0-0-1-x64.deb and b/bin/gwinwrap-0-0-1-x64.deb differ diff --git a/images/pic5.png b/images/pic5.png index a698a49..67fd734 100644 Binary files a/images/pic5.png and b/images/pic5.png differ diff --git a/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py b/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py old mode 100644 new mode 100755 index c0c8f85..d5d95d2 --- a/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py +++ b/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import os, cairo, sys, gi, re, threading, subprocess, hashlib +import os, cairo, sys, gi, re, threading, subprocess, hashlib, signal, time gi.require_version('Gtk', '3.0') gi.require_version('Gdk', '3.0') @@ -18,27 +18,18 @@ gdk.threads_init() class GWinWrap: def __init__(self): - self.builder = gtk.Builder() + self.builder = gtk.Builder() self.builder.add_from_file("resources/GWinWrap.glade") + self.builder.connect_signals(self) # Get window and connect signals - self.window = self.builder.get_object("Main") - self.builder.connect_signals(self) - self.window.connect("delete-event", gtk.main_quit) - self.screen = self.window.get_screen() - self.visual = self.screen.get_rgba_visual() - if self.visual != None and self.screen.is_composited(): - self.window.set_visual(self.visual) + self.stateSaver = SaveStateToXWinWarp() + self.sttngsSver = SaveGWinWrapSettings() + window = self.builder.get_object("Main") + monitors = self.setWindowData(window) + window.connect("delete-event", gtk.main_quit) - self.window.set_app_paintable(True) - self.window.connect("draw", self.area_draw) - - # bind css file - cssProvider = gtk.CssProvider() - cssProvider.load_from_path('resources/stylesheet.css') - screen = gdk.Screen.get_default() - styleContext = gtk.StyleContext() - styleContext.add_provider_for_screen(screen, cssProvider, gtk.STYLE_PROVIDER_PRIORITY_USER) + print(monitors[1]) # Add filter to allow only folders to be selected dialog = self.builder.get_object("selectedDirDialog") @@ -46,10 +37,7 @@ class GWinWrap: dialog.add_filter(filefilter) # Get reference to remove and add it back... - self.gridLabel = self.builder.get_object("gridLabel") - - self.stateSaver = SaveStateToXWinWarp() - self.sttngsSver = SaveGWinWrapSettings() + self.gridLabel = self.builder.get_object("gridLabel") self.focusedImg = gtk.Image() self.usrHome = os.path.expanduser('~') @@ -80,10 +68,28 @@ class GWinWrap: self.defPath = None self.player = None self.imgVwr = None + self.xScrnDemoPid = None self.retrieveSettings() - self.window.show() + window.show() + def setWindowData(self, window): + screen = window.get_screen() + visual = screen.get_rgba_visual() + if visual != None and screen.is_composited(): + window.set_visual(visual) + + window.set_app_paintable(True) + window.connect("draw", self.area_draw) + + # bind css file + cssProvider = gtk.CssProvider() + cssProvider.load_from_path('resources/stylesheet.css') + screen = gdk.Screen.get_default() + styleContext = gtk.StyleContext() + styleContext.add_provider_for_screen(screen, cssProvider, gtk.STYLE_PROVIDER_PRIORITY_USER) + + return self.getMonitorData(screen) def area_draw(self, widget, cr): cr.set_source_rgba(0, 0, 0, 0.64) @@ -91,7 +97,18 @@ class GWinWrap: cr.paint() cr.set_operator(cairo.OPERATOR_OVER) + def getMonitorData(self, screen): + monitors = [] + wxhxny = [] + for m in range(screen.get_n_monitors()): + monitors.append(screen.get_monitor_geometry(m)) + + wxhxny.append(monitors) + for monitor in monitors: + wxhxny.append(str(monitor.width) + "x" + str(monitor.height) + "+" + str(monitor.x) + "+" + str(monitor.y)) + + return wxhxny def setNewDir(self, widget, data=None): @@ -125,7 +142,7 @@ class GWinWrap: if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm')): fileHash = hashlib.sha256(str.encode(fullPathFile)).hexdigest() hashImgpth = self.usrHome + "/.thumbnails/normal/" + fileHash + ".png" - if os.path.isfile(hashImgpth) == False: + if isfile(hashImgpth) == False: self.generateThumbnail(fullPathFile, hashImgpth) thumbnl = self.createGtkImage(hashImgpth, [310, 310]) @@ -219,11 +236,11 @@ class GWinWrap: def mouseOver(self, widget, eve, args): hand_cursor = gdk.Cursor(gdk.CursorType.HAND2) - self.window.get_window().set_cursor(hand_cursor) + self.builder.get_object("Main").get_window().set_cursor(hand_cursor) def mouseOut(self, widget, eve, args): watch_cursor = gdk.Cursor(gdk.CursorType.LEFT_PTR) - self.window.get_window().set_cursor(watch_cursor) + self.builder.get_object("Main").get_window().set_cursor(watch_cursor) def toggleXscreenUsageField(self, widget, data=None): useXscreenSaver = self.builder.get_object("useXScrnList") @@ -291,8 +308,30 @@ class GWinWrap: def previewXscreen(self, widget, eve): if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: - preview = self.xscrPth + "/" + self.xScreenVal + "&" - os.system(preview) + # Must be actualized before getting window + demoWindow = self.builder.get_object("xScrnPreviewPopWindow") + self.helpLabel.set_markup("") + + if self.xScrnDemoPid: + os.kill(self.xScrnDemoPid, signal.SIGTERM) #or signal.SIGKILL + self.xScrnDemoPid = None + + if demoWindow.get_visible() == False: + demoWindow.show_all() + demoWindow.popup() + + time.sleep(.800) # 800 mili-seconds to ensure first process dead + xScreenPreview = self.builder.get_object("xScreenPreview") + demoXscrnSaver = self.xscrPth + self.xScreenVal + window = xScreenPreview.get_window() + xid = window.get_xid() + process = subprocess.Popen([demoXscrnSaver, "-window-id", str(xid)]) + self.xScrnDemoPid = process.pid + + def closeDemoWindow(self, widget, data=None): + self.builder.get_object("xScrnPreviewPopWindow").popdown() + os.kill(self.xScrnDemoPid, signal.SIGTERM) #or signal.SIGKILL + self.xScrnDemoPid = None def clearSelection(self, widget, data=None): self.clear() diff --git a/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade b/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade index 671cdbc..ad17b15 100644 --- a/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade +++ b/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade @@ -115,12 +115,10 @@ True False - False Chose Dream Scene / Image Directory select-folder False Folders - False Dream Scene / Image Dir @@ -629,7 +627,6 @@ True True True - closePopupImage True @@ -817,4 +814,69 @@ + + 640 + 525 + False + 350 + True + True + helpLabel + bottom + False + + + True + False + vertical + + + True + False + + + True + True + True + Close XScreenSaver Demo Window + closePopupImage + True + + + + False + True + end + 0 + + + + + False + True + 0 + + + + + True + False + 0 + none + + + True + False + + + + + True + True + 1 + + + + + diff --git a/src/versions/0.0.1/GWinWrap/GWinWrap.py b/src/versions/0.0.1/GWinWrap/GWinWrap.py index 2a7fa52..d5d95d2 100755 --- a/src/versions/0.0.1/GWinWrap/GWinWrap.py +++ b/src/versions/0.0.1/GWinWrap/GWinWrap.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -import os, cairo, sys, gi, re, threading, subprocess, hashlib +import os, cairo, sys, gi, re, threading, subprocess, hashlib, signal, time gi.require_version('Gtk', '3.0') gi.require_version('Gdk', '3.0') @@ -68,6 +68,7 @@ class GWinWrap: self.defPath = None self.player = None self.imgVwr = None + self.xScrnDemoPid = None self.retrieveSettings() window.show() @@ -307,8 +308,30 @@ class GWinWrap: def previewXscreen(self, widget, eve): if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: - preview = self.xscrPth + "/" + self.xScreenVal + "&" - os.system(preview) + # Must be actualized before getting window + demoWindow = self.builder.get_object("xScrnPreviewPopWindow") + self.helpLabel.set_markup("") + + if self.xScrnDemoPid: + os.kill(self.xScrnDemoPid, signal.SIGTERM) #or signal.SIGKILL + self.xScrnDemoPid = None + + if demoWindow.get_visible() == False: + demoWindow.show_all() + demoWindow.popup() + + time.sleep(.800) # 800 mili-seconds to ensure first process dead + xScreenPreview = self.builder.get_object("xScreenPreview") + demoXscrnSaver = self.xscrPth + self.xScreenVal + window = xScreenPreview.get_window() + xid = window.get_xid() + process = subprocess.Popen([demoXscrnSaver, "-window-id", str(xid)]) + self.xScrnDemoPid = process.pid + + def closeDemoWindow(self, widget, data=None): + self.builder.get_object("xScrnPreviewPopWindow").popdown() + os.kill(self.xScrnDemoPid, signal.SIGTERM) #or signal.SIGKILL + self.xScrnDemoPid = None def clearSelection(self, widget, data=None): self.clear() diff --git a/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade b/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade index bcbb44a..ad17b15 100644 --- a/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade +++ b/src/versions/0.0.1/GWinWrap/resources/GWinWrap.glade @@ -627,7 +627,6 @@ True True True - closePopupImage True @@ -815,4 +814,69 @@ + + 640 + 525 + False + 350 + True + True + helpLabel + bottom + False + + + True + False + vertical + + + True + False + + + True + True + True + Close XScreenSaver Demo Window + closePopupImage + True + + + + False + True + end + 0 + + + + + False + True + 0 + + + + + True + False + 0 + none + + + True + False + + + + + True + True + 1 + + + + + diff --git a/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveGWinWrapSettings.cpython-36.pyc b/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveGWinWrapSettings.cpython-36.pyc deleted file mode 100644 index 23ecc42..0000000 Binary files a/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveGWinWrapSettings.cpython-36.pyc and /dev/null differ diff --git a/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveStateToXWinWarp.cpython-36.pyc b/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveStateToXWinWarp.cpython-36.pyc deleted file mode 100644 index 638f235..0000000 Binary files a/src/versions/0.0.1/GWinWrap/utils/__pycache__/SaveStateToXWinWarp.cpython-36.pyc and /dev/null differ diff --git a/src/versions/0.0.1/GWinWrap/utils/__pycache__/__init__.cpython-36.pyc b/src/versions/0.0.1/GWinWrap/utils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index b2f720f..0000000 Binary files a/src/versions/0.0.1/GWinWrap/utils/__pycache__/__init__.cpython-36.pyc and /dev/null differ