Example #1
0
    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()
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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"
            }
        }
Example #5
0
    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'
            }
        }
Example #6
0
    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'
            }
        }
Example #7
0
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_())
Example #8
0
    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 = []