コード例 #1
0
 def restart_selector(self):
     """Function that ensures that only one type of restartfile can be selected
     at a given time in the restartfile window.
     Author
     ----------
     Jonathan Chico
     """
     from PyQt5.QtCore import QSignalBlocker
     if self.sender() == self.DWOptBox:
         if self.DWOptBox.isChecked():
             self.SkxOptBox.setChecked(False)
             QSignalBlocker(self.SkxOptBox)
             self.HLOptBox.setChecked(False)
             QSignalBlocker(self.HLOptBox)
     if self.sender() == self.SkxOptBox:
         if self.SkxOptBox.isChecked():
             self.DWOptBox.setChecked(False)
             QSignalBlocker(self.DWOptBox)
             self.HLOptBox.setChecked(False)
             QSignalBlocker(self.HLOptBox)
     if self.sender() == self.HLOptBox:
         if self.HLOptBox.isChecked():
             self.SkxOptBox.setChecked(False)
             QSignalBlocker(self.SkxOptBox)
             self.DWOptBox.setChecked(False)
             QSignalBlocker(self.DWOptBox)
     if self.sender() == self.InpDwTypeBox:
         if self.InpDwTypeBox.isChecked():
             self.InpDWVortex.setChecked(False)
             QSignalBlocker(self.InpDWVortex)
     if self.sender() == self.InpDWVortex:
         if self.InpDWVortex.isChecked():
             self.InpDwTypeBox.setChecked(False)
             QSignalBlocker(self.InpDwTypeBox)
     return
コード例 #2
0
 def saveUserText(self):
     blocker = QSignalBlocker(self.ui.textEdit)
     selected = self.getSelectedSampleTextId()
     if selected in self.userTextIds:
         self.user_texts.setValue("text" + str(selected),
                                  self.ui.textEdit.toPlainText())
     m = 1
コード例 #3
0
 def save_perspective(self):
     perspective_name, ok = QInputDialog.getText(self, 'Save perspective', 'Enter unique name:')
     if ok and perspective_name:
         self.dock_manager.addPerspective(perspective_name)
         _ = QSignalBlocker(self.perspective_combo_box)
         self.perspective_combo_box.clear()
         self.perspective_combo_box.addItems(self.dock_manager.perspectiveNames())
         self.perspective_combo_box.setCurrentText(perspective_name)
         self.save_perspectives()
コード例 #4
0
ファイル: widgets.py プロジェクト: ossadtchi/cognigraph
 def _on_checked(self, i):
     block_signals = QSignalBlocker(self)  # noqa
     _logger.debug("clicked --> %d " % (i + 1))
     for l in self.labels:
         l.is_active = False
     self.labels[i].is_active = not self.labels[i].is_active
     for j in range(self.rowCount()):
         self.item(j, 2).setCheckState(Qt.Unchecked)
     self.item(i, 2).setCheckState(Qt.Checked)
コード例 #5
0
 def save_perspective(self):
     perspective_name, ok = QInputDialog.getText(self, "Save Perspective", "Enter Unique name:")
     if not ok or not perspective_name:
         return
     
     self.dock_manager.addPerspective(perspective_name)
     blocker = QSignalBlocker(self.perspective_combobox)
     self.perspective_combobox.clear()
     self.perspective_combobox.addItems(self.dock_manager.perspectiveNames())
     self.perspective_combobox.setCurrentText(perspective_name)
コード例 #6
0
    def __set_current_scan(self, index: int):
        _ = QSignalBlocker(self)
        self.current_index = index

        name = self.__make_base_name()
        scan = Scan()
        scan.load_from(name)
        self.scan = scan
        self.ui.slide_line.setValue(0)
        self.__set_current_line(0)
コード例 #7
0
    def __init__(self, parent=None):
        QTreeWidget.__init__(self, parent)
        

        self.setItemsExpandable(True)
        self.setAnimated(True)
        self.setDragEnabled(True)
        self.setHeaderHidden(True)
        self.setDropIndicatorShown(True)
        self.setDragDropMode(QAbstractItemView.InternalMove)
        self.blocker = QSignalBlocker(self)
        self.blocker.unblock()
        

        # only one by on for now
        #self.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.settings=SETTINGS

        root=self.invisibleRootItem()
        root.setData(0,Qt.ToolTipRole,"root")
コード例 #8
0
    def _set_combos_to_builtin(self):
        """Used when we switch to compute forward mode"""
        block_signals = QSignalBlocker(self._montages_combo)  # noqa
        self._montages_combo.setItems(self.builtin_montage_names)
        self.montage = self.default_montage
        self._spacings_combo.setItems(
            [k for k in self.spacings_desc if k != 'imported'])
        self.spacing = self.default_spacing  # uses spacing setter
        self._forwards_combo_widget.hide()
        self._set_hints()

        self._use_default_montage_radio.show()
        self._import_montage_radio.show()
        self._select_montage_dialog.show()
