mirror of
https://github.com/gryf/wmdocklib.git
synced 2025-12-19 04:20:17 +01:00
1714519 - object oriented library
first working version... it gives very little feedback about the running player.
This commit is contained in:
@@ -11,42 +11,101 @@ Licensed under the GNU General Public License.
|
|||||||
|
|
||||||
import sys, time
|
import sys, time
|
||||||
from wmdocklib import wmoo
|
from wmdocklib import wmoo
|
||||||
|
devnull = file('/dev/null')
|
||||||
|
|
||||||
debug = 0
|
class Application(wmoo.Application):
|
||||||
|
|
||||||
def printevent(event):
|
def __init__(self, *args, **kwargs):
|
||||||
print event
|
wmoo.Application.__init__(self, *args, **kwargs)
|
||||||
|
self.child = None
|
||||||
|
self.cache = '64'
|
||||||
|
self.radioList = []
|
||||||
|
self.currentRadio = 0
|
||||||
|
self._blink = 0
|
||||||
|
|
||||||
def previousRadio(event):
|
import fileinput, os
|
||||||
print 'previousRadio', event
|
configfile = os.sep.join([os.environ['HOME'], '.pyradiorc'])
|
||||||
|
|
||||||
def nextRadio(event):
|
for i in fileinput.input(configfile):
|
||||||
print 'nextRadio', event
|
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 quitProgram(event):
|
def startPlayer(self):
|
||||||
print 'quitProgram', event
|
import os, subprocess
|
||||||
sys.exit(0)
|
commandline = [mplayer,
|
||||||
|
'-cache', self.cache,
|
||||||
|
self.radioList[self.currentRadio][1]
|
||||||
|
]
|
||||||
|
self.child = subprocess.Popen(commandline,
|
||||||
|
stdout=devnull,
|
||||||
|
stderr=devnull)
|
||||||
|
|
||||||
def playStream(event):
|
def stopPlayer(self):
|
||||||
print 'playStream', event
|
if self.child:
|
||||||
|
import os, subprocess, signal
|
||||||
|
os.kill(self.child.pid, signal.SIGKILL)
|
||||||
|
self.child = None
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def stopStream(event):
|
def quitProgram(self, event):
|
||||||
print 'stopStream', 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 = {
|
palette = {
|
||||||
'-': "#000000",
|
'-': "#000000",
|
||||||
".": "#868682",
|
".": "#868682",
|
||||||
"X": "#AEAEAA",
|
"X": "#AEAEAA",
|
||||||
"o": "#F7F7F3",
|
"o": "#F7F7F3",
|
||||||
|
"r": "#F70000",
|
||||||
}
|
}
|
||||||
|
|
||||||
patterns = [
|
background = [
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
@@ -65,11 +124,17 @@ patterns = [
|
|||||||
"----------------------------------------------------------------",
|
"----------------------------------------------------------------",
|
||||||
"----------------------------------------------------------------",
|
"----------------------------------------------------------------",
|
||||||
"----------------------------------------------------------------",
|
"----------------------------------------------------------------",
|
||||||
|
"----------------------------------------------------------------",
|
||||||
|
"----------------------------------------------------------------",
|
||||||
|
"----------------------------------------------------------------",
|
||||||
|
"----------------------------------------------------------------",
|
||||||
|
"----------------------------------------------------------------",
|
||||||
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
" ",
|
" ",
|
||||||
|
" ",
|
||||||
" XXXXXXXX. XXXXXXXX. XXXXXXXX. ",
|
" XXXXXXXX. XXXXXXXX. XXXXXXXX. ",
|
||||||
" X-------- X-------- X-------- ",
|
" X-------- X-------- X-------- ",
|
||||||
" X-------- X-------- X-------- ",
|
" X-------- X-------- X-------- ",
|
||||||
@@ -107,27 +172,41 @@ patterns = [
|
|||||||
" ",
|
" ",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
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():
|
def main():
|
||||||
|
|
||||||
global char_width, char_height, maxCharsPerLine, antialiased
|
global char_width, char_height, maxCharsPerLine, antialiased
|
||||||
app = wmoo.Application(font_name='5x8',
|
app = Application(font_name='5x8',
|
||||||
margin = 3,
|
margin = 3,
|
||||||
bg=0, fg=2, palette=palette,
|
bg=0, fg=2, palette = palette,
|
||||||
background=patterns,
|
background = background,
|
||||||
debug=debug)
|
patterns = patterns)
|
||||||
# maxCharsPerLine = (width-2*xOffset) / char width
|
# maxCharsPerLine = (width-2*xOffset) / char width
|
||||||
|
app.putString(0, 10, app.radioList[app.currentRadio][0])
|
||||||
|
|
||||||
app.addCallback(printevent)
|
# app.addCallback(printevent)
|
||||||
|
|
||||||
app.addCallback(previousRadio, 'buttonrelease', area=(14,29,23,38))
|
app.addCallback(app.previousRadio, 'buttonrelease', area=(14,29,23,38))
|
||||||
app.addCallback(nextRadio, 'buttonrelease', area=(26,29,35,38))
|
app.addCallback(app.nextRadio, 'buttonrelease', area=(26,29,35,38))
|
||||||
app.addCallback(quitProgram, 'buttonrelease', area=(38,29,47,38), key=1)
|
app.addCallback(app.quitProgram, 'buttonrelease', area=(38,29,47,38), key=1)
|
||||||
|
|
||||||
app.addCallback(playStream, 'buttonrelease', area=(14,43,23,52))
|
app.addCallback(app.playStream, 'buttonrelease', area=(14,43,23,52))
|
||||||
app.addCallback(stopStream, 'buttonrelease', area=(26,43,35,52))
|
app.addCallback(app.stopStream, 'buttonrelease', area=(26,43,35,52))
|
||||||
app.addCallback(stopStream, 'buttonrelease', area=(38,43,47,52))
|
app.addCallback(app.stopStream, 'buttonrelease', area=(38,43,47,52))
|
||||||
|
|
||||||
app.run()
|
app.run()
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,28 @@ class Application:
|
|||||||
"""
|
"""
|
||||||
self._events = []
|
self._events = []
|
||||||
self._sleep = 0.1
|
self._sleep = 0.1
|
||||||
|
self._offset_x = self._offset_y = 3
|
||||||
|
|
||||||
pywmhelpers.initPixmap(*args, **kwargs)
|
self._char_width, self._char_height = pywmhelpers.initPixmap(*args, **kwargs)
|
||||||
pywmhelpers.openXwindow(sys.argv, 64, 64)
|
pywmhelpers.openXwindow(sys.argv, 64, 64)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def putString(self, x, y, string):
|
||||||
|
pywmhelpers.addString(string, x, y,
|
||||||
|
self._offset_x, self._offset_y,
|
||||||
|
self._char_width, self._char_height)
|
||||||
|
|
||||||
|
def putPattern(self, sourceX, sourceY, width, height, targetX, targetY):
|
||||||
|
pywmhelpers.copyXPMArea(sourceX, sourceY+64, width, height,
|
||||||
|
targetX, targetY)
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def redraw(self):
|
||||||
|
self.update()
|
||||||
|
pywmhelpers.redraw()
|
||||||
|
|
||||||
def addHandler(self):
|
def addHandler(self):
|
||||||
"""adds a signal handler.
|
"""adds a signal handler.
|
||||||
|
|
||||||
@@ -67,7 +84,7 @@ class Application:
|
|||||||
callback(event)
|
callback(event)
|
||||||
|
|
||||||
event = pywmhelpers.getEvent()
|
event = pywmhelpers.getEvent()
|
||||||
pywmhelpers.redraw()
|
self.redraw()
|
||||||
time.sleep(self._sleep)
|
time.sleep(self._sleep)
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|||||||
Reference in New Issue
Block a user