From e99168e58948118b7ecde072547e8b6f250ded6f Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Sun, 5 May 2019 22:25:06 -0500 Subject: [PATCH] Added fix for deb file making --- python/bin/gwinwrap-0-0-1-x64.deb | Bin 21184 -> 21200 bytes python/src/debs/build.sh | 4 +- .../src/debs/gwinwrap-0-0-1-x64/bin/gwinwrap | Bin 6168 -> 6168 bytes .../opt/GWinWrap/GWinWrap.py | 99 ++++++++++++------ .../opt/GWinWrap/resources/GWinWrap.glade | 15 ++- .../opt/GWinWrap/utils/SaveState.py | 59 +++++++++++ .../opt/GWinWrap/utils/SaveState.pyc | Bin 2486 -> 0 bytes .../opt/GWinWrap/utils/__init__.py | 1 + .../opt/GWinWrap/utils/__init__.pyc | Bin 263 -> 0 bytes .../src/versions/0.0.1/gwinwrap_exec_bin.cpp | 2 +- 10 files changed, 144 insertions(+), 36 deletions(-) mode change 100644 => 100755 python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py create mode 100644 python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.py delete mode 100644 python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.pyc create mode 100644 python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.py delete mode 100644 python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.pyc diff --git a/python/bin/gwinwrap-0-0-1-x64.deb b/python/bin/gwinwrap-0-0-1-x64.deb index 77e583bf83b75c988fce3585cf9523c3dad38d60..2a1d5ec30146534f5a0a563cf71e0b703e23ed5e 100644 GIT binary patch delta 20431 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 RaCx%^1~Lx;C$l*f-vR=s7asrs delta 59 zcmV-B0L1^8Fqkl~gaQM0?VQ?;R Rc>uEp1~Lx;CbKye-vU6F7=-`; diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py old mode 100644 new mode 100755 index 64d548e..00d553f --- a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py +++ b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/GWinWrap.py @@ -46,9 +46,22 @@ class GWinWrap: self.gridLabel = self.builder.get_object("gridLabel") self.stateSaver = SaveState() + self.focusedImg = gtk.Image() + self.usrHome = os.path.expanduser('~') self.xScreenVal = None self.toSavePath = None # Global file path and type for saving to file - self.applyType = 1 # 1 is XWinWrap and 2 is Nitrogen + self.applyType = 1 # 1 is XWinWrap and 2 is Nitrogen + + self.loadProgress = self.builder.get_object("loadProgress") + self.helpLabel = self.builder.get_object("helpLabel") + self.defaultLabel = "Note: Double click an image to view the video or image." + self.savedLabel = "Saved settings..." + self.appliedLabel = "Running xwinwrap..." + self.stoppedLabel = "Stopped xwinwrap..." + # foreground=\"#ffa800\" + # foreground=\"#88cc27\" + # foreground=\"#ff0000\" + # foreground=\"#ff0000\" self.window.show() @@ -66,72 +79,91 @@ class GWinWrap: Thread(target=self.newDir, args=(dir,)).start() def newDir(self, dir): - self.clear() - imageGrid = self.builder.get_object("imageGrid") - path = dir - files = [] - list = [f for f in listdir(path) if isfile(join(path, f))] - row = 0 - col = 0 + imageGrid = self.builder.get_object("imageGrid") + dirPath = dir + list = [f for f in listdir(dirPath) if isfile(join(dirPath, f))] + files = [] + row = 0 + col = 0 for file in list: if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm', '.png', '.jpg', '.jpeg', '.gif')): files.append(file) + + fractionTick = 1.0 / len(files) + tickCount = 0.0 + self.clear() imageGrid.remove_column(0) + self.loadProgress.set_text("Loading...") + self.loadProgress.set_fraction(0.0) + self.helpLabel.set_markup("" + dirPath.strip(self.usrHome) + "") for file in files: - fullPathFile = path + "/" + file + fullPathFile = dirPath + "/" + file eveBox = gtk.EventBox() thumbnl = gtk.Image() if file.lower().endswith(('.mkv', '.avi', '.flv', '.mov', '.m4v', '.mpg', '.wmv', '.mpeg', '.mp4', '.webm')): - subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", "/tmp/image.png"]) - thumbnl = self.createImage("/tmp/image.png") - eveBox.connect("button_press_event", self.runMplayerProcess, fullPathFile) + self.generateThumbnail(fullPathFile) + thumbnl = self.createGtkImage("/tmp/image.png", [310, 310]) + eveBox.connect("button_press_event", self.runMplayerProcess, (fullPathFile, file,)) elif file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): - thumbnl = self.createImage(fullPathFile) - eveBox.connect("button_press_event", self.runImageViewerProcess, fullPathFile) + thumbnl = self.createGtkImage(fullPathFile, [310, 310]) + eveBox.connect("button_press_event", self.runImageViewerProcess, (fullPathFile, file)) else: print("Not a video or image file.") return gobject.idle_add(self.preGridSetup, (eveBox, thumbnl, )) gobject.idle_add(self.addToGrid, (imageGrid, eveBox, col, row,)) + tickCount = tickCount + fractionTick + self.loadProgress.set_fraction(tickCount) col += 1 if col == 2: col = 0 row += 1 + self.loadProgress.set_text("Finished...") + def preGridSetup(self, args): args[0].show() args[1].show() args[0].add(args[1]) - def createImage(self, arg): - pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( - filename = arg, - width = 310, - height = 310, - preserve_aspect_ratio = True) - return gtk.Image.new_from_pixbuf(pixbuf) - def addToGrid(self, args): args[0].attach(args[1], args[2], args[3], 1, 1) - def runMplayerProcess(self, widget, eve, fullPathFile): + def generateThumbnail(self, fullPathFile): + subprocess.call(["ffmpegthumbnailer", "-t", "65%", "-s", "300", "-c", "jpg", "-i", fullPathFile, "-o", "/tmp/image.png"]) + + def createGtkImage(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(e) + return gtk.Image() + + def runMplayerProcess(self, widget, eve, params): if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: - subprocess.call(["mplayer", "-really-quiet", "-ao", "null", "-loop", "0", fullPathFile]) + subprocess.call(["mplayer", "-really-quiet", "-ao", "null", "-loop", "0", params[0]]) - self.toSavePath = fullPathFile - self.applyType = 1 # Set to XWinWrap + self.toSavePath = params[0] + self.applyType = 1 + self.helpLabel.set_markup("" + params[1] + "") - def runImageViewerProcess(self, widget, eve, fullPathFile): + def runImageViewerProcess(self, widget, eve, params): if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS: - subprocess.call(["xdg-open", fullPathFile]) + subprocess.call(["xdg-open", params[0]]) - self.toSavePath = fullPathFile - self.applyType = 2 # Set to Nitrogen + self.toSavePath = params[0] + self.applyType = 2 + self.helpLabel.set_markup("" + params[1] + "") def toggleXscreenUsageField(self, widget, data=None): useXscreenSaver = self.builder.get_object("useXScrnList") @@ -148,6 +180,7 @@ class GWinWrap: resolution = plyBckRes.get_active_text() + offset4Res.get_active_text() self.applyType = self.stateSaver.saveToFile(self.toSavePath, resolution, saveLoc, useXscreenSaver, self.xScreenVal) + self.helpLabel.set_markup(self.savedLabel) def applySttngs(self, widget, data=None): os.system("killall xwinwrap &") @@ -158,10 +191,11 @@ class GWinWrap: os.system("nitrogen --restore &") else: os.system("nitrogen --restore &") - + self.helpLabel.set_markup(self.appliedLabel) def killXWinWrp(self, widget, data=None): os.system("killall xwinwrap &") + self.helpLabel.set_markup(self.stoppedLabel) def passXScreenVal(self, widget): xSvrListStore = self.builder.get_object("XScreensaver List") @@ -183,6 +217,9 @@ class GWinWrap: break imageGrid.attach(self.gridLabel, 0, 0, 1, 1) + self.helpLabel.set_markup(self.defaultLabel) + self.loadProgress.set_text("") + self.loadProgress.set_fraction(0.0) self.toSavePath = None self.applyType = 1 # Default to XWinWrap diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade index 23c5eb7..1212a5c 100644 --- a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade +++ b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/resources/GWinWrap.glade @@ -244,9 +244,10 @@ False 5 - + True False + 15 Note: Double click an image to view the video or image. @@ -340,6 +341,18 @@ 1 + + + True + False + True + + + False + True + 2 + + True diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.py b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.py new file mode 100644 index 0000000..0eac2af --- /dev/null +++ b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python + +import os + +class SaveState: + def __init__(self): + self.fileWriter = None + self.filePath = None + self.useXSvrn = None + self.xScreenVal = None + self.sveFileLoc = None + self.resolution = None + + def saveToFile(self, filePath, resolution, + saveLoc, useXSvrn, xScreenVal): + + self.filePath = filePath + self.useXSvrn = useXSvrn + self.xScreenVal = xScreenVal + self.resolution = resolution + userPth = os.path.expanduser('~') + + # Saves to file with selected and needed settings + if filePath: + if filePath.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')): + self.sveFileLoc = userPth + "/" + ".config/nitrogen/bg-saved.cfg" + else: + self.sveFileLoc = userPth + "/" + saveLoc + else: + self.filePath = '' + if self.sveFileLoc: + self.fileWriter = open(self.sveFileLoc, "w") + + return self.startSave() + + def startSave(self): + applyType = 1 + output = None + + # XSCREENSAVER + if self.useXSvrn: + output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- /usr/lib/xscreensaver/" + self.xScreenVal + " -window-id WID -root"; + # GIF + elif self.filePath.lower().endswith(('.gif')): + output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + self.filePath; + # Standard images using nitrogen + elif self.filePath.lower().endswith(('.png', 'jpg', '.jpeg')): + output = "[xin_0] \n file=" + self.filePath + "\nmode=0 \nbgcolor=#000000\n[xin_1] \nfile=" + self.filePath + "\nmode=0 \nbgcolor=#000000"; + applyType = 2; + # VIDEO + else: + output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -ao null -loop 0 " + self.filePath; + pass + + if self.fileWriter: + self.fileWriter.write(output) + self.fileWriter.close() + + return applyType; diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.pyc b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/SaveState.pyc deleted file mode 100644 index 0aa73235eff6a4a559afa40a7e029a85c1f1ec24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2486 zcmd5;-EQMV6duP-+NACNsioBd!qOs<3mj)9t`J3tA`l2wm9tCP0epkYUXaK&@HDa}rwgYCA7xJXat*q?Ea(W!wGoDP0{CY606f0f~l1fVTRb24YOy#FA z{Zc19t)$V##O7LYB#vQZG3vsnU}8#e!I?gnK|GApRIA`nr@6|4<4TWZVoh*7w`W>K zt9ifQkDi)%SjgbBlU$utaT%B@38u0#h-89(uitxo^9}I}6RdWiSI&7EQIxCPMo|k1 zm@P`kX|Mhgl2Tb{AGy%Kf>}6RXfSKbiZ7bXG{gcwl-{K}j+jaVUhDbZ~sghy=wU*dR*To)Lx5e|Hu4N1NTBaVpEK4_*nV`(D9JfW<7FTr+n=IL) zScC2+(mt}Z&EFf^;a;h-ni-dwq1E-qrCf@#e8j4Od6PaQT8;87K$R+;Nfit;-vGyH zFBxSP3WAkqUGn>%oOidO8M;KsCZzBogOBj64dbIEoDl})MH#CUXsawK7J9Zsqg1Jx z<@PM3O=25eN)?h1ZZ>1%%F=!_utNfH9h5^6p=AK0H(6McQmA8lcH7{jwNrvmG_}$l znmq&&?ln9gxGiVb*=g)F?mO+quEVDSRh5c*h+%#Q0sb!eNVsHJi~+d!=s+R3G=RAp zUt_$|HL(XJ^&@{{`~o`!;U?oWd(jMVB@auJr!Se@Ws_eB<4e7Cb7hilainycQd9dc z`n|JKTIRb>or1PPr#R#Zb3hzjicT7I?_q^UIpNw6dojz^3#65wp6NsA`Nm>E zIP`oq0*hDf`MwuSOcfOQFt{*$d{Mcp!0fUST%~&E=c#w{`6r%VX>DtCqdm;Kuk;Iz zX)b4;AAA0c%~yS4X@maRb9W*6<|0>7|2wba(UE&#-hr%hu2Xr?_d3HY(S@!K9^uHt z(_!VuP_A|NU!j{*H<&L#{=Ew4Wf9M1g;ZB-m2pwb{pXWhqH?kJ)TAgpztFn$`W|0F zs|AG={^kVf5^O`-kh-g=q3Q;wg@^ZvJRrhtN)0`u`-NLODYTL7otu@LI4;X#{$yTC zOI@xfww%~o?#yrpnY@ir_oLHtTIk8Q8vD-c7;iXjci+9|Y&(4UFYg!?pUWuX^DK(6 zuag4Pkp3kI_lS_on`JR~D_3HOJovIRRPL73-e|v8=SBM!(ka9$|A$<;v>(*P{E*OP ID95eF-wGZn3;+NC diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.py b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.py new file mode 100644 index 0000000..e0242e1 --- /dev/null +++ b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.py @@ -0,0 +1 @@ +from utils.SaveState import SaveState diff --git a/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.pyc b/python/src/debs/gwinwrap-0-0-1-x64/opt/GWinWrap/utils/__init__.pyc deleted file mode 100644 index ba4d3be19b07acaf19a527b7442e7d7dfcc3aab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmY*U%?iRW3~u$Jf_U*Ec3SFPMDXBE#36zRrLM(QwpNxX_=+BU86QA15yg;v`S}R> z(th-Nx7~f0i;uN9PdRYNVA-W8g{Y+1N+E4aWJ#L||71%fSJY+5%*AD7$Ssm)p9TzP z@+GEUX2m0s`~ybrp@@|Ovp3ep0JCU)IKZ-wN0$@A@=8Sv`r9j|^cu~+bTHreu&K=n pu+HJ)YV-2P`4&NMC(Vj~;X&%5v(+jY3M7sb0 diff --git a/python/src/versions/0.0.1/gwinwrap_exec_bin.cpp b/python/src/versions/0.0.1/gwinwrap_exec_bin.cpp index 8022fbf..16c77a7 100644 --- a/python/src/versions/0.0.1/gwinwrap_exec_bin.cpp +++ b/python/src/versions/0.0.1/gwinwrap_exec_bin.cpp @@ -5,6 +5,6 @@ using namespace std; int main() { chdir("/opt/GWinWrap/"); - system("python GWinWrap.py"); + system("python3 GWinWrap.py"); return 0; }