Example #1
0
def setupChecklist(widget, names, checks = None):
    tp = type(widget)
    # Prepare checks
    if checks is None:
        checks = []
        for name in names:
            checks.append(Qt.Unchecked)
    else:
        newChecks = []
        for check in checks:
            if check: newChecks.append(Qt.Checked)
            else: newChecks.append(Qt.Unchecked)
        checks = newChecks

    ## QListView
    if tp is QListView:
        model = QStandardItemModel()
        for i in xrange(len(names)):
            item = QStandardItem(names[i])
            item.setCheckable(True)
            item.setCheckState(checks[i])
            model.appendRow(item)
        widget.setModel(model)

    ## QListWidget
    elif tp is QListWidget:
        for i in xrange(len(names)):
            item = QListWidgetItem(names[i])
            item.setFlags(Qt.ItemFlags(48)) # 48 = checkable(16), enabled(32)
            item.setCheckState(checks[i])
            widget.addItem(item)

    ## NOT SUPPORTED
    else: raise TypeError('Class ' + str(tp) + ' is not supported.')
 def exportResult(self):
     dlg = ExportDlg(self)
     dlg.ui.txtHeading.setText(self.surfaceType + "_Export")
     columnNames = []
     if self.obstaclesModel != None:
         columnNames = self.obstaclesModel.fixedColumnLabels
     self.stModel = QStandardItemModel()
     for i in range(len(columnNames)):
         stItem = QStandardItem(columnNames[i])
         stItem.setCheckable(True)
         checkFlag = True
         for hideColName in self.obstaclesModel.hideColumnLabels:
             if columnNames[i] == hideColName:
                 checkFlag = False
                 break
         if checkFlag: 
             stItem.setCheckState(Qt.Checked)
         else:
             stItem.setCheckState(Qt.Unchecked)
         self.stModel.setItem(i, 0, stItem)
     if len(columnNames) <= 0:
         return
     dlg.ui.listColumns.setModel(self.stModel)
     result = dlg.exec_()
     return (result, dlg.resultHideColumnIndexs)
Example #3
0
 def fillScalars(self):
     scalars = [ 'absorbance (%)', 
                 'reflectance (%)', 
                 'transmittance (%)',
                 'absorbance (mA/cm²)',
                 'reflectance (mA/cm²)', 
                 'transmittance (mA/cm²)',
                 'generation',
                 'Jmax (mA/cm²)',
                 'absorption layerwise (%)',
                 'absorption layerwise (mA/cm²)', 
                 'collection layerwise (%)',
                 'collection layerwise (mA/cm²)', 
                 'calc. time (s)'
                 ]
                 
     self.scalarListModel = QStandardItemModel()
     scalarsToShow = self.defaults['defaultScalars']
     for value in scalars:                   
         item = QStandardItem(value)
         check = Qt.Checked if value in scalarsToShow else Qt.Unchecked
         item.setCheckState(check)
         item.setCheckable(True)
         self.scalarListModel.appendRow(item)
 
     self.scalarListView.setModel(self.scalarListModel)
Example #4
0
    def on_ions_updated(self, new_ions):
        qmodel = QStandardItemModel()
        qmodel.setColumnCount(2)
        qmodel.setHorizontalHeaderItem(0, QStandardItem('Ion'))
        qmodel.setHorizontalHeaderItem(1, QStandardItem('Abundance (%)'))

        root = qmodel.invisibleRootItem()

        element_keyfunc = lambda x: x.isotope.element
        sorted_ions = sorted(new_ions, key=element_keyfunc)

        for element, ions in itertools.groupby(sorted_ions, key=element_keyfunc):
            element_item = QStandardItem(element)
            element_item.setCheckable(True)
            element_item.setCheckState(2)
            root.appendRow(element_item)

            for ion in ions:
                ion_name = QStandardItem(ion.name)
                ion_name.setData(ion,32)
                ion_name.emitDataChanged()
                ion_abundance = QStandardItem(str(ion.isotope.abundance))
                element_item.appendRow([ion_name, ion_abundance])

        self.ionlistTree.setModel(qmodel)
        self.ionlistTree.expandAll()
        self.addionsButton.setEnabled(True)
        self._qmodel=qmodel
Example #5
0
    def _add_entity(self, party):
        # Add entity item to view
        item = QStandardItem(QIcon(':/plugins/stdm/images/icons/table.png'),
                             party.short_name)
        item.setCheckable(True)
        item.setCheckState(Qt.Unchecked)

        self._model.appendRow(item)
Example #6
0
    def populateList(self):
        model = QStandardItemModel()
        for i, option in enumerate(self.options):
            item = QStandardItem(option)
            item.setCheckState(Qt.Checked if i in self.selectedoptions else Qt.Unchecked)
            item.setCheckable(True)
            model.appendRow(item)

        self.lstLayers.setModel(model)
Example #7
0
    def populateList(self):
        model = QStandardItemModel()
        for i, option in enumerate(self.options):
            item = QStandardItem(option)
            item.setCheckState(Qt.Checked if i in
                               self.selectedoptions else Qt.Unchecked)
            item.setCheckable(True)
            model.appendRow(item)

        self.lstLayers.setModel(model)
Example #8
0
 def get_coloured_root_item(filepath, color, colorr):
     root = QStandardItem(filepath)
     gradient = QLinearGradient(-100, -100, 100, 100)
     gradient.setColorAt(0.7, colorr)
     gradient.setColorAt(1, color)
     root.setBackground(QBrush(gradient))
     root.setEditable(False)
     root.setCheckState(Qt.Checked)
     root.setCheckable(True)
     return root
Example #9
0
 def _load_item(self, values, checked_values):
     """Load item list"""
     for v in values:
         item = QStandardItem(str(v))
         if v in checked_values:
             item.setCheckState(Qt.Checked)
         else:
             item.setCheckState(Qt.Unchecked)
         item.setCheckable(True)
         self.m_sim.appendRow(item)
Example #10
0
    def _add_entity(self, entity):
        # Add entity item to view
        item = QStandardItem(
            QIcon(':/plugins/stdm/images/icons/table.png'),
            entity.short_name
        )
        item.setCheckable(True)
        item.setCheckState(Qt.Unchecked)

        self._model.appendRow(item)
Example #11
0
 def update_realizations_view(self):
     completed = self._run_model.completed_realizations_mask
     for (index, successful) in enumerate(completed):
         items = self.realizations_view.model().findItems(str(index))
         if not items:
             item = QStandardItem(str(index))
             self.realizations_view.model().appendRow(item)
         else:
             item = items[0]
         item.setCheckState(successful or item.checkState())
