def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, 'consulta_entradas_almacen.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_producto/clicked': self.buscar_producto, 'b_fecha_fin/clicked': self.set_fin} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_proveedor'], [(c.id, c.nombre) for c in pclases.Proveedor.select(orderBy='nombre')]) cols = (('Proveedor', 'gobject.TYPE_STRING', False, True, False, None), ('Albarán', 'gobject.TYPE_STRING', False, True, True, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Producto', 'gobject.TYPE_STRING', False, True, True, None), ('Cantidad', 'gobject.TYPE_FLOAT', False, True, False, None), ('Precio', 'gobject.TYPE_FLOAT', False, True, False, None), ('Subtotal', 'gobject.TYPE_FLOAT', False, True, False, None), ('idldc','gobject.TYPE_STRING',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) for ncol in (4, 5, 6): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) temp = time.localtime() self.fin = mx.DateTime.DateTimeFrom(day = temp[2], month = temp[1], year = temp[0]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.producto = None gtk.main()
def __init__(self, objeto = None, usuario = None): self.usuario = usuario Ventana.__init__(self, 'listado_productos.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_limpiar/clicked': self.limpiar_tv, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_exportar/clicked': self.exportar} self.wids['b_limpiar'].set_property("visible", False) self.add_connections(connections) cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False,True,False,None), ('Gramos', 'gobject.TYPE_STRING', False,True,False,None), ('Producción estándar', 'gobject.TYPE_STRING', False,True,False,None), ('ID', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) for ncol in (2, 3): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect("row-activated", self.abrir_producto) #self.wids['e_buscar'].grab_focus() self.wids['e_buscar'].set_property("visible", False) self.wids['label1'].set_property("visible", False) self.wids['ventana'].set_title("Velocidades de la línea de geotextiles según producto") gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) # Inicialización del resto de widgets: utils.rellenar_lista(self.wids['cb_material'],[(t.id, t.descripcion) for t in pclases.TipoMaterialBala.select()]) cols = (('Tarifa', 'gobject.TYPE_STRING', False, True, True, None), ('Precio', 'gobject.TYPE_FLOAT', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_tarifas'], cols) try: dde_nombre = pclases.DatosDeLaEmpresa.select()[0].nombre except IndexError: dde_nombre = "" clientes = ((0, dde_nombre), ) for cliente in pclases.Cliente.select( pclases.Cliente.q.inhabilitado == False, orderBy = "nombre"): clientes += ((cliente.id, "%s (%s)" % (cliente.nombre, cliente.cif)), ) utils.rellenar_lista(self.wids['cbe_cliente'], clientes) # HACK: Como glade-gtk2 ya no me abre el glade ni desde la 3.8.4: self.add_campo_obsoleto()
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario Ventana.__init__(self, 'lineas_sin_pedido.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_agregar/clicked': self.crear_nuevo_pedido, 'b_borrar/clicked': self.eliminar_linea_sin_pedido, 'b_modificar/clicked': self.agregar_a_pedido} self.add_connections(connections) cols = [('Nombre','gobject.TYPE_STRING',False,True,False,None), ('Descripción','gobject.TYPE_STRING',False,True,False,None), ('Cantidad','gobject.TYPE_DOUBLE',False,True,False,None), ('Fecha Hora','gobject.TYPE_STRING',False,True,False,None), ('Albarán', 'gobject.TYPE_STRING', False, True, False, None), ('Factura', 'gobject.TYPE_STRING', False, True, False, None), ('Idlinea_sin_pedido','gobject.TYPE_INT64',False,False,False,None)] if pclases.Ticket.select().count(): cols.insert(-2, ('Ticket', 'gobject.TYPE_STRING', False, True, False, None)) utils.preparar_listview(self.wids['tv_tipos'], cols) self.rellenar_tabla() gtk.main()
def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, os.path.join("ui", 'consulta_precios.glade'), objeto) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) cols = [('Fecha', 'gobject.TYPE_STRING', False, True, True, None)] for p in pclases.ProductoVenta.select(orderBy = "nombre"): cols.append((p.nombre, "gobject.TYPE_STRING", False, False, False, None)) cols += [('id', 'gobject.TYPE_STRING', False, False, False, None)] utils.preparar_listview(self.wids['tv_datos'], cols) for i in range(1, len(cols)-1): col = self.wids['tv_datos'].get_column(i) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) temp = mx.DateTime.localtime() self.fin = utils.abs_mxfecha(temp) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.wids['tv_datos'].set_size_request(700, 200) gtk.main()
def crear_listviewes(self): tv = self.wids['tv_pruebas'] #cols = (('Fecha análisis', 'gobject.TYPE_STRING', True, True, True, self.cambiar_fecha), # ('MFI proveedor', 'gobject.TYPE_STRING', True, True, False, self.cambiar_mfi), # ('Lote', 'gobject.TYPE_STRING', True, True, False, self.cambiar_lote), # ('Silo', 'gobject.TYPE_STRING', True, True, False, self.cambiar_silo), # ('MFI laboratorio 1', 'gobject.TYPE_STRING', True, True, False, self.cambiar_resultado), # ('MFI laboratorio 2', 'gobject.TYPE_STRING', True, True, False, self.cambiar_resultado), # ('Media MFI laboratorio', 'gobject.TYPE_STRING', True, True, False, self.cambiar_resultado), # ('ID1:ID2', 'gobject.TYPE_STRING', False, False, False, None)) cols = (('Fecha análisis', 'gobject.TYPE_STRING', False, True, True, None), ('MFI proveedor', 'gobject.TYPE_STRING', False, True, False, None), ('Lote', 'gobject.TYPE_STRING', False, True, False, None), ('Silo', 'gobject.TYPE_STRING', False, True, False, None), ('MFI laboratorio 1', 'gobject.TYPE_STRING', False, True, False, None), ('MFI laboratorio 2', 'gobject.TYPE_STRING', False, True, False, None), ('Media MFI lab.', 'gobject.TYPE_STRING', False, True, False, None), ('ID1:ID2', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(tv, cols) tv.get_column(1).get_cell_renderers()[0].set_property('xalign', 1) tv.get_column(2).get_cell_renderers()[0].set_property('xalign', 0.5) tv.get_column(3).get_cell_renderers()[0].set_property('xalign', 0.5) tv.get_column(4).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(5).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(6).get_cell_renderers()[0].set_property('xalign', 0.9) self.colorear(tv) tv = self.wids['tv_media'] cols = (('Lote', 'gobject.TYPE_STRING', False, True, True, None), ('Fluidez media', 'gobject.TYPE_FLOAT', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(tv, cols) tv.get_column(1).get_cell_renderers()[0].set_property('xalign', 0.1)
def preparar_tab_modulos(self): cols = (('Módulo/Ventanas', 'gobject.TYPE_STRING', True, True, True, self.cambiar_nombre_modulo), ('Descripción', 'gobject.TYPE_STRING', True, True, False, self.cambiar_descripcion_modulo), ('Icono', 'gobject.TYPE_STRING', True, True, False, self.cambiar_icono_modulo), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_treeview(self.wids['tv_modulos'], cols) model = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_INT64) self.wids['tv_modulos'].set_model(model) cell = gtk.CellRendererPixbuf() column = gtk.TreeViewColumn('', cell, pixbuf = 3) self.wids['tv_modulos'].insert_column(column, 3) cols = (('Descripción', 'gobject.TYPE_STRING', True, True, True, self.cambiar_descripcion_ventana), ('Fichero', 'gobject.TYPE_STRING', True, True, False, self.cambiar_fichero_ventana), ('Clase', 'gobject.TYPE_STRING', True, True, False, self.cambiar_clase_ventana), ('Icono', 'gobject.TYPE_STRING', True, True, False, self.cambiar_icono_ventana), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_ventanas'], cols) model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gtk.gdk.Pixbuf, gobject.TYPE_INT64) self.wids['tv_ventanas'].set_model(model) cell = gtk.CellRendererPixbuf() column = gtk.TreeViewColumn('', cell, pixbuf = 4) self.wids['tv_ventanas'].insert_column(column, 4)
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) # Inicialización del resto de widgets: empls = [(c.id, c.nombre) for c in pclases.Empleado.select(orderBy = "nombre")] utils.rellenar_lista(self.wids['cb_empleado'], empls) self.wids['b_guardar'] = gtk.Button("N/A") self.wids['b_guardar'].set_property("visible", False) self.wids['b_guardar'].set_sensitive(False) cols = (("Día", "gobject.TYPE_STRING", False, True, True, None), ("Rendimiento", "gobject.TYPE_STRING", False,True,False,None), ("Producción personal", "gobject.TYPE_STRING", False, True, False, None), ("Ratio diario", "gobject.TYPE_STRING", False, True, False, None), ("Media global", "gobject.TYPE_STRING", False, True, False, None), ("nihil", "gobject.TYPE_INT64", False, False, False, None)) tv = self.wids['tv_datos'] utils.preparar_listview(tv, cols) tv.get_column(1).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(2).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(3).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(4).get_cell_renderers()[0].set_property('xalign', 0.9) self.colorear(tv)
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario global fin Ventana.__init__(self, 'listado_productos.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_limpiar/clicked': self.limpiar_tv, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_exportar/clicked': self.exportar} self.add_connections(connections) cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False,True,False,None), ('PVP', 'gobject.TYPE_STRING', False,True,False,None), ('ID', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) col = self.wids['tv_datos'].get_column(2) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect("row-activated", self.abrir_producto) self.wids['e_buscar'].grab_focus() gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ cols = (('Concepto', 'gobject.TYPE_STRING', False, False, False, None), ("Valor en euros", "gobject.TYPE_STRING", False, False, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['tv_datos'], cols) cols = [("Código", "gobject.TYPE_STRING", False, True, True, None), ("Descripción", "gobject.TYPE_STRING", False, True, False, None), ("Existencias", "gobject.TYPE_STRING", False, True, False, None), ("Precio valoración", "gobject.TYPE_STRING", False, True, False, None), ("Total", "gobject.TYPE_STRING", False, True, True, None), ("ID", "gobject.TYPE_INT", False, False, False, None)] utils.preparar_listview(self.wids['tv_detalle'], cols) tv = self.wids['tv_detalle'] for col in tv.get_columns()[2:5]: for cell in col.get_cell_renderers(): cell.set_property("xalign", 1.0) col.set_alignment(0.5)
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario Ventana.__init__(self, 'contadores.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_agregar/clicked': self.crear_nuevo_contador, 'b_borrar/clicked': self.eliminar_contador, 'b_modificar/clicked': self.modificar_contador, 'b_actualizar_contador/clicked': self.cambiar_contador} self.add_connections(connections) cols = (('Prefijo', 'gobject.TYPE_STRING', False, True, False, None), ('Valor actual', 'gobject.TYPE_STRING', True, True, False, self.cambiar_valor_contador), ('Sufijo', 'gobject.TYPE_STRING', False, True, False, None), ('Siguiente factura', 'gobject.TYPE_STRING', False, True, False, None), ('Última creada', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha última factura', 'gobject.TYPE_STRING', False, True, False, None), ('Facturas de la serie', 'gobject.TYPE_INT64', False, True, False, None), ('Clientes asignados', 'gobject.TYPE_INT64', False, True, False, None), ('Idcontador', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_tipos'], cols) self.rellenar_widgets() gtk.main()
def __init__(self, pclase, tv, objeto_clave_ajena = None, cols_a_ignorar = [], nombres_col = [], seleccion_multiple = False, orden = None): """ Si se recibe un "objeto_clave_ajena" filtrará los datos mostrados en el treeview a los relacionados con él. Sin embargo si se recibiera un filtro en rellenar_tabla, éste prevalecerá sobre el del constructor. Las columnas cuyos nombres estén en cols_a_ignorar no se mostrarán. Si se recibe algo en «orden», las columnas se montarán en ese orden. Debe ser una lista o una tupla de los nombres de las columnas en estilo CamelCase. Si alguna está en la lista de ignorar, se ingorará aunque esté incluida en el orden. Si alguna columna no está en la lista de orden, se añadirá al final. """ self.clase = pclase self.tv = tv self.funciones = {} self.cols_a_ignorar = cols_a_ignorar self.__columnas = self.clase.sqlmeta.columnList cols = self.crear_cols(nombres_col, orden) utils.preparar_listview(self.tv, cols, multi = seleccion_multiple) if objeto_clave_ajena: nombrefk = (objeto_clave_ajena.__class__.__name__[0].lower() + objeto_clave_ajena.__class__.__name__[1:] + "ID") ajeno_id = objeto_clave_ajena.id self.filtro = lambda o: getattr(o, nombrefk) == ajeno_id else: self.filtro = lambda o: True
def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, 'consulta_lotes_por_producto.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, "b_exportar/clicked": self.exportar} self.add_connections(connections) cols = (('Num. Lote','gobject.TYPE_INT64',False,True,False,None), ('Código','gobject.TYPE_STRING',False,True,False,None), ('Tenacidad','gobject.TYPE_STRING',False,True,False,None), ('Elongación','gobject.TYPE_STRING',False,True,False,None), ('Rizo','gobject.TYPE_STRING',False,True,False,None), ('Encogimiento','gobject.TYPE_STRING',False,True,False,None), ('Grasa','gobject.TYPE_STRING',False,True,False,None), ('Idlote','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_parte_tv) utils.rellenar_lista(self.wids['cmbe_producto'], [(p.id, p.nombre) for p in pclases.ProductoVenta.select(pclases.ProductoVenta.q.camposEspecificosBalaID != None, orderBy = 'nombre')]) temp = time.localtime() self.fin = mx.DateTime.localtime() self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) gtk.main()
def inicializar_tv_geotextil(self): cols = (('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Código', 'gobject.TYPE_STRING', False, True, True, None), ('Observaciones', 'gobject.TYPE_STRING', False, True, False, None), ('Partida', 'gobject.TYPE_STRING', False, True, False, None), ('Pendiente', 'gobject.TYPE_BOOLEAN', True, True, False, self.cambiar_pendiente_g), ('Longitudinal', 'gobject.TYPE_FLOAT', False, True, False, None), ('Transversal', 'gobject.TYPE_FLOAT', False, True, False, None), ('CBR', 'gobject.TYPE_FLOAT', False, True, False, None), ('Perforación', 'gobject.TYPE_FLOAT', False, True, False, None), ('Permeabilidad', 'gobject.TYPE_FLOAT', False, True, False, None), ('Punzonado piramidal', 'gobject.TYPE_FLOAT', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, True, False, None) ) utils.preparar_listview(self.wids['tv_geotextil'], cols) self.wids['tv_geotextil'].connect("row-activated", self.abrir_resultados_geo) self.colorear_geotextil(self.wids['tv_geotextil'])
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: cols = (('Cliente', 'gobject.TYPE_STRING', False, True, True, None), ('CIF', 'gobject.TYPE_STRING', False, True, False, None), ('Código Postal','gobject.TYPE_STRING',False,True,False,None), ('Ciudad', 'gobject.TYPE_STRING', False, True, False, None), ('Provincia', 'gobject.TYPE_STRING', False, True, False, None), ('País', 'gobject.TYPE_STRING', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['tv_clientes'], cols) cols = (('Producto', 'gobject.TYPE_STRING', True, True, True, self.editar_descripcion), ('Precio','gobject.TYPE_STRING', True, True, False, self.editar_precio), ('ID', 'gobject.TYPE_STRING', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_treeview(self.wids['tv_productos'], cols, multi = True)
def __init__(self, objeto = None, usuario = None): """ 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). """ Ventana.__init__(self, 'busca_lote.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_ayuda/clicked': self.ayuda} self.add_connections(connections) cols = (('Num. Lote','gobject.TYPE_INT64',False,True,False,None), ('Código','gobject.TYPE_STRING',False,True,False,None), ('Tenacidad','gobject.TYPE_STRING',False,True,False,None), ('Elongación','gobject.TYPE_STRING',False,True,False,None), ('Rizo','gobject.TYPE_STRING',False,True,False,None), ('Encogimiento','gobject.TYPE_STRING',False,True,False,None), ('Idlote','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_resultado'], cols) utils.rellenar_lista(self.wids['cmbe_producto'], [(p.id, p.nombre) for p in pclases.ProductoVenta.select(pclases.ProductoVenta.q.camposEspecificosBalaID != None, orderBy = 'nombre')]) self.rellenar_tabla() # Valores por defecto: self.wids['e_tenacidad'].set_text('A') self.wids['e_elongacion'].set_text('A') self.wids['e_rizo'].set_text('6-7') self.wids['e_encogimiento'].set_text('A') self.wids['chk_tenacidad'].set_active(True) self.wids['chk_elongacion'].set_active(True) self.wids['chk_rizo'].set_active(True) self.wids['chk_encogimiento'].set_active(True) self.wids['chk_producto'].set_active(True) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: cols = (('Código', 'gobject.TYPE_STRING', False, True, True, None), ('Concepto', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['tv_gastos'], cols) utils.rellenar_lista(self.wids['cbe_proveedorID'], [(p.id, p.nombre) for p in pclases.Proveedor.select(orderBy = "nombre")])
def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, 'consulta_albaranesFacturados.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, "b_exportar/clicked": self.exportar} self.add_connections(connections) cols = (('Fecha','gobject.TYPE_STRING', False, True, False, None), ('Nº Albarán','gobject.TYPE_STRING', False, True, True, None), ('Cliente','gobject.TYPE_STRING', False, True, False, None), ('Num. Factura','gobject.TYPE_STRING', False, True, False,None), ('Idalbaran','gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_albaran) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.wids['rb_salida'].set_active(True) gtk.main()
def crear_listview(self, tv): # Primero hay que crear el TreeView que mostrará # el contenido de cada solapa. cols = (('Resultado', 'gobject.TYPE_FLOAT', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(tv, cols) return tv
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: utils.rellenar_lista(self.wids['cbe_cuentaGastosID'], [(p.id, p.descripcion) for p in pclases.CuentaGastos.select(orderBy = "descripcion")]) utils.rellenar_lista(self.wids['cbe_parcelaID'], [(p.id, p.parcela) for p in pclases.Parcela.select(orderBy = "parcela")]) utils.rellenar_lista(self.wids['cbe_facturaCompraID'], [(p.id, p.numfactura) for p in pclases.FacturaCompra.select(orderBy = "numfactura")]) return # XXX: Aquí generalmente se inicializan los TreeViews y combos. cols = (('XXXNombreCol', 'gobject.TYPE_STRING', XXXEditable, XXXOrdenable, XXXBuscable, XXXCallbackEdicion), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['XXXtv_treeview'], cols) utils.rellenar_lista(self.wids['XXXcbe_comboboxentry'], [(p.id, p.XXXcampo) for p in pclases.XXXClase.select(orderBy = "XXXcampo")])
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario global fin Ventana.__init__(self, os.path.join("ui", 'facturar_albaranes.glade'), objeto) connections = {'b_salir/clicked': self.salir, 'b_doit/clicked': self.generar} self.add_connections(connections) cols = (('Número', 'gobject.TYPE_STRING', False, True, True, None), ('Cliente','gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('Estado', 'gobject.TYPE_STRING', False, True, False, None), ('Facturar', 'gobject.TYPE_BOOLEAN', True, True, False, self.cambiar_generar), ('id','gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", abrir_albaran, self.usuario, self) col = self.wids['tv_datos'].get_column(3) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1.0) col = self.wids['tv_datos'].get_column(4) for cell in col.get_cell_renderers(): cell.set_property("xalign", 0.5) self.rellenar_widgets() self.wids['ventana'].resize(800, 600) gtk.main()
def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, os.path.join("ui", 'consulta_facturacion.glade'), objeto) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) cols = (('Factura','gobject.TYPE_STRING', False, True, True, None), ('Fecha','gobject.TYPE_STRING', False, False, False, None), ('Cliente', 'gobject.TYPE_STRING', False, True, False, None), ('Importe','gobject.TYPE_STRING', False, True, False, None), ('Pendiente', 'gobject.TYPE_STRING', False, True, False, None), ('id','gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) col = self.wids['tv_datos'].get_column(3) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) col = self.wids['tv_datos'].get_column(4) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) gtk.main()
def __init__(self, objeto=None, usuario=None): """ 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.usuario = usuario Ventana.__init__(self, os.path.join("ui", 'cobro_facturas_venta.glade'), objeto) connections = {'b_salir/clicked': self.salir, 'b_add_cobro/clicked': self.add_cobro, 'b_remove_cobro/clicked': self.remove_cobro} self.add_connections(connections) cols = (('ID', 'gobject.TYPE_INT', False, True, True, None), ('Número', 'gobject.TYPE_STRING', False, True, True, None), ('Cliente', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('Estado', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha vto', 'gobject.TYPE_STRING', False, True, False, None), ('Pagado en', 'gobject.TYPE_STRING', False, True, False, None), ('id', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) #self.wids['tv_datos'].connect("row-activated", self.abrir_factura, # self.usuario, self) col = self.wids['tv_datos'].get_column(3) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1.0) col = self.wids['tv_datos'].get_column(4) for cell in col.get_cell_renderers(): cell.set_property("xalign", 0.5) self.rellenar_widgets() self.wids['ventana'].resize(800, 600) gtk.main()
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario global fin Ventana.__init__(self, os.path.join("ui", 'build_salarios.glade'), objeto) connections = {'b_salir/clicked': self.salir, 'b_fecha/clicked': self.set_fecha, 'b_doit/clicked': self.generar} self.add_connections(connections) cols = (('Emeplado', 'gobject.TYPE_STRING', False, True, True, None), ('Jornal','gobject.TYPE_STRING', False, True, False, None), ('Generar', 'gobject.TYPE_BOOLEAN', True, True, False, self.cambiar_generar), ('id','gobject.TYPE_STRING',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) col = self.wids['tv_datos'].get_column(2) for cell in col.get_cell_renderers(): cell.set_property("xalign", 0.5) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fecha'].set_text(utils.str_fecha(temp)) self.rellenar_widgets() self.wids['ventana'].resize(800, 600) gtk.main()
def __init__(self, objeto = None, usuario = None): """ 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.usuario = usuario global fin Ventana.__init__(self, 'consulta_pedidos_clientes.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False,True,False,None), ('Precio s/IVA', 'gobject.TYPE_STRING', False,True,False,None), ('ID', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) col = self.wids['tv_datos'].get_column(2) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect("row-activated", self.abrir_producto) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fecha_fin'].set_text(utils.str_fecha(temp)) if objeto != None: utils.combo_set_from_db(self.wids["cmbe_cliente"], objeto.id) self.wids["b_buscar"].clicked() self.wids['hbox4'].set_property("visible", False) self.wids['ventana'].set_title("Productos facturados al cliente") gtk.main()
def __init__(self, objeto = None, usuario = None): """ 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). """ global fin Ventana.__init__(self, 'consulta_albaranes_clientes.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Cliente','gobject.TYPE_STRING',False,True,False,None), ('Fecha','gobject.TYPE_STRING',False,True,False,None), ('Albarán','gobject.TYPE_STRING',False,True,False,None), ('Destinatario','gobject.TYPE_STRING',False,True,False,None), ('Facturado', 'gobject.TYPE_BOOLEAN', False, True, False, None), ('Facturas', 'gobject.TYPE_STRING', False, True, False, None), ('Idalbaran','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_albaran) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) gtk.main()
def __init__(self, objeto = None, usuario = None): self.usuario = usuario Ventana.__init__(self, 'partes_no_bloqueados.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_editar/clicked': self.abrir_parte, 'b_actualizar/clicked': self.actualizar} self.add_connections(connections) cols = (('Producto', 'gobject.TYPE_STRING', False, True, True, None), ('Fecha','gobject.TYPE_STRING', False, True, False, None), ('Inicio turno','gobject.TYPE_STRING', False, True, False, None), ('Fin turno','gobject.TYPE_STRING', False, True, False, None), ('Visto','gobject.TYPE_BOOLEAN', True, True, False, self.bloquear), ('Lote/Partida', 'gobject.TYPE_STRING', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_partes'], cols) self.wids['tv_partes'].connect("row-activated", self.abrir_parte_tv) self.wids['tv_partes'].connect("cursor-changed", self.mostrar_info_parte) self.colorear(self.wids['tv_partes']) try: ventanas_con_permiso = [p.ventana.fichero for p in self.usuario.permisos if p.permiso] # and p.escritura] # STILL UNIMPLEMENTED except AttributeError: print "De momento esta ventana sólo se puede abrir desde el menú." sys.exit(1) for w in ("rb_bolsas", "rb_balas", "rb_rollos", "rb_todos"): self.wids[w].set_sensitive(False) tiene_al_menos_un_permiso = False if ('partes_de_fabricacion_balas.py' in ventanas_con_permiso and 'partes_de_fabricacion_rollos.py' in ventanas_con_permiso and 'partes_de_fabricacion_bolsas.py' in ventanas_con_permiso): self.wids['rb_todos'].set_active(True) for w in ("rb_bolsas", "rb_balas", "rb_rollos", "rb_todos"): self.wids[w].set_sensitive(True) tiene_al_menos_un_permiso = True else: if 'partes_de_fabricacion_balas.py' in ventanas_con_permiso: self.wids['rb_balas'].set_sensitive(True) self.wids['rb_balas'].set_active(True) tiene_al_menos_un_permiso = True if 'partes_de_fabricacion_rollos.py' in ventanas_con_permiso: self.wids['rb_rollos'].set_sensitive(True) self.wids['rb_rollos'].set_active(True) tiene_al_menos_un_permiso = True if 'partes_de_fabricacion_bolsas.py' in ventanas_con_permiso: self.wids['rb_bolsas'].set_sensitive(True) self.wids['rb_bolsas'].set_active(True) tiene_al_menos_un_permiso = True if tiene_al_menos_un_permiso: self.rellenar_partes() gtk.main() else: utils.dialogo_info(titulo = "USUARIO SIN PERMISOS", texto = "No tiene permisos suficientes para bloquear partes.", padre = self.wids['ventana'])
def crear_listview(self, tv): cols = ( ("Fecha", "gobject.TYPE_STRING", True, True, True, self.cambiar_fecha), ("Resultado", "gobject.TYPE_FLOAT", True, True, False, self.cambiar_resultado), ("ID", "gobject.TYPE_INT64", False, False, False, None), ) utils.preparar_listview(tv, cols) tv.get_column(1).get_cell_renderers()[0].set_property("xalign", 0.1)
def __init__(self, objeto=None, usuario=None): """ 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.usuario = usuario Ventana.__init__(self, 'consulta_pedidos_clientes.glade', objeto, usuario=usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_fecha, 'b_fecha_fin/clicked': self.set_fecha, 'b_exportar/clicked': self.exportar, 'e_fecha_inicio/focus-out-event': act_fecha, 'e_fecha_fin/focus-out-event': act_fecha, } self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Cliente', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Pedido', 'gobject.TYPE_STRING', False, True, False, None), ('Producto', 'gobject.TYPE_STRING', False, True, False, None), ('Cantidad\npedida', 'gobject.TYPE_STRING', False, True, False, None), ('Cantidad\nservida', 'gobject.TYPE_STRING', False, True, False, None), ('Importe\npedido\n(c/IVA)', 'gobject.TYPE_STRING', False, True, False, None), ('Importe\nservido\n(c/IVA)', 'gobject.TYPE_STRING', False, True, False, None), ("Bloqueado", "gobject.TYPE_BOOLEAN", False, True, False, None), ("Cerrado", "gobject.TYPE_BOOLEAN", False, True, False, None), ('PUIDPEDIDO;PUIDPRODUCTO', 'gobject.TYPE_STRING', # HACK False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) for ncol in (4, 5, 6, 7): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) for col in self.wids['tv_datos'].get_columns(): col.connect("clicked", self.order_changed_refresh_grafica) self.wids['tv_datos'].connect("row-activated", self.abrir_pedido) self.resultado = [] self.fin = utils.str_fecha(datetime.date.today()) self.inicio = None self.wids['e_fecha_fin'].set_text(self.fin) self.wids['e_fecha_inicio'].set_text("") if objeto != None: utils.combo_set_from_db(self.wids["cmbe_cliente"], objeto.id) self.wids["b_buscar"].clicked() self.add_widgets_extra() self.servido_por_producto = defaultdict(lambda: 0) self.wids['cmbe_cliente'].grab_focus() gtk.main()
def crear_listview_calendario(self, tv): cols = (('Nombre', 'gobject.TYPE_STRING', False, True, False, None), ('Apellidos', 'gobject.TYPE_STRING', False, True, True, None), ('Grupo', 'gobject.TYPE_STRING', False, True, False, None), ('Cat. laboral', 'gobject.TYPE_STRING', False, True, False, None), ('Centro de trabajo', 'gobject.TYPE_STRING', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(tv, cols) tv.get_selection().set_mode(gtk.SELECTION_MULTIPLE) tv.connect('row-activated', self.abrir_calendario)