def __init__(self,manager, dict_referencias = None): QtGui.QDialog.__init__(self) self.loadUI('/plasta/gui/buscador.ui') self.ATRI_COMBO_BUSQUEDA = []#el orden y la cantidad de atributos en str que quieras self.ATRIBUTOSLISTA = []#el orden y la cantidad de atributos en str que quieras self.alignmentColumns = [] self.fnParseTableItem = None self.ATRIBUTOSLISTA_CLASSNAMES = [] self.manager = manager self.dict_referencias = dict_referencias self.objetoSeleccionado = None self.fnsParseListAttrs = [] self.fnAllItems = self.manager.getall self.fnFilterItems = None self.widgets = { 'btNew':True, 'btEdit':True, 'btDelete':True, 'leSearch':True, 'cbFilters':True, 'twItems':True, 'lbItemsCount':True, 'lbTitle':True } # Single title to show in gui self.singleTitle = self.manager.getClassName() # Plural title to show in gui self.pluralTitle = self.manager.getClassName() self.lang = config().LANG self.messages = { 'es':{ 'new':'Nuevo', 'edit':'Editar', 'delete':'Eliminar', 'deleteConfirm':u"¿Está seguro que desea eliminar?.\n\n", 'itemsCount':' item(s) listado(s)', 'search':'Buscar', 'filters':'Filtros' }, 'en':{ 'new':'New', 'edit':'Edit', 'delete':'Delete', 'deleteConfirm':u"¿Are you sure?.\n\n", 'itemsCount':' item(s) listed', 'search':'Search', 'filters':'Filters' } } self._operaciones_de_inicio()
def _start_operations( self ): '''Operations necessary to display the window''' self.processEvents = QtGui.QApplication.processEvents self.fullScreen = False self.lang = config().LANG self.translateWidgets() self.makeTable() self.processEvents() self.loadCombobox() self.loadTable() self.processEvents() self.loadShortcuts() centerOnScreen(self) setStyle(self) self.processEvents() if self.widgets['btEdit']: self.btEdit.setVisible(False) if self.widgets['btDelete']: self.btDelete.setVisible(False) # self.setWindowIcon( QtGui.QIcon( QtGui.QPixmap( join( abspath( dirname( __file__ ) ), self.ICONFILE ) ) ) ) if self.widgets['lbTitle']: self.lbTitle.setText(self.pluralTitle) self.setWindowTitle(self.pluralTitle)
def __init__(self, manager, itemToEdit = False, managers = [], parent = None): QtGui.QDialog.__init__(self) self.manager = manager self.managers = managers self.itemToEdit = itemToEdit self.parent = parent # list of columns/attributes of the table # sintax: [{'showText', Object.attribute}, ...] self.ITEMLIST = [] # name or path of ui to use self.FILENAME = 'add.ui' self.dict_referencias = {} # diccionario que contiene la instancia seleccionada en el buscador self.postSaveMethod = None # metodo que BaseGUI que se ejecuta luego de save() self._dictWidgetReferencias = {} # dictionary that contain the buttons widgets and the reference to wich belong self.develop = config.DEVELOP self.processEvents = QtGui.QApplication.processEvents # add here the validators to execute before save/edit # available validators: unique | presence # sintax: {'nameField':'nameValidator', ...} # ej: {'codigo':'precence'} self.validators = {} # self.validatorCustom = {'myattr':myFnCustom} # la funcion recibe como parametros ({str} attr, {dict} allObjectValues) # debe retornar una tupla {bool} result, {str} errorMessage self.validatorCustom = {} # functions parsers to apply before save # sintax: {Class.attr:fnParse, ...} self.parsers = {} # references attributes to other models self.references = {} self.singleTitle = self.manager.getClassName() self.lang = config().LANG self.messages = { 'es':{ 'newTitle':'Nuevo ', 'editTitle':'Editar ', 'newSuccefullSave':u" agregado correctamente", 'editSuccefullSave':u" editado correctamente", 'newErrorSave':u"No se pudo agregar el ", 'editErrorSave':u"No se pudo editar el ", 'savingTitle':u"Guardando", 'validateUnique':u'Ya existe un elemento con el mismo nombre', 'validatePresence':u'{field} no puede dejarse vacío' }, 'en':{ 'newTitle':'New ', 'editTitle':'Edit ', 'newSuccefullSave':u" added succefull", 'editSuccefullSave':u" edited succefull", 'newErrorSave':u"Can't be added ", 'editErrorSave':u"Can't be edited ", 'savingTitle':u"Saving", 'validateUnique':u'Already exists a element with the same name', 'validatePresence':u"{field} can't be empty value" } }
def __init__(self, manager, managers = None, parent = None): QtGui.QMainWindow.__init__(self, parent) # Name file of ui for gui self.parent = parent self.FILENAME = '/plasta/gui/uis/list.ui' self.processEvents = QtGui.QApplication.processEvents self.develop = config.DEVELOP # Name file of icon window self.ICONFILE = '' # self.manager = manager # self.managers = managers # ATRIBUTOSLISTA: lista de diccionarios donde puedes indicar el orden y formato # en que se deben mostrar los atributos en la lista. Siendo la clave del diccionario, # el texto en Unicode del texto que tendra la cabecera de la columna. Y el valor contenido # en el mismo elemento, el atributo de la clase que se mostrara en esa columna # Ejemplo: # self.ATRIBUTOSLISTA = [ {u'Nombres':Cliente.Nombres}, {u'Domicilio':Cliente.Domicilio}] self.ATRIBUTOSLISTA = [] # ATRI_COMBO_BUSQUEDA: lista de diccionarios donde puedes indicar el orden de como # quieres que se muestren y vean los atributos en el combo de los filtros # El formato es el mismo que <ATRIBUTOSLISTA> self.ATRI_COMBO_BUSQUEDA = []#el orden y la cantidad de atributos en str que quieras # Use this if you need parse attributes in list # Format {listOfList}: [[index, function], ...] # Params function: fn(row, currentValue) # Use: [[0, lambda (row, value): value.uppper()], ...] self.fnsParseListAttrs = [] # self.fnAllItems = self.manager.getall # self.fnFilterItems = None # funcion para parsear los items de la tabla self.fnParseTableItem = None # Alignment of each atttribute in the list # Possible values: C = CENTER, L = LEFT, R = RIGHT # Use: self.alignmentColumns = ['C', 'L', 'R', 'L'] self.alignmentColumns = [] # List of objects current are listeds self.items = [] self.widgets = { 'btNew':True, 'btEdit':True, 'btDelete':True, 'leSearch':False, 'cbFilters':True, 'twItems':True, 'lbItemsCount':True, 'lbTitle':True } # DialogAddClass: reference to the class to instantiate to # handle dialog window add / edit self.DialogAddClass = None # Single title to show in gui self.singleTitle = self.manager.getClassName() # Plural title to show in gui self.pluralTitle = self.manager.getClassName() self.lang = config().LANG self.messages = { 'es':{ 'new':'Nuevo', 'edit':'Editar', 'delete':'Eliminar', 'deleteConfirm':u"¿Está seguro que desea eliminar?.\n\n", 'itemsCount':' item(s) listado(s)', 'search':'Buscar', 'filters':'Filtros' }, 'en':{ 'new':'New', 'edit':'Edit', 'delete':'Delete', 'deleteConfirm':u"¿Are you sure?.\n\n", 'itemsCount':' item(s) listed', 'search':'Search', 'filters':'Filters' } }
def __init__(self, manager, managers = None, parent = None): QtGui.QMainWindow.__init__(self, parent) # Name file of ui for gui self.FILENAME = '/plasta/gui/uis/list.ui' self.processEvents = QtGui.QApplication.processEvents self.develop = config.DEVELOP # Name file of icon window self.ICONFILE = '' # self.manager = manager # self.managers = managers # ATRIBUTOSLISTA: lista de diccionarios donde puedes indicar el orden y formato # en que se deben mostrar los atributos en la lista. Siendo la clave del diccionario, # el texto en Unicode del texto que tendra la cabecera de la columna. Y el valor contenido # en el mismo elemento, el atributo de la clase que se mostrara en esa columna # Ejemplo: # self.ATRIBUTOSLISTA = [ {u'Nombres':Cliente.Nombres}, {u'Domicilio':Cliente.Domicilio}] self.ATRIBUTOSLISTA = [] # ATRI_COMBO_BUSQUEDA: lista de diccionarios donde puedes indicar el orden de como # quieres que se muestren y vean los atributos en el combo de los filtros # El formato es el mismo que <ATRIBUTOSLISTA> self.ATRI_COMBO_BUSQUEDA = []#el orden y la cantidad de atributos en str que quieras # Use this if you need parse attributes in list # Format {listOfList}: [[index, function], ...] # Params function: fn(row, currentValue) # Use: [[0, lambda (row, value): value.uppper()], ...] self.fnsParseListAttrs = [] # self.fnAllItems = self.manager.getall # self.fnFilterItems = None # funcion para parsear los items de la tabla self.fnParseTableItem = None # Alignment of each atttribute in the list # Possible values: C = CENTER, L = LEFT, R = RIGHT # Use: self.alignmentColumns = ['C', 'L', 'R', 'L'] self.alignmentColumns = [] # List of objects current are listeds self.items = [] self.widgets = { 'btNew':True, 'btEdit':True, 'btDelete':True, 'leSearch':True, 'cbFilters':True, 'twItems':True, 'lbItemsCount':True, 'lbTitle':True } # DialogAddClass: reference to the class to instantiate to # handle dialog window add / edit self.DialogAddClass = None # Single title to show in gui self.singleTitle = self.manager.getClassName() # Plural title to show in gui self.pluralTitle = self.manager.getClassName() self.lang = config().LANG self.messages = { 'es':{ 'new':'Nuevo', 'edit':'Editar', 'delete':'Eliminar', 'deleteConfirm':u"¿Está seguro que desea eliminar?.\n\n", 'itemsCount':' item(s) listado(s)', 'search':'Buscar', 'filters':'Filtros' }, 'en':{ 'new':'New', 'edit':'Edit', 'delete':'Delete', 'deleteConfirm':u"¿Are you sure?.\n\n", 'itemsCount':' item(s) listed', 'search':'Search', 'filters':'Filters' } }
import sys from PyQt4 import QtGui from contacto.manager import ContactosManager from contacto.gui import ContactosGUI from storm.locals import * from plasta.config import config config().LANG = 'es' # object Store de Storm DATABASE = create_database('sqlite:contactos.db') almacen = Store(DATABASE) # manager instance # reset: if TRUE, delete all rows of contacts in database cm = ContactosManager(almacen, reset = False) # displaying the window app = QtGui.QApplication(sys.argv) window = ContactosGUI( manager = cm, managers = [] ) window.show() sys.exit(app.exec_())
def __init__(self, manager, itemToEdit=False, managers=[], parent=None): QtGui.QDialog.__init__(self) self.manager = manager self.managers = managers self.itemToEdit = itemToEdit self.parent = parent # list of columns/attributes of the table # sintax: [{'showText', Object.attribute}, ...] self.ITEMLIST = [] # name or path of ui to use self.FILENAME = 'add.ui' self.dict_referencias = { } # diccionario que contiene la instancia seleccionada en el buscador self.postSaveMethod = None # metodo que BaseGUI que se ejecuta luego de save() self._dictWidgetReferencias = { } # dictionary that contain the buttons widgets and the reference to wich belong self.develop = config.DEVELOP self.processEvents = QtGui.QApplication.processEvents # add here the validators to execute before save/edit # available validators: unique | presence # sintax: {'nameField':'nameValidator', ...} # ej: {'codigo':'precence'} self.validators = {} # self.validatorCustom = {'myattr':myFnCustom} # la funcion recibe como parametros ({str} attr, {dict} allObjectValues) # debe retornar una tupla {bool} result, {str} errorMessage self.validatorCustom = {} # functions parsers to apply before save # sintax: {Class.attr:fnParse, ...} self.parsers = {} # references attributes to other models self.references = {} self.singleTitle = self.manager.getClassName() self.lang = config().LANG self.messages = { 'es': { 'newTitle': 'Nuevo ', 'editTitle': 'Editar ', 'newSuccefullSave': u" agregado correctamente", 'editSuccefullSave': u" editado correctamente", 'newErrorSave': u"No se pudo agregar el ", 'editErrorSave': u"No se pudo editar el ", 'savingTitle': u"Guardando", 'validateUnique': u'Ya existe un elemento con el mismo nombre', 'validatePresence': u'{field} no puede dejarse vacío' }, 'en': { 'newTitle': 'New ', 'editTitle': 'Edit ', 'newSuccefullSave': u" added succefull", 'editSuccefullSave': u" edited succefull", 'newErrorSave': u"Can't be added ", 'editErrorSave': u"Can't be edited ", 'savingTitle': u"Saving", 'validateUnique': u'Already exists a element with the same name', 'validatePresence': u"{field} can't be empty value" } } self.searcher_alignmentColumns = [] self.searcher_ATRI_COMBO_BUSQUEDA = [] self.searcher_ATRIBUTOSLISTA = []