From 38689d5826d012d3cbd9d7488a3a65fa9d59eb94 Mon Sep 17 00:00:00 2001 From: bjschuma Date: Sat, 29 May 2010 23:18:09 -0400 Subject: [PATCH] Some big rewrites and changes to themes --- src/core/ct/call.py | 6 ++ src/core/ct/opts.py | 12 ++- src/core/gstreamer2.py | 32 ++++++ src/core/ocarina.py | 4 +- src/extra/gtknodes/__init__.py | 19 +++- src/extra/gtknodes/button.py | 62 +++++++++++ src/extra/gtknodes/image.py | 30 ++++++ src/extra/gtknodes/label.py | 19 ++++ src/extra/gtknodes/menu/__init__.py | 4 +- src/extra/gtknodes/menu/__init__.pyc | Bin 1119 -> 0 bytes src/extra/gtknodes/menu/bar.pyc | Bin 1042 -> 0 bytes src/extra/gtknodes/menu/item.pyc | Bin 1202 -> 0 bytes src/extra/gtknodes/menu/playback.py | 2 +- src/extra/gtknodes/menu/playback.pyc | Bin 1261 -> 0 bytes src/extra/gtknodes/menu/theme.py | 4 +- src/extra/gtknodes/menu/theme.pyc | Bin 1804 -> 0 bytes src/extra/gtknodes/node.py | 35 ++++++- src/extra/guibuilder2.py | 151 +++++++++++++++++++++++++++ src/extra/oGtk/align.py | 33 ++++++ src/themes/simple2.xml | 14 ++- 20 files changed, 402 insertions(+), 25 deletions(-) create mode 100644 src/core/gstreamer2.py create mode 100644 src/extra/gtknodes/button.py create mode 100644 src/extra/gtknodes/image.py create mode 100644 src/extra/gtknodes/label.py delete mode 100644 src/extra/gtknodes/menu/__init__.pyc delete mode 100644 src/extra/gtknodes/menu/bar.pyc delete mode 100644 src/extra/gtknodes/menu/item.pyc delete mode 100644 src/extra/gtknodes/menu/playback.pyc delete mode 100644 src/extra/gtknodes/menu/theme.pyc create mode 100644 src/extra/guibuilder2.py create mode 100644 src/extra/oGtk/align.py diff --git a/src/core/ct/call.py b/src/core/ct/call.py index 72c594a6..f6e86c97 100644 --- a/src/core/ct/call.py +++ b/src/core/ct/call.py @@ -136,6 +136,12 @@ def voldown(): volume.voldown() +def volset(vol): + '''Set the volume''' + from gstreamer import volume + volume.setvol(vol) + + def pyfile(file): '''If file exists, try to execute it as a python script''' if path.exists(file) == True: diff --git a/src/core/ct/opts.py b/src/core/ct/opts.py index 8787caec..0031a09f 100644 --- a/src/core/ct/opts.py +++ b/src/core/ct/opts.py @@ -7,19 +7,21 @@ __date__ ="$Mar 13, 2010 4:37:46 PM$" import sys import re -from ct.dict import Dict - # option -> number of times passed global opts -opts = Dict() +opts = dict() global args args = [] -def parseOpt(opt): +def has(opt): global opts - if opts.has(opt) == False: + return (opt in opts) + + +def parseOpt(opt): + if has(opt) == False: opts[opt] = 1 else: opts[opt] += 1 diff --git a/src/core/gstreamer2.py b/src/core/gstreamer2.py new file mode 100644 index 00000000..aeca34c7 --- /dev/null +++ b/src/core/gstreamer2.py @@ -0,0 +1,32 @@ +#! /usr/bin/python + +__author__ = "bjschuma" +__date__ = "$Feb 5, 2010 7:53:19 PM$" + + + +def uninit(): + global player + player.set_state(gst.STATE_NULL) + + + +def onMessage(bus, message): + #print message.type + if message.type == gst.MESSAGE_TAG: + taglist = message.parse_tag() + for tag in taglist.keys(): + write("Found tag: ("+tag+", "+str(taglist[tag])+")",1) + if tag == "title": + ocarina.vars.TITLE = taglist[tag] + elif tag == "artist": + ocarina.vars.ARTIST = taglist[tag] + elif tag == "album": + ocarina.vars.ALBUM = taglist[tag] + ocarina.events.start("tags-changed") + + +bus.add_signal_watch() +bus.connect("message", onMessage) +events.invite(events.OCARINA_QUIT, uninit) + diff --git a/src/core/ocarina.py b/src/core/ocarina.py index 03c02033..0530dcee 100644 --- a/src/core/ocarina.py +++ b/src/core/ocarina.py @@ -17,9 +17,9 @@ from ct import opts path.mkdir(vars.OCARINA) opts.parse() # Set verbose value -if opts.opts.has("v") == True: +if opts.has("v") == True: vars.VERBOSE += opts.opts["v"] -if opts.opts.has("verbose") == True: +if opts.has("verbose") == True: vars.VERBOSE += opts.opts["verbose"] diff --git a/src/extra/gtknodes/__init__.py b/src/extra/gtknodes/__init__.py index d22c446a..fd6f0554 100644 --- a/src/extra/gtknodes/__init__.py +++ b/src/extra/gtknodes/__init__.py @@ -2,17 +2,15 @@ __author__="bjschuma" __date__ ="$May 13, 2010 10:37:20 AM$" -__all__ = ["box", "importnode", "menu", "node", "window"] +__all__ = ["box", "button", "image", "importnode", + "label", "menu", "node", "window"] from ct.call import write - - global parts parts = dict() - def make(child): global parts name = str(child.nodeName).lower() @@ -29,10 +27,23 @@ parts["vbox"] = VBox parts["hbox"] = HBox +from gtknodes.button import * +parts["button"] = Button +parts["volume"] = VolumeButton + + +from gtknodes.image import * +parts["image"] = Image + + from gtknodes.importnode import * parts["import"] = Import +from gtknodes.label import * +parts["label"] = Label + + from gtknodes.menu import * parts["menubar"] = bar.MenuBar parts["menuitem"] = item.MenuItem diff --git a/src/extra/gtknodes/button.py b/src/extra/gtknodes/button.py new file mode 100644 index 00000000..24430a57 --- /dev/null +++ b/src/extra/gtknodes/button.py @@ -0,0 +1,62 @@ +#! /usr/bin/python + +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="bjschuma" +__date__ ="$May 18, 2010 3:29:19 PM$" + +import gtk +from ocarina import vars +from ct import call +from gtknodes import Node + +class Button(Node): + def __init__(self,elm): + Node.__init__(self,elm) + self["relief"] = "normal" + self.part = gtk.Button() + self.setattrs() + + relief = gtk.RELIEF_NORMAL + if self["relief"] == "none": + relief = gtk.RELIEF_NONE + elif self["relief"] == "half": + relief = gtk.RELIEF_HALF + self.part.set_relief(relief) + + self.add() + + + def add(self): + if len(self.children) == 0: + return + self.part.add(self.children[0].part) + + + def clear(self): + self.part.remove(self.children[0].part) + + + +class VolumeButton(Node): + def __init__(self,elm): + Node.__init__(self,elm) + self["relief"] = "normal" + self.part = gtk.VolumeButton() + self.setattrs() + + relief = gtk.RELIEF_NORMAL + if self["relief"] == "none": + relief = gtk.RELIEF_NONE + elif self["relief"] == "half": + relief = gtk.RELIEF_HALF + self.part.set_relief(relief) + adj = self.part.get_adjustment() + adj.set_page_increment(vars.VOLUMEINCR) + self.part.set_value(vars.VOLUME) + self.part.connect("value-changed", self.changed) + + + def changed(self, widget, value): + call.volset(value) diff --git a/src/extra/gtknodes/image.py b/src/extra/gtknodes/image.py new file mode 100644 index 00000000..afc1e43c --- /dev/null +++ b/src/extra/gtknodes/image.py @@ -0,0 +1,30 @@ +#! /usr/bin/python + +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="bjschuma" +__date__ ="$May 18, 2010 5:05:58 PM$" + +import gtk +from ct import path +from gtknodes import Node + +class Image(Node): + def __init__(self,elm): + Node.__init__(self,elm) + self["src"] = "none" + self["size"] = "button" + self.part = gtk.Image() + self.setattrs() + + if self["src"] != "none": + file = path.expand(self["src"]) + if path.exists(file) == True: + self.part.set_from_file( file ) + else: + func = "self.part.set_from_stock(" + func += "gtk.STOCK_"+self["src"].upper() + func += ", gtk.ICON_SIZE_" + self["size"].upper() + ")" + exec func + diff --git a/src/extra/gtknodes/label.py b/src/extra/gtknodes/label.py new file mode 100644 index 00000000..b5b6b13e --- /dev/null +++ b/src/extra/gtknodes/label.py @@ -0,0 +1,19 @@ +#! /usr/bin/python + +# To change this template, choose Tools | Templates +# and open the template in the editor. + +__author__="bjschuma" +__date__ ="$May 18, 2010 3:44:12 PM$" + + +import gtk +from gtknodes import Node + +class Label(Node): + def __init__(self, elm): + Node.__init__(self, elm) + self["text"] = "" + self.part = gtk.Label() + self.setattrs() + self.part.set_text(self["text"].title()) diff --git a/src/extra/gtknodes/menu/__init__.py b/src/extra/gtknodes/menu/__init__.py index 749252a5..42208f73 100644 --- a/src/extra/gtknodes/menu/__init__.py +++ b/src/extra/gtknodes/menu/__init__.py @@ -14,7 +14,7 @@ class MenuNode(Node): Node.__init__(self,elm) self.part = gtk.MenuItem(title) self.setattrs() - self.part.connect("activate", self.onclick) + self.part.connect("activate", self.onactivate) - def onclick(self, menu): + def onactivate(self, menu): pass \ No newline at end of file diff --git a/src/extra/gtknodes/menu/__init__.pyc b/src/extra/gtknodes/menu/__init__.pyc deleted file mode 100644 index 5dd09b92d11a2e0bf5677f8180d1f635751b4428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmcIi&2AGh5FTfL@-t_%NUA2ECa|fkMRJOA(Rp15r|?4CW32h8^Je#9l)oY%P*6AIM@%+U43?X zv96SRgo~4@+KkVhKN(L>&rZiL&L_{#CzJ8T^uz~Ls#+i7-+EJV@2XUrE2Wp7@cMF~}?d=!kO+vb4%!wi? zZEd}jtijwbZ~43@9f;)$h2g9-UU}a--^Z+O>e^_}aZ~Hk>SaPCxW$?Bng^P)>g2P& zGzo44J4ZCrMN^q{e?#d-+ss>4xwO%$wY5rJt5fsUw<<+gHLB~<3UyBRh@Y-D88J9S za}-KDNCW9K5D5WcEv2kg zWl;7JW~8i|VqM~r31!sv4-7|lhA76_2WXC<#9|mHbelIY)Y>na7Eui_CuM=p1s7Bx pr7BCrH>6_P-QNknq>QHiC&YZ(%TAzIbbpQ{i$xq92M6LP_zQ`v^6>xw diff --git a/src/extra/gtknodes/menu/bar.pyc b/src/extra/gtknodes/menu/bar.pyc deleted file mode 100644 index f2e7d26e1ed1a1f53e5b0bce8898d05ff021b584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1042 zcmb_aO=}cE5UrZ8=wLJ#5An2zJq##LHlUFpAw+MoOPD=~1JZP6I@xh|X4dXrNFV`W z{e%7!@egQKnfP(vfqGNb-PQH#b$$D>oyK3jzpLQ(i|Kz%=1vG|fRYfQM5qI(LzoA! z2%!uCIgVf+K^Z|Eg9+iB4khpvU=8r0jCp&SZP7LU9>LisSIt(fcDob|$NFk8diiXy zzc<<&931YyI2^qioQ{XhPx> zN;O^MmGWHS!p{q?CLJub_0qpHUVCqy1g)N%mO2u8a?Y8>xn!F~n^7_dxFhoNS>Kxc zPQU!r_7_&SF7GRCn@;D>R=K(KR_9c?BgI_Kcjsr?K3`rHOz9z+W1@gN_y|+1nEHQ` zJf(%pp|lO~_Tw(xh&Uus6Rd$sDst z@cvfD%x)Rzm7n#N2(cte)!H*V4(=XLrmEmvnWD`TlxnYkOL4^1WHJ&=f*pJi{sNN8 B*kk|z diff --git a/src/extra/gtknodes/menu/item.pyc b/src/extra/gtknodes/menu/item.pyc deleted file mode 100644 index 375caf00101ca8d1de1c476782198306c5f12ab6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmcIi-)q!B5S~qPX?tz8;8Xi_5BCsIOk1>KDJtrV$Q>np5Dz45lWlK%N$$+c2oahcUV>2m_$#PTYM2 zU`mvbvZEwGxM0C2#CeC~t{^;-Rdh*ospvYuL}FmB10RqLc?<;eh}i5b%$S`vBD*9? zOxKDOyOudaGz3>Th*F!j%kD+as^kFYQ4#{dP=>5AnkbE~O|k}mCIm2Rd2So)^W1a# zsh?y#g(S~(>qTK^G7kGy2xolm=EqW#3&7Uix6ZHJ1}lARD$i^7)>lTzt@Xt44IxX4 zI#ZoUPgB(ia!G`H4J{o{Ym+Y4nI5*&(^l6moff*ajZR%#q~_eWItAVa3v?;hPA#_g zbas((>jyY)1A^3s>Z*tMKf-rQ6+HPrn|ch#d0)6DdjDmUu4GNvoDFz$yeMqoYnMI= zuUuf5M36FCF}79Nn&yU~7;ZhAnWoJ6VamK2gAqa`_nxO+M{$1fj$4!JQmpR4IlS1^U5jBnn7xj+7yU9Rnzqgbu1CJgNsf}Z>Fv<0GN`0~8ep5d{vSf;$q cjIYRB{0|7F-N6kRueg!p{;`U~4Yd~h0WDYg8UO$Q diff --git a/src/extra/gtknodes/menu/playback.py b/src/extra/gtknodes/menu/playback.py index 81664eef..14ea0b1b 100644 --- a/src/extra/gtknodes/menu/playback.py +++ b/src/extra/gtknodes/menu/playback.py @@ -16,7 +16,7 @@ class MenuSelectSong(MenuNode): self.file = None - def onclick(self, menu): + def onactivate(self, menu): from gtkextras import dialog song = dialog.FileChooser("Select a song", self.file).choose() if song != None: diff --git a/src/extra/gtknodes/menu/playback.pyc b/src/extra/gtknodes/menu/playback.pyc deleted file mode 100644 index 3501b71e6cba0e4f5770e15ab597bd11ec993d25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1261 zcmcIj!H&~F4D~c=+Ab7T>>)yE(}F-~g%Dz;y`WaB^h7VwY%*=Lon%&-DWXz) zDu2Y6@CEz=;s?NX=)!^H5@{UU@z~GL&etFPqi;XQ^0?0csjk=i1k+{0H*>YV<`v{Gb zvD}2CmruiI!_hDt4bO(J&Yr&rFUKdvPkbVAxHVSQdSY_bczkq!l(lsaP@zv#rB&vp zrdr%KL08}5;W`SNKvY1eW(Zoa;z2TvS{Rd&phJnz@z@ZB11JP+0k(Kmz@8dL10eM% zRdaP>`xx5P4`pZ(LPS}TTj*(8RE0}ZNA8KK6f5&WE3VC!ReJ6`{H}Bv;R{$;f)X!H zsp11`@nvlmwJdFHGFcaujBTC8>XWNwyl|@uDY9{ijKnuuZmwjuI=$H>RGFxJhGx&qJwb}bOw78E>j?78q@kETyU-FdKO3a&jcPmmS7hiedk?!eB+ zd-$DM+WJs*DRwVFRCsctjp|PRnr}d*3#rZGA6znxgff#_M?F*=3G9`dwh6oLq3Z$} zJzpAQRh>{uMDcD5=SLXmFXf|9aE|M zC_oIvW6?+16TC$H!=z~?ONIMGz|*ue`C6mNLror{?+?1W-5T0QT5jH&K=j&^h>2=& z$hBLV8ew%ARxTZ3r1--go-&&}K<>6#*o4NAQ11VPn*qIUXnI3CU{uc{${@a+}`~5^~d`J7QX=J6C7rYA_W+t6fhK! zHX!w2(tsf<`1fJrLGHuQ2SMv5Oq!4fFbr@VfDYgaA8o)FfH}a2;Rd9wyWRG3w?#$= zolSIRTPQBCO){Pq$~?x!eox(mM=zd*-NU29@a1v$`SD>lJn!vizwp=Z2zuqC_@rv% zR%D~6%W1z#wSBNyNS#+Iy%_64FLBb_H#p1_6dG}2us~rEJi&?wa?okuaYBLy`8vg6 z_E1=WOu!6ahED~|J;V)&g)a8Z7E0$gWXHTM>5Os4aaLwFj(M9g7@c2P56^X8bZ`O| z<^;89TopRHOHFiMSEE`LCaMxuXQhfvokaSxtyMI#lM<1esK6XVmJlC&ypa?)1!TxS zh$S9M0^_-lio-LE1C3W@l4r?e2h~O7 z9YV55V5tfn$CjuQ$3>M+b6hf1Nqeh+)|g1j#628_;s`|BUvlhptjdx8{~U9E|K=E{ zVfB?HRrM+%>m$`J<>C)gQCes)sRpQEVPJEZ0OSI08z5#4$gsdXK&odx%yHSI{&4HT z%%cjt_MqCsdwe7I0f~^c=!Pi8f|=x?&n>{!Jb_Cyl~*J45Y>Usbz(ymGX2A=EZ3bj z?pqRAAY3U%GUe%8zQqftcmfTT@*B9^3dS{j_Cw#;_?^mUkL`>O2!CaJdS(0UE zkYZzxIIpvUiP6-l3@IRX#8a^?+QP*^C?q!=a{uqxzm3)(;aIZY<<(W7n%Z$yV?k1G z;y6{7%8|0=YB}Lv - + + + +