Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamus_ <mail2samus@gmail.com>2009-10-15 06:17:22 (GMT)
committer Samus_ <mail2samus@gmail.com>2009-10-15 06:17:22 (GMT)
commit4024ec5e8d8fcad8874e176a5c28bf18f9a7fc04 (patch)
tree9777f776a9ff794f8568d2423d2f0bffd8433d23
parent3245f7c763d33e5a05300a54f6af1c961654927e (diff)
integrating first state and 'change_state' method
-rw-r--r--application.py37
-rw-r--r--templates/frame.glade2
-rw-r--r--templates/inicio.glade71
3 files changed, 100 insertions, 10 deletions
diff --git a/application.py b/application.py
index fa28f26..b9c3694 100644
--- a/application.py
+++ b/application.py
@@ -5,31 +5,50 @@ from os import path
pygtk.require("2.0")
def reparent(manager, template, container):
+ # construye en nuevo contenido a partir del template de Glade
builder = gtk.Builder()
builder.add_from_file(path.join("templates", template))
+ # conecta seƱales a la clase controladora
builder.connect_signals(manager)
+ # elimina contenido previo si existe
+ for child in container.get_children():
+ container.remove(child)
+
+ # inserta el nuevo contenido en el viejo contenedor
window = builder.get_object("window")
for child in window.get_children():
child.reparent(container)
+ return builder
+
+class Inicio(object):
+ template = "inicio.glade"
+
class ApplicationManager(object):
""" Maquina de estados principal
- -Inicializa contenido de la ventana (marco) tanto para Sugar como Standalone
- -Provee el metodo 'change_state' utilizado para cargar un nuevo bloque dentro del marco
- -Provee atributo 'state_info' (diccionario compartido que almacena los datos de cada contenido cargado)
+ -Inicializa el contenido exterior de la ventana (marco) tanto para Sugar como Standalone, para ello
+ recibe una instancia de gtk.Window como argumento del constructor.
+ -Provee el metodo 'change_state' utilizado para cargar un nuevo bloque interior dentro del marco.
+ -Provee atributo 'state_info' (diccionario compartido que almacena los datos de cada contenido cargado).
"""
- def __init__(self, frame_container):
+ def __init__(self, window):
super(ApplicationManager, self).__init__()
- reparent(self, "frame.glade", frame_container)
+ builder = reparent(self, "frame.glade", window)
+ self.inner_container = builder.get_object("inner_container")
+
+ window.connect("destroy", self.gtk_main_quit)
+ window.set_title("Fracciones")
+
+ self.state_info = dict()
+ self.change_state(Inicio)
- #self.state_info = dict()
- #self.change_state(Inicio(self))
+ window.show()
- frame_container.connect("destroy", self.gtk_main_quit)
- frame_container.show()
+ def change_state(self, state_class):
+ reparent(state_class(), state_class.template, self.inner_container)
def gtk_main_quit(self, userdata=None):
gtk.main_quit()
diff --git a/templates/frame.glade b/templates/frame.glade
index 56f93fe..e446c60 100644
--- a/templates/frame.glade
+++ b/templates/frame.glade
@@ -146,7 +146,7 @@
</packing>
</child>
<child>
- <object class="GtkScrolledWindow" id="frame_content">
+ <object class="GtkScrolledWindow" id="inner_container">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
diff --git a/templates/inicio.glade b/templates/inicio.glade
new file mode 100644
index 0000000..987bbc6
--- /dev/null
+++ b/templates/inicio.glade
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <!-- interface-local-resource-path .. -->
+ <object class="GtkWindow" id="window">
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Fracciones</property>
+ <attributes>
+ <attribute name="underline" value="True"/>
+ <attribute name="scale" value="2.500000"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label" translatable="yes">jugar</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="xalign">0.94999998807907104</property>
+ <property name="yalign">0.94999998807907104</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="label" translatable="yes">instrucciones</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>