Exemplo n.º 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
Exemplo n.º 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
Exemplo n.º 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()
Exemplo n.º 4
0
 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)
 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)
Exemplo n.º 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)
Exemplo n.º 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")
Exemplo n.º 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()
Exemplo n.º 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)
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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
Exemplo n.º 15
0
 def setItems(self, items):
     block_signals = QSignalBlocker(self)  # noqa
     for i in range(self.count()):
         self.removeItem(0)
     self.addItems(items)
Exemplo n.º 16
0
 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()
Exemplo n.º 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()
Exemplo n.º 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
Exemplo n.º 19
0
 def pixel_size(self, value: int):
     with QSignalBlocker(self.pixelSize):
         self.pixelSize.setValue(value)