Added xscreensaver preview
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							@@ -8,7 +8,7 @@ gi.require_version('Gdk', '3.0')
 | 
			
		||||
from gi.repository import Gtk as gtk
 | 
			
		||||
from gi.repository import Gdk as gdk
 | 
			
		||||
from gi.repository import GObject as gobject
 | 
			
		||||
from gi.repository import Gtk, GdkPixbuf
 | 
			
		||||
from gi.repository import GdkPixbuf
 | 
			
		||||
 | 
			
		||||
from os import listdir
 | 
			
		||||
from os.path import isfile, join
 | 
			
		||||
@@ -28,9 +28,8 @@ class GWinWrap:
 | 
			
		||||
        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()
 | 
			
		||||
        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)
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +60,15 @@ class GWinWrap:
 | 
			
		||||
        # foreground=\"#ffa800\"
 | 
			
		||||
        # foreground=\"#88cc27\"
 | 
			
		||||
        # foreground=\"#ff0000\"
 | 
			
		||||
        # foreground=\"#ff0000\"
 | 
			
		||||
 | 
			
		||||
        # Fill list xscreensaver
 | 
			
		||||
        self.xscrPth      = "/usr/lib/xscreensaver/"
 | 
			
		||||
        xscreenList       = self.builder.get_object("XScreensaver List")
 | 
			
		||||
        list              = [f for f in listdir(self.xscrPth) if isfile(join(self.xscrPth, f))]
 | 
			
		||||
        list.sort()
 | 
			
		||||
 | 
			
		||||
        for file in list:
 | 
			
		||||
            xscreenList.append((file,))
 | 
			
		||||
 | 
			
		||||
        self.window.show()
 | 
			
		||||
 | 
			
		||||
@@ -205,6 +212,10 @@ class GWinWrap:
 | 
			
		||||
        resolution      = plyBckRes.get_active_text() + offset4Res.get_active_text()
 | 
			
		||||
        self.applyType  = self.stateSaver.saveToFile(self.toSavePath, resolution,
 | 
			
		||||
                            saveLoc, useXscreenSaver, self.xScreenVal)
 | 
			
		||||
        if self.applyType == -1:
 | 
			
		||||
            self.helpLabel.set_markup("<span foreground=\"#e0cc64\">Nothing saved...</span>")
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        self.helpLabel.set_markup(self.savedLabel)
 | 
			
		||||
 | 
			
		||||
    def applySttngs(self, widget, data=None):
 | 
			
		||||
@@ -229,6 +240,11 @@ class GWinWrap:
 | 
			
		||||
        treeiter        = xSvrListStore.get_iter(path[0])
 | 
			
		||||
        self.xScreenVal = xSvrListStore.get_value(treeiter, 0)
 | 
			
		||||
 | 
			
		||||
    def previewXscreen(self, widget, eve):
 | 
			
		||||
        if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS:
 | 
			
		||||
            preview = self.xscrPth + "/" + self.xScreenVal + "&"
 | 
			
		||||
            os.system(preview)
 | 
			
		||||
 | 
			
		||||
    def clearSelection(self, widget, data=None):
 | 
			
		||||
        self.clear()
 | 
			
		||||
 | 
			
		||||
@@ -242,10 +258,13 @@ class GWinWrap:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
        imageGrid.attach(self.gridLabel, 0, 0, 1, 1)
 | 
			
		||||
        self.builder.get_object("xScreenSvrList").set_sensitive(False)
 | 
			
		||||
        self.builder.get_object("useXScrnList").set_active(False)
 | 
			
		||||
        self.helpLabel.set_markup(self.defaultLabel)
 | 
			
		||||
        self.loadProgress.set_text("")
 | 
			
		||||
        self.loadProgress.set_fraction(0.0)
 | 
			
		||||
        self.toSavePath = None
 | 
			
		||||
        self.xScreenVal = None
 | 
			
		||||
        self.applyType  = 1  # Default to XWinWrap
 | 
			
		||||
 | 
			
		||||
    def closeProgram(self, widget, data=None):
 | 
			
		||||
 
 | 
			
		||||