Example #12
0
 def update_realizations_view(self):
     completed = self._run_model.completed_realizations_mask
     for (index, successful) in enumerate(completed):
         items = self.realizations_view.model().findItems(str(index))
         if not items:
             item = QStandardItem(str(index))
             self.realizations_view.model().appendRow(item)
         else:
             item = items[0]
         item.setCheckState(successful or item.checkState())
Example #13
0
 def getColouredRootItem(sample):
     """stable, may be subdivised in sub routines """
     root = QStandardItem(sample.shortName())
     #root.setIcon(QIcon(QPixmap(os.path.normpath('gui/icons/formula.png'))))
     color =QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2],1.)
     colorr=QColor.fromRgbF(sample.color[0],sample.color[1], sample.color[2],.5)
     gradient=QLinearGradient(-100, -100, 100, 100)
     gradient.setColorAt(0.7, colorr);gradient.setColorAt(1, color)
     root.setBackground(QBrush(gradient))
     root.setEditable(False)
     root.setCheckState(Qt.Checked)
     root.setCheckable(True)
     return root
Example #14
0
 def populateTableViews(self, polarity):
     frags, adds = self.getFragAddData(polarity)
     self.adductsModel, self.fragsModel = QStandardItemModel(), QStandardItemModel()
     self.adductsModel.setHorizontalHeaderLabels(["Adducts(name, mass, nmol)"])
     self.fragsModel.setHorizontalHeaderLabels(["Fragments(name, mass, nmol)"])
     
     for i, adduct in enumerate(adds.keys()):
         item =QStandardItem(', '.join(map(str, adduct)))
         item.setCheckable(True)
         if adds[adduct]:
             item.setCheckState(2)
         else:
             item.setCheckState(0)
         self.adductsModel.setItem(i, 0, item)
     self.view.adductsTable.setModel(self.adductsModel)
     
     for i, frag in enumerate(frags.keys()):
         item = QStandardItem(', '.join(map(str, frag)))
         item.setCheckable(True)
         if frags[frag]:
             item.setCheckState(2)
         else:
             item.setCheckState(0)
         self.fragsModel.setItem(i, 0, item)
     self.view.fragTable.setModel(self.fragsModel)
Example #15
0
    def populateTableViews(self, polarity):
        frags, adds = self.getFragAddData(polarity)
        self.adductsModel, self.fragsModel = QStandardItemModel(
        ), QStandardItemModel()
        self.adductsModel.setHorizontalHeaderLabels(
            ["Adducts(name, mass, nmol)"])
        self.fragsModel.setHorizontalHeaderLabels(
            ["Fragments(name, mass, nmol)"])

        for i, adduct in enumerate(adds.keys()):
            item = QStandardItem(', '.join(map(str, adduct)))
            item.setCheckable(True)
            if adds[adduct]:
                item.setCheckState(2)
            else:
                item.setCheckState(0)
            self.adductsModel.setItem(i, 0, item)
        self.view.adductsTable.setModel(self.adductsModel)

        for i, frag in enumerate(frags.keys()):
            item = QStandardItem(', '.join(map(str, frag)))
            item.setCheckable(True)
            if frags[frag]:
                item.setCheckState(2)
            else:
                item.setCheckState(0)
            self.fragsModel.setItem(i, 0, item)
        self.view.fragTable.setModel(self.fragsModel)
 def Add(self, caption, isCheckedFlag=False):
     captionStr = ""
     if isinstance(caption, str) or isinstance(caption, QString):
         captionStr = caption
     else:
         captionStr = caption.ToString()
         self.hasObject = True
         self.objList.append([self.stdModel.rowCount(), caption])
     item = QStandardItem(captionStr)
     item.setCheckable(True)
     if isCheckedFlag:
         item.setCheckState(Qt.Checked)
     else:
         item.setCheckState(Qt.Unchecked)
     self.stdModel.setItem(self.stdModel.rowCount(), item)
Example #17
0
 def addGroup(self, name = None, metadata = None):
     model = self.model()
     group_item = QStandardItem(name or 'New Group')
     group_item.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEditable)
     group_item.setEnabled(True)
     if metadata:
         group_item.setText('Metadata')
     group_item.setDropEnabled(True)
     group_item.setDragEnabled(True)
     group_item.setCheckable(True)
     group_item.setCheckState(Qt.Checked)
     group_item.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"group.png")))
     model.appendRow([group_item])
     if not name:
         self.setCurrentIndex(model.indexFromItem(group_item))
     return group_item
Example #18
0
 def getColouredRootItem(sample):
     """stable, may be subdivised in sub routines """
     root = QStandardItem(sample.shortName())
     #root.setIcon(QIcon(QPixmap(os.path.normpath('gui/icons/formula.png'))))
     color = QColor.fromRgbF(sample.color[0], sample.color[1],
                             sample.color[2], 1.)
     colorr = QColor.fromRgbF(sample.color[0], sample.color[1],
                              sample.color[2], .5)
     gradient = QLinearGradient(-100, -100, 100, 100)
     gradient.setColorAt(0.7, colorr)
     gradient.setColorAt(1, color)
     root.setBackground(QBrush(gradient))
     root.setEditable(False)
     root.setCheckState(Qt.Checked)
     root.setCheckable(True)
     return root
