Python version commit n push.

This commit is contained in:
2019-05-05 04:02:35 -05:00
parent d03be33f35
commit 33e6a78650
32 changed files with 2808 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
Package: gwinwrap64
Version: 0.0-1
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)
Maintainer: Maxim Stewart <1itdominator@gmail.com>
Description: GWinWrap is a GUI to handle setting XWinWrap options.

View File

@@ -0,0 +1,20 @@
#!/bin/bash
#postrm (script executed after uninstalling the package)
#set -e
if [ -f /bin/xwinwrap ]; then
rm /bin/xwinwrap
fi
if [ -f /bin/gwinwrap ]; then
rm /bin/gwinwrap
fi
if [ -d /opt/GWinWrap ]; then
rm -rf /opt/GWinWrap
fi
if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then
xdg-desktop-menu uninstall /usr/share/applications/GWinWrap.desktop
xdg-desktop-menu forceupdate --mode user
fi

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,196 @@
#!/usr/bin/env python
import os, cairo, sys, gi, re, threading, subprocess
gi.require_version('Gtk', '3.0')
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 os import listdir
from os.path import isfile, join
from threading import Thread
from utils import SaveState
gdk.threads_init()
class GWinWrap:
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("resources/GWinWrap.glade")
# Get window and connect signals
self.window = self.builder.get_object("Main")
self.builder.connect_signals(self)
self.window.connect("delete-event", gtk.main_quit)
self.screen = self.window.get_screen()
self.visual = self.screen.get_rgba_visual()
if self.visual != None and self.screen.is_composited():
self.window.set_visual(self.visual)
self.window.set_app_paintable(True)
self.window.connect("draw", self.area_draw)
# Add filter to allow only folders to be selected
dialog = self.builder.get_object("selectedDirDialog")
filefilter = self.builder.get_object("Folders")
dialog.add_filter(filefilter)
# Get reference to remove and add it back...
self.gridLabel = self.builder.get_object("gridLabel")
self.stateSaver = SaveState()
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.window.show()
def area_draw(self, widget, cr):
cr.set_source_rgba(0, 0, 0, 0.64)
cr.set_operator(cairo.OPERATOR_SOURCE)
cr.paint()
cr.set_operator(cairo.OPERATOR_OVER)
def setNewDir(self, widget, data=None):
dir = widget.get_filename()
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
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)
imageGrid.remove_column(0)
for file in files:
fullPathFile = path + "/" + 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)
elif file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
thumbnl = self.createImage(fullPathFile)
eveBox.connect("button_press_event", self.runImageViewerProcess, fullPathFile)
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,))
col += 1
if col == 2:
col = 0
row += 1
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):
if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS:
subprocess.call(["mplayer", "-really-quiet", "-ao", "null", "-loop", "0", fullPathFile])
self.toSavePath = fullPathFile
self.applyType = 1 # Set to XWinWrap
def runImageViewerProcess(self, widget, eve, fullPathFile):
if eve.type == gdk.EventType.DOUBLE_BUTTON_PRESS:
subprocess.call(["xdg-open", fullPathFile])
self.toSavePath = fullPathFile
self.applyType = 2 # Set to Nitrogen
def toggleXscreenUsageField(self, widget, data=None):
useXscreenSaver = self.builder.get_object("useXScrnList")
if useXscreenSaver.get_active():
self.builder.get_object("xScreenSvrList").set_sensitive(True)
else:
self.builder.get_object("xScreenSvrList").set_sensitive(False)
def saveToFile(self, widget, data=None):
saveLoc = self.builder.get_object("saveLoc").get_active_text()
useXscreenSaver = self.builder.get_object("useXScrnList").get_active()
plyBckRes = self.builder.get_object("playbackResolution")
offset4Res = self.builder.get_object("posOffset")
resolution = plyBckRes.get_active_text() + offset4Res.get_active_text()
self.applyType = self.stateSaver.saveToFile(self.toSavePath, resolution,
saveLoc, useXscreenSaver, self.xScreenVal)
def applySttngs(self, widget, data=None):
os.system("killall xwinwrap &")
if self.applyType == 1:
os.system("bash -c '~/.animatedBGstarter.sh' &")
os.system("bash -c '~/.animatedBGstarter2.sh' &")
elif self.applyType == 2:
os.system("nitrogen --restore &")
else:
os.system("nitrogen --restore &")
def killXWinWrp(self, widget, data=None):
os.system("killall xwinwrap &")
def passXScreenVal(self, widget):
xSvrListStore = self.builder.get_object("XScreensaver List")
row = widget.get_cursor()
path = gtk.TreePath(row.path)
treeiter = xSvrListStore.get_iter(path[0])
self.xScreenVal = xSvrListStore.get_value(treeiter, 0)
def clearSelection(self, widget, data=None):
self.clear()
def clear(self):
imageGrid = self.builder.get_object("imageGrid")
while True:
if imageGrid.get_child_at(0,0)!= None:
imageGrid.remove_row(0)
else:
break
imageGrid.attach(self.gridLabel, 0, 0, 1, 1)
self.toSavePath = None
self.applyType = 1 # Default to XWinWrap
def closeProgram(self, widget, data=None):
sys.exit(0)
if __name__ == "__main__":
main = GWinWrap()
gtk.main()

View File

