#!/usr/bin/python # $Id: Keyboard.py,v 1.5 2002/01/22 19:44:49 mt Exp $ # Versionsnummer von rcsh? 1.0 ists momentan import rcsh import gtk from GTK import * # option to be configured rcsh.Connect(host="localhost") SRCP_GA_PROTOCOL = "P" # definiert die Farben.. rc_string = """ style "green_button" { fg[PRELIGHT] = { 1.0, 0, 0 } bg[PRELIGHT] = { 0, 1.0, 0 } bg[NORMAL] = { 0, 0.75, 0 } bg[ACTIVE] = { 0, 0.87, 0 } } style "red_button" { fg[PRELIGHT] = { 1.0, 1.0, 1.0 } bg[PRELIGHT] = { 1.0, 0, 0 } bg[NORMAL] = { 0.75, 0, 0 } bg[ACTIVE] = { 0.87, 0, 0 } } widget "*red_button" style "red_button" widget "*green_button" style "green_button" """ class r_button(gtk.GtkButton): b_id = None accessoire = None port = None def __init__(self, addr=None, port=None, _obj=None, b_id=None, label=None): gtk.GtkButton.__init__(self, label, _obj) self.b_id = b_id self.accessoire = rcsh.accessory(addr, SRCP_GA_PROTOCOL,'Generic Accessoire', delay=None) self.port = port self.connect("pressed", self.pressed) self.connect("released", self.released) def pressed(self, obj=None): self.accessoire.actuate(self.port) def released(self, obj=None): self.accessoire.actuate(self.port, action=0) class red_button(r_button): def __init__(self, addr=None, port=None, _obj=None, b_id=None): r_button.__init__(self, addr=addr, port=port, _obj=_obj, b_id=b_id, label=" R ") self.set_name("red_button") class green_button(r_button): def __init__(self, addr=None, port=None, _obj=None, b_id=None): r_button.__init__(self, addr=addr, port=port, _obj=_obj, b_id=b_id, label=" G ") self.set_name("green_button") def quit(*args): gtk.mainquit() gtk.rc_parse_string(rc_string) window = gtk.new(gtk.GtkWindow, border_width=10) window["title"] = "SRCP Keyboard" table = gtk.new(gtk.GtkTable, n_rows=2, n_columns=9) window.add(table) frame1 = gtk.GtkFrame(None) frame1.set_border_width(10) # frame.set_usize(200, 300) frame1.set_shadow_type(SHADOW_ETCHED_OUT) table1 = gtk.new(gtk.GtkTable,n_rows=4, n_columns=9) frame1.add(table1) table.attach(frame1,1,2, 1,2,xpadding=10,ypadding=5) frame2 = gtk.GtkFrame(None) frame2.set_border_width(10) # frame.set_usize(200, 300) frame2.set_shadow_type(SHADOW_ETCHED_OUT) table2 = gtk.new(gtk.GtkTable,n_rows=4, n_columns=9) frame2.add(table2) table.attach(frame2,1,2,2,3,xpadding=10,ypadding=5) for line in range(0,2): for nr in range(0,8): addr = (line/2) * 8 + nr +1 if line%2==0: button = red_button(b_id=line*8+nr, addr=addr, port = line % 2) else: button = green_button(b_id=line*8+nr, addr=addr, port = line % 2) label = gtk.new(gtk.GtkLabel,label="%d" % (addr)) table1.attach(label,nr,nr+1,2*line,2*line+1,xpadding=10,ypadding=5) table1.attach(button,nr,nr+1,2*line+1,2*line+2,xpadding=10,ypadding=5) for line in range(0,2): for nr in range(0,8): addr = (line/2) * 8 + nr +1 if line%2==0: button = red_button(b_id=line*8+nr, addr=addr, port = line % 2) else: button = green_button(b_id=line*8+nr, addr=addr, port = line % 2) label = gtk.new(gtk.GtkLabel,label="%d" % (addr)) table2.attach(label,nr,nr+1,2*line,2*line+1,xpadding=10,ypadding=5) table2.attach(button,nr,nr+1,2*line+1,2*line+2,xpadding=10,ypadding=5) window.connect("destroy", quit) window.show_all() gtk.mainloop()