Example #19
0
 def addFieldDef(self,fieldDef, recover = None):
     self.defOrder = ['fieldName', 'fieldMap', 'fieldLabel', 'fieldType', 'fieldHint', 'fieldRequired', 'fieldDefault', 'fieldQtype', 'fieldWidget', 'fieldChoices','fieldAppearance','fieldReadOnly','fieldCalculation']
     row = []
     self.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"field.png")))
     if not 'fieldReadOnly' in fieldDef:
         fieldDef['fieldReadOnly'] = ''
     if not 'fieldCalculation' in fieldDef:
         fieldDef['fieldCalculation'] = ''
     if recover: #backup dict provided if recovering fields state
         for fdef in self.defOrder:
             if fdef == 'fieldName':
                 sub_item = QStandardItem(None)
             elif fdef == 'fieldRequired':
                 sub_item = QStandardItem(None)
                 sub_item.setCheckable(True)
                 if fieldDef['fieldRequired']:
                     sub_item.setCheckState(Qt.Checked)
                 else:
                     sub_item.setCheckState(Qt.Unchecked)
             else:
                 sub_item = QStandardItem(fieldDef[fdef])
             row.append(sub_item)
         self.appendRow(row)
         self.setCheckable(True)
         if fieldDef['fieldEnabled']:
             self.setCheckState(Qt.Checked)
         else:
             self.setCheckState(Qt.Unchecked)
     else:
         fieldDef['fieldType'] = self.getODKType(fieldDef)
         if fieldDef['fieldType'] in appearanceDef.keys():
             fieldDef['fieldAppearance'] = appearanceDef[fieldDef['fieldType']][0]
         else:
             fieldDef['fieldAppearance'] = 'default'
         for fdef in self.defOrder:
             if fdef == 'fieldName':
                 sub_item = QStandardItem(None)
             elif fdef == 'fieldRequired':
                 sub_item = QStandardItem(None)
                 sub_item.setCheckable(True)
                 if fieldDef['fieldRequired']:
                     sub_item.setCheckState(Qt.Checked)
                 else:
                     sub_item.setCheckState(Qt.Unchecked)
             elif fdef == 'fieldChoices':
                 sub_item = QStandardItem(json.dumps(fieldDef[fdef]))
             else:
                 sub_item = QStandardItem(fieldDef[fdef] or '')
             sub_item.setDropEnabled(False)
             sub_item.setDragEnabled(False)
             row.append(sub_item)
         self.appendRow(row)
         self.setCheckable(True)
         if fieldDef['fieldEnabled']:
             self.setCheckState(Qt.Checked)
         else:
             self.setCheckState(Qt.Unchecked)
Example #20
0
 def __init__(self, parent = None):
     QStandardItemModel.__init__(self, parent)
     self._settings = QSettings()
     for pluginobject in PluginLoader("ALL").plugins:
         # Changed the plugin viewable name to the UserString value
         # as it looks better for the user.
         #item = QStandardItem(pluginobject.pluginName)
         item = QStandardItem(pluginobject.pluginUserString)
         check = Qt.Unchecked
         valueString = "plugins/" + pluginobject.pluginName + "/load"
         if self._settings.value(valueString).toString() == "True":
             check = Qt.Checked
         item.setCheckState(check)
         item.setCheckable(True)
         item.setEditable(False)
         item.plugin = pluginobject
         self.appendRow(item)
 def __init__(self, parent=None):
     QStandardItemModel.__init__(self, parent)
     self._settings = QSettings()
     for pluginobject in PluginLoader("ALL").plugins:
         # Changed the plugin viewable name to the UserString value
         # as it looks better for the user.
         #item = QStandardItem(pluginobject.pluginName)
         item = QStandardItem(pluginobject.pluginUserString)
         check = Qt.Unchecked
         valueString = "plugins/" + pluginobject.pluginName + "/load"
         if self._settings.value(valueString).toString() == "True":
             check = Qt.Checked
         item.setCheckState(check)
         item.setCheckable(True)
         item.setEditable(False)
         item.plugin = pluginobject
         self.appendRow(item)
Example #22
0
    def fillCalculations(self):
        self.calculations = [
            'Stack optics (A,R,T)', 'Ellipsometry', 'Field intensity',
            'Layerwise optics (absorption, collection, QE)', 'Generation'
        ]

        self.calcListModel = QStandardItemModel()
        calculationsToShow = self.defaults['defaultCalculations']
        for value in self.calculations:
            item = QStandardItem(value)
            check = Qt.Checked if value in calculationsToShow else Qt.Unchecked
            item.setCheckState(check)
            item.setCheckable(True)
            #item.setEnabled(False)
            self.calcListModel.appendRow(item)

        self.calculationsListView.setModel(self.calcListModel)
Example #23
0
    def model_init(self):
        categories = {}
        if not categories:
            with open('categories.json') as f:
                categories = load(f)

        for element in categories:
            catItem = QStandardItem(element.keys()[0])
            catItem.setCheckable(True)
            catItem.setCheckState(element[element.keys()[0]])
            for type_name, check_state in element["Types"].items():
                typeItem = QStandardItem(type_name)
                typeItem.setCheckable(True)
                typeItem.setCheckState(check_state)
                catItem.appendRow(typeItem)
            self.model.appendRow(catItem)
        self.treeView.setModel(self.model)
        self.submit_file_types()
Example #24
0
 def fillCalculations(self):
     self.calculations = ['Stack optics (A,R,T)',
                     'Ellipsometry', 
                     'Field intensity',
                     'Layerwise optics (absorption, collection, QE)', 
                     'Generation'
                     ]
                 
     self.calcListModel = QStandardItemModel()
     calculationsToShow = self.defaults['defaultCalculations']
     for value in self.calculations:                   
         item = QStandardItem(value)
         check = Qt.Checked if value in calculationsToShow else Qt.Unchecked
         item.setCheckState(check)
         item.setCheckable(True)
         #item.setEnabled(False)
         self.calcListModel.appendRow(item)
 
     self.calculationsListView.setModel(self.calcListModel)
Example #25
0
    def fillScalars(self):
        scalars = [
            'absorbance (%)', 'reflectance (%)', 'transmittance (%)',
            'absorbance (mA/cm²)', 'reflectance (mA/cm²)',
            'transmittance (mA/cm²)', 'generation', 'Jmax (mA/cm²)',
            'absorption layerwise (%)', 'absorption layerwise (mA/cm²)',
            'collection layerwise (%)', 'collection layerwise (mA/cm²)',
            'calc. time (s)'
        ]

        self.scalarListModel = QStandardItemModel()
        scalarsToShow = self.defaults['defaultScalars']
        for value in scalars:
            item = QStandardItem(value)
            check = Qt.Checked if value in scalarsToShow else Qt.Unchecked
            item.setCheckState(check)
            item.setCheckable(True)
            self.scalarListModel.appendRow(item)

        self.scalarListView.setModel(self.scalarListModel)
    def initListView(self):
        """Init status table"""
        # List Box model
        model = QStandardItemModel()

        # Init list objects
        for i, frame in enumerate(self.task.videoLabelHandler.files):
            item = QStandardItem(frame + "\t{0} Objects".format(len(self.task.videoLabelHandler.objects)))
            item.setCheckState(Qt.Checked)
            item.setCheckable(True)
            model.appendRow(item)

        if self.segmentation_mode:
            model.item(0).setEnabled(False)
        else:
            model.item(i).setCheckState(Qt.Unchecked)
            model.item(i).setEnabled(False)

        # Set model
        self.view.setModel(model)
