示例#1
0
    def _loadFile(self, filename=None):
        '''
        Loads a SBML file. It invokes the creation of a data model and 
        a networkx graph based on the SBML data.
        
        @param filename: Name of the SBML file
        @type filename: str
        '''
        if filename is None:
            return

        self.filename = filename

        self.sbmlModel = SBMLMainModel(filename)
        self.treeModel = self.sbmlModel.MainTreeModel
        #        self.connect(self.sbmlModel, SIGNAL("DirtyChanged(bool)"), self.on_dirtyChanged)
        self.sbmlModel.dirtyChanged.connect(self.on_dirtyChanged)

        #        self.proxyModel = self.treeModel   # DEBUGGING: "disabling" the proxy approach
        self.proxyModel = QSortFilterProxyModel()
        self.proxyModel.setSortRole(Qt.UserRole)
        try:
            self.proxyModel.setSourceModel(self.treeModel)
        except Exception, e:
            # try again
            logging.debug(
                "ModelController._loadFile(): Could not set source model for proxy model. Trying again. Original Error: %s"
                % e)
            self._loadFile(filename)
示例#2
0
    def setupTabs(self):
        """ Setup the various tabs in the AddressWidget. """
        groups = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VW", "XYZ"]

        for group in groups:
            proxyModel = QSortFilterProxyModel(self)
            proxyModel.setSourceModel(self.tableModel)
            proxyModel.setDynamicSortFilter(True)

            tableView = QTableView()
            tableView.setModel(proxyModel)
            tableView.setSortingEnabled(True)
            tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
            tableView.horizontalHeader().setStretchLastSection(True)
            tableView.verticalHeader().hide()
            tableView.setEditTriggers(QAbstractItemView.NoEditTriggers)
            tableView.setSelectionMode(QAbstractItemView.SingleSelection)

            # This here be the magic: we use the group name (e.g. "ABC") to
            # build the regex for the QSortFilterProxyModel for the group's
            # tab. The regex will end up looking like "^[ABC].*", only
            # allowing this tab to display items where the name starts with
            # "A", "B", or "C". Notice that we set it to be case-insensitive.
            reFilter = "^[%s].*" % group

            proxyModel.setFilterRegExp(QRegExp(reFilter, Qt.CaseInsensitive))
            proxyModel.setFilterKeyColumn(0)  # Filter on the "name" column
            proxyModel.sort(0, Qt.AscendingOrder)

            #tableView.selectionModel().selectionChanged.connect(self.selectionChanged)

            self.addTab(tableView, group)
示例#3
0
    def __init__(self, parent=None):
        super(ComboBoxWithTypingSearch, self).__init__(parent)
        self.setFocusPolicy(Qt.StrongFocus)
        self.setEditable(True)
        self.completer = QCompleter(self)

        # always show all completions
        self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
        self.pFilterModel = QSortFilterProxyModel(self)
        self.pFilterModel.setFilterCaseSensitivity(Qt.CaseInsensitive)
        self.completer.setPopup(self.view())
        self.setCompleter(self.completer)

        self.lineEdit().textEdited.connect(
            self.pFilterModel.setFilterFixedString)
        self.completer.activated.connect(self.setTextIfCompleterIsClicked)
示例#4
0
    def init(self, parent):
        super(_FilterTabularEditor, self).init(parent)

        self.control.text.textChanged.connect(self.on_text_change)
        self.control.button.clicked.connect(self.on_action)
        self.proxyModel = proxyModel = QSortFilterProxyModel()
        proxyModel.setSourceModel(self.model)

        self.control.setModel(proxyModel)

        if self.factory.multi_select:
            slot = self._on_rows_selection
        else:
            slot = self._on_row_selection
        signal = 'selectionChanged(QItemSelection,QItemSelection)'
        QtCore.QObject.connect(self.control.selectionModel(),
                               QtCore.SIGNAL(signal), slot)
示例#5
0
 def __init__(self, parent=None):
     QMainWindow.__init__(self, parent)
     self.setupUi()
     # setup a sample model
     self.model = QStandardItemModel(self)
     self.model.setHorizontalHeaderLabels(self.COLUMNS)
     for row, item in enumerate(self.ITEMS):
         for column, cell in enumerate(item):
             self.model.setItem(row, column, QStandardItem(cell))
     self.proxy = QSortFilterProxyModel(self)
     self.proxy.setSourceModel(self.model)
     # filter all columns (use 0, 1, etc. to only filter by a specific column)
     self.proxy.setFilterKeyColumn(-1)
     # filter text case insensitively
     self.proxy.setFilterCaseSensitivity(Qt.CaseInsensitive)
     self.view.setModel(self.proxy)
     for column, _ in enumerate(self.COLUMNS):
         self.view.resizeColumnToContents(column)
     self.searchBox.textChanged.connect(self.updateFilter)
