diff options
author | Samus_ <mail2samus@gmail.com> | 2009-10-15 06:17:22 (GMT) |
---|---|---|
committer | Samus_ <mail2samus@gmail.com> | 2009-10-15 06:17:22 (GMT) |
commit | 4024ec5e8d8fcad8874e176a5c28bf18f9a7fc04 (patch) | |
tree | 9777f776a9ff794f8568d2423d2f0bffd8433d23 | |
parent | 3245f7c763d33e5a05300a54f6af1c961654927e (diff) |
integrating first state and 'change_state' method
-rw-r--r-- | application.py | 37 | ||||
-rw-r--r-- | templates/frame.glade | 2 | ||||
-rw-r--r-- | templates/inicio.glade | 71 |
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> |