Example #27
0
    def fillPlots(self):
        plots = [
            'total A,R,T',  # requires calc [0]
            'Ellipsometry',  # requires nothing
            'absorption (layerwise)',  # requires calc [2]
            'collection (layerwise)',  # requires calc [2]
            'QE',  # requires calc [2]
            'reflection (interfacewise)',
            'generation'  # requires calc [3]
        ]

        self.plotListModel = QStandardItemModel()
        plotsToShow = self.defaults['defaultPlots']
        for value in plots:
            item = QStandardItem(value)
            check = Qt.Checked if value in plotsToShow else Qt.Unchecked
            item.setCheckState(check)
            item.setCheckable(True)
            self.plotListModel.appendRow(item)

        self.plotListView.setModel(self.plotListModel)
Example #28
0
 def fillPlots(self):
     plots = [   'total A,R,T',              # requires calc [0]
                 'Ellipsometry',               # requires nothing
                 'absorption (layerwise)',   # requires calc [2]
                 'collection (layerwise)',   # requires calc [2]
                 'QE',                       # requires calc [2]
                 'reflection (interfacewise)', 
                 'generation'                # requires calc [3]
                 
                 
             ]
                 
     self.plotListModel = QStandardItemModel()
     plotsToShow = self.defaults['defaultPlots']
     for value in plots:                   
         item = QStandardItem(value)
         check = Qt.Checked if value in plotsToShow else Qt.Unchecked
         item.setCheckState(check)
         item.setCheckable(True)
         self.plotListModel.appendRow(item)
 
     self.plotListView.setModel(self.plotListModel)
 def appendRepository(self, path, active, autoUpdate, canAutoUpdate = None):
     activeItem = QStandardItem()
     activeItem.setEditable(False)
     activeItem.setCheckState(Qt.Checked if active else Qt.Unchecked)
     activeItem.setCheckable(True)
     
     pathItem = QStandardItem()
     pathItem.setData(path, Qt.DisplayRole)
     pathItem.setEditable(False)
     
     autoUpdateItem = QStandardItem()
     autoUpdateItem.setEditable(False)
     if canAutoUpdate == None:
         canAutoUpdate = self._gitHandler.hasGit(path)
     if canAutoUpdate:
         autoUpdateItem.setCheckState(Qt.Checked if autoUpdate else Qt.Unchecked)
         autoUpdateItem.setCheckable(True)
             
     statusItem = QStandardItem()
     self._updateStatusItem(statusItem, path)
             
     self._reposModel.appendRow([activeItem, pathItem, autoUpdateItem, statusItem])
Example #30
0
    def load_document_types(self):
        """
        Load all document types to the list view and enable/check the items
        for those types that have been found.
        """
        self._attr_model.clear()
        self._attr_model.setColumnCount(2)

        file_infos = self._dir.entryInfoList(
            QDir.Readable | QDir.Files,
            QDir.Name
        )

        # Index file info based on name
        idx_file_infos = {fi.completeBaseName().lower(): fi for fi in file_infos}

        for d in self._doc_types:
            doc_type_item = QStandardItem(d)
            doc_type_item.setCheckable(True)
            path_item = QStandardItem()

            item_enabled = False
            check_state = Qt.Unchecked
            dl = d.lower()
            if dl in idx_file_infos:
                item_enabled = True
                check_state = Qt.Checked
                path = idx_file_infos[dl].filePath()
                path_item.setText(path)
                doc_type_item.setToolTip(path)

            doc_type_item.setEnabled(item_enabled)
            doc_type_item.setCheckState(check_state)

            self._attr_model.appendRow([doc_type_item, path_item])

        self.lst_docs.setModel(self._attr_model)
Example #31
0
 def comboProjectChanged(self):
     if len(self.ui.comboProject.currentText()) > 0:
         self.project_id = self.projects_id[self.ui.comboProject.currentText()]
         #get project tasks
         qsubtasks = QStandardItemModel()
         for proj_tasks in self.asana_api.tasks.find_by_project(self.project_id, { 'completed_since': 'now'}):
             item = QStandardItem(proj_tasks['name'])
             item.setEditable(True)
             item.setToolTip('Double click to edit')
             if not proj_tasks['name'].endswith(':'):
                 check = Qt.Unchecked
                 item.setCheckState(check)
                 item.setCheckable(True)
                 self.projects_id[proj_tasks['name']] = proj_tasks['id']
                 item.setStatusTip(str(proj_tasks['id']))
             else:
                 font = QFont()
                 font.setWeight(QFont.Bold)
                 item.setFont(font)
             #populate the listview
             qsubtasks.appendRow(item)
         self.ui.listTasks.setModel(qsubtasks)
         QApplication.setOverrideCursor(QCursor(Qt.ArrowCursor))
         qsubtasks.itemChanged.connect(self.checkTasks)
Example #32
0
    def setColumnCombos(self, cols, quotedCols):
        # get sensible default columns. do this before sorting in case there's hints in the column order (eg, id is more likely to be first)
        try:
            defaultGeomCol = next(col for col in cols if col in ['geom', 'geometry', 'the_geom', 'way'])
        except:
            defaultGeomCol = None
        try:
            defaultUniqueCol = [col for col in cols if 'id' in col][0]
        except:
            defaultUniqueCol = None

        colNames = sorted(zip(cols, quotedCols))
        newItems = []
        uniqueIsFilled = False
        for (col, quotedCol) in colNames:
            item = QStandardItem(col)
            item.setData(quotedCol)
            item.setEnabled(True)
            item.setCheckable(self.allowMultiColumnPk)
            item.setSelectable(not self.allowMultiColumnPk)
            if self.allowMultiColumnPk:
                matchingItems = self.uniqueModel.findItems(col)
                if matchingItems:
                    item.setCheckState(matchingItems[0].checkState())
                    uniqueIsFilled = uniqueIsFilled or matchingItems[0].checkState() == Qt.Checked
                else:
                    item.setCheckState(Qt.Unchecked)
            newItems.append(item)
        if self.allowMultiColumnPk:
            self.uniqueModel.clear()
            self.uniqueModel.appendColumn(newItems)
            self.uniqueChanged()
        else:
            previousUniqueColumn = self.uniqueCombo.currentText()
            self.uniqueModel.clear()
            self.uniqueModel.appendColumn(newItems)
            if self.uniqueModel.findItems(previousUniqueColumn):
                self.uniqueCombo.setEditText(previousUniqueColumn)
                uniqueIsFilled = True

        oldGeometryColumn = self.geomCombo.currentText()
        self.geomCombo.clear()
        self.geomCombo.addItems(cols)
        self.geomCombo.setCurrentIndex(self.geomCombo.findText(oldGeometryColumn, Qt.MatchExactly))

        # set sensible default columns if the columns are not already set
        try:
            if self.geomCombo.currentIndex() == -1:
                self.geomCombo.setCurrentIndex(cols.index(defaultGeomCol))
        except:
            pass
        items = self.uniqueModel.findItems(defaultUniqueCol)
        if items and not uniqueIsFilled:
            if self.allowMultiColumnPk:
                items[0].setCheckState(Qt.Checked)
            else:
                self.uniqueCombo.setEditText(defaultUniqueCol)
        try:
            pass
        except:
            pass
