From 137b4990240efd9743aaad1171c765a1d2dd6f04 Mon Sep 17 00:00:00 2001 From: flavio Date: Thu, 24 May 2012 21:18:39 +0000 Subject: . --- diff --git a/.gitignore b/.gitignore index 81f8dd0..b7fd74a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.pyc +*.bak *.pyo *.??~ diff --git a/CaminoAlaPlata.py b/CaminoAlaPlata.py index fa681eb..7029663 100644 --- a/CaminoAlaPlata.py +++ b/CaminoAlaPlata.py @@ -28,151 +28,39 @@ from Widgets import * import Globals as G class CaminoAlaPlata(gtk.Window): - def __init__(self): - gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) - self.set_title("Camino a la Plata") - self.set_icon_from_file(os.path.join(G.ICONOS, "caminoalaplata-ico.png")) - self.modify_bg(gtk.STATE_NORMAL, G.FONDO) - self.set_size_request(G.WIDTH,G.HEIGHT) - self.set_border_width(5) - self.set_position(gtk.WIN_POS_CENTER) - self.set_resizable(True) - - self.toolbar = None - self.tablaperiodica = None - - self.set_layout() - self.show_all() - - self.connect("delete_event", self.delete_event) - - def set_layout(self): - vbox = gtk.VBox() - self.toolbar = Toolbar1() - self.tablaperiodica = TablaPeriodica() - vbox.pack_start(self.toolbar, False, False, 0) - vbox.pack_start(self.tablaperiodica, True, True, 0) - - self.add(vbox) - - def delete_event(self, widget, event, data=None): - self.salir() - return False - - def salir(self, widget= None, event= None): - sys.exit(0) - -class Toolbar1(gtk.Toolbar): - def __init__(self): - gtk.Toolbar.__init__(self) - self.modify_bg(gtk.STATE_NORMAL, G.NEGRO) - - ''' - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(5, -1) - separator.set_expand(False) - self.insert(separator, -1)''' - - boton = gtk.ToolButton() - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, - "atomo.png"), 32, 32) - imagen.set_from_pixbuf(pixbuf) - boton.set_icon_widget(imagen) - imagen.show() - self.insert(boton, -1) - boton.show() - #tooltips = gtk.Tooltips() - #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) - #boton.connect("clicked", self.ok_callback) - - ''' - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(5, -1) - separator.set_expand(False) - self.insert(separator, -1)''' - - boton = gtk.ToolButton() - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, - "caminoalaplata-ico.png"), 32, 32) - imagen.set_from_pixbuf(pixbuf) - boton.set_icon_widget(imagen) - imagen.show() - self.insert(boton, -1) - boton.show() - #tooltips = gtk.Tooltips() - #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) - #boton.connect("clicked", self.ok_callback) - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(0, -1) - separator.set_expand(True) - self.insert(separator, -1) - - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, - 'ceibaljam.png')) - imagen.set_from_pixbuf(pixbuf) - imagen.show() - item = gtk.ToolItem() - item.add(imagen) - self.insert(item, -1) - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(5, -1) - separator.set_expand(False) - self.insert(separator, -1) - - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, - 'uruguay.png')) - imagen.set_from_pixbuf(pixbuf) - imagen.show() - item = gtk.ToolItem() - item.add(imagen) - self.insert(item, -1) - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(5, -1) - separator.set_expand(False) - self.insert(separator, -1) - - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, - 'licencia.png')) - imagen.set_from_pixbuf(pixbuf) - imagen.show() - item = gtk.ToolItem() - item.add(imagen) - self.insert(item, -1) - - separator = gtk.SeparatorToolItem() - separator.props.draw = False - separator.set_size_request(0, -1) - separator.set_expand(True) - self.insert(separator, -1) - - boton = gtk.ToolButton() - imagen = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, - "salir.png"), 32, 32) - imagen.set_from_pixbuf(pixbuf) - boton.set_icon_widget(imagen) - imagen.show() - self.insert(boton, -1) - boton.show() - #tooltips = gtk.Tooltips() - #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) - #boton.connect("clicked", self.ok_callback) - - self.show_all() + def __init__(self): + gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) + self.set_title("Camino a la Plata") + self.set_icon_from_file(os.path.join(G.ICONOS, "caminoalaplata-ico.png")) + self.modify_bg(gtk.STATE_NORMAL, G.NEGRO) + self.set_size_request(G.WIDTH,G.HEIGHT) + self.set_border_width(2) + self.set_position(gtk.WIN_POS_CENTER) + self.set_resizable(True) + + self.toolbar = None + self.tablaperiodica = None + + self.set_layout() + self.show_all() + + self.connect("delete_event", self.delete_event) + + def set_layout(self): + vbox = gtk.VBox() + self.toolbar = Toolbar1() + self.tablaperiodica = TablaPeriodica() + vbox.pack_start(self.toolbar, False, False, 0) + vbox.pack_start(self.tablaperiodica, True, True, 0) + self.add(vbox) + + def delete_event(self, widget, event, data=None): + self.salir() + return False + + def salir(self, widget= None, event= None): + sys.exit(0) if __name__=="__main__": - CaminoAlaPlata() - gtk.main() + CaminoAlaPlata() + gtk.main() diff --git a/Docs/Boceto1.png b/Docs/Boceto1.png new file mode 100644 index 0000000..b8dbca6 --- /dev/null +++ b/Docs/Boceto1.png Binary files differ diff --git a/Docs/Fichas (1).bmp b/Docs/Fichas (1).bmp new file mode 100644 index 0000000..7fcad90 --- /dev/null +++ b/Docs/Fichas (1).bmp Binary files differ diff --git a/Docs/captura.png b/Docs/captura.png new file mode 100644 index 0000000..0658cce --- /dev/null +++ b/Docs/captura.png Binary files differ diff --git a/Docs/colon_3.jpg b/Docs/colon_3.jpg new file mode 100644 index 0000000..d60181d --- /dev/null +++ b/Docs/colon_3.jpg Binary files differ diff --git a/Docs/dados.png b/Docs/dados.png new file mode 100644 index 0000000..47bf5c2 --- /dev/null +++ b/Docs/dados.png Binary files differ diff --git a/Docs/diseños.svg b/Docs/diseños.svg new file mode 100644 index 0000000..12a3f78 --- /dev/null +++ b/Docs/diseños.svg @@ -0,0 +1,11517 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + "Camino a la Plata." + + + diff --git a/Docs/img1.png b/Docs/img1.png new file mode 100644 index 0000000..08be0b6 --- /dev/null +++ b/Docs/img1.png Binary files differ diff --git a/Docs/img2.png b/Docs/img2.png new file mode 100644 index 0000000..c3f5054 --- /dev/null +++ b/Docs/img2.png Binary files differ diff --git a/Docs/monedasdeplata.png b/Docs/monedasdeplata.png new file mode 100644 index 0000000..d1cf390 --- /dev/null +++ b/Docs/monedasdeplata.png Binary files differ diff --git a/Globals.py b/Globals.py index fac6fe5..03b48d9 100644 --- a/Globals.py +++ b/Globals.py @@ -33,18 +33,42 @@ ROSADOOSCURO = gtk.gdk.Color(65000,20000,43333,1) CELESTE = gtk.gdk.Color(0, 44352, 65000,1) CELESTECLARO = gtk.gdk.Color(50725, 65000, 62450,1) AMARILLO = gtk.gdk.Color(65000,65000,0,1) +BORRADEVINO = gtk.gdk.Color(50980, 35941, 50980, 1) BLANCO = gtk.gdk.Color(65000, 65000, 65000,1) NEGRO = gtk.gdk.Color(0, 0, 0, 1) -FONDO = gtk.gdk.Color(29823, 42568, 43333, 1) +FONDO1 = gtk.gdk.Color(29823, 42568, 43333, 1) +FONDO2 = gtk.gdk.Color(24000, 65000, 28000, 1) +FONDO3 = gtk.gdk.Color(58000, 65000, 65000) WIDTH= 640 HEIGHT= 480 BUTTONS= 45 +def get_gtk_color(r,g,b): + r = int(r*65000/255) + g = int(g*65000/255) + b = int(b*65000/255) + h = 1 + return gtk.gdk.Color(r, g, b, h) + DIRECTORIO_BASE = os.path.dirname(__file__) ICONOS = os.path.join(DIRECTORIO_BASE, "Iconos/") +COLORS = [(VERDEOSCURO,[1,2,6,7,8,9,10,15,16,17, + 18,34,35,36,53,54,85,86,117,118]), + (BORRADEVINO,[5,14,32,33,51,52,84,116]), + (NARANJA,[3, 11, 19, 37, 55, 87, + 57,58,59,60,61,62,63,64,65,66,67,68,69, + 70,71,21,22,23,24,25,26,27,28,29,30,39,40,41,42, + 43,44,45,46,47,48,72,73,74,75,76,77,78,79,80, + 104,105,106,107,108,109,110,111,112,13,31,49, + 50,81,82,83,113,114,115,116,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,103,4,12,20,38,56,88])] + +# 3, 11, 19, 37, 55, 87 + +''' COLORS = [(VERDELIMON,[1,6,7,8,15,16,34]), (NARANJA,[3,11,19,37,55,87]), (VERDEOSCURO,[5,14,32,33,51,52,84]), (VERDECLARO,[2,10,18,36,54,86,118]), (ROSADOCLARO,[57,58,59,60,61,62,63,64,65,66,67,68,69,70,71]), @@ -52,7 +76,7 @@ COLORS = [(VERDELIMON,[1,6,7,8,15,16,34]), (NARANJA,[3,11,19,37,55,87]), 72,73,74,75,76,77,78,79,80,104,105,106,107,108,109,110,111,112]), (ROJO,[9,17,35,53,85,117]),(GRIS,[13,31,49,50,81,82,83,113,114,115,116]), (ROSADOOSCURO,[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]), -(CELESTECLARO,[4,12,20,38,56,88])] +(CELESTECLARO,[4,12,20,38,56,88])]''' INDICEELEMENTOS = [ [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2], @@ -62,8 +86,8 @@ INDICEELEMENTOS = [ [37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54], [55,56,57,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86], [87,88,89,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118], -[0,0,0,0,58,59,60,61,62,63,64,65,66,67,68,69,70,71], -[0,0,0,0,90,91,92,93,94,95,96,97,98,99,100,101,102,103] +[0,0,0,58,59,60,61,62,63,64,65,66,67,68,69,70,71,0], +[0,0,0,90,91,92,93,94,95,96,97,98,99,100,101,102,103,0] ] ELEMENTOS = [ @@ -192,6 +216,7 @@ ELEMENTOS = [ "opciones":[], "respuesta": None}''' +''' PREGUNTAS = [None, {"elemento":1, "pregunta":"¿Cómo se llama el cambio del estado sólido a gaseoso?", @@ -257,114 +282,280 @@ None, "Una partícula subatómica que no tiene carga.", "Una partícula subatómica que está en el núcleo."], "respuesta": 5}, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -None, -] +{"elemento":11, +"pregunta":"¿Qué es el número atómico", +"opciones":["Un número al azar.", +"Un número que indica la cantidad de protones en el núcleo.", +"Un número que indica la cantidad de nucleones.", +"Un número que indica la cantidad de neutrones en el núcleo.", +"Ninguna de las opciones anteriores es correcta."], +"respuesta": 2} + +{"elemento":12, "Automáticamente retroceden 2 espacios." +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":13, +"pregunta":"", +"opciones":["", +"", +"", +"", ""], +"respuesta": } + +{"elemento":14, +"pregunta":"Identifiquen el orden de igualación de una ecuación química", +"opciones":["Melaes No metales Hidrógeno Oxígeno", +"No metales Metales Hidrógeno Oxígeno", +"Oxígeno Hidrógeno No metales Metales", +"No metales Oxígeno Hidrógeno Metales", "No metales Halógenos Metales Hidrógeno"], +"respuesta": 1} + +{"elemento":15, +"pregunta":"¿Cuál es la lectura de la siguiente ecuación?", +"opciones":["Carbonato de calcio reacciona con dióxido de carbono y con óxido de calcio", +"Carbonato de calcio produce óxido de calcio", +"Carbonato de calcio se descompone para dar dióxido de carbono y óxido de calcio", +"Óxido de calcio reacciona con dióxido de carbono generando carbonato de calcio", +"Dióxido de carbono se mezcla con óxido de calcio formando carbonato de calcio."], +"respuesta": 3} + +{"elemento":16, +"pregunta":"¿Qué ocurre con una temperatura de una sustancia si continúa su calentamiento cuando llega a su punto de ebullición?", +"opciones":["Aumenta", +"Disminuye", +"Se mantiene constante", +"Varía de forma proporcional a la superficie", "Ninguna de las anteriores es correcta"], +"respuesta": 3} + +{"elemento":17, +"pregunta":"¿Qué significa que un cuerpo es puro?", +"opciones":["Que es natural", +"Que está formado por un solo elemento", +"Que forma parte de una solución", +"Que es preparado sintéticamente", "Que no se puede fraccionar"], +"respuesta": 5} + +{"elemento":18, +"pregunta":"¿Qué es un grupo en la tabla periódica", +"opciones":["Una secuencia de cuadros en vertical", +"Una secuencia de cuadros en horizontal", +"Un sector donde se ubican los metales", +"Una disposición de cuadros en diagonal", "Un conjunto de elementos que son sintéticos"], +"respuesta": 1} + +{"elemento":19, Automáticamente avanzan 2 espacios. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":20, Automáticamente pierden un turno. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":21, ¡Suerte! No hay pregunta. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":22, +"pregunta":"¿Para que sirve una cromatografía?", +"opciones":["Para separar los colores de la luz blanca", +"Para separar componentes coloreados en una mezcla heterogénea", +"Para separar componentes coloreados en una mezcla homogénea", +"Para realizar un estudio gráfico de un compuesto coloreado", +"Para comparar métodos de separación de fases"], +"respuesta": 3} + +{"elemento":23, +"pregunta":"Una de estas afirmaciones era sostenida antiguamente por algunos griegos sobre la constitución de la materia ¿Cuál?", +"opciones":["Existen electrones", +"Los protones ocupan el núcleo", +"Las órbitas de los electrones es circular", +"Los orbitales son zonas del espacio donde se sitúan los electrones", "Ninguna de las anteriores es correcta"], +"respuesta": 5} + +{"elemento":24, ¡Suerte! No hay pregunta. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":25, +"pregunta":"¿Qué es una propiedad intensiva?", +"opciones":["Un atributo de un sistema homogéneo", +"Una propiedad que se puede medir", +"Una propiedad que no depende de la cantiad de materia", +"Una propiedad que depende de la cantidad de materia", +"Una característica de una mezcla heterogénea"], +"respuesta": } + +{"elemento":26, +"pregunta":"¿Qué es el número másico?", +"opciones":["La cantidad de protones en el núcleo de un átomo", +"La cantidad de electrones en un átomo", +"La suma del número de electrones y del número de protones de un átomo", +"La cantidad de nucleones de un átomo", "Un número que indica la cantidad de niveles de energía ocupado por electrones en un átomo"], +"respuesta": 4} + +{"elemento":27, +"pregunta":"¿Cuál de estas propiedades sirve en cierta medida para definir una sustancia?", +"opciones":["Su volumen a cierta temperatura", +"Su punto de fusión normal ", +"Su masa a determinada presión", +"Su temperatura a presión constante", +"Ninguna de las anteriores es correcta"], +"respuesta": 2} + +{"elemento":28, +"pregunta":"¿Qué significa que dos átomos sean isótopos?", +"opciones":["Que integran el mismo material", +"Que forman una única molécula", +"Que tienen la misma cantidad de neutrones", +"Que son iguales", "Que tienen la misma cantidad de nucleones"], +"respuesta": 5} + +{"elemento":29, +"pregunta":"", +"opciones":["", +"", +"", +"", ""], +"respuesta": } + +{"elemento":30, +"pregunta":"¿Cuál es el resultado de la suma mental de los Z de los primeros 10 elementos?", +"opciones":["53", +"58", +"55", +"60", "49"], +"respuesta": 3} + +{"elemento":31, +"pregunta":"¿Qué es una propiedad intensiva", +"opciones":["Una característica que depende de la cantidad de materia", +"Una propiedad de una solución", +"Todo aquello que puede ser medido", +"Una propiedad que no depende de la cantidad de materia", "Ninguna de las anteriores es correcta"], +"respuesta": 5} + +{"elemento":32, ¡Suerte! No hay pregunta. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":33, +"pregunta":"¿Qué diferencia hay entre condensación y licuación?", +"opciones":["Uno es un proceso natural y otro artificial", +"Uno le ocurre a un vapor y el otro a un gas", +"No hay diferencias", +"Uno es un método de separación de fases y el otro una opecración de fraccionamiento", + "Uno es sinónimo de ecuación química y el otro de reacción química"], +"respuesta": 3} + +{"elemento":34, +"pregunta":"¿Cuál es el resultado de la suma de los Z de los elementos del segundo período de la TP", +"opciones":["56", +"50", +"51", +"54", "52"], +"respuesta": 5} + +{"elemento":35, +"pregunta":"¿En qué consiste una tamización?", +"opciones":["Un método para fraccionar una solución", +"Un cambio de estado", +"Un sinónimo de reacción química", +"Una método para separar dos sólidos", "Una técnica que permite separar componentes coloreados en ciertas mezclas"], +"respuesta": 4} + +{"elemento":36, +"pregunta":"¿Por qué método de separación de fases se puede separar agua salada?", +"opciones":["Por centrifugación", +"Por imantación", +"Por decantación", +"Por filtración", "Por ninguno"], +"respuesta": 5} + +{"elemento":37, +"pregunta":"¿Qué postilado no corresponde a la teoría atómica de Dalton?", +"opciones":["Los átomos son increables e indestructibles", +"La átomos están integrados por electrones", +"Los átomos de un mismo elemento son iguales entre sí", +"Los átomos de elementos distintos son diferentes entre si", +"Ninguno de estos postulados corresponde a la teoría de Dalton"], +"respuesta": 2} + +{"elemento":38, ¡Suerte! No hay pregunta. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":39, +"pregunta":"¿Qué es la imantación?", +"opciones":["Una operación de fraccionamiento", +"Un método de separación de fases", +"Un tipo de reacción química", +"Un cambio de estado", "Ninguna de la anteriores es correcta"], +"respuesta": 2} + +{"elemento":40, +"pregunta":"Indica qué característica corresponde al modelo atómico de Rutherford", +"opciones":["Los electrones están incrustados en una masa positiva", +"Los electrones se ueven en órbitas circulares", +"El núcleo atómico está formado por electrones", +"Los átomos no poseen espacio vacío", "Todas las afirmaciones corresponden a este modelo"], +"respuesta": 2} + +{"elemento":41, Automáticamente avanzan 2 espacios. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":42, +"pregunta":"Calcular Z y A para un átomo que tiene 20 electrones y 18 neutrones", +"opciones":["Z = 38 A = 40", +"Z = 18 A = 2", +"Z = 2 A = 18", +"Z = 20 A = 38", "Z = 38 A = 36"], +"respuesta": 4} + +{"elemento":43, +"pregunta":"Una sustancia simple es aquella que...", +"opciones":["Está formada por un solo elemento", +"Tiene dos o más elementos en su composición", +"Está formada por moléculas", +"Forma parte de una solución", "Puede destilarse para obtener otras"], +"respuesta": 1} + +{"elemento":44, +"pregunta":"¿Cómo se llama el cambio del estado gaseoso a sólido?", +"opciones":["Fusión", +"Vaporización", +"Licuación", +"Sublimación", "Reacción"], +"respuesta": 4} + +{"elemento":45, Automáticamente retroceden 2 espacios. +"pregunta":"None", +"opciones":[], +"respuesta":None} + +{"elemento":46, +"pregunta":"¿Qué científico descubrió los electrones?", +"opciones":["E. Rutherford", +"J. Thomson", +"J. Dalton", +"N. Böhr", "A. Lavoisier"], +"respuesta": 2} + +{"elemento":47, +"pregunta":"¿Cómo se llama el cambio del estado líquido a gaseoso?", +"opciones":["Vaporización", +"Difusión", +"Solidificación", +"Licuación", "Ninguna de las anteriores es correcta"], +"respuesta": 1} +]''' diff --git a/Iconos/conquistador1.png b/Iconos/conquistador1.png new file mode 100644 index 0000000..40462da --- /dev/null +++ b/Iconos/conquistador1.png Binary files differ diff --git a/Widgets.py b/Widgets.py index 2eca4b0..4a0b04a 100644 --- a/Widgets.py +++ b/Widgets.py @@ -20,148 +20,268 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gtk -import time -import sys import gobject import os import Globals as G -class ButtonElemento(gtk.EventBox): - __gsignals__ = {"clicked":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, ))} - def __init__(self, diccionario): - gtk.EventBox.__init__(self) - self.set_visible_window(True) - #self.modify_bg(gtk.STATE_NORMAL, G.BLANCO) - self.set_border_width(1) - - # http://developer.gnome.org/pygtk/stable/gdk-constants.html#gdk-event-mask-constants - self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | - gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK) - - self.connect("button_press_event", self.button_press) - self.connect("button_release_event", self.button_release) - self.connect("enter-notify-event", self.enter_notify_event) - self.connect("leave-notify-event", self.leave_notify_event) - - self.tamanio = (0,0) - self.normalcolor = G.AMARILLO - self.selectlocor = G.BLANCO - self.clickedcolor = G.NARANJA - self.modify_bg(gtk.STATE_NORMAL, self.normalcolor) - - self.elementoquimico = diccionario - self.add(gtk.Label(self.elementoquimico["simbolo"])) - texto = "" - for key in self.elementoquimico.keys(): - texto += "%s = %s%s" % (key, self.elementoquimico[key], "\n") - self.set_tooltip(texto) - self.show_all() - - # --------------------------- EVENTOS -------------------------- - def button_release(self, widget, event): - self.modify_bg(gtk.STATE_NORMAL, self.selectlocor) - def leave_notify_event(self, widget, event): - self.modify_bg(gtk.STATE_NORMAL, self.normalcolor) - def enter_notify_event(self, widget, event): - self.modify_bg(gtk.STATE_NORMAL, self.selectlocor) - def button_press(self, widget, event): - if event.button == 1: - self.modify_bg(gtk.STATE_NORMAL, self.clickedcolor) - self.emit("clicked", event) - # --------------------------- EVENTOS -------------------------- - - # --------------------------- SETEOS --------------------------- - def set_tooltip(self, texto): - tooltips = gtk.Tooltips() - tooltips.set_tip(self, texto, tip_private=None) - - def set_tamanio(self, w, h): - if self.tamanio != (w,h): - self.tamanio = (w,h) - self.set_size_request(w,h) - # --------------------------- SETEOS --------------------------- +class Button(gtk.EventBox): + __gsignals__ = {"clicked":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, ))} + def __init__(self): + gtk.EventBox.__init__(self) + self.set_visible_window(True) + self.set_border_width(1) + # http://developer.gnome.org/pygtk/stable/gdk-constants.html#gdk-event-mask-constants + self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | + gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK) + self.connect("button_press_event", self.button_press) + self.connect("button_release_event", self.button_release) + self.connect("enter-notify-event", self.enter_notify_event) + self.connect("leave-notify-event", self.leave_notify_event) + self.tamanio = (0,0) + self.normalcolor = G.AMARILLO + self.selectlocor = G.BLANCO + self.clickedcolor = G.NARANJA + self.modify_bg(gtk.STATE_NORMAL, self.normalcolor) + self.show_all() + + def button_release(self, widget, event): + self.modify_bg(gtk.STATE_NORMAL, self.selectlocor) + def leave_notify_event(self, widget, event): + self.modify_bg(gtk.STATE_NORMAL, self.normalcolor) + def enter_notify_event(self, widget, event): + self.modify_bg(gtk.STATE_NORMAL, self.selectlocor) + def button_press(self, widget, event): + if event.button == 1: + self.modify_bg(gtk.STATE_NORMAL, self.clickedcolor) + self.emit("clicked", event) + + def set_tooltip(self, texto): + tooltips = gtk.Tooltips() + tooltips.set_tip(self, texto, tip_private=None) + + def set_tamanio(self, w, h): + if self.tamanio != (w,h): + self.tamanio = (w,h) + self.set_size_request(w,h) + +class ButtonElemento(Button): + def __init__(self, diccionario): + Button.__init__(self) + self.elementoquimico = diccionario + self.add(gtk.Label(self.elementoquimico["simbolo"])) + texto = "" + for key in self.elementoquimico.keys(): + texto += "%s = %s%s" % (key, self.elementoquimico[key], "\n") + self.set_tooltip(texto) + self.show_all() ''' class ElementoenJuego(ButtonElemento): - def __init__(self, diccionario): - ButtonElemento.__init__(self, diccionario) - - self.pregunta = None - self.opciones = [] - self.respuesta = None - - preguntas = G.PREGUNTAS[self.elementoquimico["Z"]] - if preguntas: - self.pregunta = preguntas["pregunta"] - for opcion in preguntas["opciones"]: - self.opciones.append( opcion ) - self.respuesta = preguntas["opciones"][preguntas["respuesta"]] - - #if self.pregunta: - # print self.pregunta - # for opcion in self.opciones: - # print opcion - # print "Respuesta:", self.respuesta''' + def __init__(self, diccionario): + ButtonElemento.__init__(self, diccionario) + + self.pregunta = None + self.opciones = [] + self.respuesta = None + + preguntas = G.PREGUNTAS[self.elementoquimico["Z"]] + if preguntas: + self.pregunta = preguntas["pregunta"] + for opcion in preguntas["opciones"]: + self.opciones.append( opcion ) + self.respuesta = preguntas["opciones"][preguntas["respuesta"]] + + #if self.pregunta: + # print self.pregunta + # for opcion in self.opciones: + # print opcion + # print "Respuesta:", self.respuesta''' class TablaPeriodica(gtk.EventBox): - def __init__(self): - gtk.EventBox.__init__(self) - self.set_visible_window(True) - self.modify_bg(gtk.STATE_NORMAL, G.FONDO) - - self.fixed = None - self.filasdeelementos = None - self.tamanios = (0,0) - - self.set_layout() - self.show_all() - - self.connect("expose_event", self.repaint) - - def set_layout(self): - self.fixed = gtk.Fixed() - estructura = G.INDICEELEMENTOS - elementos = G.ELEMENTOS - self.filasdeelementos = [] - for linea in estructura: - fila = [] - for index in linea: - if index: - boton = ButtonElemento(elementos[index-1])#ElementoenJuego(elementos[index-1]) - self.set_colores(boton) - self.fixed.put(boton,0,0) - boton.show_all() - fila.append(boton) - else: - fila.append(None) - self.filasdeelementos.append(fila) - self.add(self.fixed) - - def set_colores(self, boton): - for elemen in G.COLORS: - color, indices = elemen - if boton.elementoquimico["Z"] in indices: - boton.normalcolor = color - boton.modify_bg(gtk.STATE_NORMAL, boton.normalcolor) - ''' - def get_elementos(self): - elementos = [] - for fila in self.filasdeelementos: - for elemento in fila: - elementos.append(elemento) - return elementos''' - - def repaint(self, widget= None, event= None): - x,y,w,h= self.get_allocation() - if self.tamanios == (w/18,h/10): return True - self.tamanios = (w/18,h/10) - x, y = (0,0) - for line in self.filasdeelementos: - for boton in line: - if boton != None: - boton.set_tamanio(self.tamanios[0], self.tamanios[1]) - self.fixed.move(boton,x,y) - x += self.tamanios[0] - x = 0 - y += self.tamanios[1] - return True + def __init__(self): + gtk.EventBox.__init__(self) + self.set_visible_window(True) + self.modify_bg(gtk.STATE_NORMAL, G.FONDO3) + self.tabla = None + self.filasdeelementos = None + self.set_layout() + self.show_all() + + def set_layout(self): + self.tabla = Tabla() + # Cabecera + for x in range(1,19): + button = Button() + button.normalcolor = G.BLANCO + button.selectlocor = G.BLANCO + button.clickedcolor = G.BLANCO + button.modify_bg(gtk.STATE_NORMAL, button.normalcolor) + button.add(gtk.Label(x)) + self.tabla.attach(button, x, x+1, 0, 1, + xoptions=gtk.EXPAND|gtk.FILL, + yoptions=gtk.EXPAND|gtk.FILL, + xpadding=0, ypadding=0) + + for x in range(1,10): + button = Button() + button.normalcolor = G.BLANCO + button.selectlocor = G.BLANCO + button.clickedcolor = G.BLANCO + button.modify_bg(gtk.STATE_NORMAL, button.normalcolor) + button.add(gtk.Label(x)) + self.tabla.attach(button, 0, 1, x, x+1, + xoptions=gtk.EXPAND|gtk.FILL, + yoptions=gtk.EXPAND|gtk.FILL, + xpadding=0, ypadding=0) + self.add(self.tabla) + + estructura = G.INDICEELEMENTOS + elementos = G.ELEMENTOS + + # Elementos + self.filasdeelementos = [] + for linea in estructura: + fila = [] + for index in linea: + if index: + boton = ButtonElemento(elementos[index-1]) + self.set_colores(boton) + boton.show_all() + fila.append(boton) + else: + fila.append(None) + self.filasdeelementos.append(fila) + + for line in self.filasdeelementos: + row = self.filasdeelementos.index(line)+1 + for boton in line: + col = line.index(boton)+1 + if boton != None: + self.tabla.attach(boton, col, col+1, row, row+1, + xoptions=gtk.EXPAND|gtk.FILL, + yoptions=gtk.EXPAND|gtk.FILL, + xpadding=0, ypadding=0) + + def set_colores(self, boton): + for elemen in G.COLORS: + color, indices = elemen + if boton.elementoquimico["Z"] in indices: + boton.normalcolor = color + boton.modify_bg(gtk.STATE_NORMAL, boton.normalcolor) + +class Tabla(gtk.Table): + def __init__(self): + gtk.Table.__init__(self, rows = 10, columns = 19, homogeneous = True) + self.set_row_spacing(7, 5) + self.show_all() + +class Toolbar1(gtk.Toolbar): + def __init__(self): + gtk.Toolbar.__init__(self) + self.modify_bg(gtk.STATE_NORMAL, G.NEGRO) + + ''' + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(5, -1) + separator.set_expand(False) + self.insert(separator, -1)''' + + boton = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, + "atomo.png"), 32, 32) + imagen.set_from_pixbuf(pixbuf) + boton.set_icon_widget(imagen) + imagen.show() + self.insert(boton, -1) + boton.show() + #tooltips = gtk.Tooltips() + #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) + #boton.connect("clicked", self.ok_callback) + + ''' + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(5, -1) + separator.set_expand(False) + self.insert(separator, -1)''' + + boton = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, + "caminoalaplata-ico.png"), 32, 32) + imagen.set_from_pixbuf(pixbuf) + boton.set_icon_widget(imagen) + imagen.show() + self.insert(boton, -1) + boton.show() + #tooltips = gtk.Tooltips() + #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) + #boton.connect("clicked", self.ok_callback) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(0, -1) + separator.set_expand(True) + self.insert(separator, -1) + + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, + 'ceibaljam.png')) + imagen.set_from_pixbuf(pixbuf) + imagen.show() + item = gtk.ToolItem() + item.add(imagen) + self.insert(item, -1) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(5, -1) + separator.set_expand(False) + self.insert(separator, -1) + + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, + 'uruguay.png')) + imagen.set_from_pixbuf(pixbuf) + imagen.show() + item = gtk.ToolItem() + item.add(imagen) + self.insert(item, -1) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(5, -1) + separator.set_expand(False) + self.insert(separator, -1) + + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file(os.path.join(G.ICONOS, + 'licencia.png')) + imagen.set_from_pixbuf(pixbuf) + imagen.show() + item = gtk.ToolItem() + item.add(imagen) + self.insert(item, -1) + + separator = gtk.SeparatorToolItem() + separator.props.draw = False + separator.set_size_request(0, -1) + separator.set_expand(True) + self.insert(separator, -1) + + boton = gtk.ToolButton() + imagen = gtk.Image() + pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(G.ICONOS, + "salir.png"), 32, 32) + imagen.set_from_pixbuf(pixbuf) + boton.set_icon_widget(imagen) + imagen.show() + self.insert(boton, -1) + boton.show() + #tooltips = gtk.Tooltips() + #tooltips.set_tip(boton, _("Detener Grabación."), tip_private=None) + #boton.connect("clicked", self.ok_callback) + + self.show_all() -- cgit v0.9.1