diff options
Diffstat (limited to 'Derecho_a_Transitar.py')
-rw-r--r-- | Derecho_a_Transitar.py | 197 |
1 files changed, 144 insertions, 53 deletions
diff --git a/Derecho_a_Transitar.py b/Derecho_a_Transitar.py index 832ead1..603c8a3 100644 --- a/Derecho_a_Transitar.py +++ b/Derecho_a_Transitar.py @@ -1,36 +1,39 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import os, gtk, pygtk, gobject, sys, socket, pygame +import os +import gtk +import gobject +import sys +import socket +import pygame +import shelve from pygame.locals import * from sugar.activity import activity -from Main import Main import Globals as G class Derecho_a_Transitar(activity.Activity): def __init__(self, handle): - activity.Activity.__init__(self, handle, False) - self.eventbox= PygameCanvas() - self.set_canvas(self.eventbox) - + activity.Activity.__init__(self, handle, False) + self.set_title("Derecho A Transitar") + self.socket = gtk.Socket() + self.set_canvas(self.socket) + self.gtkplug = gtkplug() + self.socket.add_id(self.gtkplug.get_id()) self.add_events(gtk.gdk.ALL_EVENTS_MASK) self.connect("destroy", self.salir) - + self.connect("set-focus-child", self.refresh) self.show_all() - self.realize() - - os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) - gobject.idle_add(self.get_run_game) - - def get_run_game(self): - print "Lanzando Derecho a Transitar." - pygame.init() - Main() - return False - + def refresh(self, widget, datos): + try: + pygame.display.update() + except: + pass + self.queue_draw() + return True def salir(self, widget): - lambda w: gtk.main_quit() + pygame.quit() sys.exit() class PygameCanvas(gtk.EventBox): @@ -41,7 +44,7 @@ class PygameCanvas(gtk.EventBox): self.socket = gtk.Socket() self.add(self.socket) self.button_state = [0,0,0] - self.mouse_pos = (0,0) + self.mouse_pos = (0,0) def setup_events(self): self.set_events(gtk.gdk.KEY_PRESS | gtk.gdk.EXPOSE | gtk.gdk.POINTER_MOTION_MASK | \ @@ -56,16 +59,16 @@ class PygameCanvas(gtk.EventBox): self.connect("focus-in-event", self.set_focus) def keypress(self, selfmain, event, parametros= None): - nombre= gtk.gdk.keyval_name(event.keyval) - tipo= pygame.KEYDOWN - unic= str.lower(nombre) - valor= nombre + nombre = gtk.gdk.keyval_name(event.keyval) + tipo = pygame.KEYDOWN + unic = str.lower(nombre) + valor = nombre try: - valor= getattr(pygame, "K_%s" % (str.upper(nombre))) + valor = getattr(pygame, "K_%s" % (str.upper(nombre))) except: print "no has programado la traduccion de esta tecla: ", nombre return False - evt = pygame.event.Event(tipo, key= valor, unicode= unic, mod=None) + evt = pygame.event.Event(tipo, key = valor, unicode = unic, mod = None) try: pygame.event.post(evt) except: @@ -73,7 +76,8 @@ class PygameCanvas(gtk.EventBox): return False def mousedown(self, widget, event): - evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, button= event.button, pos=(int(event.x), int(event.y))) + evt = pygame.event.Event(pygame.MOUSEBUTTONDOWN, + button = event.button, pos=(int(event.x), int(event.y))) try: pygame.event.post(evt) except: @@ -83,13 +87,14 @@ class PygameCanvas(gtk.EventBox): def mousemotion(self, widget, event): x, y, state = event.window.get_pointer() rel = (x - self.mouse_pos[0], y - self.mouse_pos[1]) - self.mouse_pos= (int(x), int(y)) + self.mouse_pos = (int(x), int(y)) self.button_state = [ state & gtk.gdk.BUTTON1_MASK and 1 or 0, state & gtk.gdk.BUTTON2_MASK and 1 or 0, state & gtk.gdk.BUTTON3_MASK and 1 or 0, ] - evt = pygame.event.Event(pygame.MOUSEMOTION, pos= self.mouse_pos, rel=rel, buttons=self.button_state) + evt = pygame.event.Event(pygame.MOUSEMOTION, pos = self.mouse_pos, + rel = rel, buttons = self.button_state) try: pygame.event.post(evt) except: @@ -105,7 +110,9 @@ class PygameCanvas(gtk.EventBox): return False # continue processing def resize(self, widget, event): - evt = pygame.event.Event(pygame.VIDEORESIZE, size=(event.width,event.height), width=event.width, height=event.height) + evt = pygame.event.Event(pygame.VIDEORESIZE, + size = (event.width,event.height), + width = event.width, height=event.height) try: pygame.event.post(evt) except: @@ -120,26 +127,19 @@ class PygameCanvas(gtk.EventBox): self.queue_draw() return False -# ----------------------------------------------- -# ******** El Juego en gtk ******** -# ----------------------------------------------- class VentanaGTK(gtk.Window): def __init__(self): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_title("Derecho A Transitar") self.fullscreen() - - self.socket = gtk.Socket() - self.add(self.socket) - - self.gtkplug= gtkplug() + self.socket = gtk.Socket() + self.add(self.socket) + self.gtkplug = gtkplug() self.socket.add_id(self.gtkplug.get_id()) - self.add_events(gtk.gdk.ALL_EVENTS_MASK) self.connect("destroy", self.salir) self.connect("set-focus-child", self.refresh) self.show_all() - def refresh(self, widget, datos): try: pygame.display.update() @@ -147,7 +147,6 @@ class VentanaGTK(gtk.Window): pass self.queue_draw() return True - def salir(self, widget): pygame.quit() sys.exit() @@ -155,26 +154,118 @@ class VentanaGTK(gtk.Window): class gtkplug(gtk.Plug): def __init__(self): gtk.Plug.__init__(self, 0L) - self.set_title("Ventana de Plug") - self.resolucion= (self.get_screen().get_width(),self.get_screen().get_height()) - self.eventbox= PygameCanvas() + self.resolucion = (self.get_screen().get_width(),self.get_screen().get_height()) + self.eventbox = PygameCanvas() self.add(self.eventbox) - self.ventana= None + self.ventana = None self.show_all() - + self.usuario = None self.connect("embedded", self.embed_event) + os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) + gobject.idle_add(self.run_derecho_a_transitar) - os.putenv('SDL_WINDOWID', str(self.eventbox.socket.get_id())) - gobject.idle_add(self.get_run_game) + def embed_event(self, widget): + pass - def get_run_game(self): + def run_derecho_a_transitar(self): + ''' Presentacion inicial.''' pygame.init() - self.eventbox.socket.window.set_cursor(None) - Main() + self.eventbox.socket.window.set_cursor(None) + from Main import Main + main = Main() + main.connect("run", self.run_login) + #main.connect("run", self.run_menu) + main.run() return False - def embed_event(self, widget): - print "Juego embebido" + def run_login(self, widget): + # Seleccionar un Usuario o llama a crear uno nuevo. + from Login import Login + login = Login() + login.connect("crear_usuario", self.crear_usuario) + login.connect("load_usuario", self.run_menu) + login.run() + return False + + def crear_usuario(self, widget): + # Crear un Nuevo Usuario y pasa al menú o vuelve al login. + widget.destroy() + from Crear_Usuario import Crear_Usuario + crear_usuario = Crear_Usuario() + crear_usuario.connect("back", self.run_login) + crear_usuario.connect("run", self.run_menu) + crear_usuario.run() + return False + + def run_menu(self, widget, usuario = None): + # Menú con grupos de actividades. + # Se llama desde login y crear usuario. + if usuario: self.usuario = usuario + filename = os.path.join(G.USERS, self.usuario['nombre']) + d = shelve.open(filename) + d['nombre'] = self.usuario['nombre'] + d['edad'] = self.usuario['edad'] + d['escuela'] = self.usuario['escuela'] + d['clase'] = self.usuario['clase'] + d['departamento'] = self.usuario['departamento'] + d['personaje'] = self.usuario['personaje'] + d.close() + os.chmod(filename, 0666) + widget.destroy() + from Menu import Menu + menu = Menu(self.usuario) + menu.connect("run_grupo", self.run_grupo) + menu.connect("back", self.run_login) + menu.run() + return False + + def run_grupo(self, widget, grupo, puntos = None): + # Menú de actividades para grupos. + widget.destroy() + if puntos: print ">>>>", puntos # Guardar por actividad + from Grupos import Grupos + grupos = Grupos(grupo, self.usuario) + grupos.connect("back", self.run_menu) + grupos.connect("run_game", self.run_game) + grupos.run() + return False + + def run_game(self, widget, game): + # Corre un juego. + widget.destroy() + if game == "FGR_T0101": + from FGR_T0101 import FGR_T0101 + juego = FGR_T0101() + if game == "FGR_T0102": + from FGR_T0102 import FGR_T0102 + juego = FGR_T0102() + if game == "FGR_T0201": + from FGR_T0201 import FGR_T0201 + juego = FGR_T0201() + if game == "FGR_T0202": + from FGR_T0202 import FGR_T0202 + juego = FGR_T0202() + if game == "FGR_T0301": + from FGR_T0301 import FGR_T0301 + juego = FGR_T0301() + if game == "FGR_T0302": + from FGR_T0302 import FGR_T0302 + juego = FGR_T0302() + if game == "FGR_T0303": + from FGR_T0303 import FGR_T0303 + juego = FGR_T0303() + if game == "FGR_T0401": + from FGR_T0401 import FGR_T0401 + juego = FGR_T0401() + if game == "FGR_T0402": + from FGR_T0402 import FGR_T0402 + juego = FGR_T0402() + if game == "FGR_T0501": + from FGR_T0501 import FGR_T0501 + juego = FGR_T0501() + juego.connect("run_grupo", self.run_grupo) + juego.run() + return False if __name__=="__main__": VentanaGTK() |