Example #33
0
    def set_items(self, items):
        self.__items = items
        model = self.__model
        model.clear()
        model.setHorizontalHeaderLabels(["", "Name", "Version", "Action"])

        for item in items:
            if isinstance(item, Installed):
                installed = True
                ins, dist = item
                name = dist.project_name
                summary = get_dist_meta(dist).get("Summary", "")
                version = ins.version if ins is not None else dist.version
            else:
                installed = False
                (ins, ) = item
                dist = None
                name = ins.name
                summary = ins.summary
                version = ins.version

            updatable = is_updatable(item)

            item1 = QStandardItem()
            item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable
                           | Qt.ItemIsUserCheckable
                           | (Qt.ItemIsTristate if updatable else 0))

            if installed and updatable:
                item1.setCheckState(Qt.PartiallyChecked)
            elif installed:
                item1.setCheckState(Qt.Checked)
            else:
                item1.setCheckState(Qt.Unchecked)

            item2 = QStandardItem(name)

            item2.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
            item2.setToolTip(summary)
            item2.setData(item, Qt.UserRole)

            if updatable:
                version = "{} < {}".format(dist.version, ins.version)

            item3 = QStandardItem(version)
            item3.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)

            item4 = QStandardItem()
            item4.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)

            model.appendRow([item1, item2, item3, item4])

        self.__view.resizeColumnToContents(0)
        self.__view.setColumnWidth(1, max(150,
                                          self.__view.sizeHintForColumn(1)))
        self.__view.setColumnWidth(2, max(150,
                                          self.__view.sizeHintForColumn(2)))

        if self.__items:
            self.__view.selectionModel().select(
                self.__view.model().index(0, 0),
                QItemSelectionModel.Select | QItemSelectionModel.Rows)
    def setColumnCombos(self, cols, quotedCols):
        # get sensible default columns. do this before sorting in case there's hints in the column order (eg, id is more likely to be first)
        try:
            defaultGeomCol = next(col for col in cols if col in ['geom', 'geometry', 'the_geom', 'way'])
        except:
            defaultGeomCol = None
        try:
            defaultUniqueCol = [col for col in cols if 'id' in col][0]
        except:
            defaultUniqueCol = None

        colNames = sorted(zip(cols, quotedCols))
        newItems = []
        uniqueIsFilled = False
        for (col, quotedCol) in colNames:
            item = QStandardItem(col)
            item.setData(quotedCol)
            item.setEnabled(True)
            item.setCheckable(self.allowMultiColumnPk)
            item.setSelectable(not self.allowMultiColumnPk)
            if self.allowMultiColumnPk:
                matchingItems = self.uniqueModel.findItems(col)
                if matchingItems:
                    item.setCheckState(matchingItems[0].checkState())
                    uniqueIsFilled = uniqueIsFilled or matchingItems[0].checkState() == Qt.Checked
                else:
                    item.setCheckState(Qt.Unchecked)
            newItems.append(item)
        if self.allowMultiColumnPk:
            self.uniqueModel.clear()
            self.uniqueModel.appendColumn(newItems)
            self.uniqueChanged()
        else:
            previousUniqueColumn = self.uniqueCombo.currentText()
            self.uniqueModel.clear()
            self.uniqueModel.appendColumn(newItems)
            if self.uniqueModel.findItems(previousUniqueColumn):
                self.uniqueCombo.setEditText(previousUniqueColumn)
                uniqueIsFilled = True

        oldGeometryColumn = self.geomCombo.currentText()
        self.geomCombo.clear()
        self.geomCombo.addItems(cols)
        self.geomCombo.setCurrentIndex(self.geomCombo.findText(oldGeometryColumn, Qt.MatchExactly))

        # set sensible default columns if the columns are not already set
        try:
            if self.geomCombo.currentIndex() == -1:
                self.geomCombo.setCurrentIndex(cols.index(defaultGeomCol))
        except:
            pass
        items = self.uniqueModel.findItems(defaultUniqueCol)
        if items and not uniqueIsFilled:
            if self.allowMultiColumnPk:
                items[0].setCheckState(Qt.Checked)
            else:
                self.uniqueCombo.setEditText(defaultUniqueCol)
        try:
            pass
        except:
            pass