コード例 #9
0
 def select_security(self, selection):
     if isinstance(selection, QItemSelection):
         if not selection.indexes():  # no selection
             return
     idx = self.ui.endpointsView.currentIndex()
     transport_profile_uri = self.endpoints_model.data(
         idx.siblingAtColumn(3))
     if transport_profile_uri != "http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary":
         blocker = QSignalBlocker(self.ui.endpointsView.selectionModel())
         self.ui.endpointsView.selectionModel().clearSelection()
     else:
         security_mode = self.endpoints_model.data(idx.siblingAtColumn(1))
         security_policy = self.endpoints_model.data(idx.siblingAtColumn(2))
         self.ui.modeComboBox.setCurrentText(security_mode)
         self.ui.policyComboBox.setCurrentText(security_policy)
コード例 #10
0
ファイル: forward_dialog.py プロジェクト: gurasog/cognigraph
    def _set_hints(self):
        """Set popup description messages to comboboxes"""
        block_signals = QSignalBlocker(self._montages_combo)  # noqa

        for i, key in enumerate(self._montages_combo.getItems()):
            try:
                self._montages_combo.setItemData(i, self.montages_desc[key],
                                                 Qt.ToolTipRole)
            except KeyError:
                pass

        for i, key in enumerate(self._spacings_combo.getItems()):
            try:
                self._spacings_combo.setItemData(i, self.spacings_desc[key],
                                                 Qt.ToolTipRole)
            except KeyError:
                pass
コード例 #11
0
ファイル: view.py プロジェクト: mantidproject/mantidimaging
    def update_projection(self, image_data, preview_slice_index: int,
                          tilt_angle: Optional[Degrees]):
        """
        Updates the preview projection image and associated annotations.

        Region of interest sets the bounds of the image axes, it does not
        resize the data itself. The advantage of this is that the coordinates
        do not change.

        :param image_data: Projection image data (single/2D image)
        :param preview_slice_index: Y coordinate at which to draw the preview
                                    slice indicator
        :param tilt_angle: Angle of the tilt line
        """

        with QSignalBlocker(self.previewSliceIndex):
            self.previewSliceIndex.setValue(preview_slice_index)

        self.image_view.update_projection(image_data, preview_slice_index,
                                          tilt_angle)
コード例 #12
0
 def mousePressEvent(self, event: QMouseEvent) -> None:
     pos = self.mapToScene(event.localPos().toPoint())
     x = int(pos.x())
     y = int(pos.y())
     x = get_limit_pos(x, 1)
     y = get_limit_pos(y, 0)
     self.cur_id = ''
     
     # choose item by clicking canvas
     if self.status == 'choose':
         # item = g_canvas.scene().itemAt(x, y, g_transform)
         items = self.item_dict.values()
         pos = [x,y]
         # break_flg
         b_flg = False
         id = ''
         # select in canvas
         for item in items:
             if b_flg:
                 break
             for coor in item.pixels:
                 if is_close(coor, pos):
                     b_flg = True
                     self.selection_changed(item.id)
                     id = item.id
                     break
         # select in list_widget
         for i in range(1, g_list_widget.count()):
             widget_item = g_list_widget.item(i)
             strList = widget_item.text().split()
             if(strList[-1] == id):
                 g_list_widget.setCurrentRow(i)
                 QSignalBlocker(g_list_widget)
                 widget_item.setSelected(True)
                 break
     
     # 点击边界外附近时拖动画布
     self.is_image_scaling = 0
     if g_width-5 <= x <= g_width+5 and g_height-5 <= y <= g_height+5:
         self.is_image_scaling = 3  
     elif g_width-5 <= x <= g_width+5:  
         self.is_image_scaling = 1  
     elif g_height-5 <= y <= g_height+5:  
         self.is_image_scaling = 2
     
     def press_draw():
         global g_draw_status
         if self.status not in g_draw_status:
             return ''
         if self.temp_item.id != self.main_window.get_id():
             self.temp_item = MyItem(self.temp_id, self.status, \
                                     [[x, y], [x, y]], self.temp_algorithm)
             self.scene().addItem(self.temp_item)
         else:
             # needs more than two points
             if self.status == 'polygon':
                 self.temp_item.p_list.append([x,y])
             elif self.status == 'curve':
                 self.temp_item.p_list.insert(-1, [x,y])
         return self.temp_item.id
     
     def press_edit():
         if self.status not in g_edit_status:
             return ''
         if self.selected_id == '':
             print("请选择图元.")
             return
         sid = self.selected_id
         if self.status in ['translate','clip']:
             if self.status == 'clip' \
             and self.item_dict[sid].item_type != 'line':
                 g_window.statusBar().showMessage('不能裁剪非线段')
                 self.status = ''
             else:
                 self.item_dict[sid].edit_type = self.status
                 self.item_dict[sid].poi = [x,y]
                 self.item_dict[sid].poi1 = [x,y]
                 self.item_dict[sid].edit_algorithm = self.temp_algorithm
                 self.item_dict[sid].edit_over = 0
         elif self.status in ['rotate', 'scale']:
             if self.item_dict[sid].param_cnt == 0:
                 self.item_dict[sid].edit_type = self.status
                 self.item_dict[sid].center = [x,y]
                 self.item_dict[sid].edit_over = 0
                 self.item_dict[sid].param_cnt = 1
             elif self.item_dict[sid].param_cnt == 1:
                 self.item_dict[sid].poi = [x,y]
                 self.item_dict[sid].poi1 = [x,y]
                 self.item_dict[sid].param_cnt = 2
             else:
                 self.status = ''
                 self.item_dict[sid].edit_clear()
         else:
             print("Undefined Behavior: No such edit situation")
             return ''
         return sid
     
     # draw or edit
     if self.is_image_scaling == 0:
         dealing_id = press_draw()
         if dealing_id != '':
             self.cur_id = dealing_id
         dealing_id = press_edit()
         if dealing_id != '':
             self.cur_id = dealing_id
     self.updateScene([self.sceneRect()])
     #self.updateScene([self.temp_item.boundingRect()])
     super().mousePressEvent(event)