示例#6
0
    def setup_ui(self):
        main_layout = QHBoxLayout(self)

        edt = QLineEdit(self)
        edt.setPlaceholderText("Wildcard filter")
        btn = QToolButton(self)
        btn.clicked.connect(self.set_icon)

        layout = QHBoxLayout(self)
        layout.addWidget(edt)
        layout.addWidget(btn)

        layout2 = QVBoxLayout()
        layout2.addLayout(layout)

        model = TListModel(self)
        proxy = QSortFilterProxyModel(self)
        proxy.setFilterCaseSensitivity(Qt.CaseInsensitive)
        proxy.setSourceModel(model)
        edt.textChanged.connect(proxy.setFilterWildcard)

        list = QListView()
        list.setModel(proxy)
        selection_model = list.selectionModel()
        selection_model.currentChanged.connect(self.currentChanged)
        layout2.addWidget(list)

        main_layout.addLayout(layout2)

        image = QLabel("Select icon", self)
        image.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
        image.setMinimumWidth(256)
        main_layout.addWidget(image)

        self.btn = btn
        self.edt = edt
        self.image = image
        self.list = list
        self.proxy = proxy
        self.model = model
        self.selection_model = selection_model
    def __init__(self, mw, parent=None):
        """
        Default class constructor.

        :param `mw`: The application's MainWindow instance.
        :type `mw`: `QMainWindow`_
        :param `parent`: Pointer to a parent widget instance.
        :type `parent`: `QWidget`_
        """
        super(LayerManager, self).__init__(parent)

        tr = self.tr

        self.layerModel = layerModel = QStandardItemModel(0, 8, self)

        self.layerModelSorted = layerModelSorted = QSortFilterProxyModel()
        layerModelSorted.setDynamicSortFilter(True)
        layerModelSorted.setSourceModel(layerModel)

        self.treeView = treeView = QTreeView()
        treeView.setRootIsDecorated(False)
        treeView.setAlternatingRowColors(True)
        treeView.setModel(layerModelSorted)
        treeView.setSortingEnabled(True)
        treeView.sortByColumn(0, Qt.AscendingOrder)

        mainLayout = QVBoxLayout()
        mainLayout.addWidget(treeView)
        self.setLayout(mainLayout)

        self.setWindowTitle(tr("Layer Manager"))
        self.setMinimumSize(750, 550)

        ## layerModel.setHeaderData(0, Qt.Horizontal, self.tr("Name"))
        ## layerModel.setHeaderData(1, Qt.Horizontal, self.tr("Visible"))
        ## layerModel.setHeaderData(2, Qt.Horizontal, self.tr("Frozen"))
        ## layerModel.setHeaderData(3, Qt.Horizontal, self.tr("Z Value"))
        ## layerModel.setHeaderData(4, Qt.Horizontal, self.tr("Color"))
        ## layerModel.setHeaderData(5, Qt.Horizontal, self.tr("Linetype"))
        ## layerModel.setHeaderData(6, Qt.Horizontal, self.tr("Lineweight"))
        ## layerModel.setHeaderData(7, Qt.Horizontal, self.tr("Print"))
        localMeth = layerModel.setHeaderData
        localQtHorizontal = Qt.Horizontal
        [
            localMeth(i, localQtHorizontal, tr(strng))
            for i, strng in ((0, "Name"), (1, "Visible"), (2, "Frozen"),
                             (3, "Z Value"), (4, "Color"), (5, "Linetype"),
                             (6, "Lineweight"), (7, "Print"))
        ]

        ## addLayer = self.addLayer  # local optimization
        ## addLayer("0", True, False, 0.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("1", True, False, 1.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("2", True, False, 2.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("3", True, False, 3.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("4", True, False, 4.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("5", True, False, 5.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("6", True, False, 6.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("7", True, False, 7.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("8", True, False, 8.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        ## addLayer("9", True, False, 9.0, qRgb(0, 0, 0), "Continuous", "Default", True)
        addLayer = self.addLayer
        [
            addLayer("%s" % i, True, False, float(i), qRgb(0, 0, 0),
                     "Continuous", "Default", True) for i in range(0, 10)
        ]

        ## for i in range(0, layerModel.columnCount()):
        ##     treeView.resizeColumnToContents(i)
        localtreeViewMeth = treeView.resizeColumnToContents
        [localtreeViewMeth(i) for i in range(0, layerModel.columnCount())]

        QApplication.setOverrideCursor(Qt.ArrowCursor)