From 844eecc53536c03226e4e2a4e5d0d0a3b1d18df2 Mon Sep 17 00:00:00 2001 From: mfrasca <> Date: Mon, 7 May 2007 19:14:54 +0000 Subject: [PATCH] 1714519 - object oriented library added new example application, on the way to the object oriented library. the idea is to develop this program within one single source, but clearly separating the general from the specific. so in this source I will have a general 'Application' class which will contain no specific 'radio' code. the radio code will make use of the general application class. the program is not yet functional. --- examples/pywmradio.py | 178 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100755 examples/pywmradio.py diff --git a/examples/pywmradio.py b/examples/pywmradio.py new file mode 100755 index 0000000..3edb004 --- /dev/null +++ b/examples/pywmradio.py @@ -0,0 +1,178 @@ +#!/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 +import wmdocklib + +debug = 0 + +class Application: + def __init__(self, *args, **kwargs): + """initializes the object + + _events is a list of tuples (type, key, area, callback) + 'type' <- ['buttonpress', 'buttonrelease', 'keypress'], + 'callback': the function to which the event should be passed. + 'key': the utf-8 character or the mouse button number, + 'area': if the pointer is here, the event is considered, + + """ + self._events = [] + + wmdocklib.initPixmap(*args, **kwargs) + wmdocklib.openXwindow(sys.argv, 64, 64) + pass + + def addHandler(self, callback, type=None, key=None, area=None ): + if area is not None and len(area) is not 4: + area = None + self._events.append( (type, key, area, callback,) ) + pass + + def run(self): + while 1: + event = wmdocklib.getEvent() + while not event is None: + if event['type'] == 'destroynotify': + sys.exit(0) + + for evtype, key, area, callback in self._events: + if evtype is not None and evtype != event['type']: continue + if key is not None and key != event['key']: continue + if area is not None: + if not area[0] <= event['x'] <= area[2]: continue + if not area[1] <= event['y'] <= area[3]: continue + + callback(event) + + event = wmdocklib.getEvent() + wmdocklib.redraw() + time.sleep(0.5) + + pass + +def printevent(event): + print event + +def previousRadio(event): + print 'previousRadio', event + +def nextRadio(event): + print 'nextRadio', event + +def quitProgram(event): + print 'quitProgram', event + sys.exit(0) + +def playStream(event): + print 'playStream', event + +def stopStream(event): + print 'stopStream', event + +palette = { + '-': "#000000", + ".": "#868682", + "X": "#AEAEAA", + "o": "#F7F7F3", + } + +patterns = [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " X-------------------------------------------X ", + " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ", + " ", + " ", + " ", + " ", + " 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-------- ", + " .-------- .-------- .-------- ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + ] + + + +def main(): + + global char_width, char_height, maxCharsPerLine, antialiased + app = Application(font_name='5x8', + margin = 3, + bg=0, fg=2, palette=palette, + background=patterns, + debug=debug) + # maxCharsPerLine = (width-2*xOffset) / char width + + app.addHandler(previousRadio, 'buttonrelease', area=(14,29,23,38)) + app.addHandler(nextRadio, 'buttonrelease', area=(26,29,35,38)) + app.addHandler(quitProgram, 'buttonrelease', area=(38,29,47,38)) + + app.addHandler(playStream, 'buttonrelease', area=(14,43,23,52)) + app.addHandler(stopStream, 'buttonrelease', area=(26,43,35,52)) + app.addHandler(stopStream, 'buttonrelease', area=(38,43,47,52)) + + app.run() + +if __name__ == '__main__': + main()