]> git.llucax.com Git - z.facultad/66.09/etherled.git/blob - cliente/cetherled.py
Implementa el protocolo ELP sobre UDP. Tiene problemas cuando los leds estan
[z.facultad/66.09/etherled.git] / cliente / cetherled.py
1 #!/usr/bin/env python
2 # -*- coding: iso-8859-1 -*-
3 # vim: set expandtab tabstop=4 shiftwidth=4 :
4 #----------------------------------------------------------------------------
5 #                               Etherled
6 #----------------------------------------------------------------------------
7 # This file is part of etherled.
8 #
9 # etherled is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by the Free
11 # Software Foundation; either version 2 of the License, or (at your option)
12 # any later version.
13 #
14 # etherled is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
17 # more details.
18 #
19 # You should have received a copy of the GNU General Public License along
20 # with etherled; if not, write to the Free Software Foundation, Inc., 59
21 # Temple Place, Suite 330, Boston, MA  02111-1307  USA
22 #----------------------------------------------------------------------------
23 # Creado:  vie oct 27 22:16:20 ART 2005
24 # Autores: Leandro Lucarella <llucare@fi.uba.ar>
25 #----------------------------------------------------------------------------
26
27 import os
28 import gtk
29 from simplegladeapp import SimpleGladeApp
30 from simplegladeapp import bindtextdomain
31 #from dispatcher import Dispatcher
32 from led import Led
33 import etherled
34
35 app_name = "cetherled"
36 app_version = "1.0"
37 glade_dir = ""
38 locale_dir = ""
39
40 bindtextdomain(app_name, locale_dir)
41
42 class MainWindow(SimpleGladeApp):
43
44     def __init__(self, path="cetherled.glade", root="main_window",
45             domain=app_name, **kwargs):
46         #notificar = Dispatcher(self.actualizar)
47         self.device = etherled.NetworkedDevice()
48         path = os.path.join(glade_dir, path)
49         SimpleGladeApp.__init__(self, path, root, domain, **kwargs)
50
51     def new(self):
52         self.tabla = {}
53         for i in xrange(16):
54             for j in xrange(16):
55                 led = Led()
56                 self.table_leds.attach(led, j, j+1, i, i+1)
57                 led.show()
58                 self.tabla[i,j] = led
59
60     def on_btn_salir_clicked(self, widget, *args):
61         self.quit()
62
63     def on_btn_enviar_clicked(self, widget, *args):
64         self.device.matrix = self.leds2matrix()
65
66     def on_btn_recibir_clicked(self, widget, *args):
67         matrix = self.device.matrix
68         for row in xrange(16):
69             for col in xrange(16):
70                 self.tabla[row,col].prendido = matrix[row,col]
71         etherled.protocol._print_matrix(matrix)
72
73     def on_main_window_delete_event(self, widget, event, *args):
74         self.quit()
75
76     def leds2matrix(self):
77         matrix = {}
78         for row in xrange(16):
79             for col in xrange(16):
80                 matrix[row,col] = int(self.tabla[row,col].prendido)
81         etherled.protocol._print_matrix(matrix)
82         return matrix
83
84 def main():
85     gtk.threads_init()
86     main_window = MainWindow()
87     gtk.threads_enter()
88     main_window.run()
89     gtk.threads_leave()
90
91 if __name__ == '__main__':
92     main()
93