Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Derecho_a_Transitar.py
diff options
context:
space:
mode:
Diffstat (limited to 'Derecho_a_Transitar.py')
-rw-r--r--Derecho_a_Transitar.py197
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()