Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'Widgets.py')
-rw-r--r--Widgets.py392
1 files changed, 256 insertions, 136 deletions
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()