コード例 #13
0
 def __set_current_directory(self, directory):
     _ = QSignalBlocker(self)
     self.current_dir = directory
     self.ui.slide_file.setValue(0)
     self.__set_current_scan(0)
コード例 #14
0
 def reset(self):
     """Reset value back to initial value."""
     with QSignalBlocker(
             self):  # We do not want to re-run manipulate on reset
         self.value = self._init_value
コード例 #15
0
ファイル: forward_dialog.py プロジェクト: gurasog/cognigraph
 def setItems(self, items):
     block_signals = QSignalBlocker(self)  # noqa
     for i in range(self.count()):
         self.removeItem(0)
     self.addItems(items)
コード例 #16
0
ファイル: forward_dialog.py プロジェクト: gurasog/cognigraph
 def _set_montages_combo_to_available(self):
     block_signals = QSignalBlocker(self._montages_combo)  # noqa
     self._montages_combo.setItems(self._available_montages)
     self.montage = self.default_montage
     self._set_spacings_combo_to_available()
コード例 #17
0
class CustomTreeWidget(QTreeWidget):
    itemDropped = pyqtSignal(str,str,str)
    editmetadata= pyqtSignal(QModelIndex,str,str)
    editfile= pyqtSignal(str)
    def __init__(self, parent=None):
        QTreeWidget.__init__(self, parent)
        

        self.setItemsExpandable(True)
        self.setAnimated(True)
        self.setDragEnabled(True)
        self.setHeaderHidden(True)
        self.setDropIndicatorShown(True)
        self.setDragDropMode(QAbstractItemView.InternalMove)
        self.blocker = QSignalBlocker(self)
        self.blocker.unblock()
        

        # only one by on for now
        #self.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.settings=SETTINGS

        root=self.invisibleRootItem()
        root.setData(0,Qt.ToolTipRole,"root")
        
    def mousePressEvent (self, event):
        if event.button() == Qt.RightButton:
            QTreeWidget.mousePressEvent(self, event)
            selModel = self.selectionModel()
            indices = selModel.selectedRows()

            if indices:
                for indice in indices:
                    if indice.parent().data():
                        parents=indice.parent().data()
                        childs=indice.data()
                        self.editmetadata.emit(indice,parents,childs)
                    else:
                        self.editfile.emit(indice.data())

        QTreeWidget.mousePressEvent(self, event)

    def dragMoveEvent(self, event):
        role=Qt.ToolTipRole
        itemToDropIn = self.itemAt(event.pos())
        itemBeingDragged=self.currentItem()
        okList=self.settings[itemBeingDragged.data(0,role)][0]

        if itemToDropIn is None:
            itemToDropIn=self.invisibleRootItem()

        if itemToDropIn.data(0,role) in okList:
            super(CustomTreeWidget, self).dragMoveEvent(event)
            return
        else:
            # possible "next to drop target" case
            parent=itemToDropIn.parent()
            if parent is None:
                parent=self.invisibleRootItem()
            if parent.data(0,role) in okList:
                super(CustomTreeWidget, self).dragMoveEvent(event)
                return
        event.ignore()

    def dropEvent(self, event):
        role=Qt.ToolTipRole

        #item being dragged
        itemBeingDragged=self.currentItem()
        okList=self.settings[itemBeingDragged.data(0,role)][0]

        #parent before the drag
        oldParent=itemBeingDragged.parent()
        if oldParent is None:
            oldParent=self.invisibleRootItem()
        oldIndex=oldParent.indexOfChild(itemBeingDragged)

        #accept any drop
        super(CustomTreeWidget,self).dropEvent(event)

        #look at where itemBeingDragged end up
        newParent=itemBeingDragged.parent()
        if newParent is None:
            newParent=self.invisibleRootItem()

        if newParent.data(0,role) in okList and newParent!=oldParent:
            fileIN=newParent.text(0)
            fileOUT=oldParent.text(0)
            var=itemBeingDragged.text(0)
           
            self.itemDropped.emit(fileIN,var,fileOUT)


        else:
            # drop was not ok, put back the item
            newParent.removeChild(itemBeingDragged)
            oldParent.insertChild(oldIndex,itemBeingDragged)

    def addItem(self,strings,category,parent=None,WhatsThis=''):
        if category not in self.settings:
            print("unknown categorie" +str(category))
            return False
        if parent is None:
            parent=self.invisibleRootItem()
            fl=self.settings[category][1] | Qt.ItemIsUserCheckable #Qt.ItemIsTristate
        else:
            fl=self.settings[category][1]| Qt.ItemIsUserCheckable



        item = QTreeWidgetItem(parent)

        item.setText(0, strings)
        item.setCheckState(0, Qt.Unchecked)
        item.setData(0,Qt.ToolTipRole,category)
        item.setExpanded(True)
        item.setFlags(item.flags()| fl)


        return item

    def rename(self,item,new_name):
        item.model().setData(item,new_name)

    def populate_tree(self,data,keys=None):

        self.blocker.reblock()

        if keys is None:
            keys=data.keys()
            self.clear()
            
        if len(keys)==1:
            single_file=True
        else:
            single_file=False

        first=True
        for file in keys:
            parent=self.addItem(file,"family")
            if single_file:
                parent.setCheckState(0, Qt.Checked)
                single_file=False
            for var in data[file]['metadata'].keys():
                if var != 'time':
                    item=self.addItem(var,"children",parent,data[file]['metadata'][var]['short_name'])
                    if first:
                        item.setCheckState(0, Qt.Checked)
                        first=False

        self.expandAll()
        self.blocker.unblock()

    def get_all_items(self):
        """Returns all QTreeWidgetItems in the given QTreeWidget."""
        self.blocker.reblock()
        check_vars = []
        checks_files=[]
        checks_dataframe=[]
        for i in range(self.topLevelItemCount()):
            top_item = self.topLevelItem(i)
            file=top_item.text(0)
            if top_item.checkState(0)== Qt.Checked:
                checks_dataframe.append(file)

            var=[]
            for j in range(top_item.childCount()):
                if (top_item.child(j).checkState(0) == Qt.Checked):# and (top_item.child(j).text(0)[:2] != 'No'):
                    var.append(top_item.child(j).text(0))

            check_vars.append(var)
            checks_files.append(file)


        self.blocker.unblock()

        return checks_files,check_vars,checks_dataframe

    def auto_check(self,all_file=False,all_vars=False,unchecked=False):
        self.blocker.reblock()
        if unchecked:
            all_file=True
            all_vars=True
            flag=Qt.Unchecked
        else:
            flag=Qt.Checked

        for i in range(self.topLevelItemCount()):
            top_item = self.topLevelItem(i)
            if all_file:
                top_item.setCheckState(0, flag)

            for j in range(top_item.childCount()):
                if all_vars:
                    top_item.child(j).setCheckState(0, flag)



        self.blocker.unblock()

    def check_item(self,files):
        self.blocker.reblock()
        flag=Qt.Checked
        for i in range(self.topLevelItemCount()):
            top_item = self.topLevelItem(i)
            if top_item.text(0) in files:
                top_item.setCheckState(0, flag)
        self.blocker.unblock()
コード例 #18
0
 def setCustomSampleText(self, id=0):
     blocker = QSignalBlocker(self.ui.textEdit)
     vals = self.user_texts.value('text' + str(id),
                                  'Write your Text here ..')
     self.ui.textEdit.setText(vals)
     return True
コード例 #19
0
ファイル: view.py プロジェクト: mantidproject/mantidimaging
 def pixel_size(self, value: int):
     with QSignalBlocker(self.pixelSize):
         self.pixelSize.setValue(value)