Example #35
0
    def __setupUi(self):
        """Set up the UI.
        """
        if self.__macUnified:
            self.tab = QToolBar()

            self.addToolBar(Qt.TopToolBarArea, self.tab)
            self.setUnifiedTitleAndToolBarOnMac(True)

            # This does not seem to work
            self.setWindowFlags(self.windowFlags() & \
                                ~Qt.MacWindowToolBarButtonHint)

            self.tab.actionTriggered[QAction].connect(
                self.__macOnToolBarAction)

            central = QStackedWidget()

            central.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        else:
            self.tab = central = QTabWidget(self)

        # Add a close button to the bottom of the dialog
        # (to satisfy GNOME 3 which shows the dialog  without a title bar).
        container = container_widget_helper()
        container.layout().addWidget(central)
        buttonbox = QDialogButtonBox(QDialogButtonBox.Close)
        buttonbox.rejected.connect(self.close)
        container.layout().addWidget(buttonbox)

        self.setCentralWidget(container)

        self.stack = central

        # General Tab
        tab = QWidget()
        self.addTab(tab,
                    self.tr("General"),
                    toolTip=self.tr("General Options"))

        form = QFormLayout()
        tab.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)

        nodes = QWidget(self, objectName="nodes")
        nodes.setLayout(QVBoxLayout())
        nodes.layout().setContentsMargins(0, 0, 0, 0)

        cb_anim = QCheckBox(self.tr("Enable node animations"),
                            objectName="enable-node-animations",
                            toolTip=self.tr(
                                "Enable shadow and ping animations for node "
                                "items in the scheme."))
        self.bind(cb_anim, "checked", "schemeedit/enable-node-animations")
        nodes.layout().addWidget(cb_anim)

        form.addRow(self.tr("Nodes"), nodes)

        links = QWidget(self, objectName="links")
        links.setLayout(QVBoxLayout())
        links.layout().setContentsMargins(0, 0, 0, 0)

        cb_show = QCheckBox(self.tr("Show channel names between widgets"),
                            objectName="show-channel-names",
                            toolTip=self.tr(
                                "Show source and sink channel names "
                                "over the links."))

        self.bind(cb_show, "checked", "schemeedit/show-channel-names")

        links.layout().addWidget(cb_show)

        form.addRow(self.tr("Links"), links)

        quickmenu = QWidget(self, objectName="quickmenu-options")
        quickmenu.setLayout(QVBoxLayout())
        quickmenu.layout().setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("On double click"),
                        toolTip=self.tr("Open quick menu on a double click "
                                        "on an empty spot in the canvas"))

        cb2 = QCheckBox(self.tr("On right click"),
                        toolTip=self.tr("Open quick menu on a right click "
                                        "on an empty spot in the canvas"))

        cb3 = QCheckBox(self.tr("On space key press"),
                        toolTip=self.tr("On Space key press while the mouse"
                                        "is hovering over the canvas."))

        cb4 = QCheckBox(self.tr("On any key press"),
                        toolTip=self.tr("On any key press while the mouse"
                                        "is hovering over the canvas."))

        self.bind(cb1, "checked", "quickmenu/trigger-on-double-click")
        self.bind(cb2, "checked", "quickmenu/trigger-on-right-click")
        self.bind(cb3, "checked", "quickmenu/trigger-on-space-key")
        self.bind(cb4, "checked", "quickmenu/trigger-on-any-key")

        quickmenu.layout().addWidget(cb1)
        quickmenu.layout().addWidget(cb2)
        quickmenu.layout().addWidget(cb3)
        quickmenu.layout().addWidget(cb4)

        form.addRow(self.tr("Open quick menu on"), quickmenu)

        startup = QWidget(self, objectName="startup-group")
        startup.setLayout(QVBoxLayout())
        startup.layout().setContentsMargins(0, 0, 0, 0)

        cb_splash = QCheckBox(self.tr("Show splash screen"),
                              self,
                              objectName="show-splash-screen")

        cb_welcome = QCheckBox(self.tr("Show welcome screen"),
                               self,
                               objectName="show-welcome-screen")

        self.bind(cb_splash, "checked", "startup/show-splash-screen")
        self.bind(cb_welcome, "checked", "startup/show-welcome-screen")

        startup.layout().addWidget(cb_splash)
        startup.layout().addWidget(cb_welcome)

        form.addRow(self.tr("On startup"), startup)

        toolbox = QWidget(self, objectName="toolbox-group")
        toolbox.setLayout(QVBoxLayout())
        toolbox.layout().setContentsMargins(0, 0, 0, 0)

        exclusive = QCheckBox(self.tr("Only one tab can be open at a time"))

        self.bind(exclusive, "checked", "mainwindow/toolbox-dock-exclusive")

        toolbox.layout().addWidget(exclusive)

        form.addRow(self.tr("Tool box"), toolbox)
        tab.setLayout(form)

        # Output Tab
        tab = QWidget()
        self.addTab(tab, self.tr("Output"), toolTip="Output Redirection")

        form = QFormLayout()
        box = QWidget(self, objectName="streams")
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Standard output"))
        cb2 = QCheckBox(self.tr("Standard error"))

        self.bind(cb1, "checked", "output/redirect-stdout")
        self.bind(cb2, "checked", "output/redirect-stderr")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        box.setLayout(layout)

        form.addRow(self.tr("Redirect output"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        combo = QComboBox()
        combo.addItems([
            self.tr("Critical"),
            self.tr("Error"),
            self.tr("Warn"),
            self.tr("Info"),
            self.tr("Debug")
        ])

        cb = QCheckBox(self.tr("Show output on 'Error'"),
                       objectName="focus-on-error")

        self.bind(combo, "currentIndex", "logging/level")
        self.bind(cb, "checked", "output/show-on-error")

        layout.addWidget(combo)
        layout.addWidget(cb)
        box.setLayout(layout)

        form.addRow(self.tr("Logging"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Stay on top"), objectName="stay-on-top")

        cb2 = QCheckBox(self.tr("Dockable"), objectName="output-dockable")

        self.bind(cb1, "checked", "output/stay-on-top")
        self.bind(cb2, "checked", "output/dockable")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        box.setLayout(layout)

        form.addRow(self.tr("Output window"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Open in external browser"),
                        objectName="open-in-external-browser")

        cb2 = QCheckBox(self.tr("Stay on top"), objectName="help-stay-on-top")

        cb3 = QCheckBox(self.tr("Dockable"), objectName="help-dockable")

        self.bind(cb1, "checked", "help/open-in-external-browser")
        self.bind(cb2, "checked", "help/stay-on-top")
        self.bind(cb3, "checked", "help/dockable")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        layout.addWidget(cb3)
        box.setLayout(layout)

        form.addRow(self.tr("Help window"), box)

        tab.setLayout(form)

        # Categories Tab
        tab = QWidget()
        layout = QVBoxLayout()
        view = QListView()
        from .. import registry
        reg = registry.global_registry()
        model = QStandardItemModel()
        settings = QSettings()
        for cat in reg.categories():
            item = QStandardItem()
            item.setText(cat.name)
            item.setCheckable(True)
            visible, _ = category_state(cat, settings)
            item.setCheckState(Qt.Checked if visible else Qt.Unchecked)
            model.appendRow([item])

        view.setModel(model)
        layout.addWidget(view)
        tab.setLayout(layout)
        model.itemChanged.connect(lambda item: save_category_state(
            reg.category(str(item.text())),
            _State(item.checkState() == Qt.Checked, -1), settings))

        self.addTab(tab, "Categories")

        if self.__macUnified:
            # Need some sensible size otherwise mac unified toolbar 'takes'
            # the space that should be used for layout of the contents
            self.adjustSize()
Example #36
0
    def set_items(self, items):
        self.__items = items
        model = self.__model
        model.clear()
        model.setHorizontalHeaderLabels(["", "Name", "Version", "Action"])

        for item in items:
            if isinstance(item, Installed):
                installed = True
                ins, dist = item
                name = dist.project_name
                summary = get_dist_meta(dist).get("Summary", "")
                version = ins.version if ins is not None else dist.version
            else:
                installed = False
                (ins,) = item
                dist = None
                name = ins.name
                summary = ins.summary
                version = ins.version

            updatable = is_updatable(item)

            item1 = QStandardItem()
            item1.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable |
                           Qt.ItemIsUserCheckable |
                           (Qt.ItemIsTristate if updatable else 0))

            if installed and updatable:
                item1.setCheckState(Qt.PartiallyChecked)
            elif installed:
                item1.setCheckState(Qt.Checked)
            else:
                item1.setCheckState(Qt.Unchecked)

            item2 = QStandardItem(name)

            item2.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
            item2.setToolTip(summary)
            item2.setData(item, Qt.UserRole)

            if updatable:
                version = "{} < {}".format(dist.version, ins.version)

            item3 = QStandardItem(version)
            item3.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)

            item4 = QStandardItem()
            item4.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)

            model.appendRow([item1, item2, item3, item4])

        self.__view.resizeColumnToContents(0)
        self.__view.setColumnWidth(
            1, max(150, self.__view.sizeHintForColumn(1)))
        self.__view.setColumnWidth(
            2, max(150, self.__view.sizeHintForColumn(2)))

        if self.__items:
            self.__view.selectionModel().select(
                self.__view.model().index(0, 0),
                QItemSelectionModel.Select | QItemSelectionModel.Rows
            )
Example #37
0
    def __setupUi(self):
        """Set up the UI.
        """
        if self.__macUnified:
            self.tab = QToolBar()

            self.addToolBar(Qt.TopToolBarArea, self.tab)
            self.setUnifiedTitleAndToolBarOnMac(True)

            # This does not seem to work
            self.setWindowFlags(self.windowFlags() & \
                                ~Qt.MacWindowToolBarButtonHint)

            self.tab.actionTriggered[QAction].connect(
                self.__macOnToolBarAction
            )

            central = QStackedWidget()

            central.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        else:
            self.tab = central = QTabWidget(self)

        # Add a close button to the bottom of the dialog
        # (to satisfy GNOME 3 which shows the dialog  without a title bar).
        container = container_widget_helper()
        container.layout().addWidget(central)
        buttonbox = QDialogButtonBox(QDialogButtonBox.Close)
        buttonbox.rejected.connect(self.close)
        container.layout().addWidget(buttonbox)

        self.setCentralWidget(container)

        self.stack = central

        # General Tab
        tab = QWidget()
        self.addTab(tab, self.tr("General"),
                    toolTip=self.tr("General Options"))

        form = QFormLayout()
        tab.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)

        nodes = QWidget(self, objectName="nodes")
        nodes.setLayout(QVBoxLayout())
        nodes.layout().setContentsMargins(0, 0, 0, 0)

        cb_anim = QCheckBox(
            self.tr("Enable node animations"),
            objectName="enable-node-animations",
            toolTip=self.tr("Enable shadow and ping animations for node "
                            "items in the scheme.")
        )
        self.bind(cb_anim, "checked", "schemeedit/enable-node-animations")
        nodes.layout().addWidget(cb_anim)

        form.addRow(self.tr("Nodes"), nodes)

        links = QWidget(self, objectName="links")
        links.setLayout(QVBoxLayout())
        links.layout().setContentsMargins(0, 0, 0, 0)

        cb_show = QCheckBox(
            self.tr("Show channel names between widgets"),
            objectName="show-channel-names",
            toolTip=self.tr("Show source and sink channel names "
                            "over the links.")
        )

        self.bind(cb_show, "checked", "schemeedit/show-channel-names")

        links.layout().addWidget(cb_show)

        form.addRow(self.tr("Links"), links)

        quickmenu = QWidget(self, objectName="quickmenu-options")
        quickmenu.setLayout(QVBoxLayout())
        quickmenu.layout().setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("On double click"),
                        toolTip=self.tr("Open quick menu on a double click "
                                        "on an empty spot in the canvas"))

        cb2 = QCheckBox(self.tr("On right click"),
                        toolTip=self.tr("Open quick menu on a right click "
                                        "on an empty spot in the canvas"))

        cb3 = QCheckBox(self.tr("On space key press"),
                        toolTip=self.tr("On Space key press while the mouse"
                                        "is hovering over the canvas."))

        cb4 = QCheckBox(self.tr("On any key press"),
                        toolTip=self.tr("On any key press while the mouse"
                                        "is hovering over the canvas."))

        self.bind(cb1, "checked", "quickmenu/trigger-on-double-click")
        self.bind(cb2, "checked", "quickmenu/trigger-on-right-click")
        self.bind(cb3, "checked", "quickmenu/trigger-on-space-key")
        self.bind(cb4, "checked", "quickmenu/trigger-on-any-key")

        quickmenu.layout().addWidget(cb1)
        quickmenu.layout().addWidget(cb2)
        quickmenu.layout().addWidget(cb3)
        quickmenu.layout().addWidget(cb4)

        form.addRow(self.tr("Open quick menu on"), quickmenu)

        startup = QWidget(self, objectName="startup-group")
        startup.setLayout(QVBoxLayout())
        startup.layout().setContentsMargins(0, 0, 0, 0)

        cb_splash = QCheckBox(self.tr("Show splash screen"), self,
                              objectName="show-splash-screen")

        cb_welcome = QCheckBox(self.tr("Show welcome screen"), self,
                                objectName="show-welcome-screen")

        self.bind(cb_splash, "checked", "startup/show-splash-screen")
        self.bind(cb_welcome, "checked", "startup/show-welcome-screen")

        startup.layout().addWidget(cb_splash)
        startup.layout().addWidget(cb_welcome)

        form.addRow(self.tr("On startup"), startup)

        toolbox = QWidget(self, objectName="toolbox-group")
        toolbox.setLayout(QVBoxLayout())
        toolbox.layout().setContentsMargins(0, 0, 0, 0)

        exclusive = QCheckBox(self.tr("Only one tab can be open at a time"))

        self.bind(exclusive, "checked", "mainwindow/toolbox-dock-exclusive")

        toolbox.layout().addWidget(exclusive)

        form.addRow(self.tr("Tool box"), toolbox)
        tab.setLayout(form)

        # Output Tab
        tab = QWidget()
        self.addTab(tab, self.tr("Output"),
                    toolTip="Output Redirection")

        form = QFormLayout()
        box = QWidget(self, objectName="streams")
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Standard output"))
        cb2 = QCheckBox(self.tr("Standard error"))

        self.bind(cb1, "checked", "output/redirect-stdout")
        self.bind(cb2, "checked", "output/redirect-stderr")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        box.setLayout(layout)

        form.addRow(self.tr("Redirect output"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        combo = QComboBox()
        combo.addItems([self.tr("Critical"),
                        self.tr("Error"),
                        self.tr("Warn"),
                        self.tr("Info"),
                        self.tr("Debug")])

        cb = QCheckBox(self.tr("Show output on 'Error'"),
                       objectName="focus-on-error")

        self.bind(combo, "currentIndex", "logging/level")
        self.bind(cb, "checked", "output/show-on-error")

        layout.addWidget(combo)
        layout.addWidget(cb)
        box.setLayout(layout)

        form.addRow(self.tr("Logging"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Stay on top"),
                        objectName="stay-on-top")

        cb2 = QCheckBox(self.tr("Dockable"),
                        objectName="output-dockable")

        self.bind(cb1, "checked", "output/stay-on-top")
        self.bind(cb2, "checked", "output/dockable")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        box.setLayout(layout)

        form.addRow(self.tr("Output window"), box)

        box = QWidget()
        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        cb1 = QCheckBox(self.tr("Open in external browser"),
                        objectName="open-in-external-browser")

        cb2 = QCheckBox(self.tr("Stay on top"),
                        objectName="help-stay-on-top")

        cb3 = QCheckBox(self.tr("Dockable"),
                        objectName="help-dockable")

        self.bind(cb1, "checked", "help/open-in-external-browser")
        self.bind(cb2, "checked", "help/stay-on-top")
        self.bind(cb3, "checked", "help/dockable")

        layout.addWidget(cb1)
        layout.addWidget(cb2)
        layout.addWidget(cb3)
        box.setLayout(layout)

        form.addRow(self.tr("Help window"), box)

        tab.setLayout(form)

        # Categories Tab
        tab = QWidget()
        layout = QVBoxLayout()
        view = QListView()
        from .. import registry
        reg = registry.global_registry()
        model = QStandardItemModel()
        settings = QSettings()
        for cat in reg.categories():
            item = QStandardItem()
            item.setText(cat.name)
            item.setCheckable(True)
            visible, _ = category_state(cat, settings)
            item.setCheckState(Qt.Checked if visible else Qt.Unchecked)
            model.appendRow([item])

        view.setModel(model)
        layout.addWidget(view)
        tab.setLayout(layout)
        model.itemChanged.connect(
            lambda item:
                save_category_state(
                    reg.category(str(item.text())),
                    _State(item.checkState() == Qt.Checked, -1),
                    settings
                )
        )

        self.addTab(tab, "Categories")

        if self.__macUnified:
            # Need some sensible size otherwise mac unified toolbar 'takes'
            # the space that should be used for layout of the contents
            self.adjustSize()
Example #38
0
    def scan(self):
        #self.treeViewComputer.setEnabled(False)
        #self.fileTypesButton.setEnabled(False)
        self.files_found = {}
        self.category_number_length = {}
        self.threads = []
        self.stop = False
        if not self.selected_file_types:
            dialog = FileTypes()
            dialog.setModal(True)
            self.selected_file_types, ok = dialog.call()
            if not ok:
                return
        files_found_dialog = FilesFound(self)
        files_found_dialog.setModal(True)
        files_found_dialog.show()
        header_counter = 0
        for element in self.selected_file_types:
            selected = []
            for _type, state in element["Types"].items():
                if state == Qt.Checked:
                    selected.append(_type)
            if selected:
                cat = QStandardItem(
                    element.keys()[0])  # WARNING! it may be unordered
                self.files_found_model.setHorizontalHeaderItem(
                    header_counter, cat)
                self.category_number_length.update(
                    {element.keys()[0]: [header_counter, 0]})
                self.files_found_tree.setColumnWidth(header_counter - 1, 200)
                header_counter += 1
                for index, state in self.model_computer.checks.items():
                    self.files_found.update({element.keys()[0]: []})
                    print("start tread for %s" % element.keys()[0])
                    th = Thread(target=self.model_computer.exportChecked,
                                args=(self, {
                                    index: state
                                }, element.keys()[0], selected,
                                      self.files_found))
                    th.start()
                    self.threads.append(th)

        status = map(Thread.isAlive, self.threads)
        start_time = int(time.time())
        while any(status):
            qApp.processEvents()
            status = map(Thread.isAlive, self.threads)
            self.filesFoundLabel.setText("Scanning...")
            if (int(time.time()) - start_time) % 2 == 0:
                if self.files_found:
                    self.lock.acquire()
                    for cat, (num,
                              length) in self.category_number_length.items():
                        files = self.files_found[cat]
                        for i in range(length, len(files)):
                            fileItem = QStandardItem(
                                self.files_found[cat][i].split(sep)[-1])
                            fileItem.setCheckable(True)
                            fileItem.setCheckState(2)
                            fileItem.setToolTip(self.files_found[cat][i])
                            self.files_found_model.invisibleRootItem(
                            ).setChild(i, num, fileItem)
                        self.category_number_length[cat][1] = len(files)
                    self.lock.release()

        if self.stop:
            self.filesFoundLabel.setText("Scanning was stopped by user")
            self.files_found = {}
            self.threads = []
        else:
            for cat, (num, length) in self.category_number_length.items():
                if self.files_found:
                    files = self.files_found[cat]
                    for i in range(length, len(files)):
                        fileItem = QStandardItem(
                            self.files_found[cat][i].split(sep)[-1])
                        fileItem.setCheckable(True)
                        fileItem.setCheckState(2)
                        fileItem.setToolTip(self.files_found[cat][i])
                        self.files_found_model.invisibleRootItem().setChild(
                            i, num, fileItem)
                    self.category_number_length[cat][1] = len(files)
            self.filesFoundLabel.setText(
                "Scanning finished! Files found %s. Click on the Storage tab" %
                sum(len(v) for k, v in self.files_found.items()))
            self.files_found_bar.setMaximum(1)
            self.files_found_bar.setValue(1)
            self.files_found_ok_enable.setEnabled(True)