@@ -12,206 +12,6 @@
 | 
			
		||||
      <!-- column-name XScreensavers -->
 | 
			
		||||
      <column type="gchararray"/>
 | 
			
		||||
    </columns>
 | 
			
		||||
    <data>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">electricsheep</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">atlantis</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">atunnel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">blinkbox</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">blocktube</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bouncingcow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">boxfit</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bsod</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bubble3d</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bumps</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cage</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">carousel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cube21</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cubenetic</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cubicgrid</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cwaves</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">dangerball</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fiberlamp</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fireworkx</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flipflop</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fliptext</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flurry</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flyingtoasters</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">gflux</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glcells</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">gleidescope</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glknots</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glmatrix</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glschool</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glslideshow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glsnake</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">hypertorus</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">hypnowheel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">interaggregate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">intermomentary</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">jigglypuff</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">jigsaw</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">julia</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">lament</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">lockward</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">metaballs</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">moebiusgears</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">molecule</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">morph3d</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">noof</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">phosphor</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">photopile</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">pinion</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">popsquares</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">ripples</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">skytentacles</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">slidescreen</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">stonerview</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">strange</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">substrate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">tangram</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">whirlwindwarp</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">wormhole</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">xflame</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">xrayswarm</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">companioncube</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fuzzyflakes</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">galaxy</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glplanet</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">penetrate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
    </data>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkImage" id="clearImage">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
@@ -449,6 +249,7 @@
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="model">XScreensaver List</property>
 | 
			
		||||
                        <property name="headers_visible">False</property>
 | 
			
		||||
                        <signal name="button-press-event" handler="previewXscreen" swapped="no"/>
 | 
			
		||||
                        <signal name="cursor-changed" handler="passXScreenVal" swapped="no"/>
 | 
			
		||||
                        <child internal-child="selection">
 | 
			
		||||
                          <object class="GtkTreeSelection"/>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,29 +5,32 @@ import os
 | 
			
		||||
class SaveState:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.fileWriter  = None
 | 
			
		||||
        self.filePath    = None
 | 
			
		||||
        self.toSavePath    = None
 | 
			
		||||
        self.useXSvrn    = None
 | 
			
		||||
        self.xScreenVal  = None
 | 
			
		||||
        self.sveFileLoc  = None
 | 
			
		||||
        self.resolution  = None
 | 
			
		||||
 | 
			
		||||
    def saveToFile(self, filePath, resolution,
 | 
			
		||||
        saveLoc, useXSvrn, xScreenVal):
 | 
			
		||||
    def saveToFile(self, toSavePath, resolution,
 | 
			
		||||
                    saveLoc, useXSvrn, xScreenVal):
 | 
			
		||||
 | 
			
		||||
        self.filePath   = filePath
 | 
			
		||||
        self.toSavePath = toSavePath
 | 
			
		||||
        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')):
 | 
			
		||||
        if toSavePath:
 | 
			
		||||
            if toSavePath.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
 | 
			
		||||
                self.sveFileLoc = userPth + "/" + ".config/nitrogen/bg-saved.cfg"
 | 
			
		||||
            else:
 | 
			
		||||
                self.sveFileLoc = userPth + "/" + saveLoc
 | 
			
		||||
        elif useXSvrn and xScreenVal:
 | 
			
		||||
            self.sveFileLoc = userPth + "/" + saveLoc
 | 
			
		||||
        else:
 | 
			
		||||
            self.filePath   = ''
 | 
			
		||||
            return -1
 | 
			
		||||
 | 
			
		||||
        if self.sveFileLoc:
 | 
			
		||||
            self.fileWriter = open(self.sveFileLoc, "w")
 | 
			
		||||
 | 
			
		||||
@@ -37,19 +40,22 @@ class SaveState:
 | 
			
		||||
        applyType = 1
 | 
			
		||||
        output    = None
 | 
			
		||||
 | 
			
		||||
        print("XScreen: " + str(self.useXSvrn))
 | 
			
		||||
        print(self.fileWriter)
 | 
			
		||||
 | 
			
		||||
        # 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;
 | 
			
		||||
        elif self.toSavePath.lower().endswith(('.gif')):
 | 
			
		||||
            output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + self.toSavePath;
 | 
			
		||||
        # 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";
 | 
			
		||||
        elif self.toSavePath.lower().endswith(('.png', 'jpg', '.jpeg')):
 | 
			
		||||
            output = "[xin_0] \n file=" + self.toSavePath + "\nmode=0 \nbgcolor=#000000\n[xin_1] \nfile=" + self.toSavePath + "\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;
 | 
			
		||||
            output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -ao null -loop 0 " + self.toSavePath;
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        if self.fileWriter:
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ gi.require_version('Gdk', '3.0')
 | 
			
		||||
from gi.repository import Gtk as gtk
 | 
			
		||||
from gi.repository import Gdk as gdk
 | 
			
		||||
from gi.repository import GObject as gobject
 | 
			
		||||
