1
0
mirror of https://github.com/gryf/wmdocklib.git synced 2025-12-19 04:20:17 +01:00
Files
wmdocklib/examples/pywmradio.py
mfrasca 5f5dfd16cf 1714519 - object oriented library
first working version...
it gives very little feedback about the running player.
2007-05-15 15:14:24 +00:00

215 lines
9.1 KiB
Python
Executable File

#!/usr/bin/env python
"""pywmnop.py
WindowMaker dockapp doing nothing
Copyright (C) 2006 Mario Frasca
Licensed under the GNU General Public License.
"""
import sys, time
from wmdocklib import wmoo
devnull = file('/dev/null')
class Application(wmoo.Application):
def __init__(self, *args, **kwargs):
wmoo.Application.__init__(self, *args, **kwargs)
self.child = None
self.cache = '64'
self.radioList = []
self.currentRadio = 0
self._blink = 0
import fileinput, os
configfile = os.sep.join([os.environ['HOME'], '.pyradiorc'])
for i in fileinput.input(configfile):
i = i.split('\n')[0]
radiodef = i.split('\t')
radioname = radiodef[0].lower()
if len(radiodef) == 1:
continue
if radioname == '':
globals()[radiodef[1]] = radiodef[2]
pass
else:
self.radioList.append( (radioname+' '*24, radiodef[1]) )
def startPlayer(self):
import os, subprocess
commandline = [mplayer,
'-cache', self.cache,
self.radioList[self.currentRadio][1]
]
self.child = subprocess.Popen(commandline,
stdout=devnull,
stderr=devnull)
def stopPlayer(self):
if self.child:
import os, subprocess, signal
os.kill(self.child.pid, signal.SIGKILL)
self.child = None
return True
return False
def quitProgram(self, event):
self.stopPlayer()
sys.exit(0)
def printevent(self, event):
print event
def previousRadio(self, event):
if self.currentRadio == 0: self.currentRadio = len(self.radioList)
self.currentRadio -= 1
self.putString(0, 10, self.radioList[self.currentRadio][0])
if self.stopPlayer():
self.startPlayer()
def nextRadio(self, event):
self.currentRadio += 1
if self.currentRadio == len(self.radioList): self.currentRadio = 0
self.putString(0, 10, self.radioList[self.currentRadio][0])
if self.stopPlayer():
self.startPlayer()
def playStream(self, event):
self.startPlayer()
def stopStream(self, event):
self.stopPlayer()
self.putPattern(9, 0, 9, 11, 38, 43)
def blink(self):
self._blink += 1
if self._blink == 10:
self.putPattern(0, 0, 9, 11, 38, 43)
elif self._blink == 20:
self._blink = 0
self.putPattern(9, 0, 9, 11, 38, 43)
pass
def update(self):
if self.child:
self.blink()
palette = {
'-': "#000000",
".": "#868682",
"X": "#AEAEAA",
"o": "#F7F7F3",
"r": "#F70000",
}
background = [
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"----------------------------------------------------------------",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
" ",
" ",
" ",
" ",
" ",
" XXXXXXXX. XXXXXXXX. XXXXXXXX. ",
" X-------- X-------- X-------- ",
" X-------- X-------- X-------- ",
" X--o--o-- X--o--o-- X-o.-.o-- ",
" X--o-oo-- X--oo-o-- X-.o.o.-- ",
" X--oooo-- X--oooo-- X--.o. -- ",
" X--o-oo-- X--oo-o-- X-.o.o.-- ",
" X--o--o-- X--o--o-- X-o.-.o-- ",
" X-------- X-------- X-------- ",
" X-------- X-------- X-------- ",
" .-------- .-------- .-------- ",
" ",
" ",
" ",
" XXXXXXXX. XXXXXXXX. XXXXXXXX. ",
" X-------- X-------- X-------- ",
" X-------- X-------- X-------- ",
" X--o----- X-oo-oo-- X-ooooo-- ",
" X--oo---- X-oo-oo-- X-ooooo-- ",
" X--ooo--- X-oo-oo-- X-ooooo-- ",
" X--oo---- X-oo-oo-- X-ooooo-- ",
" X--o----- X-oo-oo-- X-ooooo-- ",
" X-------- X-------- X-------- ",
" X-------- X-------- X-------- ",
" .-------- .-------- .-------- ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
]
patterns = [
"XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX. ",
"X--------X--------X--------X--------X--------X-------- ",
"X--------X--------X--------X--------X--------X-------- ",
"X-rrrrr--X-ooooo--X-rr-rr--X-oo-oo--X--o-----X--r----- ",
"X-rrrrr--X-ooooo--X-rr-rr--X-oo-oo--X--oo----X--rr---- ",
"X-rrrrr--X-ooooo--X-rr-rr--X-oo-oo--X--ooo---X--rrr--- ",
"X-rrrrr--X-ooooo--X-rr-rr--X-oo-oo--X--oo----X--rr---- ",
"X-rrrrr--X-ooooo--X-rr-rr--X-oo-oo--X--o-----X--r----- ",
"X--------X--------X--------X--------X--------X-------- ",
"X--------X--------X--------X--------X--------X-------- ",
".--------.--------.--------.--------.--------.-------- ",
]
def main():
global char_width, char_height, maxCharsPerLine, antialiased
app = Application(font_name='5x8',
margin = 3,
bg=0, fg=2, palette = palette,
background = background,
patterns = patterns)
# maxCharsPerLine = (width-2*xOffset) / char width
app.putString(0, 10, app.radioList[app.currentRadio][0])
# app.addCallback(printevent)
app.addCallback(app.previousRadio, 'buttonrelease', area=(14,29,23,38))
app.addCallback(app.nextRadio, 'buttonrelease', area=(26,29,35,38))
app.addCallback(app.quitProgram, 'buttonrelease', area=(38,29,47,38), key=1)
app.addCallback(app.playStream, 'buttonrelease', area=(14,43,23,52))
app.addCallback(app.stopStream, 'buttonrelease', area=(26,43,35,52))
app.addCallback(app.stopStream, 'buttonrelease', area=(38,43,47,52))
app.run()
if __name__ == '__main__':
main()