def __init__( self, parent = None ): ''' Constructor ''' super( FrmCategorias, self ).__init__( parent ) self.setupUi( self ) QSqlDatabase.database().open() self.model = CategoriesModel() self.catproxymodel = TreeFilterProxyModel() self.catproxymodel.setSourceModel( self.model ) self.catproxymodel.setFilterKeyColumn( 0 ) self.catproxymodel.setFilterCaseSensitivity( Qt.CaseInsensitive ) self.view.setModel( self.catproxymodel ) self.view.setColumnWidth( 0, 200 ) self.view.setColumnHidden( 1, True )
view.setWindowIcon( QIcon( os.path.join( os.path.dirname(__file__), "../../../data/icons/scalable/apps/softwarecenter.svg"))) view.setResizeMode(QtDeclarative.QDeclarativeView.SizeRootObjectToView) # if running locally, fixup softwarecenter.paths mangle_paths_if_running_in_local_checkout() # ideally this should be part of the qml by using a qmlRegisterType() # but that does not seem to be supported in pyqt yet(?) so we need # to cowboy it in here pkglistmodel = PkgListModel() reviewslistmodel = ReviewsListModel() categoriesmodel = CategoriesModel() rc = view.rootContext() rc.setContextProperty('pkglistmodel', pkglistmodel) rc.setContextProperty('reviewslistmodel', reviewslistmodel) rc.setContextProperty('categoriesmodel', categoriesmodel) # debug if len(sys.argv) > 1: # FIXME: we really should set the text entry here pkglistmodel.setSearchQuery(sys.argv[1]) # load the main QML file into the view qmlpath = os.path.join(os.path.dirname(__file__), "sc.qml") view.setSource(QUrl.fromLocalFile(qmlpath)) # show it
class FrmCategorias( QMainWindow, Ui_FrmCategorias ): ''' classdocs ''' def __init__( self, parent = None ): ''' Constructor ''' super( FrmCategorias, self ).__init__( parent ) self.setupUi( self ) QSqlDatabase.database().open() self.model = CategoriesModel() self.catproxymodel = TreeFilterProxyModel() self.catproxymodel.setSourceModel( self.model ) self.catproxymodel.setFilterKeyColumn( 0 ) self.catproxymodel.setFilterCaseSensitivity( Qt.CaseInsensitive ) self.view.setModel( self.catproxymodel ) self.view.setColumnWidth( 0, 200 ) self.view.setColumnHidden( 1, True ) @pyqtSlot() def on_actionAddSub_triggered( self ): index = self.view.selectionModel().currentIndex() model = self.view.model() dlg = dlgCategoriesMod( self ) if dlg.exec_() == QDialog.Accepted: if not model.insertRow( 0, index ): return QMessageBox.critical( self, qApp.organizationName(), "No se pudo insertar la categoria" ) for column in range( model.columnCount( index ) ): child = model.index( 0, column, index ) model.setData( child, [dlg.txtName.text(), 0], Qt.EditRole ) @pyqtSlot() def on_actionAdd_triggered( self ): index = self.view.selectionModel().currentIndex() model = self.view.model() dlg = dlgCategoriesMod( self ) if dlg.exec_() == QDialog.Accepted: if not model.insertRow( index.row() + 1, index.parent() ): return QMessageBox.critical( self, qApp.organizationName(), "No se pudo insertar la categoria" ) for column in range( model.columnCount( index.parent() ) ): child = model.index( index.row() + 1, column, index.parent() ) model.setData( child, [ dlg.txtName.text(), 0], Qt.EditRole ) @pyqtSlot() def on_actionEditar_triggered( self ): index = self.view.selectionModel().currentIndex() model = self.view.model() dlg = dlgCategoriesMod( self ) dlg.txtName.setText( index.data().toString() ) if dlg.exec_() == QDialog.Accepted: if not model.setData( index, [dlg.txtName.text(), index.data()] ): raise Exception( "No se pudo editar la categoria" ) @pyqtSlot() def on_actionDelete_triggered( self ): index = self.view.selectionModel().currentIndex() if not self.model.removeRow( index.row(), index.parent() ): QMessageBox.critical( self, qApp.organizationName(), "No se pudo borrar la categoria"\ + "tenga en cuenta que no podra borrar"\ + " categorias que el sistema ya"\ + "este utilizando" ) @pyqtSlot( "QString" ) def on_txtSearch_textEdited( self , text ): self.catproxymodel.setFilterRegExp( text )