from gi.repository import Gtk, GdkPixbuf
 | 
			
		||||
from gi.repository import GdkPixbuf
 | 
			
		||||
 | 
			
		||||
from os import listdir
 | 
			
		||||
from os.path import isfile, join
 | 
			
		||||
@@ -28,9 +28,8 @@ class GWinWrap:
 | 
			
		||||
        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()
 | 
			
		||||
        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)
 | 
			
		||||
 | 
			
		||||
@@ -61,7 +60,15 @@ class GWinWrap:
 | 
			
		||||
        # foreground=\"#ffa800\"
 | 
			
		||||
        # foreground=\"#88cc27\"
 | 
			
		||||
        # foreground=\"#ff0000\"
 | 
			
		||||
        # foreground=\"#ff0000\"
 | 
			
		||||
 | 
			
		||||
        # Fill list xscreensaver
 | 
			
		||||
        self.xscrPth      = "/usr/lib/xscreensaver/"
 | 
			
		||||
        xscreenList       = self.builder.get_object("XScreensaver List")
 | 
			
		||||
        list              = [f for f in listdir(self.xscrPth) if isfile(join(self.xscrPth, f))]
 | 
			
		||||
        list.sort()
 | 
			
		||||
 | 
			
		||||
        for file in list:
 | 
			
		||||
            xscreenList.append((file,))
 | 
			
		||||
 | 
			
		||||
        self.window.show()
 | 
			
		||||
 | 
			
		||||
@@ -205,6 +212,10 @@ class GWinWrap:
 | 
			
		||||
        resolution      = plyBckRes.get_active_text() + offset4Res.get_active_text()
 | 
			
		||||
        self.applyType  = self.stateSaver.saveToFile(self.toSavePath, resolution,
 | 
			
		||||
                            saveLoc, useXscreenSaver, self.xScreenVal)
 | 
			
		||||
        if self.applyType == -1:
 | 
			
		||||
            self.helpLabel.set_markup("<span foreground=\"#e0cc64\">Nothing saved...</span>")
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        self.helpLabel.set_markup(self.savedLabel)
 | 
			
		||||
 | 
			
		||||
    def applySttngs(self, widget, data=None):
 | 
			
		||||
@@ -229,6 +240,11 @@ class GWinWrap:
 | 
			
		||||
        treeiter        = xSvrListStore.get_iter(path[0])
 | 
			
		||||
        self.xScreenVal = xSvrListStore.get_value(treeiter, 0)
 | 
			
		||||
 | 
			
		||||
    def previewXscreen(self, widget, eve):
 | 
			
		||||
        if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS:
 | 
			
		||||
            preview = self.xscrPth + "/" + self.xScreenVal + "&"
 | 
			
		||||
            os.system(preview)
 | 
			
		||||
 | 
			
		||||
    def clearSelection(self, widget, data=None):
 | 
			
		||||
        self.clear()
 | 
			
		||||
 | 
			
		||||
@@ -242,10 +258,13 @@ class GWinWrap:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
        imageGrid.attach(self.gridLabel, 0, 0, 1, 1)
 | 
			
		||||
        self.builder.get_object("xScreenSvrList").set_sensitive(False)
 | 
			
		||||
        self.builder.get_object("useXScrnList").set_active(False)
 | 
			
		||||
        self.helpLabel.set_markup(self.defaultLabel)
 | 
			
		||||
        self.loadProgress.set_text("")
 | 
			
		||||
        self.loadProgress.set_fraction(0.0)
 | 
			
		||||
        self.toSavePath = None
 | 
			
		||||
        self.xScreenVal = None
 | 
			
		||||
        self.applyType  = 1  # Default to XWinWrap
 | 
			
		||||
 | 
			
		||||
    def closeProgram(self, widget, data=None):
 | 
			
		||||
 
 | 
			
		||||
