remove simplerss and add flexrss
This commit is contained in:
parent
a769af2262
commit
63ac691e64
|
@ -0,0 +1,67 @@
|
|||
# Obviously needs work, but a decent start.
|
||||
# Public domain
|
||||
|
||||
import gobject, gtk, time
|
||||
|
||||
class CalendarButton(gtk.Button):
|
||||
format = None
|
||||
calendar = None
|
||||
window = None
|
||||
|
||||
__gsignals__ = {
|
||||
'date-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)),
|
||||
'date-selected': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,))
|
||||
}
|
||||
|
||||
def __lost_focus(self, win, e):
|
||||
print e.type
|
||||
|
||||
def __day_selected(self, calendar):
|
||||
self.window.hide()
|
||||
newdate = self.get_date()
|
||||
self.set_date(newdate[0], newdate[1], newdate[2])
|
||||
self.emit("date-selected", newdate)
|
||||
|
||||
def __show_calendar(self, source):
|
||||
if self.window != None:
|
||||
self.window.show()
|
||||
return
|
||||
|
||||
self.window = gtk.Window(gtk.WINDOW_POPUP)
|
||||
self.window.set_position(gtk.WIN_POS_MOUSE)
|
||||
self.window.set_destroy_with_parent(True)
|
||||
self.window.set_transient_for(source.get_ancestor(gtk.Window))
|
||||
self.window.add(self.calendar)
|
||||
self.window.show_all()
|
||||
|
||||
def __set_date_on_button(self, year, month, day):
|
||||
self.set_label(time.strftime('%x', time.strptime('%d/%d/%d' % (day, month, year), '%d/%m/%Y')))
|
||||
|
||||
def set_date(self, year, month, day):
|
||||
self.__set_date_on_button(year, month, day)
|
||||
self.calendar.select_month(month - 1, year)
|
||||
self.calendar.select_day(day)
|
||||
self.emit("date-changed", (year, month, day))
|
||||
|
||||
def get_date(self):
|
||||
ret = self.calendar.get_date()
|
||||
return (ret[0], ret[1] + 1, ret[2])
|
||||
|
||||
def __init__(self, year=None, month=None, day=None):
|
||||
value = time.localtime()
|
||||
|
||||
if year == None:
|
||||
year = value[0]
|
||||
if month == None:
|
||||
month = value[1]
|
||||
if day == None:
|
||||
day = value[2]
|
||||
|
||||
self.calendar = gtk.Calendar()
|
||||
self.calendar.select_month(month - 1, year)
|
||||
self.calendar.select_day(day)
|
||||
self.calendar.connect("day-selected-double-click", self.__day_selected)
|
||||
|
||||
gtk.Button.__init__(self, time.strftime('%x', time.strptime('%d/%d/%d' % (day, month, year), '%d/%m/%Y')))
|
||||
|
||||
self.connect("pressed", self.__show_calendar)
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,393 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg3440"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.45"
|
||||
sodipodi:docname="FlexRSS.svg"
|
||||
inkscape:export-xdpi="480"
|
||||
inkscape:export-ydpi="480"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2973">
|
||||
<stop
|
||||
style="stop-color:#eeeeec;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2975" />
|
||||
<stop
|
||||
style="stop-color:#eeeeec;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2977" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4126">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop4128" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.16494845;"
|
||||
offset="1.0000000"
|
||||
id="stop4130" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4114">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4116" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4118" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3962">
|
||||
<stop
|
||||
style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop3964" />
|
||||
<stop
|
||||
style="stop-color:#d3e9ff;stop-opacity:1.0000000;"
|
||||
offset="0.15517241"
|
||||
id="stop4134" />
|
||||
<stop
|
||||
style="stop-color:#4074ae;stop-opacity:1.0000000;"
|
||||
offset="0.75000000"
|
||||
id="stop4346" />
|
||||
<stop
|
||||
style="stop-color:#36486c;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop3966" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="13.994944"
|
||||
fy="33.506763"
|
||||
fx="-10.089286"
|
||||
cy="33.506763"
|
||||
cx="-10.089286"
|
||||
gradientTransform="matrix(1,0,0,0.791446,-14.01786,-11.28667)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4019"
|
||||
xlink:href="#linearGradient3993"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="14.057444"
|
||||
fy="31.329016"
|
||||
fx="-10.323107"
|
||||
cy="31.329016"
|
||||
cx="-10.323107"
|
||||
gradientTransform="matrix(1,0,0,0.792374,-19.58761,2.818569)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4004"
|
||||
xlink:href="#linearGradient3993"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.792374,0,6.785475)"
|
||||
r="14.057444"
|
||||
fy="31.329016"
|
||||
fx="-10.323107"
|
||||
cy="31.329016"
|
||||
cx="-10.323107"
|
||||
id="radialGradient3999"
|
||||
xlink:href="#linearGradient3993"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.341185,-0.153831,1.08001,2.395374,-15.42222,-25.62103)"
|
||||
r="13.994946"
|
||||
fy="24.241488"
|
||||
fx="61.662098"
|
||||
cy="24.241488"
|
||||
cx="61.662098"
|
||||
id="radialGradient3943"
|
||||
xlink:href="#linearGradient1312"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient1312">
|
||||
<stop
|
||||
id="stop1314"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop1316"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3993">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3995" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3997" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2973"
|
||||
id="radialGradient3866"
|
||||
cx="-22.375"
|
||||
cy="18.499998"
|
||||
fx="-22.375"
|
||||
fy="18.499998"
|
||||
r="14.33462"
|
||||
gradientTransform="matrix(1,0,0,1.140022,40.17678,1.347091)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
r="12.289036"
|
||||
fy="63.965388"
|
||||
fx="15.115514"
|
||||
cy="63.965388"
|
||||
cx="15.115514"
|
||||
gradientTransform="scale(1.643990,0.608276)"
|
||||
id="radialGradient5000"
|
||||
xlink:href="#linearGradient4114"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient4989">
|
||||
<stop
|
||||
offset="0.0"
|
||||
stop-color="#E3702D"
|
||||
id="stop13201" />
|
||||
<stop
|
||||
offset="0.1071"
|
||||
stop-color="#EA7D31"
|
||||
id="stop13203" />
|
||||
<stop
|
||||
offset="0.3503"
|
||||
stop-color="#F69537"
|
||||
id="stop13205" />
|
||||
<stop
|
||||
offset="0.5"
|
||||
stop-color="#FB9E3A"
|
||||
id="stop13207" />
|
||||
<stop
|
||||
offset="0.7016"
|
||||
stop-color="#EA7C31"
|
||||
id="stop13209" />
|
||||
<stop
|
||||
offset="0.8866"
|
||||
stop-color="#DE642B"
|
||||
id="stop13211" />
|
||||
<stop
|
||||
offset="1.0"
|
||||
stop-color="#D95B29"
|
||||
id="stop13213" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4977">
|
||||
<stop
|
||||
id="stop4979"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4981"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:0.16494845;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4825"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4827"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4829"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4114"
|
||||
id="radialGradient6090"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(1.64399,0.608276)"
|
||||
cx="15.115514"
|
||||
cy="63.965388"
|
||||
fx="15.115514"
|
||||
fy="63.965388"
|
||||
r="12.289036" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4825"
|
||||
id="radialGradient6098"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
cx="12.071323"
|
||||
cy="12.493138"
|
||||
fx="12.071323"
|
||||
fy="12.493138"
|
||||
r="6.7175145" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1312"
|
||||
id="radialGradient6109"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.768231,1.13675,-0.820972,0.554824,-3.72248,-85.07126)"
|
||||
cx="65.800331"
|
||||
cy="27.16758"
|
||||
fx="65.800331"
|
||||
fy="27.16758"
|
||||
r="12.972491" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4989"
|
||||
id="radialGradient15360"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.486175,1.536108,0.932321,-0.902016,-38.10476,16.57354)"
|
||||
cx="16.651781"
|
||||
cy="32.187485"
|
||||
fx="16.651781"
|
||||
fy="32.187485"
|
||||
r="17.089519" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.17254902"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="8"
|
||||
inkscape:cx="36.657417"
|
||||
inkscape:cy="37.982995"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1266"
|
||||
inkscape:window-height="944"
|
||||
inkscape:window-x="6"
|
||||
inkscape:window-y="28"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Internet Category</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Tuomas Kuosmanen</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>internet</rdf:li>
|
||||
<rdf:li>tools</rdf:li>
|
||||
<rdf:li>applications</rdf:li>
|
||||
<rdf:li>category</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Attribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient6090);fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
id="path4112"
|
||||
sodipodi:cx="24.849752"
|
||||
sodipodi:cy="38.908627"
|
||||
sodipodi:rx="20.203051"
|
||||
sodipodi:ry="7.4751287"
|
||||
d="M 45.052803 38.908627 A 20.203051 7.4751287 0 1 1 4.6467018,38.908627 A 20.203051 7.4751287 0 1 1 45.052803 38.908627 z"
|
||||
transform="matrix(0.947409,0,0,1.17786,1.244375,-6.853427)"
|
||||
inkscape:export-xdpi="480"
|
||||
inkscape:export-ydpi="480" />
|
||||
<path
|
||||
style="fill:url(#radialGradient15360);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.07523891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 23.9375 0.96875 L 11.25 18.625 C 11.083253 18.932923 10.936659 19.263746 10.78125 19.59375 C 10.761069 19.636604 10.738726 19.675547 10.71875 19.71875 C 7.2395433 25.754509 6.9905394 34.252425 10.96875 39.71875 C 14.403259 44.437994 25.023267 46.877018 32.96875 43.59375 C 33.644467 43.314527 34.306967 43.02091 34.9375 42.65625 C 34.977742 42.632977 35.022469 42.617381 35.0625 42.59375 C 35.095502 42.574645 35.12346 42.550547 35.15625 42.53125 C 35.214913 42.496047 35.285557 42.473482 35.34375 42.4375 C 35.558127 42.307459 35.763748 42.169493 35.96875 42.03125 C 35.980782 42.02298 35.987992 42.008307 36 42 C 36.248731 41.831254 36.484083 41.64914 36.71875 41.46875 C 43.376411 36.350984 44.348198 26.670654 37.34375 18.28125 L 23.9375 0.96875 z "
|
||||
id="path2069" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.1000706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.36612022"
|
||||
d="M 23.996861,3.5433428 L 36.057351,19.151045 C 44.769741,29.58253 39.419346,42.414092 26.125181,43.508521 C 7.3917365,44.015286 7.4275065,28.119221 12.17284,20.333442 L 23.996861,3.5433428 z "
|
||||
id="path2071"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="opacity:0.46;fill:url(#radialGradient6109);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.07523891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 23.940758,0.96491709 L 34.727367,14.909752 C 42.647208,24.392311 40.447304,20.283975 28.362481,21.278846 C 25.083165,11.203805 18.13871,11.859899 13.523802,15.675236 L 23.940758,0.96491709 z "
|
||||
id="path3945"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
transform="matrix(-0.829136,1.052307,1.239307,7.58326e-2,26.32898,25.58605)"
|
||||
inkscape:r_cy="true"
|
||||
inkscape:r_cx="true"
|
||||
d="M 18.788838 12.493138 A 6.7175145 6.7175145 0 1 1 5.3538089,12.493138 A 6.7175145 6.7175145 0 1 1 18.788838 12.493138 z"
|
||||
sodipodi:ry="6.7175145"
|
||||
sodipodi:rx="6.7175145"
|
||||
sodipodi:cy="12.493138"
|
||||
sodipodi:cx="12.071323"
|
||||
id="path4941"
|
||||
style="opacity:0.21999996;color:black;fill:url(#radialGradient6098);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<circle
|
||||
transform="matrix(0.1085714,0,0,0.1085714,11.347857,13.999286)"
|
||||
cx="68"
|
||||
cy="189"
|
||||
r="24"
|
||||
id="circle15442"
|
||||
sodipodi:cx="68"
|
||||
sodipodi:cy="189"
|
||||
sodipodi:rx="24"
|
||||
sodipodi:ry="24"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
d="M 28.719284,37.125 L 25.027858,37.125 C 25.027858,32.208088 21.041912,28.222143 16.125,28.222143 L 16.125,24.530714 C 23.080632,24.530714 28.719284,30.169368 28.719284,37.125 z "
|
||||
id="path15444"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
d="M 31.325,37.125 C 31.325,28.730272 24.519728,21.925 16.125,21.925 L 16.125,18.125 C 26.61841,18.125 35.125,26.631589 35.125,37.125 L 31.325,37.125 z "
|
||||
id="path15446"
|
||||
style="fill:#ffffff" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,25 @@
|
|||
FlexRSS_DEFAULTS = {
|
||||
'VERSION': (0, 2, 3)
|
||||
}
|
||||
|
||||
plugin_name = "FlexRSS"
|
||||
plugin_author = "Daddy"
|
||||
plugin_version = "%d.%d.%d" % (FlexRSS_DEFAULTS['VERSION'][0], FlexRSS_DEFAULTS['VERSION'][1], FlexRSS_DEFAULTS['VERSION'][2])
|
||||
plugin_description = _("""
|
||||
Advanced RSS scraper
|
||||
|
||||
This plugin is similar in purpose to Mark Adamson's excellent RSS Broadcatcher, but targets a more advanced audience. It is extremely powerful, configurable, unforgiving, and difficult.
|
||||
|
||||
Filters use regular expressions with named patterns and strptime(3)-like format filters to match items.
|
||||
|
||||
For more information and documentation, visit http://dev.deluge-torrent.org/wiki/Plugins/FlexRSS""")
|
||||
|
||||
from FlexRSS.plugin import plugin_FlexRSS
|
||||
|
||||
def deluge_init(deluge_path):
|
||||
global path
|
||||
path = deluge_path
|
||||
|
||||
def enable(core, interface):
|
||||
global path
|
||||
return plugin_FlexRSS(path, core, interface, FlexRSS_DEFAULTS)
|
File diff suppressed because it is too large
Load Diff
|
@ -1,55 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# __init__.py
|
||||
#
|
||||
# Copyright (C) "Mark Adamson" 2007
|
||||
#
|
||||
# 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, 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 Street, Fifth Floor
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# In addition, as a special exception, the copyright holders give
|
||||
# permission to link the code of portions of this program with the OpenSSL
|
||||
# library.
|
||||
# You must obey the GNU General Public License in all respects for all of
|
||||
# the code used other than OpenSSL. If you modify file(s) with this
|
||||
# exception, you may extend this exception to your version of the file(s),
|
||||
# but you are not obligated to do so. If you do not wish to do so, delete
|
||||
# this exception statement from your version. If you delete this exception
|
||||
# statement from all source files in the program, then also delete it here.
|
||||
|
||||
plugin_name = _("Simple RSS")
|
||||
plugin_author = "Mark Adamson"
|
||||
plugin_version = "1.0"
|
||||
plugin_description = _("""
|
||||
Download Torrents automatically from SimpleRSS Feeds
|
||||
|
||||
Add RSS feeds on the 'Feeds' tab, then add filters for TV shows (or whatever) on the 'Filters' tab. Double-click entries on the 'Torrents' tab to download extra torrents from the feeds. The Options are pretty self-explanatary.
|
||||
|
||||
Please message me (SatNav) on the forums and let me know how you get on..
|
||||
|
||||
Enjoy!""")
|
||||
|
||||
|
||||
def deluge_init(deluge_path):
|
||||
global path
|
||||
path = deluge_path
|
||||
|
||||
|
||||
from SimpleRSS.plugin import plugin_SimpleRSS
|
||||
|
||||
def enable(core, interface):
|
||||
global path
|
||||
return plugin_SimpleRSS(path, core, interface)
|
|
@ -1,475 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# plugin.py
|
||||
#
|
||||
# Copyright (C) Marcos Pinto 2007 <markybob@gmail.com>
|
||||
#
|
||||
# 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, 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 Street, Fifth Floor
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# In addition, as a special exception, the copyright holders give
|
||||
# permission to link the code of portions of this program with the OpenSSL
|
||||
# library.
|
||||
# You must obey the GNU General Public License in all respects for all of
|
||||
# the code used other than OpenSSL. If you modify file(s) with this
|
||||
# exception, you may extend this exception to your version of the file(s),
|
||||
# but you are not obligated to do so. If you do not wish to do so, delete
|
||||
# this exception statement from your version. If you delete this exception
|
||||
# statement from all source files in the program, then also delete it here.
|
||||
|
||||
|
||||
class plugin_SimpleRSS:
|
||||
def __init__(self, path, deluge_core, deluge_interface):
|
||||
#set up system thingies
|
||||
import gtk, gtk.glade, os, ConfigParser, feedparser
|
||||
import deluge.common, deluge.dgtk, deluge.pref
|
||||
from time import asctime
|
||||
self.path = path
|
||||
self.core = deluge_core
|
||||
self.interface = deluge_interface
|
||||
#set up feeds file
|
||||
self.feeds_config = ConfigParser.ConfigParser()
|
||||
self.feeds_file = deluge.common.CONFIG_DIR + "/feeds.conf"
|
||||
if not os.path.isfile(self.feeds_file):
|
||||
f = open(self.feeds_file, mode='w')
|
||||
f.flush()
|
||||
f.close()
|
||||
self.feeds_config.read(self.feeds_file)
|
||||
#set up filters file
|
||||
self.filters_config = ConfigParser.ConfigParser()
|
||||
self.filters_file = deluge.common.CONFIG_DIR + "/filters.conf"
|
||||
if not os.path.isfile(self.filters_file):
|
||||
f = open(self.filters_file, mode='w')
|
||||
f.flush()
|
||||
f.close()
|
||||
self.filters_config.read(self.filters_file)
|
||||
#set up the preferences dialog
|
||||
glade = gtk.glade.XML(path + "/rss.glade")
|
||||
self.dlg = glade.get_widget("dialog")
|
||||
self.dlg.set_position(gtk.WIN_POS_CENTER)
|
||||
self.dlg.set_icon_from_file(self.path + "/rss.png")
|
||||
#set up the feeds list viewer
|
||||
self.feeds_view = glade.get_widget("feeds_view")
|
||||
model = gtk.ListStore(str, str, str)
|
||||
self.feeds_view.set_model(model)
|
||||
deluge.dgtk.add_text_column(self.feeds_view, _("Name"), 0)
|
||||
deluge.dgtk.add_text_column(self.feeds_view, _("URL"), 1)
|
||||
deluge.dgtk.add_text_column(self.feeds_view, _("Last Entry Date"), 2)
|
||||
#set up the torrents list viewer
|
||||
self.torrents_view = glade.get_widget("torrents_view")
|
||||
model = gtk.ListStore(str, str, str, str)
|
||||
self.torrents_view.set_model(model)
|
||||
deluge.dgtk.add_text_column(self.torrents_view, _("Feed"), 0)
|
||||
deluge.dgtk.add_text_column(self.torrents_view, _("Name"), 1)
|
||||
deluge.dgtk.add_text_column(self.torrents_view, _("URL"), 2)
|
||||
deluge.dgtk.add_text_column(self.torrents_view, _("Date"), 3)
|
||||
# Setup the filters list viewer
|
||||
self.filters_view = glade.get_widget("filters_view")
|
||||
model = gtk.ListStore(str)
|
||||
self.filters_view.set_model(model)
|
||||
deluge.dgtk.add_text_column(self.filters_view, _("Name"), 0)
|
||||
# set up the feed choice combobox
|
||||
self.feedchoice_combo = glade.get_widget("feedchoice_combo")
|
||||
model = gtk.ListStore(str)
|
||||
self.feedchoice_combo.set_model(model)
|
||||
cell = gtk.CellRendererText()
|
||||
self.feedchoice_combo.pack_start(cell, True)
|
||||
self.feedchoice_combo.add_attribute(cell, 'text', 0)
|
||||
# set up the torrents feed choice combobox
|
||||
self.torrents_fcc = glade.get_widget("torrents_fcc")
|
||||
model = gtk.ListStore(str)
|
||||
self.torrents_fcc.set_model(model)
|
||||
cell = gtk.CellRendererText()
|
||||
self.torrents_fcc.pack_start(cell, True)
|
||||
self.torrents_fcc.add_attribute(cell, 'text', 0)
|
||||
#set up the rest of the GUI elements
|
||||
self.name_entry = glade.get_widget("name_entry")
|
||||
self.url_entry = glade.get_widget("url_entry")
|
||||
self.button_addfeed = glade.get_widget("button_addfeed")
|
||||
self.button_delfeed = glade.get_widget("button_delfeed")
|
||||
self.chkfeeds = glade.get_widget("chkfeeds")
|
||||
self.filtername_entry = glade.get_widget("filtername_entry")
|
||||
self.filterexp_entry = glade.get_widget("filterexp_entry")
|
||||
self.button_delfilter = glade.get_widget("button_delfilter")
|
||||
self.checkonstart_button = glade.get_widget("checkonstart_button")
|
||||
self.update_entry = glade.get_widget("update_entry")
|
||||
#Connect event signals
|
||||
self.filters_view.connect("cursor-changed", self.filter_row_clicked)
|
||||
dic = { "addfeed_clicked" : self.addfeed_clicked,
|
||||
"delfeed_clicked" : self.delfeed_clicked,
|
||||
"addfilter_clicked" : self.addfilter_clicked,
|
||||
"delfilter_clicked" : self.delfilter_clicked,
|
||||
"row_clicked" : self.row_clicked,
|
||||
"feedtext_changed" : self.feedtext_changed,
|
||||
"filtername_lostfocus" : self.filtername_lostfocus,
|
||||
"filterexp_lostfocus" : self.filterexp_lostfocus,
|
||||
"feedchoice_combo_changed" : self.feedchoice_combo_changed,
|
||||
"torrents_fcc_changed" : self.torrents_fcc_changed,
|
||||
"torrents_view_row_activated" : self.torrents_view_row_activated,
|
||||
"chkfeeds_clicked" : self.chkfeeds_clicked,
|
||||
"cancel_clicked" : self.dialog_cancel,
|
||||
"ok_clicked" : self.dialog_ok }
|
||||
glade.signal_autoconnect(dic)
|
||||
self.feeds_view.get_selection().set_select_function(self.row_clicked)
|
||||
self.timer = 0
|
||||
self.torrents_list = []
|
||||
#self.checkfeeds()
|
||||
# Access the interface's toolbar
|
||||
self.toolbar = self.interface.toolbar
|
||||
# Make a toolbar button
|
||||
icon = gtk.Image()
|
||||
icon.set_from_file(self.path + "/rss.png") # Toolbar items should be 22x22 pixel images
|
||||
self.button = gtk.ToolButton(icon_widget=icon, label=_("RSS"))
|
||||
self.ttips = gtk.Tooltips()
|
||||
self.button.set_tooltip(self.ttips, _("SimpleRSS Broadcatcher"))
|
||||
self.button.connect("clicked", self.rss_clicked) # Connect the signal handler for the button
|
||||
self.toolbar.add(self.button) # Add button to toolbar
|
||||
self.button.show_all() # Show the button
|
||||
self.checkonstart = False
|
||||
#load options
|
||||
if self.feeds_config.has_option("DEFAULT", "interval"):
|
||||
self.interval = self.feeds_config.getint("DEFAULT", "interval")
|
||||
self.update_entry.set_text(self.feeds_config.get("DEFAULT", "interval"))
|
||||
else:
|
||||
self.interval = 900
|
||||
self.feeds_config.set("DEFAULT", "interval", 900)
|
||||
if self.feeds_config.has_option("DEFAULT", "checkonstart"):
|
||||
self.checkonstart = self.feeds_config.getboolean("DEFAULT", "checkonstart")
|
||||
self.checkonstart_button.set_active(self.checkonstart)
|
||||
else:
|
||||
self.checkonstart = False
|
||||
self.feeds_config.set("DEFAULT", "checkonstart", False)
|
||||
if self.checkonstart_button.get_active():
|
||||
self.timer = self.interval - 5
|
||||
|
||||
def rss_clicked(self, button):
|
||||
self.configure(self)
|
||||
|
||||
def unload(self):
|
||||
self.toolbar.remove(self.button) # Remove the button from the toolbar
|
||||
f = open(self.feeds_file, "w")
|
||||
self.feeds_config.write(f)
|
||||
f.close()
|
||||
|
||||
def feedtext_changed(self, args):
|
||||
a = (self.name_entry.get_text() != "")
|
||||
b = (self.url_entry.get_text() != "")
|
||||
if(a and b):
|
||||
self.button_addfeed.set_sensitive(1)
|
||||
else:
|
||||
self.button_addfeed.set_sensitive(0)
|
||||
|
||||
def addfeed_clicked(self, args):
|
||||
self.feeds_view.get_model().append([self.name_entry.get_text(),
|
||||
self.url_entry.get_text(), ""])
|
||||
self.feedchoice_combo.append_text(self.name_entry.get_text())
|
||||
self.torrents_fcc.append_text(self.name_entry.get_text())
|
||||
self.feeds_config.add_section(self.name_entry.get_text())
|
||||
self.feeds_config.set(self.name_entry.get_text(), "url", self.url_entry.get_text())
|
||||
self.feeds_config.set(self.name_entry.get_text(), "lastchecked", "")
|
||||
self.name_entry.set_text("")
|
||||
self.url_entry.set_text("")
|
||||
|
||||
def delfeed_clicked(self, args):
|
||||
(model, selection) = self.feeds_view.get_selection().get_selected()
|
||||
text = self.feeds_view.get_model().get_value(selection, 0)
|
||||
model2 = self.feedchoice_combo.get_model()
|
||||
model3 = self.torrents_fcc.get_model()
|
||||
the_iter = model2.get_iter_first()
|
||||
print text
|
||||
while the_iter is not None:
|
||||
print model2.get_value(the_iter, 0)
|
||||
if (model2.get_value(the_iter, 0) == text):
|
||||
remove_iter = the_iter
|
||||
the_iter = model2.iter_next(the_iter)
|
||||
model2.remove(remove_iter)
|
||||
the_iter = model3.get_iter_first()
|
||||
while the_iter is not None:
|
||||
print model3.get_value(the_iter, 0)
|
||||
if (model3.get_value(the_iter, 0) == text):
|
||||
remove_iter = the_iter
|
||||
the_iter = model3.iter_next(the_iter)
|
||||
model3.remove(remove_iter)
|
||||
model.remove(selection)
|
||||
for filt in self.filters_config.sections():
|
||||
if self.filters_config.get(filt, "feed") == text:
|
||||
self.filters_config.set(filt, "feed", "All")
|
||||
self.feeds_config.remove_section(text)
|
||||
self.button_delfeed.set_sensitive(0)
|
||||
|
||||
def row_clicked(self, args):
|
||||
self.button_delfeed.set_sensitive(1)
|
||||
return True
|
||||
|
||||
def addfilter_clicked(self, args):
|
||||
unique = True
|
||||
for filt in self.filters_config.sections():
|
||||
if filt == _("New Filter"):
|
||||
unique = False
|
||||
|
||||
if unique:
|
||||
self.current_filter = _("New Filter")
|
||||
self.filters_config.add_section(_("New Filter"))
|
||||
new_iter = self.filters_view.get_model().append([_("New Filter")])
|
||||
self.filters_view.get_selection().select_iter(new_iter)
|
||||
self.filters_config.set(_("New Filter"), "filterexp", "")
|
||||
self.filters_config.set(_("New Filter"), "feed", "All")
|
||||
self.filtername_entry.set_text(_("New Filter"))
|
||||
self.feedchoice_combo.set_active(0)
|
||||
|
||||
self.filtername_entry.set_sensitive(1)
|
||||
self.filterexp_entry.set_sensitive(1)
|
||||
self.feedchoice_combo.set_sensitive(1)
|
||||
self.filterexp_entry.set_text("")
|
||||
self.filtername_entry.grab_focus()
|
||||
self.button_delfilter.set_sensitive(1)
|
||||
|
||||
def delfilter_clicked(self, args):
|
||||
model, selection = self.filters_view.get_selection().get_selected()
|
||||
self.filters_config.remove_section(self.current_filter)
|
||||
model.remove(selection)
|
||||
self.current_filter = None
|
||||
|
||||
self.filtername_entry.set_text("")
|
||||
self.filterexp_entry.set_text("")
|
||||
self.feedchoice_combo.set_active(-1)
|
||||
self.filtername_entry.set_sensitive(0)
|
||||
self.filterexp_entry.set_sensitive(0)
|
||||
self.feedchoice_combo.set_sensitive(0)
|
||||
self.button_delfilter.set_sensitive(0)
|
||||
|
||||
def filter_row_clicked(self, widget):
|
||||
selection = self.filters_view.get_selection()
|
||||
model, selection_iter = selection.get_selected()
|
||||
print model
|
||||
print selection_iter
|
||||
self.current_filter = self.filters_view.get_model().get_value(selection_iter, 0)
|
||||
self.filtername_entry.set_text(self.current_filter)
|
||||
self.filterexp_entry.set_text(self.filters_config.get(self.current_filter, "filterexp"))
|
||||
feed = self.filters_config.get(self.current_filter, "feed")
|
||||
model2 = self.feedchoice_combo.get_model()
|
||||
the_iter = model2.get_iter_first()
|
||||
while the_iter is not None:
|
||||
#print model2.get_value(the_iter, 0)
|
||||
if (model2.get_value(the_iter, 0) == feed):
|
||||
set_iter = the_iter
|
||||
the_iter = model2.iter_next(the_iter)
|
||||
self.feedchoice_combo.set_active_iter(set_iter)
|
||||
|
||||
self.filtername_entry.set_sensitive(1)
|
||||
self.filterexp_entry.set_sensitive(1)
|
||||
self.feedchoice_combo.set_sensitive(1)
|
||||
self.button_delfilter.set_sensitive(1)
|
||||
|
||||
def filtername_lostfocus(self, args, spare):
|
||||
(model, selection) = self.filters_view.get_selection().get_selected()
|
||||
old_filtername = self.filters_view.get_model().get_value(selection, 0)
|
||||
self.filters_config.remove_section(old_filtername)
|
||||
model.remove(selection)
|
||||
|
||||
self.current_filter = self.filtername_entry.get_text()
|
||||
new_iter = self.filters_view.get_model().append([self.current_filter])
|
||||
self.filters_view.get_selection().select_iter(new_iter)
|
||||
self.filters_config.add_section(self.current_filter)
|
||||
self.filters_config.set(self.current_filter, "filterexp", self.filterexp_entry.get_text())
|
||||
self.filters_config.set(self.current_filter, "feed", self.feedchoice_combo.get_active_text())
|
||||
|
||||
def filterexp_lostfocus(self, args, spare):
|
||||
self.filters_config.set(self.current_filter, "filterexp", self.filterexp_entry.get_text())
|
||||
|
||||
def feedchoice_combo_changed(self, args):
|
||||
self.filters_config.set(self.current_filter, "feed", self.feedchoice_combo.get_active_text())
|
||||
|
||||
def torrents_fcc_changed(self, args):
|
||||
model = self.torrents_view.get_model()
|
||||
model.clear()
|
||||
if self.torrents_fcc.get_active_text() == _("All"):
|
||||
for (date, feed, title, link) in self.torrents_list:
|
||||
self.torrents_view.get_model().append((feed, title, link, date))
|
||||
else:
|
||||
for (date, feed, title, link) in self.torrents_list:
|
||||
if feed == self.torrents_fcc.get_active_text():
|
||||
self.torrents_view.get_model().append((feed, title, link, date))
|
||||
|
||||
def torrents_view_row_activated(self, widget, spare1, spare2):
|
||||
selection = widget.get_selection()
|
||||
model, selection_iter = selection.get_selected()
|
||||
self.interface.interactive_add_torrent_url(widget.get_model().get_value(selection_iter, 2))
|
||||
|
||||
|
||||
def chkfeeds_clicked(self, args):
|
||||
self.checkfeeds()
|
||||
|
||||
def checkfeeds(self):
|
||||
import feedparser, datetime
|
||||
from time import asctime, strptime
|
||||
|
||||
avail = {}
|
||||
sorted = {}
|
||||
self.torrents_list = []
|
||||
for name in self.feeds_config.sections():
|
||||
print "Attempting to parse " + name
|
||||
tmp = feedparser.parse(self.feeds_config.get(name, "url"))
|
||||
try:
|
||||
print "Parsed " + tmp['feed']['title']
|
||||
avail[name] = True
|
||||
except:
|
||||
print "Failed to download/parse " + name
|
||||
avail[name] = False
|
||||
if avail[name]:
|
||||
entries = []
|
||||
entries.extend( tmp[ "items" ] )
|
||||
decorated = [(entry["date_parsed"], entry) for entry in entries]
|
||||
tmplist = [(entry["date_parsed"], name, entry["title"], entry.links[0].href) for entry in entries]
|
||||
decorated.sort()
|
||||
self.torrents_list.extend(tmplist)
|
||||
#decorated.reverse() # for most recent entries first
|
||||
sorted[name] = [entry for (date,entry) in decorated]
|
||||
|
||||
model = self.torrents_view.get_model()
|
||||
model.clear()
|
||||
self.torrents_list.sort()
|
||||
self.torrents_list.reverse()
|
||||
#self.torrents_view.get_model().append([entry for entry in self.torrents_list])
|
||||
for (date,feed,title,link) in self.torrents_list:
|
||||
self.torrents_view.get_model().append((feed, title, link, date))
|
||||
#for key in sorted.keys():
|
||||
# print "listing entries in " + key
|
||||
#
|
||||
# for entry in sorted[key]:
|
||||
# print entry.title
|
||||
# for enclosure in entry.enclosures:
|
||||
# self.torrents_view.get_model().append( (key, entry.title, enclosure.href, entry.date_parsed) )
|
||||
|
||||
checked = {}
|
||||
for name in self.filters_config.sections():
|
||||
checkfiltername = name
|
||||
checkfilterexp = self.filters_config.get(name, "filterexp")
|
||||
checkfilterfeed = self.filters_config.get(name, "feed")
|
||||
print "filter: " + checkfiltername
|
||||
print "search: " + checkfilterexp
|
||||
print "feed: " + checkfilterfeed
|
||||
if checkfilterfeed == "All":
|
||||
#print "made it to 'All'"
|
||||
for feedname in sorted.keys():
|
||||
if avail[feedname]:
|
||||
print feedname + " last checked: " + self.feeds_config.get(feedname, "lastchecked")
|
||||
if self.feeds_config.get(feedname, "lastchecked") != "":
|
||||
lastchecked = strptime(self.feeds_config.get(feedname, "lastchecked"))
|
||||
else:
|
||||
lastchecked = strptime(asctime(sorted[feedname][0].date_parsed))
|
||||
#print "searching feed: " + feedname
|
||||
for entry in sorted[feedname]:
|
||||
#print entry.title + ": " + asctime(entry.date_parsed)
|
||||
if (strptime(asctime(entry.date_parsed)) > lastchecked):
|
||||
#print entry.date_parsed
|
||||
#print " > "
|
||||
#print lastchecked
|
||||
if entry.title.find(checkfilterexp) != -1:
|
||||
#print "contains" + checkfilterexp
|
||||
for enclosure in entry.enclosures:
|
||||
print enclosure.href
|
||||
self.interface.interactive_add_torrent_url(enclosure.href)
|
||||
#self.feeds_config.set(feedname, "lastchecked", asctime(entry.date_parsed))
|
||||
else:
|
||||
if avail[checkfilterfeed]:
|
||||
print "searching feed: " + checkfilterfeed
|
||||
if self.feeds_config.get(checkfilterfeed, "lastchecked") != "":
|
||||
lastchecked = strptime(self.feeds_config.get(checkfilterfeed, "lastchecked"))
|
||||
else:
|
||||
#print sorted[checkfilterfeed][1].date_parsed
|
||||
lastchecked = strptime(asctime(sorted[checkfilterfeed][0].date_parsed))
|
||||
print "lastchecked: " + asctime(lastchecked)
|
||||
for entry in sorted[checkfilterfeed]:
|
||||
#print entry.title + ": " + asctime(entry.date_parsed)
|
||||
if (strptime(asctime(entry.date_parsed)) > lastchecked):
|
||||
#print entry.date_parsed
|
||||
#print " > "
|
||||
#print lastchecked
|
||||
if (entry.title.find(checkfilterexp) != -1):
|
||||
#print "contains" + checkfilterexp
|
||||
for enclosure in entry.enclosures:
|
||||
print enclosure.href
|
||||
self.interface.interactive_add_torrent_url(enclosure.href)
|
||||
#self.feeds_config.set(checkfilterfeed, "lastchecked", asctime(entry.date_parsed))
|
||||
|
||||
for name in avail.keys():
|
||||
if avail[name]:
|
||||
self.feeds_config.set(name, "lastchecked", asctime(sorted[name][len(sorted[name])-1].date_parsed))
|
||||
|
||||
self.timer = 0
|
||||
|
||||
|
||||
|
||||
|
||||
def configure(self, widget=None):
|
||||
import gtk, gtk.glade
|
||||
from deluge import common
|
||||
self.dlg.show_all()
|
||||
model = self.feeds_view.get_model()
|
||||
model.clear()
|
||||
model2 = self.feedchoice_combo.get_model()
|
||||
model2.clear()
|
||||
model3 = self.filters_view.get_model()
|
||||
model3.clear()
|
||||
model4 = self.torrents_fcc.get_model()
|
||||
model4.clear()
|
||||
self.filtername_entry.set_text("")
|
||||
self.filterexp_entry.set_text("")
|
||||
self.name_entry.set_text("")
|
||||
self.url_entry.set_text("")
|
||||
self.feedchoice_combo.append_text(_("All"))
|
||||
self.torrents_fcc.append_text(_("All"))
|
||||
self.torrents_fcc.set_active(0)
|
||||
for name in self.feeds_config.sections():
|
||||
self.feeds_view.get_model().append( (name, self.feeds_config.get(name, "url"), self.feeds_config.get(name, "lastchecked") ) )
|
||||
self.feedchoice_combo.append_text(name)
|
||||
self.torrents_fcc.append_text(name)
|
||||
for filters in self.filters_config.sections():
|
||||
self.filters_view.get_model().append( ([filters]) )
|
||||
#self.checkfeeds()
|
||||
self.button_addfeed.set_sensitive(0)
|
||||
self.button_delfeed.set_sensitive(0)
|
||||
self.filtername_entry.set_sensitive(0)
|
||||
self.filterexp_entry.set_sensitive(0)
|
||||
self.feedchoice_combo.set_sensitive(0)
|
||||
self.button_delfilter.set_sensitive(0)
|
||||
self.update_entry.set_text(str(self.interval))
|
||||
self.checkonstart_button.set_active(self.checkonstart)
|
||||
|
||||
def dialog_ok(self, source):
|
||||
self.dlg.hide_all()
|
||||
self.interval = int(self.update_entry.get_text())
|
||||
self.feeds_config.set("DEFAULT", "interval", self.update_entry.get_text())
|
||||
self.feeds_config.set("DEFAULT", "checkonstart", self.checkonstart_button.get_active())
|
||||
f = open(self.filters_file, "w")
|
||||
self.filters_config.write(f)
|
||||
f.close()
|
||||
f = open(self.feeds_file, "w")
|
||||
self.feeds_config.write(f)
|
||||
f.close()
|
||||
|
||||
def dialog_cancel(self, source):
|
||||
self.dlg.hide_all()
|
||||
|
||||
def update(self):
|
||||
self.timer += 1
|
||||
if self.timer >= self.interval:
|
||||
import threading
|
||||
|
||||
print "BONG!"
|
||||
threading.Thread(target=self.checkfeeds).start
|
||||
self.timer = 0
|
|
@ -1,885 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
|
||||
<!--Generated with glade3 3.3.3 on Sun Aug 5 10:26:04 2007 -->
|
||||
<glade-interface>
|
||||
<widget class="GtkDialog" id="dialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="title" translatable="yes">RSS Broadcatcher Settings</property>
|
||||
<property name="default_width">512</property>
|
||||
<property name="default_height">384</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
|
||||
<property name="has_separator">False</property>
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="dialog-vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
|
||||
<property name="spacing">2</property>
|
||||
<child>
|
||||
<widget class="GtkNotebook" id="notebook1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="feeds_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="headers_clickable">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox2">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport9">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox2">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport7">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label2">
|
||||
<property name="width_request">80</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Feed Name:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="name_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="changed" handler="feedtext_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport8">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox7">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport4">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label3">
|
||||
<property name="width_request">80</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Feed URL:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="url_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="changed" handler="feedtext_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport5">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox3">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="homogeneous">True</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_addfeed">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-add</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="addfeed_clicked"/>
|
||||
<signal name="activate" handler="addfeed_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_delfeed">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-remove</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="delfeed_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport2">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Feeds</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHPaned" id="hpaned1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="position">160</property>
|
||||
<property name="position_set">True</property>
|
||||
<child>
|
||||
<widget class="GtkVPaned" id="vpaned1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="position">200</property>
|
||||
<property name="position_set">True</property>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow2">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="filters_view">
|
||||
<property name="height_request">285</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="headers_clickable">True</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkTable" id="table1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="n_rows">6</property>
|
||||
<property name="n_columns">2</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_addfilter">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-add</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="addfilter_clicked"/>
|
||||
<signal name="activate" handler="addfilter_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_delfilter">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label">gtk-remove</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="delfilter_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">4</property>
|
||||
<property name="bottom_attach">5</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label7">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Feed</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkComboBox" id="feedchoice_combo">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="changed" handler="feedchoice_combo_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">3</property>
|
||||
<property name="bottom_attach">4</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label6">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Filter Exp:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="filterexp_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="focus_out_event" handler="filterexp_lostfocus"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label5">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Filter Name:</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="filtername_entry">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="changed" handler="filtername_changed"/>
|
||||
<signal name="focus_out_event" handler="filtername_lostfocus"/>
|
||||
<signal name="editing_done" handler="filtername_editing_done"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">1</property>
|
||||
<property name="bottom_attach">2</property>
|
||||
<property name="x_options">GTK_FILL</property>
|
||||
<property name="y_options">GTK_FILL</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport10">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport12">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport13">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport14">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">5</property>
|
||||
<property name="bottom_attach">6</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="resize">True</property>
|
||||
<property name="shrink">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
<property name="tab_expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label4">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Filters</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="position">1</property>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox4">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox5">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label11">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes"> Feed: </property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkComboBox" id="torrents_fcc">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<signal name="changed" handler="torrents_fcc_changed"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<child>
|
||||
<widget class="GtkTreeView" id="torrents_view">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="headers_clickable">True</property>
|
||||
<signal name="row_activated" handler="torrents_view_row_activated"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
<property name="tab_expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label8">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Torrents</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="position">2</property>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox5">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport23">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox4">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport15">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label10">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Update Interval (seconds): </property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport19">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<widget class="GtkEntry" id="update_entry">
|
||||
<property name="width_request">5</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="max_length">7</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport21">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox6">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport17">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="checkonstart_button">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Check feeds on Deluge start</property>
|
||||
<property name="response_id">0</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport18">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox8">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport6">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="chkfeeds">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="receives_default">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Check Feeds Now</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="chkfeeds_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport11">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkViewport" id="viewport24">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
|
||||
<property name="shadow_type">GTK_SHADOW_NONE</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">3</property>
|
||||
<property name="tab_expand">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label9">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||
<property name="label" translatable="yes">Options</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="type">tab</property>
|
||||
<property name="position">3</property>
|
||||
<property name="tab_expand">False</property>
|
||||
<property name="tab_fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="dialog-action_area1">
|
||||
<property name="visible">True</property>
|
||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_cancel">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">gtk-cancel</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">0</property>
|
||||
<signal name="clicked" handler="cancel_clicked"/>
|
||||
</widget>
|
||||
</child>
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_ok">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">gtk-ok</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="response_id">1</property>
|
||||
<signal name="clicked" handler="ok_clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="position">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</glade-interface>
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
Loading…
Reference in New Issue