def __init__(self, menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("estado_habitacion.xml") # Obtenemos ventana self.window = builder.get_object("window") self.window.set_border_width(BORDE_ANCHO) self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO) # Obtenemos combos de la interfaz self.dia_ini_combo = builder.get_object("dia_ini_combo") self.mes_ini_combo = builder.get_object("mes_ini_combo") self.ano_ini_combo = builder.get_object("ano_ini_combo") self.dia_fin_combo = builder.get_object("dia_fin_combo") self.mes_fin_combo = builder.get_object("mes_fin_combo") self.ano_fin_combo = builder.get_object("ano_fin_combo") self.scrolled_window = builder.get_object("scrolled_window") self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS) self.tree = Gtk.TreeView() self.scrolled_window.add(self.tree) self.gestorDialogos = GestorDialogos() self.gestor_estado = GestorMostrarEstadoHab() # Gestorcombos se ocupa de cargar los combos con info self.gestorCombos = GestorCombos() self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, datetime.today().year, datetime.today().year) self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo, datetime.today().year, datetime.today().year + 2) # Seteamos items activos self.gestorCombos.setActive([ self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo ], [0, 0, 0, 0, 0, 0]) # Conectamos las senales con sus funciones handlers = { "onDeleteWindow": Gtk.main_quit, "onButtonClicked": self.mostrarHabitaciones, "onComboIniChanged": self.comboIniChanged, "onComboFinChanged": self.comboFinChanged } builder.connect_signals(handlers) # Monstramos ventana self.window.show_all()
def __init__(self,menu,fecha_inicio,fecha_fin,habitacion): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) self.dialogos = GestorDialogos() self.gestorOcuparHab = GestorOcuparHab() # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_window1_destroy": Gtk.main_quit, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.id_pasajero = None self.habitacion = habitacion self.fecha_inicio = date(int(fecha_inicio[:4]),int(fecha_inicio[5:7]),int(fecha_inicio[8:])) self.fecha_fin = date(int(fecha_fin[:4]),int(fecha_fin[5:7]),int(fecha_fin[8:])) self.tipoPasajero = 'responsable' # Monstramos la ventana con los widgets self.window1.show_all()
def __init__(self,menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("estado_habitacion.xml") # Obtenemos ventana self.window = builder.get_object("window") self.window.set_border_width(BORDE_ANCHO) self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO) # Obtenemos combos de la interfaz self.dia_ini_combo = builder.get_object("dia_ini_combo") self.mes_ini_combo = builder.get_object("mes_ini_combo") self.ano_ini_combo = builder.get_object("ano_ini_combo") self.dia_fin_combo = builder.get_object("dia_fin_combo") self.mes_fin_combo = builder.get_object("mes_fin_combo") self.ano_fin_combo = builder.get_object("ano_fin_combo") self.scrolled_window = builder.get_object("scrolled_window") self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS) self.tree = Gtk.TreeView() self.scrolled_window.add(self.tree) self.gestorDialogos = GestorDialogos() self.gestor_estado = GestorMostrarEstadoHab() # Gestorcombos se ocupa de cargar los combos con info self.gestorCombos = GestorCombos() self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo,datetime.today().year,datetime.today().year) self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo,datetime.today().year,datetime.today().year + 2) # Seteamos items activos self.gestorCombos.setActive([self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo], [0, 0, 0, 0, 0, 0]) # Conectamos las senales con sus funciones handlers = { "onDeleteWindow": Gtk.main_quit, "onButtonClicked": self.mostrarHabitaciones, "onComboIniChanged": self.comboIniChanged, "onComboFinChanged": self.comboFinChanged } builder.connect_signals(handlers) # Monstramos ventana self.window.show_all()
def __init__(self, menu): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.pasajero = None # Monstramos la ventana con los widgets self.window1.show_all()
def __init__(self,menu): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.pasajero = None # Monstramos la ventana con los widgets self.window1.show_all()
def __init__(self,menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("Cargar_Pasajero3.4.xml") self.dialogo = GestorDialogos() #carga conecta los widgets con la interfaz self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombres = builder.get_object("eNombres") self.eApellidos = builder.get_object("eApellidos") self.eDocumento = builder.get_object("eDocumento") self.eTelefono = builder.get_object("eTelefono") self.eCalle = builder.get_object("eCalle") self.eNumero = builder.get_object("eNumero") self.eDepto = builder.get_object("eDepto") self.ePiso = builder.get_object("ePiso") self.ePostal = builder.get_object("ePostal") self.eCUIT = builder.get_object("eCUIT") self.cPais = builder.get_object("cPais") self.eCorreo = builder.get_object("eCorreo") self.cProvincia = builder.get_object("cProvincia") self.cLocalidad = builder.get_object("cLocalidad") self.cDocumento = builder.get_object("cDocumento") self.cDia = builder.get_object("cDia") self.cMes = builder.get_object("cMes") self.cAnyo = builder.get_object("cAnyo") self.cNacionalidad = builder.get_object("cNacionalidad") self.cOcupacion = builder.get_object("cOcupacion") self.lPais = builder.get_object("lPais") self.lNacionalidad = builder.get_object("lNacionalidad") self.lOcupacion = builder.get_object("lOcupacion") self.lProvincia = builder.get_object("lProvincia") self.lLocalidad = builder.get_object("lLocalidad") self.lDocumento = builder.get_object("lDocumento") self.lIVA = builder.get_object("lIVA") self.ebPais = builder.get_object("eventbox_pais") self.ebNacionalidad = builder.get_object("eventbox_nacionalidad") self.ebOcupacion = builder.get_object("eventbox_ocupacion") self.ebProvincia = builder.get_object("eventbox_provincia") self.ebLocalidad = builder.get_object("eventbox_localidad") self.ebDocumento = builder.get_object("eventbox_dni") self.ebIVA = builder.get_object("eventbox_iva") self.ebFecha = builder.get_object("eventbox_fecha") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(self.lPais, self.lNacionalidad, self.lOcupacion, self.lIVA, self.lDocumento) self.gestorCombos.initDateCombo(self.cDia,self.cMes,self.cAnyo,datetime.datetime.today().year-100,datetime.datetime.today().year) #variables auxiliares self.tipo = None self.localidad = None self.provincia = None self.nacionalidad = None self.pais = None self.ocupacion = None self.IVA = None self.fecha = datetime.date(0001,01,01) # CSS screen = Gdk.Screen.get_default() css_provider = Gtk.CssProvider() css_provider.load_from_path('style.css') priority = Gtk.STYLE_PROVIDER_PRIORITY_USER context = Gtk.StyleContext() context.add_provider_for_screen(screen, css_provider, priority) # Conecta las senales con sus funciones handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked":self.on_bCancelar_clicked, "on_cPais_changed": self.on_cPais_changed, "on_cProvincia_changed": self.on_cProvincia_changed, "on_cLocalidad_changed": self.on_cLocalidad_changed, "on_cDocumento_changed": self.on_cDocumento_changed, "on_cNacionalidad_changed": self.on_cNacionalidad_changed, "on_cAnyo_changed": self.on_cAnyo_changed, "on_cMes_changed": self.on_cMes_changed, #"on_cDia_changed": self.on_cDia_changed, "on_cOcupacion_changed":self.on_cOcupacion_changed, "on_cIVA_changed":self.on_cIVA_changed } builder.connect_signals(handlers) # Mostramos ventanas con todos los widgets self.window1.show_all()
class InterfazDarAltaPasajero: def __init__(self,menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("Cargar_Pasajero3.4.xml") self.dialogo = GestorDialogos() #carga conecta los widgets con la interfaz self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombres = builder.get_object("eNombres") self.eApellidos = builder.get_object("eApellidos") self.eDocumento = builder.get_object("eDocumento") self.eTelefono = builder.get_object("eTelefono") self.eCalle = builder.get_object("eCalle") self.eNumero = builder.get_object("eNumero") self.eDepto = builder.get_object("eDepto") self.ePiso = builder.get_object("ePiso") self.ePostal = builder.get_object("ePostal") self.eCUIT = builder.get_object("eCUIT") self.cPais = builder.get_object("cPais") self.eCorreo = builder.get_object("eCorreo") self.cProvincia = builder.get_object("cProvincia") self.cLocalidad = builder.get_object("cLocalidad") self.cDocumento = builder.get_object("cDocumento") self.cDia = builder.get_object("cDia") self.cMes = builder.get_object("cMes") self.cAnyo = builder.get_object("cAnyo") self.cNacionalidad = builder.get_object("cNacionalidad") self.cOcupacion = builder.get_object("cOcupacion") self.lPais = builder.get_object("lPais") self.lNacionalidad = builder.get_object("lNacionalidad") self.lOcupacion = builder.get_object("lOcupacion") self.lProvincia = builder.get_object("lProvincia") self.lLocalidad = builder.get_object("lLocalidad") self.lDocumento = builder.get_object("lDocumento") self.lIVA = builder.get_object("lIVA") self.ebPais = builder.get_object("eventbox_pais") self.ebNacionalidad = builder.get_object("eventbox_nacionalidad") self.ebOcupacion = builder.get_object("eventbox_ocupacion") self.ebProvincia = builder.get_object("eventbox_provincia") self.ebLocalidad = builder.get_object("eventbox_localidad") self.ebDocumento = builder.get_object("eventbox_dni") self.ebIVA = builder.get_object("eventbox_iva") self.ebFecha = builder.get_object("eventbox_fecha") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(self.lPais, self.lNacionalidad, self.lOcupacion, self.lIVA, self.lDocumento) self.gestorCombos.initDateCombo(self.cDia,self.cMes,self.cAnyo,datetime.datetime.today().year-100,datetime.datetime.today().year) #variables auxiliares self.tipo = None self.localidad = None self.provincia = None self.nacionalidad = None self.pais = None self.ocupacion = None self.IVA = None self.fecha = datetime.date(0001,01,01) # CSS screen = Gdk.Screen.get_default() css_provider = Gtk.CssProvider() css_provider.load_from_path('style.css') priority = Gtk.STYLE_PROVIDER_PRIORITY_USER context = Gtk.StyleContext() context.add_provider_for_screen(screen, css_provider, priority) # Conecta las senales con sus funciones handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked":self.on_bCancelar_clicked, "on_cPais_changed": self.on_cPais_changed, "on_cProvincia_changed": self.on_cProvincia_changed, "on_cLocalidad_changed": self.on_cLocalidad_changed, "on_cDocumento_changed": self.on_cDocumento_changed, "on_cNacionalidad_changed": self.on_cNacionalidad_changed, "on_cAnyo_changed": self.on_cAnyo_changed, "on_cMes_changed": self.on_cMes_changed, #"on_cDia_changed": self.on_cDia_changed, "on_cOcupacion_changed":self.on_cOcupacion_changed, "on_cIVA_changed":self.on_cIVA_changed } builder.connect_signals(handlers) # Mostramos ventanas con todos los widgets self.window1.show_all() def on_cDocumento_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.tipo = id_object def on_cOcupacion_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.ocupacion = id_object def on_cIVA_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.IVA = id_object def on_cNacionalidad_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.nacionalidad = id_object def on_cAnyo_changed(self,combo): self.gestorCombos.comboUpDate(self.cDia,self.cMes,self.cAnyo) def on_cMes_changed(self,combo): self.gestorCombos.comboUpDate(self.cDia,self.cMes,self.cAnyo) def on_cPais_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.pais = id_object self.gestorCombos.getProvincia(self.lProvincia,id_object) def on_cProvincia_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.provincia = id_object self.gestorCombos.getLocalidad(self.lLocalidad,id_object) def on_cLocalidad_changed(self,combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.localidad = id_object def on_bSiguiente_clicked(self,boton): pasajero = DtoPasajero(nombre=self.eNombres.get_text(), apellido=self.eApellidos.get_text(), cuit=self.eCUIT.get_text(), email=self.eCorreo.get_text(), fecha_de_nac=self.gestorCombos.getDate(self.cDia,self.cMes,self.cAnyo), telefono=self.eTelefono.get_text(), CP=self.ePostal.get_text(), id_iva=self.IVA, id_ocupacion=self.ocupacion, id_pais=self.pais, id_localidad=self.localidad, id_provincia=self.provincia, id_nacionalidad=self.nacionalidad, calle=self.eCalle.get_text(), numero=self.eNumero.get_text(), dpto=self.eDepto.get_text(), piso=self.ePiso.get_text(), id_tipo=self.tipo, codigo=self.eDocumento.get_text()) gestor = GestorGestionarPasajeros() # Corroboramos que cada entry coincida con el formato de entrada errores, tipo = gestor.checkentries(pasajero) if not errores: # creamos pasajero crear_return = gestor.crearPasajero(pasajero) if crear_return == False: respuesta = self.dialogo.confirm("¡CUIDADO! El tipo y número de documento ya existen en el sistema", "Aceptar Igualmente", "Corregir") if respuesta == True: gestor.completarCarga(pasajero) elif crear_return == True: respuesta = self.dialogo.confirm('Pasajero Guardado',"Aceptar") self.menu.show_all() self.window1.hide() else: if tipo: # Si se cometieron errores # Obtenemos styles y widgets widgets, styles = self.getEntries_Styles(errores) # Pintamos widgets self.pintarWidgets(widgets, styles) # Monstramos errores self.dialogo.confirm(self.crearAdvertencia(errores), "Aceptar") else: # Si se realizaron omisiones # Obtenemos styles y widgets widgets, styles = self.getEntries_Styles(errores) self.despintarWidgets(self.getallwidgets(),self.getallstyles()) # Pintamos widgets self.pintarWidgets(widgets, styles) def on_bCancelar_clicked(self,boton): respuesta = self.dialogo.confirm("¿Desea cancelar el alta del pasajero?","SI","NO") if respuesta == True: self.menu.show_all() self.window1.destroy() def getEntries_Styles(self, omisiones): widgets = list() styles = list() # Agrupamos los widgets y los styles contexts for omision in omisiones: if omision is 'nombre': widgets.append(self.eNombres) styles.append(self.eNombres.get_style_context()) elif omision is 'apellido': widgets.append(self.eApellidos) styles.append(self.eApellidos.get_style_context()) elif omision is 'id_tipo': widgets.append(self.ebDocumento) styles.append(self.ebDocumento.get_style_context()) elif omision is 'codigo': widgets.append(self.eDocumento) styles.append(self.eDocumento.get_style_context()) elif omision is 'id_nacionalidad': widgets.append(self.ebNacionalidad) styles.append(self.ebNacionalidad.get_style_context()) elif omision is 'fecha': widgets.append(self.ebFecha) styles.append(self.ebFecha.get_style_context()) elif omision is 'telefono': widgets.append(self.eTelefono) styles.append(self.eTelefono.get_style_context()) elif omision is 'calle': widgets.append(self.eCalle) styles.append(self.eCalle.get_style_context()) elif omision is 'numero': widgets.append(self.eNumero) styles.append(self.eNumero.get_style_context()) elif omision is 'id_localidad': widgets.append(self.ebLocalidad) styles.append(self.ebLocalidad.get_style_context()) elif omision is 'CP': widgets.append(self.ePostal) styles.append(self.ePostal.get_style_context()) elif omision is 'id_provincia': widgets.append(self.ebProvincia) styles.append(self.ebProvincia.get_style_context()) elif omision is 'id_pais': widgets.append(self.ebPais) styles.append(self.ebPais.get_style_context()) elif omision is 'id_ocupacion': widgets.append(self.ebOcupacion) styles.append(self.ebOcupacion.get_style_context()) elif omision is 'id_iva': widgets.append(self.ebIVA) styles.append(self.ebIVA.get_style_context()) # retornamos widgets y style contexts return widgets, styles def pintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.add_class('invalid') widget.grab_focus() print "painting-finished" def despintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.remove_class('invalid') widget.grab_focus() def crearAdvertencia(self, errores): if len(errores) == 1: errorMessage = "Cometio un error al llenar el campo:" else: errorMessage = "Cometio un error al llenar los campos:" for error in errores: if error is 'nombre': errorMessage+= "\nNombre, debe tener la forma -> <nombre>{<espacio><segundonombre>}*" elif error is 'apellido': errorMessage+= "\nApellido, debe tener la forma -> <apellido>{<espacio><segundoapellido>}*" elif error is 'cuit': errorMessage+= "\nCUIT, debe tener la forma -> <tipo>-<codigo>-<digitoverificador>" elif error is 'email': errorMessage+= "\nEmail, debe tener la forma -> <usuario>@<host>.<dominio>" elif error is 'CP': errorMessage+= "\nCodigo Postal, debe tener como minimo 3 digitos y como maximo 9" elif error is 'dpto': errorMessage+= "\nDepartamento, debe ser una letra del alfabeto" elif error is 'piso': errorMessage+= "\nPiso, el piso min es 1 y el maximo 163" return errorMessage def getallstyles(self): return [self.eNombres.get_style_context(), self.eApellidos.get_style_context(), self.ebDocumento.get_style_context(), self.eDocumento.get_style_context(), self.ebNacionalidad.get_style_context(), self.ebFecha.get_style_context(), self.eTelefono.get_style_context(), self.eCalle.get_style_context(), self.eNumero.get_style_context(), self.ebLocalidad.get_style_context(), self.ePostal.get_style_context(), self.ebProvincia.get_style_context(), self.ebPais.get_style_context(), self.ebOcupacion.get_style_context(), self.ebIVA.get_style_context()] def getallwidgets(self): return [self.eNombres, self.eApellidos, self.ebDocumento, self.eDocumento, self.ebNacionalidad, self.ebFecha, self.eTelefono, self.eCalle, self.eNumero, self.ebLocalidad, self.ePostal, self.ebProvincia, self.ebPais, self.ebOcupacion, self.ebIVA]
class InterfazOcuparHabitacion: def __init__(self,menu,fecha_inicio,fecha_fin,habitacion): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) self.dialogos = GestorDialogos() self.gestorOcuparHab = GestorOcuparHab() # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_window1_destroy": Gtk.main_quit, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.id_pasajero = None self.habitacion = habitacion self.fecha_inicio = date(int(fecha_inicio[:4]),int(fecha_inicio[5:7]),int(fecha_inicio[8:])) self.fecha_fin = date(int(fecha_fin[:4]),int(fecha_fin[5:7]),int(fecha_fin[8:])) self.tipoPasajero = 'responsable' # Monstramos la ventana con los widgets self.window1.show_all() def on_bSiguiente_clicked(self, boton): # Obtenemos informacion de la interfaz nombre = self.eNombre.get_text() apellido = self.eApellido.get_text() codigo = str(self.eDocumento.get_text()) if nombre is '': nombre=None if apellido is '': apellido = None if codigo is '': codigo = None # Buscamos pasajero gestionarPasajeros = GestorGestionarPasajeros() arregloPasajeros = gestionarPasajeros.buscar(nombre=nombre, apellido=apellido,tipoDocu=self.tipo,documento=codigo) if not arregloPasajeros: # Se genera la intefaz de dar alta pasajero self.dialogos.confirm("No se ha encontrado un pasajero con los datos, intente nuevamente","Aceptar") else: # Se muestra en la pantalla la grilla para seleccionar al pasajero pasajero = self.seleccionarPasajero(arregloPasajeros) def on_bCancelar_clicked(self, boton): self.menu.show_all() self.window1.destroy() def on_cDocumento_changed(self, combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.tipo = id_object def seleccionarPasajero(self,arregloPasajeros): self.window1.hide() builder = Gtk.Builder() builder.add_from_file("ocupar_habitacion.xml") self.window2 = builder.get_object("window2") lPasajeros = builder.get_object("lPasajeros") bAceptar = builder.get_object("Aceptar") treeView = builder.get_object("treeviewLista") rResponsable = builder.get_object("radiobutton1") rAcompanyante = builder.get_object("radiobutton2") handlers = { "on_window2_destroy": Gtk.main_quit} builder.connect_signals(handlers) self.window2.set_border_width(BORDE_ANCHO) self.window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) for e in arregloPasajeros: lPasajeros.append([e.getNombre(),e.getApellido(),e.getDocumento().getTipo().getTipo(),e.getDocumento().getCodigo(),e.getId()]) select = treeView.get_selection() select.connect("changed", self.on_tree_selection_changed) bAceptar.connect("clicked", self.on_Aceptar_clicked,self.window2,treeView) rResponsable.connect("toggled", self.on_radio_toggled, "responsable") rAcompanyante.connect("toggled", self.on_radio_toggled, "acompanyante") self.window2.show_all() def on_Aceptar_clicked(self,boton,window,treeView): # El usuario elige un pasajero if self.id_pasajero != 0: asignado = self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero,self.fecha_inicio,self.fecha_fin) if not asignado: self.dialogos.confirm("Ya se habia asignado un responsable a esta habitacion","Aceptar") elif asignado is not True: self.dialogos.confirm("El acompañante ya se esta alojando en el hotel en esa fecha","Aceptar") respuesta = self.dialogos.pregunta("¿Que desea hacer?","Seguir Cargando","Cargar otra habitación","Salir") if respuesta == Gtk.ResponseType.YES: self.window2.hide() self.window1.show_all() elif respuesta == Gtk.ResponseType.NO: #asignado = self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero, self.fecha_inicio, self.fecha_fin) #if asignado == True: self.gestorOcuparHab.ocuparHab(self.habitacion,self.fecha_inicio,self.fecha_fin) interfaces.interfazEstadoHabitacion.InterfazEstadoHabitacion(self.menu) self.window2.hide() #elif asignado: # self.dialogos.confirm("El acompañante ya se esta alojando en el hotel en esa fecha","Aceptar") #elif not asignado: # self.dialogos.confirm("Ya se habia asignado un responsable a esta habitacion","Aceptar") elif respuesta == Gtk.ResponseType.CLOSE: #self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero,self.fecha_inicio,self.fecha_fin) self.gestorOcuparHab.ocuparHab(self.habitacion,self.fecha_inicio,self.fecha_fin) self.menu.show_all() self.window2.hide() def on_tree_selection_changed(self,selection): model,treeiter = selection.get_selected() if treeiter is not None: self.id_pasajero = model[treeiter][4] def on_radio_toggled(self, button, name): if button.get_active(): self.tipoPasajero = name
class InterfazEstadoHabitacion: def __init__(self,menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("estado_habitacion.xml") # Obtenemos ventana self.window = builder.get_object("window") self.window.set_border_width(BORDE_ANCHO) self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO) # Obtenemos combos de la interfaz self.dia_ini_combo = builder.get_object("dia_ini_combo") self.mes_ini_combo = builder.get_object("mes_ini_combo") self.ano_ini_combo = builder.get_object("ano_ini_combo") self.dia_fin_combo = builder.get_object("dia_fin_combo") self.mes_fin_combo = builder.get_object("mes_fin_combo") self.ano_fin_combo = builder.get_object("ano_fin_combo") self.scrolled_window = builder.get_object("scrolled_window") self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS) self.tree = Gtk.TreeView() self.scrolled_window.add(self.tree) self.gestorDialogos = GestorDialogos() self.gestor_estado = GestorMostrarEstadoHab() # Gestorcombos se ocupa de cargar los combos con info self.gestorCombos = GestorCombos() self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo,datetime.today().year,datetime.today().year) self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo,datetime.today().year,datetime.today().year + 2) # Seteamos items activos self.gestorCombos.setActive([self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo], [0, 0, 0, 0, 0, 0]) # Conectamos las senales con sus funciones handlers = { "onDeleteWindow": Gtk.main_quit, "onButtonClicked": self.mostrarHabitaciones, "onComboIniChanged": self.comboIniChanged, "onComboFinChanged": self.comboFinChanged } builder.connect_signals(handlers) # Monstramos ventana self.window.show_all() def comboIniChanged(self, combo): self.gestorCombos.comboUpDate(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo) def comboFinChanged(self, combo): self.gestorCombos.comboUpDate(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo) def mostrarHabitaciones(self, combo): fecha_ini = self.gestorCombos.getDate(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo) fecha_fin = self.gestorCombos.getDate(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo) if self.gestor_estado.validarFecha(fecha_ini, fecha_fin): self.scrolled_window.remove(self.tree) self.armarGrilla(fecha_ini,fecha_fin) else: self.gestorDialogos.confirm("La fecha inicial no puede ser mayor que la final", "Aceptar") def armarGrilla(self,fecha_inicio,fecha_fin): #crea la lista de donde va a tomar las cosas el toggle, el boolean activado o no #los colores seria rojo=ocupada, azul=libre y amarillo=reservada #la ultima columna seria la fecha self.store = Gtk.ListStore(str) self.tree = Gtk.TreeView(self.store) for fecha in self.daterange(fecha_inicio, fecha_fin): treeiter = self.store.append([str(fecha)]) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn("Fecha\hab", renderer, text=0) self.tree.append_column(column) self.estados = self.gestor_estado.selectHab(fecha_inicio, fecha_fin) self.stores = [] columns = [] renderers = [] num = 0 for e in self.estados: self.stores.append(Gtk.ListStore(bool,str,str,str)) i = 0 for fecha in self.daterange(fecha_inicio, fecha_fin): self.stores[num].append([False,e[3][i],e[2][i],str(fecha)]) i = i + 1 renderers.append(Gtk.CellRendererToggle()) columns.append(Gtk.TreeViewColumn(str(e[0])+" \n"+str(e[1].getTipo().getDescripcion()), renderers[num])) columns[num].set_cell_data_func(renderers[num], self.inIta, self.stores[num]) self.tree.append_column(columns[num]) renderers[num].connect("toggled", self.on_cell_toggled,num) num = num + 1 self.fecha_ini = None self.primerCelda = [None, None] self.fecha_fin = None self.scrolled_window.add(self.tree) self.window.show_all() # Devuelve true si son iguales def compararCelda(self,path1,num1,path2,num2): if path1==path2 and num1==num2: return True def on_cell_toggled(self, widget, path, num): if self.compararCelda(self.primerCelda[0],self.primerCelda[1],int(path),num): self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] self.fecha_ini=None elif self.fecha_ini is None: self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] self.fecha_ini = self.stores[num][int(path)][3] self.primerCelda[0]=int(path) self.primerCelda[1]=num self.pos_ini = int(path) elif self.fecha_fin is None: if num != self.primerCelda[1] or int(path)<self.primerCelda[0]: self.resetearGrilla(num,path) else: self.fecha_fin = self.stores[num][int(path)][3] self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] validacion = self.gestor_estado.validarRango(self.stores[num], self.primerCelda[0], int(path), self.estados[num][1]) if validacion == False: self.resetearGrilla(num,path) else: self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] self.fecha_fin = self.stores[num][int(path)][3] validacion = self.gestor_estado.validarRango(self.stores[num],self.primerCelda[0],int(path),self.estados[num][1]) if validacion == False: self.resetearGrilla(num,path) elif validacion == True: #pintamos las celdas de color ocupado self.pintarCeldas(num,path) if self.gestorDialogos.presTecla('PRESIONE CUALQUIER TECLA Y CONTINUA...'): interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(self.menu,self.fecha_ini,self.fecha_fin,self.estados[num][1]) self.window.hide() else: respuesta = self.gestorDialogos.confirm("Ya existe una reserva nombre de {2} {3} entre la fecha {0} y {1}".\ format(str(validacion[0]),str(validacion[1]),validacion[2],validacion[3]),"Ocupar Igual","Volver") if respuesta == True: self.pintarCeldas(num,path) interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(self.menu,self.fecha_ini,self.fecha_fin,self.estados[num][1]) self.window.hide() else: self.resetearGrilla(num,path) def pintarCeldas(self,num,path): for b in range(self.primerCelda[0],int(path)+1): self.stores[num][b][1] = 'red' def resetearGrilla(self,num, path): self.stores[num][int(path)][0] = False self.stores[self.primerCelda[1]][self.primerCelda[0]][0] = False # lint:ok self.primerCelda = [None,None] self.fecha_ini = None self.fecha_fin = None def inIta(self,col, cell, model, iter, mymodel): s = model.get_string_from_iter(iter) niter = mymodel.get_iter_from_string(s) obj = mymodel.get_value(niter, 0) back = mymodel.get_value(niter,1) cell.set_property('active', obj) cell.set_property('cell-background',back) def daterange(self,start_date, end_date): for n in range(int ((end_date - start_date).days)): yield start_date + timedelta(n)
class InterfazEstadoHabitacion: def __init__(self, menu): self.menu = menu builder = Gtk.Builder() builder.add_from_file("estado_habitacion.xml") # Obtenemos ventana self.window = builder.get_object("window") self.window.set_border_width(BORDE_ANCHO) self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO) # Obtenemos combos de la interfaz self.dia_ini_combo = builder.get_object("dia_ini_combo") self.mes_ini_combo = builder.get_object("mes_ini_combo") self.ano_ini_combo = builder.get_object("ano_ini_combo") self.dia_fin_combo = builder.get_object("dia_fin_combo") self.mes_fin_combo = builder.get_object("mes_fin_combo") self.ano_fin_combo = builder.get_object("ano_fin_combo") self.scrolled_window = builder.get_object("scrolled_window") self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS) self.tree = Gtk.TreeView() self.scrolled_window.add(self.tree) self.gestorDialogos = GestorDialogos() self.gestor_estado = GestorMostrarEstadoHab() # Gestorcombos se ocupa de cargar los combos con info self.gestorCombos = GestorCombos() self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, datetime.today().year, datetime.today().year) self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo, datetime.today().year, datetime.today().year + 2) # Seteamos items activos self.gestorCombos.setActive([ self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo, self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo ], [0, 0, 0, 0, 0, 0]) # Conectamos las senales con sus funciones handlers = { "onDeleteWindow": Gtk.main_quit, "onButtonClicked": self.mostrarHabitaciones, "onComboIniChanged": self.comboIniChanged, "onComboFinChanged": self.comboFinChanged } builder.connect_signals(handlers) # Monstramos ventana self.window.show_all() def comboIniChanged(self, combo): self.gestorCombos.comboUpDate(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo) def comboFinChanged(self, combo): self.gestorCombos.comboUpDate(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo) def mostrarHabitaciones(self, combo): fecha_ini = self.gestorCombos.getDate(self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo) fecha_fin = self.gestorCombos.getDate(self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo) if self.gestor_estado.validarFecha(fecha_ini, fecha_fin): self.scrolled_window.remove(self.tree) self.armarGrilla(fecha_ini, fecha_fin) else: self.gestorDialogos.confirm( "La fecha inicial no puede ser mayor que la final", "Aceptar") def armarGrilla(self, fecha_inicio, fecha_fin): #crea la lista de donde va a tomar las cosas el toggle, el boolean activado o no #los colores seria rojo=ocupada, azul=libre y amarillo=reservada #la ultima columna seria la fecha self.store = Gtk.ListStore(str) self.tree = Gtk.TreeView(self.store) for fecha in self.daterange(fecha_inicio, fecha_fin): treeiter = self.store.append([str(fecha)]) renderer = Gtk.CellRendererText() column = Gtk.TreeViewColumn("Fecha\hab", renderer, text=0) self.tree.append_column(column) self.estados = self.gestor_estado.selectHab(fecha_inicio, fecha_fin) self.stores = [] columns = [] renderers = [] num = 0 for e in self.estados: self.stores.append(Gtk.ListStore(bool, str, str, str)) i = 0 for fecha in self.daterange(fecha_inicio, fecha_fin): self.stores[num].append([False, e[3][i], e[2][i], str(fecha)]) i = i + 1 renderers.append(Gtk.CellRendererToggle()) columns.append( Gtk.TreeViewColumn( str(e[0]) + " \n" + str(e[1].getTipo().getDescripcion()), renderers[num])) columns[num].set_cell_data_func(renderers[num], self.inIta, self.stores[num]) self.tree.append_column(columns[num]) renderers[num].connect("toggled", self.on_cell_toggled, num) num = num + 1 self.fecha_ini = None self.primerCelda = [None, None] self.fecha_fin = None self.scrolled_window.add(self.tree) self.window.show_all() # Devuelve true si son iguales def compararCelda(self, path1, num1, path2, num2): if path1 == path2 and num1 == num2: return True def on_cell_toggled(self, widget, path, num): if self.compararCelda(self.primerCelda[0], self.primerCelda[1], int(path), num): self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] self.fecha_ini = None elif self.fecha_ini is None: self.stores[num][int(path)][0] = not self.stores[num][int(path)][0] self.fecha_ini = self.stores[num][int(path)][3] self.primerCelda[0] = int(path) self.primerCelda[1] = num self.pos_ini = int(path) elif self.fecha_fin is None: if num != self.primerCelda[1] or int(path) < self.primerCelda[0]: self.resetearGrilla(num, path) else: self.fecha_fin = self.stores[num][int(path)][3] self.stores[num][int( path)][0] = not self.stores[num][int(path)][0] validacion = self.gestor_estado.validarRango( self.stores[num], self.primerCelda[0], int(path), self.estados[num][1]) if validacion == False: self.resetearGrilla(num, path) else: self.stores[num][int( path)][0] = not self.stores[num][int(path)][0] self.fecha_fin = self.stores[num][int(path)][3] validacion = self.gestor_estado.validarRango( self.stores[num], self.primerCelda[0], int(path), self.estados[num][1]) if validacion == False: self.resetearGrilla(num, path) elif validacion == True: #pintamos las celdas de color ocupado self.pintarCeldas(num, path) if self.gestorDialogos.presTecla( 'PRESIONE CUALQUIER TECLA Y CONTINUA...'): interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion( self.menu, self.fecha_ini, self.fecha_fin, self.estados[num][1]) self.window.hide() else: respuesta = self.gestorDialogos.confirm("Ya existe una reserva nombre de {2} {3} entre la fecha {0} y {1}".\ format(str(validacion[0]),str(validacion[1]),validacion[2],validacion[3]),"Ocupar Igual","Volver") if respuesta == True: self.pintarCeldas(num, path) interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion( self.menu, self.fecha_ini, self.fecha_fin, self.estados[num][1]) self.window.hide() else: self.resetearGrilla(num, path) def pintarCeldas(self, num, path): for b in range(self.primerCelda[0], int(path) + 1): self.stores[num][b][1] = 'red' def resetearGrilla(self, num, path): self.stores[num][int(path)][0] = False self.stores[self.primerCelda[1]][ self.primerCelda[0]][0] = False # lint:ok self.primerCelda = [None, None] self.fecha_ini = None self.fecha_fin = None def inIta(self, col, cell, model, iter, mymodel): s = model.get_string_from_iter(iter) niter = mymodel.get_iter_from_string(s) obj = mymodel.get_value(niter, 0) back = mymodel.get_value(niter, 1) cell.set_property('active', obj) cell.set_property('cell-background', back) def daterange(self, start_date, end_date): for n in range(int((end_date - start_date).days)): yield start_date + timedelta(n)
class InterfazGestionarPasajero: def __init__(self, menu): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.pasajero = None # Monstramos la ventana con los widgets self.window1.show_all() def on_bSiguiente_clicked(self, boton): # Obtenemos informacion de la interfaz nombre = self.eNombre.get_text() apellido = self.eApellido.get_text() codigo = str(self.eDocumento.get_text()) if nombre is '': nombre = None if apellido is '': apellido = None if codigo is '': codigo = None # Buscamos pasajero gestionarPasajeros = GestorGestionarPasajeros() errores = gestionarPasajeros.correcto([{ 'nombre': nombre, 'apellido': apellido, 'codigo': codigo }], gestionarPasajeros.erroneo) if not errores: arregloPasajeros = gestionarPasajeros.buscar(tipoDocu=self.tipo, documento=codigo, nombre=nombre, apellido=apellido) if not arregloPasajeros: # Se genera la intefaz de dar alta pasajero darAlta = InterfazDarAltaPasajero(self.menu) self.window1.destroy() else: # Se muestra en la pantalla la grilla para seleccionar al pasajero pasajero = self.seleccionarPasajero(arregloPasajeros) else: # Si se cometieron errores dialogo = GestorDialogos() dialogo.confirm(dialogo.crearAdvertencia(errores), "Aceptar") # Obtenemos styles y widgets widgets, styles = self.getEntries_Styles(errores) # Despintamos todos los widgets self.despintarWidgets( [self.eNombre, self.eApellido, self.eDocumento], [ self.eNombre.get_style_context(), self.eApellido.get_style_context(), self.eDocumento.get_style_context() ]) # Pintamos widgets erroneos self.pintarWidgets(widgets, styles) def on_bCancelar_clicked(self, boton): self.menu.show_all() self.window1.destroy() def pintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.add_class('invalid') widget.grab_focus() def despintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.remove_class('invalid') widget.grab_focus() def on_cDocumento_changed(self, combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.tipo = id_object def seleccionarPasajero(self, arregloPasajeros): self.window1.hide() builder = Gtk.Builder() builder.add_from_file("Lista_pasajeros.xml") window2 = builder.get_object("window2") lPasajeros = builder.get_object("lPasajeros") b2Siguiente = builder.get_object("b2Siguiente") treeView = builder.get_object("treeviewLista") window2.set_border_width(BORDE_ANCHO) window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) for e in arregloPasajeros: lPasajeros.append([ e.getNombre(), e.getApellido(), e.getDocumento().getTipo().getTipo(), e.getDocumento().getCodigo() ]) select = treeView.get_selection() select.unselect_all() select.connect("changed", self.on_tree_selection_changed) b2Siguiente.connect("clicked", self.on_b2Siguiente_clicked, window2, treeView) window2.show_all() def on_b2Siguiente_clicked(self, boton, window, treeView): if self.pasajero is None: # El usuario no elige ningun pasajero darAlta = InterfazDarAltaPasajero(self.menu) window.destroy() def on_tree_selection_changed(self, selection): model, treeiter = selection.get_selected() if treeiter != None: self.pasajero = model[treeiter][0] def getEntries_Styles(self, omisiones): widgets = list() styles = list() # Agrupamos los widgets y los styles contexts for omision in omisiones: if omision is 'nombre': widgets.append(self.eNombre) styles.append(self.eNombre.get_style_context()) elif omision is 'apellido': widgets.append(self.eApellido) styles.append(self.eApellido.get_style_context()) elif omision is 'codigo': widgets.append(self.eDocumento) styles.append(self.eDocumento.get_style_context()) # retornamos widgets y style contexts return widgets, styles
class InterfazGestionarPasajero: def __init__(self,menu): self.menu = menu builder = Gtk.Builder() # Dibuja ventanas desde .xml builder.add_from_file("Gestionar_Pasajero3.4.xml") # Obtenemos widgets self.window1 = builder.get_object("window1") self.bSiguiente = builder.get_object("bSiguiente") self.bCancelar = builder.get_object("bCancelar") self.eNombre = builder.get_object("eNombre") self.eApellido = builder.get_object("eApellido") self.eDocumento = builder.get_object("eDocumento") self.cDocumento = builder.get_object("cDocumento") self.lDocumento = builder.get_object("lDocumento") self.window1.set_border_width(BORDE_ANCHO) self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) # Obtenemos informacion para los combos desde la db self.gestorCombos = GestorCombos() self.gestorCombos.cargarCombos(lDocumento=self.lDocumento) # Events handlers handlers = { "on_bSiguiente_clicked": self.on_bSiguiente_clicked, "on_bCancelar_clicked": self.on_bCancelar_clicked, "on_cDocumento_changed": self.on_cDocumento_changed, } builder.connect_signals(handlers) # Variable auxiliar self.tipo = None self.pasajero = None # Monstramos la ventana con los widgets self.window1.show_all() def on_bSiguiente_clicked(self, boton): # Obtenemos informacion de la interfaz nombre = self.eNombre.get_text() apellido = self.eApellido.get_text() codigo = str(self.eDocumento.get_text()) if nombre is '': nombre=None if apellido is '': apellido = None if codigo is '': codigo = None # Buscamos pasajero gestionarPasajeros = GestorGestionarPasajeros() errores = gestionarPasajeros.correcto([{'nombre': nombre, 'apellido': apellido, 'codigo': codigo}], gestionarPasajeros.erroneo) if not errores: arregloPasajeros = gestionarPasajeros.buscar(tipoDocu=self.tipo, documento=codigo, nombre=nombre, apellido=apellido) if not arregloPasajeros: # Se genera la intefaz de dar alta pasajero darAlta = InterfazDarAltaPasajero(self.menu) self.window1.destroy() else: # Se muestra en la pantalla la grilla para seleccionar al pasajero pasajero = self.seleccionarPasajero(arregloPasajeros) else: # Si se cometieron errores dialogo = GestorDialogos() dialogo.confirm(dialogo.crearAdvertencia(errores), "Aceptar") # Obtenemos styles y widgets widgets, styles = self.getEntries_Styles(errores) # Despintamos todos los widgets self.despintarWidgets([self.eNombre, self.eApellido, self.eDocumento], [self.eNombre.get_style_context(), self.eApellido.get_style_context(), self.eDocumento.get_style_context()]) # Pintamos widgets erroneos self.pintarWidgets(widgets, styles) def on_bCancelar_clicked(self, boton): self.menu.show_all() self.window1.destroy() def pintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.add_class('invalid') widget.grab_focus() def despintarWidgets(self, widgets, styles): for widget, style in izip(reversed(widgets), reversed(styles)): style.remove_class('invalid') widget.grab_focus() def on_cDocumento_changed(self, combo): treeIter = combo.get_active_iter() if treeIter != None: model = combo.get_model() id_object = model[treeIter][0] self.tipo = id_object def seleccionarPasajero(self,arregloPasajeros): self.window1.hide() builder = Gtk.Builder() builder.add_from_file("Lista_pasajeros.xml") window2 = builder.get_object("window2") lPasajeros = builder.get_object("lPasajeros") b2Siguiente = builder.get_object("b2Siguiente") treeView = builder.get_object("treeviewLista") window2.set_border_width(BORDE_ANCHO) window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO) for e in arregloPasajeros: lPasajeros.append([e.getNombre(), e.getApellido(), e.getDocumento().getTipo().getTipo(), e.getDocumento().getCodigo()]) select = treeView.get_selection() select.unselect_all() select.connect("changed", self.on_tree_selection_changed) b2Siguiente.connect("clicked", self.on_b2Siguiente_clicked,window2,treeView) window2.show_all() def on_b2Siguiente_clicked(self,boton,window,treeView): if self.pasajero is None: # El usuario no elige ningun pasajero darAlta = InterfazDarAltaPasajero(self.menu) window.destroy() def on_tree_selection_changed(self,selection): model,treeiter = selection.get_selected() if treeiter != None: self.pasajero = model[treeiter][0] def getEntries_Styles(self, omisiones): widgets = list() styles = list() # Agrupamos los widgets y los styles contexts for omision in omisiones: if omision is 'nombre': widgets.append(self.eNombre) styles.append(self.eNombre.get_style_context()) elif omision is 'apellido': widgets.append(self.eApellido) styles.append(self.eApellido.get_style_context()) elif omision is 'codigo': widgets.append(self.eDocumento) styles.append(self.eDocumento.get_style_context()) # retornamos widgets y style contexts return widgets, styles