def nuevo(self, boton): VentanaGenerica.nuevo(self, boton) try: utils.ui.combo_set_from_db(self.wids['usuarioID'], self.usuario.id) self.objeto.usuario = self.usuario except AttributeError: utils.ui.combo_set_from_db(self.wids['usuarioID'], -1) self.objeto.usuario = None self.objeto.sync()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] self.__clase = __clase = pclases.FacturaVenta self.usuario = usuario VentanaGenerica.__init__(self, objeto = objeto, usuario = self.usuario, clase = __clase, run = False, ventana_marco = 'facturas_venta.glade') connections = {} self.add_connections(connections) # Elementos que me interesa deshabilitar: for nombrecampo in ("tipoFacturaID", "serieNumericaID"): w = self.widgets_campos[nombrecampo] for c in w.parent.parent.parent.get_children(): #c.set_sensitive(False) c.set_property("visible", False) # TreeViews adicionales: self.crear_treeviews() # Otros pequeños cambios: self.wids['label_relaciones'].set_text("Contenido de la factura") self.wids['obraID'].connect_after("changed", self.actualizar_retencion) self.wids['vencimientosCobro'].parent.parent.parent.reparent( self.wids['vbox_vtos_y_pagos']) self.wids['cobros'].parent.parent.parent.reparent( self.wids['vbox_vtos_y_pagos']) b_imprimir = gtk.Button(stock = gtk.STOCK_PRINT) self.wids['b_imprimir'] = b_imprimir b_imprimir.show() b_imprimir.connect("clicked", self.imprimir) self.wids['botonera'].pack_start(b_imprimir) self.wids['botonera'].reorder_child(b_imprimir, 0) self.wids['b_imprimir'].set_sensitive(self.objeto != None) # Siguiendo la estrategia de modificar la ventana DESPUÉS de haber # montado todo lo genérico (en lugar de al revés, que sería lo suyo), # quito el totalizador de líneas de venta, que no tiene sentido: self.wids['totalizador_lineasDeVenta'].set_property("visible", False) boton_recalcular = gtk.Button(label = "Recalcular") boton_recalcular.connect("clicked", self.calcular_totales) boton_recalcular.show() self.wids['botonera_vencimientosCobro'].pack_start(boton_recalcular, expand = True, fill = False) # Columna de subtotales: # TODO: Hay que hacer en utils.ui un método para añadir columnas # a un TreeStore después de haberse creado. Mucho me temo que habrá # crear un nuevo modelo y reasignarlo al TreeView. No hay métodos # directos de gtk.* para añadir columnas "al vuelo". if run: gtk.main()
def rellenar_widgets(self): # Experimentos con gaseosa: #for wname in ("e_fecha", "b_buscar_fecha"): # self.wids[wname].set_property("visible", False) pixbuf_logo = gtk.gdk.pixbuf_new_from_file( os.path.join('imagenes', ConfigConexion().get_logo())) pixbuf_logo = escalar_a(100, 75, pixbuf_logo) self.wids['logo'].set_from_pixbuf(pixbuf_logo) VentanaGenerica.rellenar_widgets(self) self.rellenar_muestras_ensayos_informes() self.calcular_totales()
def rellenar_widgets(self): # Experimentos con gaseosa: for wname in ("b_undo_fechaSolicitud", "b_save_fechaSolicitud"): # El de save ni siquiera tiene padre, y el de undo sale donde # no debe. self.wids[wname].set_property("visible", False) pixbuf_logo = gtk.gdk.pixbuf_new_from_file( os.path.join('imagenes', ConfigConexion().get_logo())) pixbuf_logo = escalar_a(100, 75, pixbuf_logo) self.wids['logo'].set_from_pixbuf(pixbuf_logo) self.wids['e_id'].set_text(self.objeto and str(self.objeto.id) or "") VentanaGenerica.rellenar_widgets(self)
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.__clase = pclases.NombreClase # self.__clase = pclases.<++> self.usuario = usuario VentanaGenerica.__init__(self, objeto = objeto, usuario = self.usuario, clase = self.__clase, run = False, ventana_marco = '<++>.glade') connections = {} self.add_connections(connections) if run: gtk.main()
def __init__(self, objeto=None, usuario=None, run=True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] __clase = pclases.Usuario self.usuario = usuario VentanaGenerica.__init__( self, objeto=objeto, usuario=self.usuario, clase=__clase, run=False, ventana_marco="usuarios.glade" ) connections = { #'b_salir/clicked': self.salir, #'b_actualizar/clicked': self.actualizar_ventana, #'b_guardar/clicked': self.guardar, "b_nuevo/clicked": self.crear_nuevo_usuario, #'b_borrar/clicked': self.borrar_usuario, #'b_buscar/clicked': self.buscar_usuario, "b_enviar/clicked": self.enviar_mensaje, "b_passw/clicked": self.nueva_contrasenna, "b_drop/clicked": self.borrar_mensaje, "b_modulo_clean/clicked": self.limpiar_modulo, "b_ventana_clean/clicked": self.limpiar_ventana, "b_add_vm/clicked": self.add_ventana_a_modulo, "b_add_modulo/clicked": self.add_modulo, "b_drop_modulo/clicked": self.drop_modulo, "b_add_ventana/clicked": self.add_ventana, "b_drop_ventana/clicked": self.drop_ventana, } self.add_connections(connections) # Todo esto se delega ahora en el constructor de VentanaGenerica # self.inicializar_ventana() # if self.objeto == None: # self.ir_a_primero() # else: # self.ir_a(objeto) # self.wids['ventana'].maximize() self.wids["ventana"].resize(800, 600) self.rellenar_tab_modulos() # Esto siempre debe hacerse al menos # 1 vez aunque no haya usuarios. if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] self.__clase = pclases.Cliente self._objetoreciencreado = None if objeto and isinstance(objeto, self.__clase): VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, run = False, ventana_marco = "clientes.glade") elif objeto: VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = self.__clase, run = False, ventana_marco = "clientes.glade") else: VentanaGenerica.__init__(self, clase = self.__clase, usuario = usuario, run = False, ventana_marco = "clientes.glade") b_facturar = gtk.Button(label = "Facturar\npendiente") self.wids['b_facturar'] = b_facturar b_facturar.connect("clicked", self.facturar_pendiente) self.wids['botonera'].pack_start(b_facturar) b_facturar.show() if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] if pclases.DEBUG: print "objeto", objeto print "usuario", usuario print "run", run self._objetoreciencreado = None if objeto and isinstance(objeto, pclases.Resultado): VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, run = False) elif objeto: VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = pclases.Resultado, run = False) else: VentanaGenerica.__init__(self, clase = pclases.Resultado, usuario = usuario, run = False) self._add_widget_grafico() add_boton_adjuntos(self.wids['botonera'], lambda: self.objeto) # Elementos que me interesa deshabilitar: self.wids['botonera_adjuntos'].set_property("visible", False) # Otros pequeños cambios: self.wids['label_relaciones'].set_text("Informes") if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] self.__clase = pclases.Direccion self._objetoreciencreado = None self.mapa = Mapa() if objeto and isinstance(objeto, self.__clase): VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, run = False, ventana_marco = "direccion.glade") elif objeto: VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = self.__clase, run = False, ventana_marco = "direccion.glade") else: VentanaGenerica.__init__(self, clase = self.__clase, usuario = usuario, run = False, ventana_marco = "direccion.glade") self.put_mapa() # Si elijo un código postal, quiero que la ciudad se rellene sola: self.wids['codigoPostalID'].connect("changed", self.rellenar_ciudad) self.wids['codigoPostalID'].connect("focus-out-event", self.rellenar_ciudad) self.wids['b_nuevo_cp'].connect("clicked", self.nuevo_cp) if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] __clase = pclases.Peticion VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = __clase, run = False, ventana_marco = 'peticiones.glade') connections = {} self.add_connections(connections) # Quito totales de ensayos: self.usuario = self.get_usuario() self.wids['totalizador_ensayos'].set_property("visible", False) # Y añado el botón de traer oferta barra = self.wids['totalizador_ensayos'].parent self.wids['b_traer_oferta'] = gtk.Button("Rescatar oferta") b_traer_oferta = self.wids['b_traer_oferta'] barra.pack_start(b_traer_oferta) b_traer_oferta.connect("clicked", self.traer_oferta) b_traer_oferta.show() if not self.usuario or self.usuario.nivel == 0: self.wids['usuarioID'].set_property("sensitive", True) else: self.wids['usuarioID'].set_property("sensitive", False) self.wids['e_fechaSolicitud'].connect("focus-out-event", actualizar_fecha, None, self, "fechaSolicitud") self.wids['b_buscar_fechaSolicitud'].connect("clicked", lambda boton: self.wids['e_fechaSolicitud'].set_text( utils.fecha.str_fecha( utils.ui.mostrar_calendario( self.wids['e_fechaSolicitud'].get_text()) ))) if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] self.__clase = pclases.NombreClase # self.__clase = pclases.<++> self._objetoreciencreado = None if objeto and isinstance(objeto, self.__clase): VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, run = False) elif objeto: VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = self.__clase, run = False) else: VentanaGenerica.__init__(self, clase = self.__clase, usuario = usuario, run = False) if run: gtk.main()
def __init__(self, objeto=None, usuario=None, run=True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] if pclases.DEBUG: print "objeto", objeto print "usuario", usuario print "run", run self._objetoreciencreado = None if objeto and isinstance(objeto, pclases.Informe): VentanaGenerica.__init__(self, objeto=objeto, usuario=usuario, run=False) elif objeto: VentanaGenerica.__init__(self, objeto=objeto, usuario=usuario, clase=pclases.Informe, run=False) else: VentanaGenerica.__init__(self, clase=pclases.Informe, usuario=usuario, run=False) add_boton_adjuntos(self.wids["botonera"], lambda: self.objeto) # Elementos que me interesa deshabilitar: for nombrecampo in ("lineaDeVentaID",): w = self.widgets_campos[nombrecampo] for c in w.parent.parent.parent.get_children(): c.set_property("visible", False) self.wids["totalizador_resultados"].set_property("visible", False) self.wids["container_adjuntos"].set_property("visible", False) # Widgets no editables de campos calculados: try: self.add_campo_calculado( "get_str_muestras", etiqueta="Códigos de muestra", nombre="muestras", campo="codigo" ) except AttributeError: # No hay objeto todavía. Tabla vacía. Es None. print "WARNING: informes.py: El objeto es None. No se mostrarán" " campos calculados." pass if run: gtk.main()
def __init__(self, objeto = None, usuario = None, run = True): """ Constructor. objeto puede ser un objeto de pclases con el que comenzar la ventana (en lugar del primero de la tabla, que es el que se muestra por defecto). """ self.nombre_fichero_ventana = os.path.split(__file__)[-1] self._objetoreciencreado = None self.__clase = pclases.Empleado meta = self.__clase.sqlmeta campos = meta.columns.keys() + [j.joinMethodName for j in meta.joins] campos_menos_foto = campos campos.remove("fotos") campos.remove("adjuntos") # Adjuntos lleva su propio botón. if objeto and isinstance(objeto, self.__clase): VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, run = False, campos = campos_menos_foto, ventana_marco = "laborantes.glade") elif objeto: VentanaGenerica.__init__(self, objeto = objeto, usuario = usuario, clase = self.__clase, run = False, campos = campos_menos_foto, ventana_marco = "laborantes.glade") else: VentanaGenerica.__init__(self, clase = self.__clase, usuario = usuario, run = False, campos = campos_menos_foto, ventana_marco = "laborantes.glade") add_boton_adjuntos(self.wids['botonera'], lambda: self.objeto, posicion = 5) bfoto, ifoto = add_boton_fotos(self.wids['hbox_foto'], lambda *a, **kw: self.objeto, posicion = 0) self.wids['b_fotos'], self.wids['i_foto'] = bfoto, ifoto if run: gtk.main()
def rellenar_widgets(self): invtble = self.wids['inventariable'].get_active() self.wids['container_existencias'].set_property("visible", invtble) VentanaGenerica.rellenar_widgets(self)
def actualizar_ventana(self, *args, **kw): VentanaGenerica.actualizar_ventana(self, *args, **kw) self.actualizar_mapa()