@@ -0,0 +1,699 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkFileFilter" id="Folders">
<mime-types>
<mime-type>inode/directory</mime-type>
</mime-types>
</object>
<object class="GtkListStore" id="XScreensaver List">
<columns>
<!-- 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="GtkWindow" id="Main">
<property name="width_request">950</property>
<property name="height_request">600</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">GWinWrap</property>
<property name="window_position">center</property>
<property name="default_width">950</property>
<property name="default_height">600</property>
<property name="icon">GWinWrap.png</property>
<property name="gravity">center</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">15</property>
<property name="margin_top">15</property>
<property name="margin_bottom">15</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_bottom">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Note: Double click an image to view the video or image.</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Clear</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="clearSelection" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkFileChooserButton" id="selectedDirDialog">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="focus_on_click">False</property>
<property name="tooltip_text" translatable="yes">Chose Dream Scene / Image Directory</property>
<property name="action">select-folder</property>
<property name="create_folders">False</property>
<property name="filter">Folders</property>
<property name="preview_widget_active">False</property>
<property name="title" translatable="yes">Dream Scene / Image Dir</property>
<signal name="file-set" handler="setNewDir" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkGrid" id="imageGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="row_spacing">10</property>
<property name="column_spacing">10</property>
<property name="row_homogeneous">True</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkLabel" id="gridLabel">
<property name="width_request">640</property>
<property name="height_request">525</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Choose Image/Video Directory...</property>
<attributes>
<attribute name="font-desc" value="Times New Roman, 28"/>
</attributes>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="width_request">300</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">10</property>
<property name="margin_right">15</property>
<property name="margin_top">15</property>
<property name="margin_bottom">15</property>
<property name="hexpand">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="useXScrnList">
<property name="label" translatable="yes">Use XScreenSaver</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="halign">center</property>
<property name="margin_bottom">5</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="toggleXscreenUsageField" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkTreeView" id="xScreenSvrList">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="model">XScreensaver List</property>
<property name="headers_visible">False</property>
<signal name="cursor-changed" handler="passXScreenVal" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="listColumn">
<property name="title" translatable="yes">XScreensaves</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="label" translatable="yes">Playback Resolutions</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">10</property>
<property name="margin_bottom">10</property>
<property name="label" translatable="yes">Position Offset</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkComboBoxText" id="playbackResolution">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">3</property>
<items>
<item translatable="yes">7680x4320</item>
<item translatable="yes">3840x2160</item>
<item translatable="yes">2048x1080</item>
<item translatable="yes">1920x1080</item>
<item translatable="yes">1440x720</item>
<item translatable="yes">1600x900</item>
<item translatable="yes">1280x720</item>
<item translatable="yes">800x600</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="posOffset">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">18</property>
<items>
<item translatable="yes">Left</item>
<item translatable="yes">-7680+0</item>
<item translatable="yes">-3840+0</item>
<item translatable="yes">-2048+0</item>
<item translatable="yes">-1920+0</item>
<item translatable="yes">-1440+0</item>
<item translatable="yes">-1600+0</item>
<item translatable="yes">-1280+0</item>
<item translatable="yes">-800+0</item>
<item translatable="yes">Right</item>
<item translatable="yes">+7680+0</item>
<item translatable="yes">+3840+0</item>
<item translatable="yes">+2048+0</item>
<item translatable="yes">+1920+0</item>
<item translatable="yes">+1440+0</item>
<item translatable="yes">+1600+0</item>
<item translatable="yes">+1280+0</item>
<item translatable="yes">+800+0</item>
<item translatable="yes">+0+0</item>
<item translatable="yes">Top</item>
<item translatable="yes">+0+7680</item>
<item translatable="yes">+0+3840</item>
<item translatable="yes">+0+2048</item>
<item translatable="yes">+0+1920</item>
<item translatable="yes">+0+1440</item>
<item translatable="yes">+0+1600</item>
<item translatable="yes">0+1280</item>
<item translatable="yes">+0+800</item>
<item translatable="yes">Bottum</item>
<item translatable="yes">+0-7680</item>
<item translatable="yes">+0-3840</item>
<item translatable="yes">+0-2048</item>
<item translatable="yes">+0-1920</item>
<item translatable="yes">+0-1440</item>
<item translatable="yes">+0-1600</item>
<item translatable="yes">0-1280</item>
<item translatable="yes">+0-800</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_top">10</property>
<property name="margin_bottom">5</property>
<property name="label" translatable="yes">Save Path</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="saveLoc">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="active">0</property>
<items>
<item translatable="yes">.animatedBGstarter.sh</item>
<item translatable="yes">.animatedBGstarter2.sh</item>
</items>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Save Selection</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="clicked" handler="saveToFile" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Apply</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="clicked" handler="applySttngs" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Kill XWinWrap</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="clicked" handler="killXWinWrp" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<signal name="clicked" handler="closeProgram" swapped="no"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">1</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@@ -0,0 +1,9 @@
[Desktop Entry]
Encoding=UTF-8
Name=GWinWrap
Comment=Glade gui with python controls for XWinWrap
Exec=/bin/gwinwrap
Icon=/opt/GWinWrap/resources/GWinWrap.png
Terminal=false
Type=Application
Categories=System;

View File

@@ -0,0 +1,22 @@
FXWinWrap is copyright 2016, 2017 Maxim Stewart.
FXWinWrap 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
<http://www.gnu.org/copyleft/gpl.txt> for the terms of the latest version
of the GNU General Public License.