mirror of
https://github.com/gryf/wmdocklib.git
synced 2025-12-19 12:28:10 +01:00
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.
This commit is contained in:
178
examples/pywmradio.py
Executable file
178
examples/pywmradio.py
Executable file
@@ -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()
|
||||
Reference in New Issue
Block a user