Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Crear_Usuario.py
diff options
context:
space:
mode:
Diffstat (limited to 'Crear_Usuario.py')
-rw-r--r--Crear_Usuario.py539
1 files changed, 539 insertions, 0 deletions
diff --git a/Crear_Usuario.py b/Crear_Usuario.py
new file mode 100644
index 0000000..68026cc
--- /dev/null
+++ b/Crear_Usuario.py
@@ -0,0 +1,539 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import pygame
+import os
+import gc
+import sys
+import gtk
+import gobject
+
+from pygame.locals import *
+import Globals as G
+gc.enable()
+import BiblioJAM
+from BiblioJAM.JAMButton import JAMButton
+from BiblioJAM.JAMLabel import JAMLabel
+from BiblioJAM.JAMEntryText import JAMEntryText
+from BiblioJAM.JAMBoardEntryText import JAMBoardEntryText
+import BiblioJAM.JAMGlobals as JAMG
+
+class Crear_Usuario(gtk.Widget):
+ __gsignals__ = {"run":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT,)),
+ "back":(gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])}
+ def __init__(self):
+ gtk.Widget.__init__(self)
+ self.ventana = None
+ self.estado = False
+ self.fondo = None
+ self.reloj = None
+ self.frame = None
+ self.ventana_real = None
+ self.resolucionreal = None
+ self.VA = None
+ self.VH = None
+ self.load()
+ self.estado = "Intro"
+
+ def run(self):
+ self.ventana.blit(self.fondo, (0,0))
+ self.frame.draw(self.ventana)
+ pygame.display.update()
+ while self.estado == "Intro":
+ self.reloj.tick(35)
+ while gtk.events_pending():
+ gtk.main_iteration(False)
+ G.Traduce_posiciones(self.VA, self.VH)
+ self.frame.clear(self.ventana, self.fondo)
+ self.frame.update()
+ self.handle_event_Intro()
+ pygame.event.clear()
+ self.frame.draw(self.ventana)
+ self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0))
+ pygame.display.update()
+
+ def emit_volver(self, button=None):
+ self.estado = None
+ self.emit("back")
+
+ def handle_event_Intro(self):
+ for event in pygame.event.get(pygame.KEYDOWN):
+ tecla = event.key
+ if tecla == pygame.K_ESCAPE:
+ return self.run_dialog_intro(None)
+
+ def load(self):
+ pygame.display.set_mode( (0,0), pygame.DOUBLEBUF | pygame.FULLSCREEN, 0)
+ A, B = G.RESOLUCION
+ self.ventana = pygame.Surface( (A, B), flags=HWSURFACE )
+ self.ventana_real = pygame.display.get_surface()
+ C = pygame.display.Info().current_w
+ D = pygame.display.Info().current_h
+ self.resolucionreal = (C,D)
+ self.VA = float(C)/float(A)
+ self.VH = float(D)/float(B)
+ pygame.event.set_blocked([JOYAXISMOTION, JOYBALLMOTION, JOYHATMOTION, JOYBUTTONUP, JOYBUTTONDOWN, KEYUP, USEREVENT])
+ pygame.event.set_allowed([MOUSEMOTION, MOUSEBUTTONUP, MOUSEBUTTONDOWN, KEYDOWN, VIDEORESIZE, VIDEOEXPOSE, QUIT, ACTIVEEVENT])
+ pygame.mouse.set_visible(True)
+ imagen = os.path.join(G.IMAGENES, "Login", "fondo.jpg")
+ self.fondo = pygame.transform.scale(pygame.image.load(imagen), G.RESOLUCION)
+ self.reloj = pygame.time.Clock()
+ self.frame = Frame(self)
+ self.frame.center(self.fondo.get_size())
+
+ def run_dialog_intro(self, button):
+ from BiblioJAM.JAMDialog import JAMDialog
+ dialog = JAMDialog(mensaje = "¿Abandonas el Juego?",
+ funcion_ok = self.ok_intro, funcion_cancel = self.cancel_intro)
+ fuente, tamanio = JAMG.get_Font_fawn()
+ dialog.set_font_from_file(fuente, tamanio = 40)
+ dialog.boton_aceptar.set_font_from_file(fuente, tamanio = 25)
+ dialog.boton_cancelar.set_font_from_file(fuente, tamanio = 25)
+ a,b,c = JAMG.get_estilo_papel_quemado()
+ dialog.set_colors_dialog(base = c, bordes = c)
+ dialog.set_colors_buttons(colorbas = a, colorbor = b, colorcara = c)
+ self.estado = "Dialog"
+ dialog.draw(self.ventana)
+ pygame.display.update()
+ while self.estado == "Dialog":
+ self.reloj.tick(35)
+ while gtk.events_pending():
+ gtk.main_iteration(False)
+ G.Traduce_posiciones(self.VA, self.VH)
+ dialog.clear(self.ventana, self.fondo)
+ dialog.update()
+ pygame.event.clear()
+ dialog.draw(self.ventana)
+ self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0))
+ pygame.display.update()
+
+ dialog.clear(self.ventana, self.fondo)
+ self.ventana_real.blit(pygame.transform.scale(self.ventana, self.resolucionreal), (0,0))
+ pygame.display.update()
+
+ def ok_intro(self, button):
+ return self.emit_volver()
+ def cancel_intro(self, button):
+ self.estado = "Intro"
+
+ def crear_usuario(self, usuario):
+ self.estado = None
+ self.emit("run", usuario)
+
+class Frame(pygame.sprite.OrderedUpdates):
+ def __init__(self, main):
+ pygame.sprite.OrderedUpdates.__init__(self)
+ imagen = os.path.join(G.IMAGENES, "Login", "fondo_selecciona.png")
+ imagen = pygame.transform.scale(pygame.image.load(imagen), (800, 570))
+ fuente, tamanio = JAMG.get_Font_fawn()
+ imagen_teclado = os.path.join(G.IMAGENES, "icono_teclado.jpg")
+
+ self.main = main
+ self.estado = None
+
+ self.usuario = {
+ 'nombre':'',
+ 'edad':'',
+ 'escuela':'',
+ 'clase':'',
+ 'departamento':'',
+ 'personaje':'' }
+
+ self.jacinto = JAMButton('',None)
+ imagenusuario = os.path.join(G.IMAGENES, "Login", "jacinto.png")
+ self.jacinto.set_imagen(origen = imagenusuario)
+ self.jacinto.connect(callback = self.select_personaje, sonido_select = None)
+
+ self.jose = JAMButton('',None)
+ imagenusuario = os.path.join(G.IMAGENES, "Login", "jose.png")
+ self.jose.set_imagen(origen = imagenusuario)
+ self.jose.connect(callback = self.select_personaje, sonido_select = None)
+
+ self.natalia = JAMButton('',None)
+ imagenusuario = os.path.join(G.IMAGENES, "Login", "natalia.png")
+ self.natalia.set_imagen(origen = imagenusuario)
+ self.natalia.connect(callback = self.select_personaje, sonido_select = None)
+
+ self.personajes = [self.jacinto, self.jose, self.natalia]
+ for personaje in self.personajes:
+ personaje.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1)
+ personaje.set_colores(colorbas = (255,255,255,255),
+ colorbor = (255,255,255,255), colorcara = (0,153,255,255))
+
+ self.entrys = []
+ self.board = Board()
+
+ self.fondo = pygame.sprite.Sprite()
+ self.fondo.image = (imagen)
+ self.fondo.rect = self.fondo.image.get_rect()
+ self.add(self.fondo)
+ imagen = G.get_Flecha()
+ salir = JAMButton("",None)
+ salir.set_imagen(origen = imagen, tamanio = (100,55))
+ salir.set_colores(colorbas = JAMG.get_negro(), colorcara = JAMG.get_negro())
+ salir.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1)
+ salir.set_posicion(punto = (10,10))
+ salir.connect(callback = main.run_dialog_intro)
+ self.add(salir)
+
+ # Ingresar nombre
+ self.label_nombre = JAMLabel("Nombre:")
+ self.label_nombre.set_text(color = (255,255,255,255))
+ self.label_nombre.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_nombre)
+ self.entry_nombre = JAMButton("",None)
+ self.entrys.append(self.entry_nombre)
+ self.add(self.entry_nombre)
+
+ # Ingresar Edad
+ self.label_edad = JAMLabel("Edad:")
+ self.label_edad.set_text(color = (255,255,255,255))
+ self.label_edad.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_edad)
+ self.entry_edad = JAMButton("",None)
+ self.entrys.append(self.entry_edad)
+ self.add(self.entry_edad)
+
+ # Ingresar escuela
+ self.label_escuela = JAMLabel("Escuela:")
+ self.label_escuela.set_text(color = (255,255,255,255))
+ self.label_escuela.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_escuela)
+ self.entry_escuela = JAMButton("",None)
+ self.entrys.append(self.entry_escuela)
+ self.add(self.entry_escuela)
+
+ # Ingresar Clase
+ self.label_clase = JAMLabel("Clase:")
+ self.label_clase.set_text(color = (255,255,255,255))
+ self.label_clase.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_clase)
+ self.entry_clase = JAMButton("",None)
+ self.entrys.append(self.entry_clase)
+ self.add(self.entry_clase)
+
+ # Ingresar departamento
+ self.label_departamento = JAMLabel("Departamento:")
+ self.label_departamento.set_text(color = (255,255,255,255))
+ self.label_departamento.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_departamento)
+ self.entry_departamento = JAMButton("",None)
+ self.entrys.append(self.entry_departamento)
+ self.add(self.entry_departamento)
+
+ for boton in self.entrys:
+ boton.set_alineacion_label("izquierda")
+ boton.set_imagen(origen = imagen_teclado)
+ boton.set_font_from_file(fuente, tamanio = 25)
+ boton.set_tamanios(tamanio = (300, 35), grosorbor = 1, detalle = 1, espesor = 1)
+ boton.connect(callback = None, sonido_select = None)
+
+ self.label_derecho = JAMLabel("Selecciona un Personaje:")
+ self.label_derecho.set_text(color = (255,255,255,255))
+ self.label_derecho.set_font_from_file(fuente, tamanio = 30)
+ self.add(self.label_derecho)
+
+ self.boton_crear = JAMButton("Crear",None)
+ self.boton_crear.set_font_from_file(fuente, tamanio = 30)
+ self.boton_crear.set_tamanios(tamanio = (200,40), grosorbor = 1, detalle = 1, espesor = 1)
+ self.boton_crear.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255))
+ self.boton_crear.connect(callback = self.crear_usuario, sonido_select = None)
+
+ self.add(self.boton_crear)
+
+ self.add(self.jacinto)
+ self.add(self.jose)
+ self.add(self.natalia)
+
+ self.entry_nombre.connect(callback = self.enter_nombre)
+ self.entry_edad.connect(callback = self.enter_edad)
+ self.entry_escuela.connect(callback = self.enter_escuela)
+ self.entry_clase.connect(callback = self.enter_clase)
+ self.entry_departamento.connect(callback = self.enter_departamento)
+
+ def center(self, fondo_size):
+ sep = 10
+ w,h = fondo_size
+ x, y = (w/2 - self.fondo.rect.w/2, h/2 - self.fondo.rect.h/2)
+ self.fondo.rect.x, self.fondo.rect.y = (x, y)
+
+ x += sep*2
+ y += sep*2
+
+ self.label_nombre.set_posicion( (x,y) )
+ y += self.label_nombre.get_tamanio()[1]
+ self.entry_nombre.set_posicion( (x,y) )
+ y += sep*3 + self.entry_nombre.get_tamanio()[1]
+
+ self.label_edad.set_posicion( (x,y) )
+ y += self.label_edad.get_tamanio()[1]
+ self.entry_edad.set_posicion( (x,y) )
+ y += sep*3 + self.entry_edad.get_tamanio()[1]
+
+ self.label_escuela.set_posicion( (x,y) )
+ y += self.label_escuela.get_tamanio()[1]
+ self.entry_escuela.set_posicion( (x,y) )
+ y += sep*3 + self.entry_escuela.get_tamanio()[1]
+
+ self.label_clase.set_posicion( (x,y) )
+ y += self.label_clase.get_tamanio()[1]
+ self.entry_clase.set_posicion( (x,y) )
+ y += sep*3 + self.entry_clase.get_tamanio()[1]
+
+ self.label_departamento.set_posicion( (x,y) )
+ y += self.label_departamento.get_tamanio()[1]
+ self.entry_departamento.set_posicion( (x,y) )
+
+ w,h = fondo_size
+ mitad = self.fondo.rect.w/2
+ ww,hh = self.label_derecho.get_tamanio()
+ x = self.fondo.rect.x + mitad + mitad/2 - ww/2
+ y = self.fondo.rect.y + sep
+ self.label_derecho.set_posicion( (x,y) )
+
+ ww,hh = self.jacinto.get_tamanio()
+ x = self.fondo.rect.x + mitad + mitad/2 - ww - sep
+ y = self.label_derecho.get_posicion()[1] + self.label_derecho.get_tamanio()[1] + sep
+ self.jacinto.set_posicion( (x,y) )
+
+ x = self.jacinto.get_posicion()[0] + self.jacinto.get_tamanio()[0] + sep
+ self.natalia.set_posicion( (x,y) )
+
+ ww,hh = self.jose.get_tamanio()
+ x = self.fondo.rect.x + mitad + mitad/2 - ww/2
+ y = self.natalia.get_posicion()[1] + self.natalia.get_tamanio()[1] + sep
+ self.jose.set_posicion( (x,y) )
+
+ ww,hh = self.boton_crear.get_tamanio()
+ x = self.fondo.rect.x + mitad + mitad/2 - ww/2
+ y = self.jose.get_posicion()[1] + self.jose.get_tamanio()[1] + sep*5
+ self.boton_crear.set_posicion( (x,y) )
+
+ def crear_usuario(self, button):
+ if self.usuario['nombre'] and self.usuario['edad'] \
+ and self.usuario['escuela'] and self.usuario['clase'] \
+ and self.usuario['departamento'] and self.usuario['personaje']:
+ self.main.crear_usuario(self.usuario)
+ else:
+ print "Hay un campo sin llenar"
+
+ def select_personaje(self, button):
+ self.usuario['personaje'] = button.etiqueta_unselect.imagen["origen"]
+ for personaje in self.personajes:
+ if not personaje == button:
+ personaje.set_colores(colorbas = (255,255,255,255),
+ colorbor = (255,255,255,255), colorcara = (0,153,255,255))
+ else:
+ personaje.set_colores(colorbas = (0,153,255,255),
+ colorbor = (255,255,255,255), colorcara = (255,255,0,255))
+
+ def enter_nombre(self, button):
+ x,y = button.get_posicion()
+ w,h = button.get_tamanio()
+ self.board.set_posicion(punto= (x+w,y))
+ self.board.callback_enter = self.add_nombre
+ self.board.text_buffer = button.get_text()
+ self.add(self.board)
+ self.run_board(button)
+ def add_nombre(self, textbuffer):
+ self.estado = None
+ if textbuffer: self.usuario['nombre'] = textbuffer
+ def enter_edad(self, button):
+ x,y = button.get_posicion()
+ w,h = button.get_tamanio()
+ self.board.set_posicion(punto= (x+w,y))
+ self.board.callback_enter = self.add_edad
+ self.board.text_buffer = button.get_text()
+ self.add(self.board)
+ self.run_board(button)
+ def add_edad(self, textbuffer):
+ self.estado = None
+ if textbuffer: self.usuario['edad'] = textbuffer
+ def enter_escuela(self, button):
+ x,y = button.get_posicion()
+ w,h = button.get_tamanio()
+ self.board.set_posicion(punto= (x+w,y))
+ self.board.callback_enter = self.add_escuela
+ self.board.text_buffer = button.get_text()
+ self.add(self.board)
+ self.run_board(button)
+ def add_escuela(self, textbuffer):
+ self.estado = None
+ if textbuffer: self.usuario['escuela'] = textbuffer
+ def enter_clase(self, button):
+ x,y = button.get_posicion()
+ w,h = button.get_tamanio()
+ self.board.set_posicion(punto= (x+w,y))
+ self.board.callback_enter = self.add_clase
+ self.board.text_buffer = button.get_text()
+ self.add(self.board)
+ self.run_board(button)
+ def add_clase(self, textbuffer):
+ self.estado = None
+ if textbuffer: self.usuario['clase'] = textbuffer
+ def enter_departamento(self, button):
+ x,y = button.get_posicion()
+ w,h = button.get_tamanio()
+ self.board.set_posicion(punto= (x+w,y))
+ self.board.callback_enter = self.add_departamento
+ self.board.text_buffer = button.get_text()
+ self.add(self.board)
+ self.run_board(button)
+ def add_departamento(self, textbuffer):
+ self.estado = None
+ if textbuffer: self.usuario['departamento'] = textbuffer
+
+ def run_board(self, button):
+ self.estado = "board"
+ self.board.draw(self.main.ventana)
+ pygame.display.update()
+ while self.estado == "board":
+ self.main.reloj.tick(35)
+ while gtk.events_pending():
+ gtk.main_iteration(False)
+ G.Traduce_posiciones(self.main.VA, self.main.VH)
+ self.clear(self.main.ventana, self.main.fondo)
+ self.board.update()
+ pygame.event.clear()
+ button.set_text( texto = self.board.text_buffer)
+ self.draw(self.main.ventana)
+ self.main.ventana_real.blit(pygame.transform.scale(self.main.ventana, self.main.resolucionreal), (0,0))
+ pygame.display.update()
+ self.board.clear(self.main.ventana, self.main.fondo)
+ self.main.ventana_real.blit(pygame.transform.scale(self.main.ventana, self.main.resolucionreal), (0,0))
+ pygame.display.update()
+ self.remove(self.board)
+
+class Board(pygame.sprite.OrderedUpdates):
+ def __init__(self):
+ pygame.sprite.OrderedUpdates.__init__(self)
+ self.fuente, tamanio = JAMG.get_Font_fawn()
+
+ self.tamanio = None
+ self.base = None
+ self.text_buffer = ""
+ self.callback_enter = None
+
+ self.letras, self.numeros, self.especiales = self.get_botones_letras()
+ botones = self.letras + self.numeros + self.especiales
+ self.set_normaliza_tamanios_botones(botones)
+ self.set_posicion()
+
+ self.base = pygame.sprite.Sprite()
+ self.base.image = JAMG.get_Rectangulo_Transparente(self.tamanio)
+ self.base.rect = self.base.image.get_rect()
+
+ self.add(self.base)
+ self.add(self.letras)
+ self.add(self.numeros)
+ self.add(self.especiales)
+
+ def set_buffer(self, button):
+ if self.text_buffer == " ": self.text_buffer = ""
+ texto = button.get_text()
+ if texto and texto != "Ñ": self.text_buffer += texto # hay un error en Ñ
+ if self.text_buffer == " ": self.text_buffer = ""
+
+ def set_back_space(self, button):
+ if self.text_buffer:
+ if len(self.text_buffer) > 1:
+ self.text_buffer = self.text_buffer[:-1]
+ else:
+ self.text_buffer = " "
+
+ def set_enter(self, button):
+ if self.callback_enter: self.callback_enter(self.text_buffer)
+
+ def get_botones_letras(self):
+ simbols = JAMG.get_letras_up()
+ botones_letras = []
+ for letra in simbols:
+ boton = JAMButton(letra, None)
+ boton.set_font_from_file(self.fuente, tamanio = 20)
+ boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1)
+ boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255))
+ #boton.set_text(color = (0,153,255,255))
+ boton.connect(callback = self.set_buffer, sonido_select = None)
+ botones_letras.append(boton)
+
+ simbols = JAMG.get_numeros()
+ botones_numeros = []
+ for letra in simbols:
+ boton = JAMButton(letra, None)
+ boton.set_font_from_file(self.fuente, tamanio = 20)
+ boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1)
+ boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255))
+ #boton.set_text(color = (0,153,255,255))
+ boton.connect(callback = self.set_buffer, sonido_select = None)
+ botones_numeros.append(boton)
+
+ botones_especiales = []
+ for letra in ['', ' ', '']:
+ boton = JAMButton(letra, None)
+ #boton.set_font_from_file(self.fuente, tamanio = 20)
+ boton.set_tamanios(tamanio = (0,0), grosorbor = 1, detalle = 1, espesor = 1)
+ boton.set_colores(colorbas = (0,153,255,255), colorbor = (0,153,255,255), colorcara = (255,255,255,255))
+ #boton.set_text(color = (0,153,255,255))
+ boton.connect(callback = self.set_buffer, sonido_select = None)
+ botones_especiales.append(boton)
+
+ imagen = os.path.join(G.IMAGENES, "back.png")
+ boton = botones_especiales[0]
+ boton.set_imagen(origen = imagen)
+ boton.connect(callback = self.set_back_space, sonido_select = None)
+
+ imagen = os.path.join(G.IMAGENES, "enter.png")
+ boton = botones_especiales[2]
+ boton.set_imagen(origen = imagen)
+ boton.connect(callback = self.set_enter, sonido_select = None)
+
+ return (botones_letras, botones_numeros, botones_especiales)
+
+ def set_normaliza_tamanios_botones(self, botones):
+ ''' Normaliza los Tamaños de los botones. '''
+ lado = 0
+ for button in botones:
+ button.set_tamanios(tamanio = (0,0))
+ if button.rect.w > lado:
+ lado = button.rect.w
+ if button.rect.h > lado:
+ lado = button.rect.h
+ for button in botones:
+ button.set_tamanios(tamanio = (lado,lado))
+
+ def set_posicion(self, punto = (0,0)):
+ if self.base:
+ self.base.rect.x, self.base.rect.y = punto
+ x, y = punto
+ for boton in self.numeros:
+ boton.set_posicion( (x,y) )
+ x += boton.get_tamanio()[0]
+ x, y = punto
+ y += boton.get_tamanio()[1]
+ for boton in self.letras[:9]:
+ boton.set_posicion( (x,y) )
+ x += boton.get_tamanio()[0]
+ x = punto[0]
+ y += boton.get_tamanio()[1]
+ for boton in self.letras[9:18]:
+ boton.set_posicion( (x,y) )
+ x += boton.get_tamanio()[0]
+ x = punto[0]
+ y += boton.get_tamanio()[1]
+ for boton in self.letras[18:]:
+ boton.set_posicion( (x,y) )
+ x += boton.get_tamanio()[0]
+ w = self.numeros[0].get_tamanio()[0]*len(self.numeros)
+ h = self.numeros[0].get_tamanio()[1]*4
+ self.tamanio = (w,h)
+
+ boton = self.numeros[-1]
+ x,y = boton.get_posicion()
+ w,h = boton.get_tamanio()
+ y += h
+ self.especiales[0].set_posicion( (x,y) )
+ y += h
+ self.especiales[1].set_posicion( (x,y) )
+ y += h
+ self.especiales[2].set_posicion( (x,y) )
+