@@ -12,206 +12,6 @@
 | 
			
		||||
      <!-- column-name XScreensavers -->
 | 
			
		||||
      <column type="gchararray"/>
 | 
			
		||||
    </columns>
 | 
			
		||||
    <data>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">electricsheep</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">atlantis</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">atunnel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">blinkbox</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">blocktube</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bouncingcow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">boxfit</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bsod</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bubble3d</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">bumps</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cage</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">carousel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cube21</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cubenetic</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cubicgrid</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">cwaves</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">dangerball</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fiberlamp</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fireworkx</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flipflop</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fliptext</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flurry</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">flyingtoasters</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">gflux</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glcells</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">gleidescope</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glknots</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glmatrix</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glschool</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glslideshow</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glsnake</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">hypertorus</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">hypnowheel</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">interaggregate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">intermomentary</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">jigglypuff</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">jigsaw</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">julia</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">lament</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">lockward</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">metaballs</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">moebiusgears</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">molecule</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">morph3d</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">noof</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">phosphor</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">photopile</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">pinion</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">popsquares</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">ripples</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">skytentacles</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">slidescreen</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">stonerview</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">strange</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">substrate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">tangram</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">whirlwindwarp</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">wormhole</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">xflame</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">xrayswarm</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">companioncube</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">fuzzyflakes</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">galaxy</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">glplanet</col>
 | 
			
		||||
      </row>
 | 
			
		||||
      <row>
 | 
			
		||||
        <col id="0" translatable="yes">penetrate</col>
 | 
			
		||||
      </row>
 | 
			
		||||
    </data>
 | 
			
		||||
  </object>
 | 
			
		||||
  <object class="GtkImage" id="clearImage">
 | 
			
		||||
    <property name="visible">True</property>
 | 
			
		||||
@@ -449,6 +249,7 @@
 | 
			
		||||
                        <property name="can_focus">True</property>
 | 
			
		||||
                        <property name="model">XScreensaver List</property>
 | 
			
		||||
                        <property name="headers_visible">False</property>
 | 
			
		||||
                        <signal name="button-press-event" handler="previewXscreen" swapped="no"/>
 | 
			
		||||
                        <signal name="cursor-changed" handler="passXScreenVal" swapped="no"/>
 | 
			
		||||
                        <child internal-child="selection">
 | 
			
		||||
                          <object class="GtkTreeSelection"/>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,29 +5,32 @@ import os
 | 
			
		||||
class SaveState:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.fileWriter  = None
 | 
			
		||||
        self.filePath    = None
 | 
			
		||||
        self.toSavePath    = None
 | 
			
		||||
        self.useXSvrn    = None
 | 
			
		||||
        self.xScreenVal  = None
 | 
			
		||||
        self.sveFileLoc  = None
 | 
			
		||||
        self.resolution  = None
 | 
			
		||||
 | 
			
		||||
    def saveToFile(self, filePath, resolution,
 | 
			
		||||
        saveLoc, useXSvrn, xScreenVal):
 | 
			
		||||
    def saveToFile(self, toSavePath, resolution,
 | 
			
		||||
                    saveLoc, useXSvrn, xScreenVal):
 | 
			
		||||
 | 
			
		||||
        self.filePath   = filePath
 | 
			
		||||
        self.toSavePath = toSavePath
 | 
			
		||||
        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')):
 | 
			
		||||
        if toSavePath:
 | 
			
		||||
            if toSavePath.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
 | 
			
		||||
                self.sveFileLoc = userPth + "/" + ".config/nitrogen/bg-saved.cfg"
 | 
			
		||||
            else:
 | 
			
		||||
                self.sveFileLoc = userPth + "/" + saveLoc
 | 
			
		||||
        elif useXSvrn and xScreenVal:
 | 
			
		||||
            self.sveFileLoc = userPth + "/" + saveLoc
 | 
			
		||||
        else:
 | 
			
		||||
            self.filePath   = ''
 | 
			
		||||
            return -1
 | 
			
		||||
 | 
			
		||||
        if self.sveFileLoc:
 | 
			
		||||
            self.fileWriter = open(self.sveFileLoc, "w")
 | 
			
		||||
 | 
			
		||||
@@ -37,19 +40,22 @@ class SaveState:
 | 
			
		||||
        applyType = 1
 | 
			
		||||
        output    = None
 | 
			
		||||
 | 
			
		||||
        print("XScreen: " + str(self.useXSvrn))
 | 
			
		||||
        print(self.fileWriter)
 | 
			
		||||
 | 
			
		||||
        # 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;
 | 
			
		||||
        elif self.toSavePath.lower().endswith(('.gif')):
 | 
			
		||||
            output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + self.toSavePath;
 | 
			
		||||
        # 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";
 | 
			
		||||
        elif self.toSavePath.lower().endswith(('.png', 'jpg', '.jpeg')):
 | 
			
		||||
            output = "[xin_0] \n file=" + self.toSavePath + "\nmode=0 \nbgcolor=#000000\n[xin_1] \nfile=" + self.toSavePath + "\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;
 | 
			
		||||
            output = "xwinwrap -ov -g " + self.resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -really-quiet -ao null -loop 0 " + self.toSavePath;
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        if self.fileWriter:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user