From cf4411e7aefc882a8df8b1e60d58f6c9510a8a85 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Mon, 24 Jan 2022 00:12:59 -0600 Subject: [PATCH] Re-added deb build pipe --- src/debs/gwinwrap-0-0-2-x64/DEBIAN/control | 8 + src/debs/gwinwrap-0-0-2-x64/DEBIAN/postrm | 15 + src/debs/gwinwrap-0-0-2-x64/bin/gwinwrap | Bin 0 -> 6168 bytes src/debs/gwinwrap-0-0-2-x64/bin/xwinwrap | Bin 0 -> 22603 bytes .../opt/GWinWrap/__builtins__.py | 73 ++ .../opt/GWinWrap/__init__.py | 50 + .../opt/GWinWrap/__main__.py | 39 + .../gwinwrap-0-0-2-x64/opt/GWinWrap/gwinwrap | Bin 0 -> 6168 bytes .../opt/GWinWrap/signal_classes/Controller.py | 151 +++ .../signal_classes/Controller_Data.py | 102 ++ .../GWinWrap/signal_classes/IPCServerMixin.py | 64 ++ .../signal_classes/SaveGWinWrapSettings.py | 49 + .../signal_classes/SaveStateToXWinWarp.py | 68 ++ .../opt/GWinWrap/signal_classes/__init__.py | 9 + .../signal_classes/mixins/DrawAreaMixin.py | 59 ++ .../signal_classes/mixins/GridMixin.py | 116 +++ .../signal_classes/mixins/ImageViewerMixin.py | 34 + .../signal_classes/mixins/ThumbnailMixin.py | 56 ++ .../signal_classes/mixins/__init__.py | 4 + .../opt/GWinWrap/utils/Logger.py | 56 ++ .../opt/GWinWrap/utils/Settings.py | 112 +++ .../opt/GWinWrap/utils/__init__.py | 6 + .../usr/share/doc/gwinwrap/copyright | 22 + .../usr/share/gwinwrap/Main_Window.glade | 882 ++++++++++++++++++ .../usr/share/gwinwrap/icons/dir.png | Bin 0 -> 850 bytes .../usr/share/gwinwrap/icons/gwinwrap.png | Bin 0 -> 9278 bytes .../usr/share/gwinwrap/icons/picture.png | Bin 0 -> 6591 bytes .../usr/share/gwinwrap/icons/video.png | Bin 0 -> 1313 bytes .../usr/share/gwinwrap/settings.json | 9 + .../usr/share/gwinwrap/stylesheet.css | 86 ++ 30 files changed, 2070 insertions(+) create mode 100644 src/debs/gwinwrap-0-0-2-x64/DEBIAN/control create mode 100755 src/debs/gwinwrap-0-0-2-x64/DEBIAN/postrm create mode 100755 src/debs/gwinwrap-0-0-2-x64/bin/gwinwrap create mode 100755 src/debs/gwinwrap-0-0-2-x64/bin/xwinwrap create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__builtins__.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__init__.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__main__.py create mode 100755 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/gwinwrap create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller_Data.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/IPCServerMixin.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveGWinWrapSettings.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveStateToXWinWarp.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/__init__.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/DrawAreaMixin.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/GridMixin.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ImageViewerMixin.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ThumbnailMixin.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/__init__.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Logger.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Settings.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/__init__.py create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/doc/gwinwrap/copyright create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/Main_Window.glade create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/dir.png create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/gwinwrap.png create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/picture.png create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/video.png create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/settings.json create mode 100644 src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/stylesheet.css diff --git a/src/debs/gwinwrap-0-0-2-x64/DEBIAN/control b/src/debs/gwinwrap-0-0-2-x64/DEBIAN/control new file mode 100644 index 0000000..ecb249e --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/DEBIAN/control @@ -0,0 +1,8 @@ +Package: gwinwrap64 +Version: 0.0-2 +Section: python +Priority: optional +Architecture: amd64 +Depends: ffmpegthumbnailer (>= 2.0.10-0.1), mplayer (>=2.0-728-g2c378c7-4), gifsicle (>=1.86-1), nitrogen (>=1.5.2-2), xscreensaver (>=5.36-1ubuntu1), xscreensaver-gl (>=5.36-1ubuntu1), xscreensaver-gl-extra (>=5.36-1ubuntu1), xscreensaver-screensaver-dizzy (>=0.3-3), xscreensaver-screensaver-bsod (>=5.36-1ubuntu1), xscreensaver-data (>=5.36-1ubuntu1), xscreensaver-data-extra (>=5.36-1ubuntu1), xscreensaver-screensaver-webcollage (>=5.36-1ubuntu1) +Maintainer: Maxim Stewart <1itdominator@gmail.com> +Description: GWinWrap is a GUI to handle setting XWinWrap options. diff --git a/src/debs/gwinwrap-0-0-2-x64/DEBIAN/postrm b/src/debs/gwinwrap-0-0-2-x64/DEBIAN/postrm new file mode 100755 index 0000000..5a54f11 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/DEBIAN/postrm @@ -0,0 +1,15 @@ +#!/bin/bash +#postrm (script executed after uninstalling the package) +#set -e + +if [ -f /bin/xwinwrap ]; then + rm /bin/xwinwrap +fi + +if [ -d /opt/GWinWrap ]; then + rm -rf /opt/GWinWrap +fi + +if [ -d /usr/share/gwinwrap ]; then + rm -rf /usr/share/gwinwrap +fi diff --git a/src/debs/gwinwrap-0-0-2-x64/bin/gwinwrap b/src/debs/gwinwrap-0-0-2-x64/bin/gwinwrap new file mode 100755 index 0000000000000000000000000000000000000000..2166a10f4ace993cb2f69f203ca8b9d829d7ce91 GIT binary patch literal 6168 zcmeHLUrbw77(Xq4C)=g!<|=5o>Xvj{xRi~t>i*rr1{Z@1PLL%NN`bQ0(3Z5f2tG`d zZAn#hFD5)0Vxo`62OoGa3SrrNgk+hCei3=deQoW)7$1BvoaUb2 z_wRSkcmCYdd+%GvTbt}Qo8V#>M+9nZg}O9ZwGgKsl`7dhVw2ECrKk|aU@3%4mmWk* zV!TgHGnP_Z0U+``cFW+g>r!BR$}$T^&JeMPd=}`WS*Vwgl~4#(8jy#%Iuxk__DF%z zMR~XhnTIO!RN|?`W1OeN7`0}8tOWNI40{XVl0-nC9_}3*eRA`T>|4F zOB0ODdl`64p^(1?2YF9Yf9uUlipIxCs;C(Z_14$b4E9$Kh9ZfP>Jd+Ub$y){k7|46 zxUqeVZ9dTABu_iXxt2hh0li$U)=P^Okda^iiqacmWD>( zUTv?oAG~M6(Fl2c*rr|naE$naeMuc9DngskyPNb>d5@HEZE?Q1+|RM|9zdVd(IZ1} z`(wLY)Eqmn1Nw~dUrUYmidM>0VVs{a?df@A{8H&0(?ojzb#SG3-hjHiN(Tw`Ao_1E zrlIWo9(C;M<~*piD=o=|ZXom?`vPooP{+tT$78qr!z(}Ty z+2x~#?Xt13YHrK4P?l{$Fn{cDE#x8++dGWp((+jt!R4YVu-LlhC_l_9nyZO{YQr6y+6=Wq;hhx6}J-OY%E!hqt|TV&})DDkM8mjrfW;`Jg3vuXWdw zT!YyM1HLbR*8aeA(wh9EHF@t?^0qg<^+#iT&SpISQ{on`(djPlYu+wzx7Rm! zF`M5VSUTArt)dO~QcZNotZD8HMLJ{tp&BtXY6hc`eX0ft3tMHuK|D+383)}@g4_mp z3UCY%SLOiB$_!u+;36Qdvx_zt-p5#MZ=Mvk5r?gEb4lq%TZserGoIb42kG=441ltB zthM(s_AbQo-rNDY8?G_1AqvIOq&QzJFMFeOOdPE^xO?A@XVHv2%oV5ZIW%|`#|3-i zmf~(m1XS2!VgxVn2LMHb;`q?spg2D$IIgG@g$;`9{USqgUnn*d&v?m8iXKxuUd8QI zTn&l}aS-32l*;>a2Iy1J4(Eu?ZIq1}*qDKh8Q7SCjT!hq%zzu7&txIwXGq4)Jjg;T zZVTyGDgH^)`Ms)=bbc?YAl*stQTYFjh5f&;rlY7&+I57?yPmti()k@{+HUEOKn#}S z76^R)$Ktd=Y$IgIJVVp-F#ng!XAB79XOt2mY$u$j{@Ff7I_J%NczBnE`-jH`Ii4|! zhes!=+bAwY`Y`#){GS28$L4ofPwU%6nD1|HY^C( z{?SN$G;E<6vpmCrSUePs{6+DBFBTZ|BY~u$K@+bx zmVAC4IPbyU=Kd$`x(uHr1Lx1*a`--yK~Nom3+I6O({>#+A*RVNA~oy11;@^OC)t|- z@m^;>pC4{I0QkJ1@Q3E_1UT?sWj^1Z!^G!vhx6w+#?!#Zd!Kc_|Hp{0Qpb3n<>pUj z@j3`Nr_7%!(4}jN_v;lU@l)JzDj(~pJ@&f7|-SL`Fms=@!!G5a|-j=^ezaw{qz6RRhlq9r#YUQWmQ}x zKF|MRkuH6U#D6*yX$krKNibvo%ooMF6-X0$$kH-(KL0cD%^DN3_H7iZ2AHO z{A5YXo%6lZis1F;c-9%e0!MicpZ~9&^c|Gr*5iK*4osE%=l>c0jyg~4$HU?FcpVpj ziy_SC?_eoR3JS+rT6X;0&NXo4@&*0hGttFFLgq34oX2+&-$fm-*FQJA1Om3j`Qzs) sEFL0qKhg*lO$V#u7TMexizP6BSDu~uxyXIzhWe@hJGn-XnaAco0XfC{djJ3c literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/bin/xwinwrap b/src/debs/gwinwrap-0-0-2-x64/bin/xwinwrap new file mode 100755 index 0000000000000000000000000000000000000000..26eafd7bd37915f130b67a7db347caa38ddafaf5 GIT binary patch literal 22603 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 DjE;QH literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__builtins__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__builtins__.py new file mode 100644 index 0000000..287a5fb --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__builtins__.py @@ -0,0 +1,73 @@ +import builtins + +# Python imports +import builtins + +# Lib imports + +# Application imports +from signal_classes import IPCServerMixin + + + +class Builtins(IPCServerMixin): + """Docstring for __builtins__ extender""" + + def __init__(self): + # NOTE: The format used is list of [type, target, data] + # Where data may be any kind of data + self._gui_events = [] + self._fm_events = [] + self.is_ipc_alive = False + self.ipc_authkey = b'GWinWrap-ipc' + self.ipc_address = '127.0.0.1' + self.ipc_port = 8888 + self.ipc_timeout = 15.0 + + # Makeshift fake "events" type system FIFO + def _pop_gui_event(self): + if len(self._gui_events) > 0: + return self._gui_events.pop(0) + return None + + def _pop_fm_event(self): + if len(self._fm_events) > 0: + return self._fm_events.pop(0) + return None + + + def push_gui_event(self, event): + if len(event) == 3: + self._gui_events.append(event) + return None + + raise Exception("Invald event format! Please do: [type, target, data]") + + def push_fm_event(self, event): + if len(event) == 3: + self._fm_events.append(event) + return None + + raise Exception("Invald event format! Please do: [type, target, data]") + + def read_gui_event(self): + return self._gui_events[0] + + def read_fm_event(self): + return self._fm_events[0] + + def consume_gui_event(self): + return self._pop_gui_event() + + def consume_fm_event(self): + return self._pop_fm_event() + + + +# NOTE: Just reminding myself we can add to builtins two different ways... +# __builtins__.update({"event_system": Builtins()}) +builtins.app_name = "GWinWrap" +builtins.event_system = Builtins() +builtins.event_sleep_time = 0.2 +builtins.debug = False +builtins.trace_debug = False diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__init__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__init__.py new file mode 100644 index 0000000..56356ba --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__init__.py @@ -0,0 +1,50 @@ +# Python imports +import os, inspect, time + +# Lib imports + +# Application imports +from utils import Settings +from signal_classes import Controller +from __builtins__ import Builtins + + + + +class Main(Builtins): + def __init__(self, args, unknownargs): + if not debug: + event_system.create_ipc_server() + + time.sleep(0.2) + if not trace_debug: + if not event_system.is_ipc_alive: + if unknownargs: + for arg in unknownargs: + if os.path.isdir(arg): + message = f"FILE|{arg}" + event_system.send_ipc_message(message) + + raise Exception("IPC Server Exists: Will send data to it and close...") + + + settings = Settings() + settings.create_window() + + controller = Controller(settings, args, unknownargs) + if not controller: + raise Exception("Controller exited and doesn't exist...") + + # Gets the methods from the classes and sets to handler. + # Then, builder from settings will connect to any signals it needs. + classes = [controller] + handlers = {} + for c in classes: + methods = None + try: + methods = inspect.getmembers(c, predicate=inspect.ismethod) + handlers.update(methods) + except Exception as e: + print(repr(e)) + + settings.get_builder().connect_signals(handlers) diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__main__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__main__.py new file mode 100644 index 0000000..dc06b1a --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/__main__.py @@ -0,0 +1,39 @@ +#!/usr/bin/python3 + + +# Python imports +import argparse, faulthandler, traceback +from setproctitle import setproctitle + +import tracemalloc +tracemalloc.start() + + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from __init__ import Main + + +if __name__ == "__main__": + try: + # import web_pdb + # web_pdb.set_trace() + + setproctitle('GWinWrap') + faulthandler.enable() # For better debug info + parser = argparse.ArgumentParser() + # Add long and short arguments + parser.add_argument("--file", "-f", default="default", help="JUST SOME FILE ARG.") + + # Read arguments (If any...) + args, unknownargs = parser.parse_known_args() + + Main(args, unknownargs) + Gtk.main() + except Exception as e: + traceback.print_exc() + quit() diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/gwinwrap b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/gwinwrap new file mode 100755 index 0000000000000000000000000000000000000000..2166a10f4ace993cb2f69f203ca8b9d829d7ce91 GIT binary patch literal 6168 zcmeHLUrbw77(Xq4C)=g!<|=5o>Xvj{xRi~t>i*rr1{Z@1PLL%NN`bQ0(3Z5f2tG`d zZAn#hFD5)0Vxo`62OoGa3SrrNgk+hCei3=deQoW)7$1BvoaUb2 z_wRSkcmCYdd+%GvTbt}Qo8V#>M+9nZg}O9ZwGgKsl`7dhVw2ECrKk|aU@3%4mmWk* zV!TgHGnP_Z0U+``cFW+g>r!BR$}$T^&JeMPd=}`WS*Vwgl~4#(8jy#%Iuxk__DF%z zMR~XhnTIO!RN|?`W1OeN7`0}8tOWNI40{XVl0-nC9_}3*eRA`T>|4F zOB0ODdl`64p^(1?2YF9Yf9uUlipIxCs;C(Z_14$b4E9$Kh9ZfP>Jd+Ub$y){k7|46 zxUqeVZ9dTABu_iXxt2hh0li$U)=P^Okda^iiqacmWD>( zUTv?oAG~M6(Fl2c*rr|naE$naeMuc9DngskyPNb>d5@HEZE?Q1+|RM|9zdVd(IZ1} z`(wLY)Eqmn1Nw~dUrUYmidM>0VVs{a?df@A{8H&0(?ojzb#SG3-hjHiN(Tw`Ao_1E zrlIWo9(C;M<~*piD=o=|ZXom?`vPooP{+tT$78qr!z(}Ty z+2x~#?Xt13YHrK4P?l{$Fn{cDE#x8++dGWp((+jt!R4YVu-LlhC_l_9nyZO{YQr6y+6=Wq;hhx6}J-OY%E!hqt|TV&})DDkM8mjrfW;`Jg3vuXWdw zT!YyM1HLbR*8aeA(wh9EHF@t?^0qg<^+#iT&SpISQ{on`(djPlYu+wzx7Rm! zF`M5VSUTArt)dO~QcZNotZD8HMLJ{tp&BtXY6hc`eX0ft3tMHuK|D+383)}@g4_mp z3UCY%SLOiB$_!u+;36Qdvx_zt-p5#MZ=Mvk5r?gEb4lq%TZserGoIb42kG=441ltB zthM(s_AbQo-rNDY8?G_1AqvIOq&QzJFMFeOOdPE^xO?A@XVHv2%oV5ZIW%|`#|3-i zmf~(m1XS2!VgxVn2LMHb;`q?spg2D$IIgG@g$;`9{USqgUnn*d&v?m8iXKxuUd8QI zTn&l}aS-32l*;>a2Iy1J4(Eu?ZIq1}*qDKh8Q7SCjT!hq%zzu7&txIwXGq4)Jjg;T zZVTyGDgH^)`Ms)=bbc?YAl*stQTYFjh5f&;rlY7&+I57?yPmti()k@{+HUEOKn#}S z76^R)$Ktd=Y$IgIJVVp-F#ng!XAB79XOt2mY$u$j{@Ff7I_J%NczBnE`-jH`Ii4|! zhes!=+bAwY`Y`#){GS28$L4ofPwU%6nD1|HY^C( z{?SN$G;E<6vpmCrSUePs{6+DBFBTZ|BY~u$K@+bx zmVAC4IPbyU=Kd$`x(uHr1Lx1*a`--yK~Nom3+I6O({>#+A*RVNA~oy11;@^OC)t|- z@m^;>pC4{I0QkJ1@Q3E_1UT?sWj^1Z!^G!vhx6w+#?!#Zd!Kc_|Hp{0Qpb3n<>pUj z@j3`Nr_7%!(4}jN_v;lU@l)JzDj(~pJ@&f7|-SL`Fms=@!!G5a|-j=^ezaw{qz6RRhlq9r#YUQWmQ}x zKF|MRkuH6U#D6*yX$krKNibvo%ooMF6-X0$$kH-(KL0cD%^DN3_H7iZ2AHO z{A5YXo%6lZis1F;c-9%e0!MicpZ~9&^c|Gr*5iK*4osE%=l>c0jyg~4$HU?FcpVpj ziy_SC?_eoR3JS+rT6X;0&NXo4@&*0hGttFFLgq34oX2+&-$fm-*FQJA1Om3j`Qzs) sEFL0qKhg*lO$V#u7TMexizP6BSDu~uxyXIzhWe@hJGn-XnaAco0XfC{djJ3c literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller.py new file mode 100644 index 0000000..adcb743 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller.py @@ -0,0 +1,151 @@ +# Python imports +import threading, signal, subprocess, inspect, os, time + +# Gtk imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') +from gi.repository import Gtk, GLib, Gdk + +# Application imports +from .mixins import * +from . import Controller_Data + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + + return wrapper + + +class Controller(ThumbnailMixin, ImageViewerMixin, DrawAreaMixin, GridMixin, Controller_Data): + def __init__(self, _settings, args, unknownargs): + self.setup_controller_data(_settings) + self.window.show() + self.retrieve_settings() + + + def tear_down(self, widget=None, eve=None): + event_system.send_ipc_message("close server") + if self.demo_area_pid: + self.close_demo_popup() + + self.close_image_popup() + time.sleep(event_sleep_time) + Gtk.main_quit() + + def close_program(self, widget, data=None): + self.tear_down() + + + @threaded + def gui_event_observer(self): + while True: + time.sleep(event_sleep_time) + event = event_system.consume_gui_event() + if event: + try: + type, target, data = event + method = getattr(self.__class__, type) + GLib.idle_add(method, (self, data,)) + except Exception as e: + print(repr(e)) + + + + def apply_settings(self, widget, data=None): + os.system("killall xwinwrap &") + user_home = self.settings.get_home_path() + + if self.apply_type == 1: + files = os.listdir(user_home) + for file in files: + fPath = f"{user_home}/{file}" + if os.path.isfile(fPath) and "animatedBGstarter" in file: + os.system(f"bash -c '~/{file}' &") + elif self.apply_type == 2: + os.system("nitrogen --restore &") + else: + os.system("nitrogen --restore &") + + self.help_label.set_markup(self.appliedLabel) + + def save_to_settings_file(self, widget): + self.start_path = self.builder.get_object("customStartPath").get_text().strip() + self.default_player = self.builder.get_object("customVideoPlayer").get_text().strip() + self.default_img_viewer = self.builder.get_object("customImgViewer").get_text().strip() + + self.settings_saver.save_settings(self.start_path, self.default_player, self.default_img_viewer) + + def save_to_file(self, widget, data=None): + save_location = self.builder.get_object("saveLoc").get_active_text() + use_xscreensvr = self.builder.get_object("useXScrnList").get_active() + playBackRes = self.builder.get_object("playbackResolution") + monitorOffset = self.builder.get_object("monitorOffsetData") + resolution = playBackRes.get_active_text() + monitorOffset.get_active_text() + self.apply_type = self.state_saver.save_to_file(self.to_be_background, resolution, save_location, use_xscreensvr, self.xscreen_value, self.default_player) + + if self.apply_type == -1: + self.help_label.set_markup("Nothing saved...") + return + + self.help_label.set_markup(self.savedLabel) + + + def toggle_xscreen_list(self, widget, data=None): + use_xscreensvr = self.builder.get_object("useXScrnList") + if use_xscreensvr.get_active(): + self.builder.get_object("xScreenSvrList").set_sensitive(True) + else: + self.builder.get_object("xScreenSvrList").set_sensitive(False) + + def show_settings_popup(self, widget): + self.builder.get_object("settingsWindow").popup() + + + def preview_xscreensaver(self, widget, eve): + if eve.type == Gdk.EventType.DOUBLE_BUTTON_PRESS: + demoXscrnSaver = self.xscreensavers + self.xscreen_value + xid = self.getXID() + command = [demoXscrnSaver, "-window-id", str(xid)] + self.run_demo_in_draw_area(command) + + def pass_xscreen_value(self, widget): + row = widget.get_cursor() + path = Gtk.TreePath(row.path) + treeiter = self.xscreen_store.get_iter(path[0]) + self.xscreen_value = self.xscreen_store.get_value(treeiter, 0) + + def kill_xwinwrap(self, widget, data=None): + os.system("killall xwinwrap &") + self.help_label.set_markup(self.stoppedLabel) + + def set_selected_eve_box(self, eveBox): + if self.selected_eve_box: + color = Gdk.RGBA(0.0, 0.0, 0.0, 0.0) + self.selected_eve_box.override_background_color(Gtk.StateType.NORMAL, color) + + color = Gdk.RGBA(0.9, 0.7, 0.4, 0.74) + eveBox.override_background_color(Gtk.StateType.NORMAL, color) + self.selected_eve_box = eveBox + + def mouse_over(self, widget, eve, args): + hand_cursor = Gdk.Cursor(Gdk.CursorType.HAND2) + self.window.get_window().set_cursor(hand_cursor) + + def mouse_out(self, widget, eve, args): + watch_cursor = Gdk.Cursor(Gdk.CursorType.LEFT_PTR) + self.window.get_window().set_cursor(watch_cursor) + + def get_clipboard_data(self): + proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE) + retcode = proc.wait() + data = proc.stdout.read() + return data.decode("utf-8").strip() + + def set_clipboard_data(self, data): + proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE) + proc.stdin.write(data) + proc.stdin.close() + retcode = proc.wait() diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller_Data.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller_Data.py new file mode 100644 index 0000000..e651a46 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/Controller_Data.py @@ -0,0 +1,102 @@ +# Python imports +import signal +from os import listdir +from os.path import isfile, join + +# Lib imports +from gi.repository import GLib + +# Application imports +from . import SaveStateToXWinWarp, SaveGWinWrapSettings + + + +class Controller_Data: + def has_method(self, obj, name): + return callable(getattr(obj, name, None)) + + def setup_controller_data(self, _settings): + self.settings = _settings + self.state_saver = SaveStateToXWinWarp(_settings) + self.settings_saver = SaveGWinWrapSettings(_settings) + + + self.builder = self.settings.get_builder() + self.window = self.settings.get_main_window() + self.logger = self.settings.get_logger() + + self.home_path = self.settings.get_home_path() + self.success_color = self.settings.get_success_color() + self.warning_color = self.settings.get_warning_color() + self.error_color = self.settings.get_error_color() + + + self.image_grid = self.builder.get_object("imageGrid") + self.grid_label = self.builder.get_object("gridLabel") + self.help_label = self.builder.get_object("helpLabel") + self.xscreen_store = self.builder.get_object("XScreensaverStore") + + self.defaultLabel = "Note: Double click an image to view the video or image." + self.savedLabel = f"Saved settings..." + self.appliedLabel = f"Running xwinwrap..." + self.stoppedLabel = f"Stopped xwinwrap..." + + # Add filter to allow only folders to be selected + dialog = self.builder.get_object("selectedDirDialog") + file_filter = self.builder.get_object("Folders") + dialog.add_filter(file_filter) + + self.xscreensavers = self.settings.get_xscreensavers() + list = [f for f in listdir(self.xscreensavers) if isfile(join(self.xscreensavers , f))] + list.sort() + for file in list: + self.xscreen_store.append((file,)) + + + self.selected_eve_box = None + self.start_path = None + self.default_player = None + self.default_img_viewer = None + self.demo_area_pid = None + + self.apply_type = 1 # 1 is XWinWrap and 2 is Nitrogen + self.xscreen_value = None + self.to_be_background = None # Global file path and type for saving to file + + + self.window.connect("delete-event", self.tear_down) + GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self.tear_down) + + self.set_monitor_offset_data() + self.retrieve_settings() + + + def set_monitor_offset_data(self): + monitors = self.settings.get_monitor_data() + monitorOffsetData = self.builder.get_object("monitorOffsetData") + + for monitor in monitors: + if monitor.x >= 0 and monitor.y >= 0: + monitorOffsetData.append_text("+" + str(monitor.x) + "+" + str(monitor.y)) + elif monitor.x <= 0 and monitor.y <= 0: + monitorOffsetData.append_text(str(monitor.x) + str(monitor.y)) + elif monitor.x >= 0 and monitor.y <= 0: + monitorOffsetData.append_text("+" + str(monitor.x) + str(monitor.y)) + elif monitor.x <= 0 and monitor.y >= 0: + monitorOffsetData.append_text(str(monitor.x) + "+" + str(monitor.y)) + + monitorOffsetData.set_active(0) + + def retrieve_settings(self): + data = self.settings_saver.retrieve_settings() + self.start_path = data[0] + self.default_player = data[1] + self.default_img_viewer = data[2] + + self.builder.get_object("customStartPath").set_text(self.start_path) + self.builder.get_object("customVideoPlayer").set_text(self.default_player) + self.builder.get_object("customImgViewer").set_text(self.default_img_viewer) + self.builder.get_object("selectedDirDialog").set_filename(self.start_path) + + if self.start_path: + self.load_path(None, self.start_path) diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/IPCServerMixin.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/IPCServerMixin.py new file mode 100644 index 0000000..be92ace --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/IPCServerMixin.py @@ -0,0 +1,64 @@ +# Python imports +import threading, socket, time +from multiprocessing.connection import Listener, Client + +# Lib imports + +# Application imports + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + + + +class IPCServerMixin: + + @threaded + def create_ipc_server(self): + listener = Listener((self.ipc_address, self.ipc_port), authkey=self.ipc_authkey) + self.is_ipc_alive = True + while True: + conn = listener.accept() + start_time = time.time() + + print(f"New Connection: {listener.last_accepted}") + while True: + msg = conn.recv() + if debug: + print(msg) + + if "FILE|" in msg: + file = msg.split("FILE|")[1].strip() + if file: + event_system.push_gui_event(["create_tab_from_ipc", None, file]) + + conn.close() + break + + + if msg == 'close connection': + conn.close() + break + if msg == 'close server': + conn.close() + break + + # NOTE: Not perfect but insures we don't lockup the connection for too long. + end_time = time.time() + if (end - start) > self.ipc_timeout: + conn.close() + + listener.close() + + + def send_ipc_message(self, message="Empty Data..."): + try: + conn = Client((self.ipc_address, self.ipc_port), authkey=self.ipc_authkey) + conn.send(message) + conn.send('close connection') + except Exception as e: + print(repr(e)) diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveGWinWrapSettings.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveGWinWrapSettings.py new file mode 100644 index 0000000..38025a1 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveGWinWrapSettings.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +import os, json + +class SaveGWinWrapSettings: + def __init__(self, settings): + self.config_file = settings.get_config_file() + + if os.path.isfile(self.config_file) == False: + open(self.config_file, 'a').close() + + + def save_settings(self, start_path, default_player, default_img_viewer): + data = {} + data['settings'] = [] + + data['settings'].append({ + 'start_path': start_path, + 'default_player': default_player, + 'default_img_viewer': default_img_viewer + }) + + with open(self.config_file, 'w') as outfile: + json.dump(data, outfile, separators=(',', ':'), indent=4) + + + def retrieve_settings(self): + data = [] + + with open(self.config_file) as infile: + try: + _data = json.load(infile) + for obj in _data['settings']: + data = [obj['start_path'], obj['default_player'], obj['default_img_viewer']] + except Exception as e: + print(repr(e)) + data = ['', 'mplayer', 'xdg-open'] + + + if data[0] == '': + data[0] = '' + + if data[1] == '': + data[1] = 'mplayer' + + if data[2] == '': + data[2] = 'xdg-open' + + return data diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveStateToXWinWarp.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveStateToXWinWarp.py new file mode 100644 index 0000000..14ff763 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/SaveStateToXWinWarp.py @@ -0,0 +1,68 @@ + +class SaveStateToXWinWarp: + def __init__(self, _settings): + self.settings = _settings + self.user_home = self.settings.get_home_path() + + self._file_writer = None + self._to_be_background = None + self._use_xscreensvr = None + self._xscreen_value = None + self._save_file_target = None + self._resolution = None + self._player = None + + + def save_to_file(self, to_be_background, resolution, save_location, + use_xscreensvr, xscreen_value, player): + + self._to_be_background = to_be_background + self._use_xscreensvr = use_xscreensvr + self._xscreen_value = xscreen_value + self._resolution = resolution + self._player = player + + # Saves to file with selected and needed settings + if to_be_background: + if to_be_background.lower().endswith(self.settings.get_images_filter()): + self._save_file_target = f"{self.user_home}/.config/nitrogen/bg-saved.cfg" + else: + self._save_file_target = f"{self.user_home}/{save_location}" + elif use_xscreensvr and xscreen_value: + self._save_file_target = f"{self.user_home}/{save_location}" + else: + return -1 + + if self._save_file_target: + self._file_writer = open(self._save_file_target, "w") + + return self.save() + + def save(self): + applyType = 1 + output = None + + # XSCREENSAVER + if self._use_xscreensvr: + output = f"xwinwrap -ov -g {self._resolution} -st -sp -b -nf -s -ni -- /usr/lib/xscreensaver/{self._xscreen_value} -window-id WID -root"; + # GIF + elif self._to_be_background.lower().endswith(('.gif')): + output = f"xwinwrap -ov -g {self._resolution} -st -sp -b -nf -s -ni -- gifview -a -w WID {self._to_be_background}"; + # Standard images using nitrogen + elif self._to_be_background.lower().endswith(('.png', 'jpg', '.jpeg')): + output = f"[xin_0] \nfile={self._to_be_background}\nmode=0 \nbgcolor=#000000\n\n[xin_1] \nfile={self._to_be_background}\nmode=0 \nbgcolor=#000000"; + applyType = 2; + # VIDEO + else: + output = f"xwinwrap -ov -g {self._resolution} -st -sp -b -nf -s -ni -- {self._player} -wid WID -really-quiet -ao null -loop 0 '{self._to_be_background}'"; + pass + + try: + if self._file_writer: + self._file_writer.write(output) + self._file_writer.close() + except Exception as e: + print(":: Write failed! ::") + print(e) + + return applyType; diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/__init__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/__init__.py new file mode 100644 index 0000000..97a8b3b --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/__init__.py @@ -0,0 +1,9 @@ +""" + Gtk Bound Signal Module +""" +from .mixins import * +from .SaveStateToXWinWarp import SaveStateToXWinWarp +from .SaveGWinWrapSettings import SaveGWinWrapSettings +from .IPCServerMixin import IPCServerMixin +from .Controller_Data import Controller_Data +from .Controller import Controller diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/DrawAreaMixin.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/DrawAreaMixin.py new file mode 100644 index 0000000..833d3ae --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/DrawAreaMixin.py @@ -0,0 +1,59 @@ +# Python imports +import os, subprocess, signal, time + +# Gtk imports +import gi +gi.require_version('Gdk', '3.0') +from gi.repository import Gdk + +# Application imports + + +class DrawAreaMixin: + """docstring for DrawAreaMixin""" + + def close_demo_popup(self, widget=None, data=None): + os.kill(self.demo_area_pid, signal.SIGTERM) #or signal.SIGKILL + self.demo_area_pid = None + time.sleep(.200) + self.builder.get_object("demoPreviewPopWindow").popdown() + + def run_mplayer_process(self, widget, eve, params): + video, file, eveBox = params + self.set_selected_eve_box(eveBox) + + if eve.type == Gdk.EventType.DOUBLE_BUTTON_PRESS: + if self.default_player == "mplayer": + xid = self.getXID() + command = [self.default_player, video, "-slave", "-wid", str(xid), "-really-quiet", "-ao", "null", "-loop", "0"] + self.run_demo_in_draw_area(command) + else: + subprocess.call([self.default_player, video, "-really-quiet", "-ao", "null", "-loop", "0"]) + + + self.to_be_background = video + self.applyType = 1 + self.help_label.set_markup(f"{file}") + + def run_demo_in_draw_area(self, command): + self.help_label.set_markup("") + + if self.demo_area_pid: + os.kill(self.demo_area_pid, signal.SIGTERM) #or signal.SIGKILL + self.demo_area_pid = None + time.sleep(.800) # 800 mili-seconds to ensure first process dead + + process = subprocess.Popen(command) + self.demo_area_pid = process.pid + + def getXID(self): + # Must be actualized before getting window + popup = self.builder.get_object("demoPreviewPopWindow") + + if popup.get_visible() == False: + popup.show_all() + popup.popup() + + preview = self.builder.get_object("demoPreview") + window = preview.get_window() + return window.get_xid() diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/GridMixin.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/GridMixin.py new file mode 100644 index 0000000..513d7b1 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/GridMixin.py @@ -0,0 +1,116 @@ +# Python imports +import threading, hashlib +from os import listdir +from os.path import isfile, join + +# Gtk imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GLib + +# Application imports + + + + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + + return wrapper + + +class GridMixin: + """docstring for GridMixin.""" + + def set_new_path(self, widget, data=None): + dir = widget.get_filename() + self.load_path(None, dir) + + def load_path(self, widget=None, dir=''): + path = dir + list = [f for f in listdir(path) if isfile(join(path, f))] + files = [] + row = 0 + col = 0 + + for file in list: + if file.lower().endswith(self.settings.get_vids_filter() + \ + self.settings.get_images_filter()): + files.append(file) + + # fractionTick = 1.0 / 1.0 if len(files) == 0 else len(files) + # tickCount = 0.0 + self.clear() + self.image_grid.remove_column(0) + # self.loadProgress.set_text("Loading...") + # self.loadProgress.set_fraction(0.0) + self.help_label.set_markup(f"{path.strip(self.settings.get_home_path())}") + for file in files: + self.porocess_file(path, file, col, row) + + col += 1 + if col == 2: + col = 0 + row += 1 + + # self.loadProgress.set_text("Finished...") + + @threaded + def porocess_file(self, path, file, col, row): + fPath = f"{path}/{file}" + eveBox = Gtk.EventBox() + thumbnl = Gtk.Image() + + if file.lower().endswith(self.settings.get_vids_filter()): + fileHash = hashlib.sha256(str.encode(fPath)).hexdigest() + hashImgPath = f"{self.settings.get_home_path()}/.thumbnails/normal/{fileHash}.png" + if isfile(hashImgPath) == False: + self.generate_thumbnail(fPath, hashImgPath) + + thumbnl = self.create_gtk_image(hashImgPath, [310, 310]) + eveBox.connect("button_press_event", self.run_mplayer_process, (fPath, file, eveBox,)) + eveBox.connect("enter_notify_event", self.mouse_over, ()) + eveBox.connect("leave_notify_event", self.mouse_out, ()) + elif file.lower().endswith(self.settings.get_images_filter()): + thumbnl = self.create_gtk_image(fPath, [310, 310]) + eveBox.connect("button_press_event", self.run_image_viewer_process, (fPath, file, eveBox,)) + eveBox.connect("enter_notify_event", self.mouse_over, ()) + eveBox.connect("leave_notify_event", self.mouse_out, ()) + else: + print("Not a video or image file.") + return + + GLib.idle_add(self.pre_grid_setup, (eveBox, thumbnl, )) + GLib.idle_add(self.add_to_grid, (self.image_grid, eveBox, col, row,)) + # tickCount = tickCount + fractionTick + # self.loadProgress.set_fraction(tickCount) + + def pre_grid_setup(self, args): + args[0].show() + args[1].show() + args[0].add(args[1]) + + def add_to_grid(self, args): + args[0].attach(args[1], args[2], args[3], 1, 1) + + def clear_selection(self, widget, data=None): + self.clear() + + def clear(self): + while True: + if self.image_grid.get_child_at(0,0)!= None: + self.image_grid.remove_row(0) + else: + break + + self.image_grid.attach(self.grid_label, 0, 0, 1, 1) + self.builder.get_object("xScreenSvrList").set_sensitive(False) + self.builder.get_object("useXScrnList").set_active(False) + self.help_label.set_markup(self.defaultLabel) + # self.loadProgress.set_text("") + # self.loadProgress.set_fraction(0.0) + self.xscreen_value = None + self.to_be_background = None + self.apply_type = 1 diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ImageViewerMixin.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ImageViewerMixin.py new file mode 100644 index 0000000..e4dd1b6 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ImageViewerMixin.py @@ -0,0 +1,34 @@ +# Python imports +import subprocess + +# Gtk imports +import gi +gi.require_version('Gdk', '3.0') +from gi.repository import Gdk + +# Application imports + + +class ImageViewerMixin: + """docstring for ImageViewerMixin""" + + def close_image_popup(self, widget=None): + self.builder.get_object("previewWindow").popdown() + + def open_main_image_viewer(self, widget): + subprocess.call([self.default_img_viewer, self.to_be_background]) + + def run_image_viewer_process(self, widget, eve, params): + image, file, eveBox = params + self.set_selected(eveBox) + + if eve.type == Gdk.EventType.DOUBLE_BUTTON_PRESS: + previewWindow = self.builder.get_object("previewWindow") + previewImg = self.builder.get_object("previewImg") + previewImg.set_from_file(image) + previewWindow.show_all() + previewWindow.popup() + + self.to_be_background = image + self.apply_type = 2 + self.help_label.set_markup(f"{file}") diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ThumbnailMixin.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ThumbnailMixin.py new file mode 100644 index 0000000..e067732 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/ThumbnailMixin.py @@ -0,0 +1,56 @@ +# Python imports +import subprocess + +# Gtk imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk +from gi.repository import GdkPixbuf + +# Application imports + + +class ThumbnailMixin: + """docstring for ThumbnailMixin""" + + def create_gtk_image(self, path, wxh): + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( + filename = path, + width = wxh[0], + height = wxh[1], + preserve_aspect_ratio = True) + return Gtk.Image.new_from_pixbuf(pixbuf) + except Exception as e: + print(repr(e)) + + return Gtk.Image() + + def generate_thumbnail(self, fullPathFile, hashImgpth): + # Stream duration + command = ["ffprobe", "-v", "error", "-select_streams", "v:0", "-show_entries", "stream=duration", "-of", "default=noprint_wrappers=1:nokey=1", fullPathFile] + data = subprocess.run(command, stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Format (container) duration + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", fullPathFile] + data = subprocess.run(command , stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Stream duration type: image2 + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-select_streams", "v:0", "-f", "image2", "-show_entries", "stream=duration", "-of", "default=noprint_wrappers=1:nokey=1", fullPathFile] + data = subprocess.run(command, stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Format (container) duration type: image2 + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-f", "image2", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", fullPathFile] + data = subprocess.run(command , stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Get frame roughly 35% through video + grabTime = str( int( float( duration.split(".")[0] ) * 0.35) ) + command = ["ffmpeg", "-ss", grabTime, "-i", fullPathFile, "-an", "-vframes", "1", "-s", "320x180", "-q:v", "2", hashImgpth] + subprocess.call(command) diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/__init__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/__init__.py new file mode 100644 index 0000000..f482286 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/signal_classes/mixins/__init__.py @@ -0,0 +1,4 @@ +from .ThumbnailMixin import ThumbnailMixin +from .DrawAreaMixin import DrawAreaMixin +from .ImageViewerMixin import ImageViewerMixin +from .GridMixin import GridMixin diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Logger.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Logger.py new file mode 100644 index 0000000..c7f294e --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Logger.py @@ -0,0 +1,56 @@ +# Python imports +import os, logging + +# Application imports + + +class Logger: + def __init__(self): + pass + + def get_logger(self, loggerName = "NO_LOGGER_NAME_PASSED", createFile = True): + """ + Create a new logging object and return it. + :note: + NOSET # Don't know the actual log level of this... (defaulting or literally none?) + Log Levels (From least to most) + Type Value + CRITICAL 50 + ERROR 40 + WARNING 30 + INFO 20 + DEBUG 10 + :param loggerName: Sets the name of the logger object. (Used in log lines) + :param createFile: Whether we create a log file or just pump to terminal + + :return: the logging object we created + """ + + globalLogLvl = logging.DEBUG # Keep this at highest so that handlers can filter to their desired levels + chLogLevel = logging.CRITICAL # Prety musch the only one we change ever + fhLogLevel = logging.DEBUG + log = logging.getLogger(loggerName) + log.setLevel(globalLogLvl) + + # Set our log output styles + fFormatter = logging.Formatter('[%(asctime)s] %(pathname)s:%(lineno)d %(levelname)s - %(message)s', '%m-%d %H:%M:%S') + cFormatter = logging.Formatter('%(pathname)s:%(lineno)d] %(levelname)s - %(message)s') + + ch = logging.StreamHandler() + ch.setLevel(level=chLogLevel) + ch.setFormatter(cFormatter) + log.addHandler(ch) + + if createFile: + folder = "logs" + file = folder + "/application.log" + + if not os.path.exists(folder): + os.mkdir(folder) + + fh = logging.FileHandler(file) + fh.setLevel(level=fhLogLevel) + fh.setFormatter(fFormatter) + log.addHandler(fh) + + return log diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Settings.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Settings.py new file mode 100644 index 0000000..e729ee4 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/Settings.py @@ -0,0 +1,112 @@ +# Python imports +import os + +# Gtk imports +import gi, cairo +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk +from gi.repository import Gdk + + +# Application imports +from . import Logger + + + +class Settings: + def __init__(self): + self._SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) + self._USER_HOME = os.path.expanduser('~') + self._CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" + self._GLADE_FILE = f"{self._CONFIG_PATH}/Main_Window.glade" + self._CSS_FILE = f"{self._CONFIG_PATH}/stylesheet.css" + self._DEFAULT_ICONS = f"{self._CONFIG_PATH}/icons" + self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" + self._USR_PATH = f"/usr/share/{app_name.lower()}" + self._CONFIG_FILE = f"{self._CONFIG_PATH}/settings.json" + self._XSCREEN_SAVERS = "/usr/lib/xscreensaver/" + + + self._logger = Logger().get_logger() + self._builder = Gtk.Builder() + self._main_window = None + + # '_filters' + self._vids_filter = ('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm') + self._images_filter = ('.png', '.jpg', '.jpeg', '.gif') + + self._success_color = "#88cc27" + self._warning_color = "#ffa800" + self._error_color = "#ff0000" + + if not os.path.exists(self._GLADE_FILE): + self._GLADE_FILE = f"{self._USR_PATH}/Main_Window.glade" + if not os.path.exists(self._CSS_FILE): + self._CSS_FILE = f"{self._USR_PATH}/stylesheet.css" + if not os.path.exists(self._WINDOW_ICON): + self._WINDOW_ICON = f"{self._USR_PATH}/icons/{app_name.lower()}.png" + if not os.path.exists(self._DEFAULT_ICONS): + self.DEFAULT_ICONS = f"{self._USR_PATH}/icons" + + self._builder.add_from_file(self._GLADE_FILE) + + + + def create_window(self): + # Get window and connect signals + self._main_window = self._builder.get_object("Main_Window") + self.set_window_data() + + def set_window_data(self): + self._main_window.set_icon_from_file(self._WINDOW_ICON) + screen = self._main_window.get_screen() + visual = screen.get_rgba_visual() + + if visual != None and screen.is_composited(): + self._main_window.set_visual(visual) + self._main_window.set_app_paintable(True) + self._main_window.connect("draw", self.draw_area) + + # bind css file + cssProvider = Gtk.CssProvider() + cssProvider.load_from_path(self._CSS_FILE) + screen = Gdk.Screen.get_default() + styleContext = Gtk.StyleContext() + styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) + + def get_monitor_data(self): + screen = self._builder.get_object("Main_Window").get_screen() + monitors = [] + for m in range(screen.get_n_monitors()): + monitors.append(screen.get_monitor_geometry(m)) + + for monitor in monitors: + print("{}x{}|{}+{}".format(monitor.width, monitor.height, monitor.x, monitor.y)) + + return monitors + + def draw_area(self, widget, cr): + cr.set_source_rgba(0, 0, 0, 0.54) + cr.set_operator(cairo.OPERATOR_SOURCE) + cr.paint() + cr.set_operator(cairo.OPERATOR_OVER) + + + + + def get_builder(self): return self._builder + def get_logger(self): return self._logger + def get_main_window(self): return self._main_window + def get_home_path(self): return self._USER_HOME + def get_config_file(self): return self._CONFIG_FILE + def get_xscreensavers(self): return self._XSCREEN_SAVERS + + # Filter returns + def get_vids_filter(self): return self._vids_filter + def get_images_filter(self): return self._images_filter + + def get_success_color(self): return self._success_color + def get_warning_color(self): return self._warning_color + def get_error_color(self): return self._error_color diff --git a/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/__init__.py b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/__init__.py new file mode 100644 index 0000000..415301e --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/opt/GWinWrap/utils/__init__.py @@ -0,0 +1,6 @@ +""" + Utils module +""" + +from .Logger import Logger +from .Settings import Settings diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/doc/gwinwrap/copyright b/src/debs/gwinwrap-0-0-2-x64/usr/share/doc/gwinwrap/copyright new file mode 100644 index 0000000..53b78e8 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/usr/share/doc/gwinwrap/copyright @@ -0,0 +1,22 @@ +GWinWrap is copyright 2016, 2017 Maxim Stewart. +GWinWrap is currently developed by ITDominator <1itdominator@gmail.com>. + +License: GPLv2+ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +See /usr/share/common-licenses/GPL-2, or + for the terms of the latest version +of the GNU General Public License. diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/Main_Window.glade b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/Main_Window.glade new file mode 100644 index 0000000..c6df58f --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/Main_Window.glade @@ -0,0 +1,882 @@ + + + + + + + inode/directory + + + + + + + + + + True + False + gtk-clear + 3 + + + True + False + gtk-quit + 3 + + + True + False + gtk-cancel + 3 + + + True + False + gtk-jump-to + 3 + + + True + False + gtk-save + 3 + + + True + False + gtk-save + 3 + + + True + False + Settings.... + gtk-properties + 3 + + + True + False + gtk-media-play + 3 + + + True + False + gtk-media-stop + 3 + + + 950 + 600 + False + GWinWrap + center + 950 + 600 + usr/share/gwinwrap/icons/gwinwrap.png + center + + + True + False + + + True + False + 15 + 15 + 15 + vertical + + + True + False + 5 + + + True + False + 15 + Note: Double click an image to view the video or image. + + + True + True + 0 + + + + + True + False + Chose Dream Scene / Image Directory + select-folder + False + Folders + Dream Scene / Image Dir + + + + False + True + 1 + + + + + True + True + True + settingsImage + True + + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + True + + + False + True + 1 + + + + + True + True + in + + + True + False + + + + True + False + vertical + 10 + 10 + True + True + + + 640 + 525 + True + False + Choose Image/Video Directory... + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + 2 + + + + + Clear + True + True + True + clearImage + True + + + + False + True + 3 + + + + + True + True + 0 + + + + + 300 + True + False + 10 + 15 + 15 + 15 + False + vertical + + + True + False + vertical + + + Use XScreenSaver + True + True + False + center + 5 + True + + + + False + True + 0 + + + + + True + True + in + + + True + False + True + XScreensaverStore + False + + + + + + + + XScreensaves + + + + 0 + + + + + + + + + True + True + 1 + + + + + True + True + 0 + + + + + True + False + False + vertical + + + True + False + vertical + + + True + False + + + True + False + 10 + 10 + Playback Resolutions + + + True + True + 0 + + + + + True + False + 10 + 10 + Position Offset + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + 3 + + 7680x4320 + 3840x2160 + 2048x1080 + 1920x1080 + 1440x720 + 1600x900 + 1280x720 + 800x600 + + + + True + True + 0 + + + + + True + False + + + True + True + 1 + + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 10 + 5 + Save Path + + + True + True + 0 + + + + + True + False + 0 + + .animatedBGstarter.sh + .animatedBGstarter2.sh + .animatedBGstarter3.sh + + + + True + True + 1 + + + + + False + True + 1 + + + + + + True + False + + + Save + True + True + True + True + True + saveImage + True + + + + 1 + 0 + + + + + (Re)Start + True + True + True + True + True + startImage + True + + + + 0 + 0 + + + + + Stop + True + True + True + True + True + stopImage + True + + + + 0 + 1 + + + + + Close + True + True + True + True + True + closeImage + True + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + False + True + 2 + + + + + False + False + end + 1 + + + + + False + True + 1 + 1 + + + + + + + 640 + 525 + False + 350 + True + True + helpLabel + bottom + False + + + True + False + vertical + + + True + False + + + True + True + True + Close Demo Window + closePopupImage + True + + + + False + True + end + 0 + + + + + False + True + 0 + + + + + True + False + 0 + none + + + True + False + + + + + True + True + 1 + + + + + + + 640 + 525 + False + True + True + helpLabel + bottom + + + True + False + vertical + + + True + False + bottom + + + Main Image Viewer + True + True + True + openProgImage + True + + + + False + True + 0 + + + + + True + True + True + True + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + True + in + False + + + True + False + + + True + False + gtk-missing-image + 6 + + + + + + + True + True + 1 + + + + + + + 250 + False + button1 + + + True + False + vertical + + + True + False + + + True + False + folder + + + False + True + 0 + + + + + 330 + 26 + True + True + Set Custom Default Path + Set Custom Start Path + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + video-x-generic + + + False + True + 0 + + + + + 330 + 26 + True + True + Set Custom Video Player + Set Custom Video Player + + + True + True + 1 + + + + + False + True + 1 + + + + + True + False + + + True + False + image-x-generic + + + False + True + 0 + + + + + 330 + 26 + True + True + Set Custom Image Viewer + Set Custom Image Viewer + + + False + True + 1 + + + + + False + True + 2 + + + + + Save + True + True + True + saveImag + True + + + + False + True + 3 + + + + + + diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/dir.png b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/dir.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b5e9f90847d5afe34fec63651ffebcd6c5b6e3 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy#>i=8|}I5;?NKlFb92xL>4nJ z$hLzpWB=2SsX#%=64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBfZYpno_di4|!2nE;;ZdJgpSz-K{;CN})=gZxe$uiHlb3Cnx_r~r6&t6n*feeBrs*p;&sep2 z#_G*8S8tiQdMnTtp!q-(xF)ho0G+E>666=mz{teP#m&ttEFvl4>6lif#XQ z8W13Ilv$zc>xRv19^Jh6-?ox*^G&|HnMr59#~t{-#It^DV2glL{i@!-kE4TcEV%OT z-p;}>w+z1?PA#6E70US!LfC%He;CD4G5_F<15KQ|YZz6wZP-1z`D{=_^8Ki6{avaJ zN7k*_@#bs#uBW^^zIST;wfe&9^4sO*Om&4j>bpKNANjrI3)7R|Q=T#KpZwhZ_*dum zPKyse-tD=U{igWAzqi#}eLQv9Y-+XEJ!hQx&W=4!!(c)y8wWhvU6w0CUnUvw{_K};>3gl1wceg9u(=*FzrTHMS*!j2>yL7`K8m_0?z;72 ikl~}S#Zrnb|3dd~^!AY~RX+CuWU8mDpUXO@geCx;cxYb$ literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/gwinwrap.png b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/gwinwrap.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd708d16faef991c910643670ab5cc4abfc605b GIT binary patch literal 9278 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 literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/video.png b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/icons/video.png new file mode 100644 index 0000000000000000000000000000000000000000..55afa98662c7439702c4391be32151b59c65e253 GIT binary patch literal 1313 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#Vf4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1UVK#D># zOL9^f0)R3_3ZBXNc?uyJsky1DHrHsBf%ipdZ&9wFl@+Mo$;Vkcv5P@A_uQq{heETG?y0yzC9fraSuz>xc-iKB^S-C2j9}#|+2Trc2JzJRTnfTzEQIH^v=t-uh~( zxc^nT;G^AFyj-F_E#k~I^^GcclIec6N$|KDEZ^HL2yRXD%)^JLrNU0ZK4B(tA;`e?y7+bL3Cv<0)SasI_CAaj~N#c(YL7*x>s=RUEzB;@PrBh& zH)D%og8`esF@{4D4id~9$qb1+3OxwHP0QHrcBOO2*;w_|95lANuJ3MPXxI5(O|0kK zRl|QgH_Ue({_&96Vc&zq|1bC+7nk<1Yuu@Ae>qY6-K)v7Yqj^V-D!HvaJ2dMZM$~H zu!p<&;w*k~%)4!W;alV}{X=v0Uhk~<**mx5&CKevXN-+f=bm`FyWqv#SP7|{IXP;~ zcdqPSDZPH*cNRIBH>Ot885zEOeQr=yWB#r(Ve!YC*VuRDXUi=Ow$PzK?rCL+Fg2guB&_nRD$dv!BcjdVIbiOV!A>s5L(B z_M7webFwb`{Y$Vp;Qn~>iWvW|`+K5R742;lemwcu^H&o81xx0 uulP@kQGh{%aR*z&{2E6WF!;j1pYh0Ho3#3@qwc_>hQZU-&t;ucLK6Tg{6(q& literal 0 HcmV?d00001 diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/settings.json b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/settings.json new file mode 100644 index 0000000..596ddd2 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/settings.json @@ -0,0 +1,9 @@ +{ + "settings":[ + { + "start_path":"/home/abaddon/LazyShare/Movies-TV-Music/Dream Scenes/Games/Halo", + "default_player":"mpv", + "default_img_viewer":"mirage" + } + ] +} \ No newline at end of file diff --git a/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/stylesheet.css b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/stylesheet.css new file mode 100644 index 0000000..c0383f6 --- /dev/null +++ b/src/debs/gwinwrap-0-0-2-x64/usr/share/gwinwrap/stylesheet.css @@ -0,0 +1,86 @@ +/* Set fm to have transparent window */ +box, +iconview, +notebook, +paned, +stack, +scrolledwindow, +treeview.view, +.content-view, +.view { + background: rgba(19, 21, 25, 0.14); + color: rgba(255, 255, 255, 1); +} + +notebook > header > tabs > tab:checked { + /* Neon Blue 00e8ff */ + background-color: rgba(0, 232, 255, 0.2); + /* Dark Bergundy */ + /* background-color: rgba(116, 0, 0, 0.25); */ + + color: rgba(255, 255, 255, 0.8); +} + +#message_view { + font: 16px "Monospace"; +} + +.view:selected, +.view:selected:hover { + box-shadow: inset 0 0 0 9999px rgba(21, 158, 167, 0.34); + color: rgba(255, 255, 255, 0.5); +} + +.alert-border { + border: 2px solid rgba(116, 0, 0, 0.64); +} + +.search-border { + border: 2px solid rgba(136, 204, 39, 1); +} + +.notebook-selected-focus { + /* Neon Blue 00e8ff border */ + border: 2px solid rgba(0, 232, 255, 0.34); + /* Dark Bergundy */ + /* border: 2px solid rgba(116, 0, 0, 0.64); */ +} + +.notebook-unselected-focus { + /* Neon Blue 00e8ff border */ + /* border: 2px solid rgba(0, 232, 255, 0.25); */ + /* Dark Bergundy */ + /* border: 2px solid rgba(116, 0, 0, 0.64); */ + /* Snow White */ + border: 2px solid rgba(255, 255, 255, 0.24); +} + + + + + +/* * { + background: rgba(0, 0, 0, 0.14); + color: rgba(255, 255, 255, 1); +} */ + +/* * selection { + background-color: rgba(116, 0, 0, 0.65); + color: rgba(255, 255, 255, 0.5); +} */ + +/* Rubberband coloring */ +/* .rubberband, +rubberband, +flowbox rubberband, +treeview.view rubberband, +.content-view rubberband, +.content-view .rubberband, +XfdesktopIconView.view .rubberband { + border: 1px solid #6c6c6c; + background-color: rgba(21, 158, 167, 0.57); +} + +XfdesktopIconView.view:active { + background-color: rgba(172, 102, 21, 1); +} */