Exemplo n.º 1
0
    def mouseMoveEvent(self, event):
        """Override Qt method"""
        # FIXME: This was added by Pierre presumably to move tabs
        # between plugins, but righit now it's breaking the regular
        # Qt drag behavior for tabs, so we're commenting it for
        # now
        #if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        #   (event.pos() - self.__drag_start_pos).manhattanLength() > \
        #        QApplication.startDragDistance():
        #    drag = QDrag(self)
        #    mimeData = QMimeData()#

        #    ancestor_id = to_text_string(id(self.ancestor))
        #    parent_widget_id = to_text_string(id(self.parentWidget()))
        #    self_id = to_text_string(id(self))
        #    source_index = to_text_string(self.tabAt(self.__drag_start_pos))

        #    mimeData.setData("parent-id", to_binary_string(ancestor_id))
        #    mimeData.setData("tabwidget-id",
        #                     to_binary_string(parent_widget_id))
        #    mimeData.setData("tabbar-id", to_binary_string(self_id))
        #    mimeData.setData("source-index", to_binary_string(source_index))

        #    drag.setMimeData(mimeData)
        #    drag.exec_()
        QTabBar.mouseMoveEvent(self, event)
Exemplo n.º 2
0
    def __init__(self,
                 parent,
                 ancestor,
                 rename_tabs=False,
                 split_char='',
                 split_index=0):
        QTabBar.__init__(self, parent)
        self.ancestor = ancestor

        # To style tabs on Mac
        if sys.platform == 'darwin':
            self.setObjectName('plugin-tab')

        # Dragging tabs
        self.__drag_start_pos = QPoint()
        self.setAcceptDrops(True)
        self.setUsesScrollButtons(True)
        self.setMovable(True)

        # Tab name editor
        self.rename_tabs = rename_tabs
        if self.rename_tabs:
            # Creates tab name editor
            self.tab_name_editor = EditTabNamePopup(self, split_char,
                                                    split_index)
        else:
            self.tab_name_editor = None
Exemplo n.º 3
0
    def mouseMoveEvent(self, event):
        """Override Qt method"""
        # FIXME: This was added by Pierre presumably to move tabs
        # between plugins, but righit now it's breaking the regular
        # Qt drag behavior for tabs, so we're commenting it for
        # now
        #if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        #   (event.pos() - self.__drag_start_pos).manhattanLength() > \
        #        QApplication.startDragDistance():
        #    drag = QDrag(self)
        #    mimeData = QMimeData()#

        #    ancestor_id = to_text_string(id(self.ancestor))
        #    parent_widget_id = to_text_string(id(self.parentWidget()))
        #    self_id = to_text_string(id(self))
        #    source_index = to_text_string(self.tabAt(self.__drag_start_pos))

        #    mimeData.setData("parent-id", to_binary_string(ancestor_id))
        #    mimeData.setData("tabwidget-id",
        #                     to_binary_string(parent_widget_id))
        #    mimeData.setData("tabbar-id", to_binary_string(self_id))
        #    mimeData.setData("source-index", to_binary_string(source_index))

        #    drag.setMimeData(mimeData)
        #    drag.exec_()
        QTabBar.mouseMoveEvent(self, event)
Exemplo n.º 4
0
 def dragEnterEvent(self, event):
     """Override Qt method"""
     mimeData = event.mimeData()
     formats = list(mimeData.formats())
     if "parent-id" in formats and mimeData.data("parent-id").toLong()[0] == id(self.ancestor):
         event.acceptProposedAction()
     QTabBar.dragEnterEvent(self, event)
Exemplo n.º 5
0
 def mouseMoveEvent(self, event):
     """Override Qt method"""
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__drag_start_pos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         # Converting id's to long to avoid an OverflowError with PySide
         if PY2:
             ancestor_id = long(id(self.ancestor))
             parent_widget_id = long(id(self.parentWidget()))
             self_id = long(id(self))
         else:
             ancestor_id = id(self.ancestor)
             parent_widget_id = id(self.parentWidget())
             self_id = id(self)
         mimeData.setData("parent-id", QByteArray.number(ancestor_id))
         mimeData.setData("tabwidget-id",
                          QByteArray.number(parent_widget_id))
         mimeData.setData("tabbar-id", QByteArray.number(self_id))
         mimeData.setData("source-index", 
                      QByteArray.number(self.tabAt(self.__drag_start_pos)))
         drag.setMimeData(mimeData)
         drag.exec_()
     QTabBar.mouseMoveEvent(self, event)
Exemplo n.º 6
0
 def mouseMoveEvent(self, event):
     """Override Qt method"""
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__drag_start_pos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         # Converting id's to long to avoid an OverflowError with PySide
         if PY2:
             ancestor_id = long(id(self.ancestor))
             parent_widget_id = long(id(self.parentWidget()))
             self_id = long(id(self))
         else:
             ancestor_id = id(self.ancestor)
             parent_widget_id = id(self.parentWidget())
             self_id = id(self)
         mimeData.setData("parent-id", QByteArray.number(ancestor_id))
         mimeData.setData("tabwidget-id",
                          QByteArray.number(parent_widget_id))
         mimeData.setData("tabbar-id", QByteArray.number(self_id))
         mimeData.setData(
             "source-index",
             QByteArray.number(self.tabAt(self.__drag_start_pos)))
         drag.setMimeData(mimeData)
         drag.exec_()
     QTabBar.mouseMoveEvent(self, event)
Exemplo n.º 7
0
 def dragEnterEvent(self, event):
     """Override Qt method"""
     mimeData = event.mimeData()
     formats = list(mimeData.formats())
     if "parent-id" in formats and \
        mimeData.data("parent-id").toLong()[0] == id(self.ancestor):
         event.acceptProposedAction()
     QTabBar.dragEnterEvent(self, event)
Exemplo n.º 8
0
    def __init__(self, parent=None):
        """."""
        QTabBar.__init__(self, parent)

        self.setAcceptDrops(True)
        self.setToolTip('Double click to detach Tab.')
        self.setElideMode(Qt.ElideRight)
        self.setSelectionBehaviorOnRemove(QTabBar.SelectLeftTab)

        self.mouseCursor = QCursor()
Exemplo n.º 9
0
    def __init__(self, parent, ancestor):
        QTabBar.__init__(self, parent)
        self.ancestor = ancestor

        # To style tabs on Mac
        if sys.platform == 'darwin':
            self.setObjectName('plugin-tab')
            
        # Dragging tabs
        self.__drag_start_pos = QPoint()
        self.setAcceptDrops(True)
Exemplo n.º 10
0
    def __init__(self, parent, ancestor):
        QTabBar.__init__(self, parent)
        self.ancestor = ancestor

        # To style tabs on Mac
        if sys.platform == "darwin":
            self.setObjectName("plugin-tab")

        # Dragging tabs
        self.__drag_start_pos = QPoint()
        self.setAcceptDrops(True)
        self.setUsesScrollButtons(True)
Exemplo n.º 11
0
 def mouseDoubleClickEvent(self, event):
     """Override Qt method to trigger the tab name editor."""
     if self.rename_tabs is True and \
             event.buttons() == Qt.MouseButtons(Qt.LeftButton):
         # Tab index
         index = self.tabAt(event.pos())
         if index >= 0:
             # Tab is valid, call tab name editor
             self.tab_name_editor.edit_tab(index)
     else:
         # Event is not interesting, raise to parent
         QTabBar.mouseDoubleClickEvent(self, event)
Exemplo n.º 12
0
 def mouseDoubleClickEvent(self, event):
     """Override Qt method to trigger the tab name editor."""
     if self.rename_tabs is True and \
             event.buttons() == Qt.MouseButtons(Qt.LeftButton):
         # Tab index
         index = self.tabAt(event.pos())
         if index >= 0:
             # Tab is valid, call tab name editor
             self.tab_name_editor.edit_tab(index)
     else:
         # Event is not interesting, raise to parent
         QTabBar.mouseDoubleClickEvent(self, event)
Exemplo n.º 13
0
    def dropEvent(self, event):
        """Override Qt method"""
        mimeData = event.mimeData()
        index_from = int(mimeData.data("source-index"))
        index_to = self.tabAt(event.pos())
        if index_to == -1:
            index_to = self.count()
        if int(mimeData.data("tabbar-id")) != id(self):
            tabwidget_from = to_text_string(mimeData.data("tabwidget-id"))

            # We pass self object ID as a QString, because otherwise it would
            # depend on the platform: long for 64bit, int for 32bit. Replacing
            # by long all the time is not working on some 32bit platforms.
            # See spyder-ide/spyder#1094 and spyder-ide/spyder#1098.
            self.sig_move_tab[(str, int, int)].emit(tabwidget_from, index_from,
                                                    index_to)
            event.acceptProposedAction()
        elif index_from != index_to:
            self.sig_move_tab.emit(index_from, index_to)
            event.acceptProposedAction()
        QTabBar.dropEvent(self, event)
Exemplo n.º 14
0
 def dropEvent(self, event):
     """Override Qt method"""
     mimeData = event.mimeData()
     index_from = int(mimeData.data("source-index"))
     index_to = self.tabAt(event.pos())
     if index_to == -1:
         index_to = self.count()
     if int(mimeData.data("tabbar-id")) != id(self):
         tabwidget_from = to_text_string(mimeData.data("tabwidget-id"))
         
         # We pass self object ID as a QString, because otherwise it would 
         # depend on the platform: long for 64bit, int for 32bit. Replacing 
         # by long all the time is not working on some 32bit platforms 
         # (see Issue 1094, Issue 1098)
         self.sig_move_tab[(str, int, int)].emit(tabwidget_from, index_from,
                                                 index_to)
         event.acceptProposedAction()
     elif index_from != index_to:
         self.sig_move_tab.emit(index_from, index_to)
         event.acceptProposedAction()
     QTabBar.dropEvent(self, event)
Exemplo n.º 15
0
    def __init__(self, parent, ancestor, rename_tabs=False, split_char='',
                 split_index=0):
        QTabBar.__init__(self, parent)
        self.ancestor = ancestor

        # To style tabs on Mac
        if sys.platform == 'darwin':
            self.setObjectName('plugin-tab')
            
        # Dragging tabs
        self.__drag_start_pos = QPoint()
        self.setAcceptDrops(True)
        self.setUsesScrollButtons(True)

        # Tab name editor
        self.rename_tabs = rename_tabs
        if self.rename_tabs:
            # Creates tab name editor
            self.tab_name_editor = EditTabNamePopup(self, split_char,
                                                    split_index)
        else:
            self.tab_name_editor = None
Exemplo n.º 16
0
    def mouseMoveEvent(self, event):
        """Override Qt method"""
        if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
           (event.pos() - self.__drag_start_pos).manhattanLength() > \
                QApplication.startDragDistance():
            drag = QDrag(self)
            mimeData = QMimeData()

            ancestor_id = to_text_string(id(self.ancestor))
            parent_widget_id = to_text_string(id(self.parentWidget()))
            self_id = to_text_string(id(self))
            source_index = to_text_string(self.tabAt(self.__drag_start_pos))

            mimeData.setData("parent-id", to_binary_string(ancestor_id))
            mimeData.setData("tabwidget-id",
                             to_binary_string(parent_widget_id))
            mimeData.setData("tabbar-id", to_binary_string(self_id))
            mimeData.setData("source-index", to_binary_string(source_index))

            drag.setMimeData(mimeData)
            drag.exec_()
        QTabBar.mouseMoveEvent(self, event)
Exemplo n.º 17
0
    def __init__(self, parent=None):
        super(AxesTabWidgetView, self).__init__(parent=parent)

        self.ui = load_ui(__file__,
                          'axes_tab_widget.ui',
                          baseinstance=self)
        self.color_selector_widget = ColorSelector(parent=self)
        self.color_selector_layout.replaceWidget(self.color_selector_dummy_widget,
                                                 self.color_selector_widget)
        self.setAttribute(Qt.WA_DeleteOnClose, True)

        # QTabBar cannot be created in QTDesigner
        # QTabWidget not suitable because we reuse controls for each axis
        self.axis_tab_bar = QTabBar(parent=self)
        self.x_tab = self.axis_tab_bar.addTab("x")
        self.y_tab = self.axis_tab_bar.addTab("y")
        self.z_tab = self.axis_tab_bar.addTab("z")
        self.axis_tab_bar_layout.replaceWidget(self.dummy_axis_tab_bar, self.axis_tab_bar)

        self.lower_limit_validator = LineEditDoubleValidator(self.lower_limit_line_edit, 0.0)
        self.upper_limit_validator = LineEditDoubleValidator(self.upper_limit_line_edit, 1.0)
        self.lower_limit_line_edit.setValidator(self.lower_limit_validator)
        self.upper_limit_line_edit.setValidator(self.upper_limit_validator)
Exemplo n.º 18
0
 def mousePressEvent(self, event):
     """Reimplement Qt method"""
     if event.button() == Qt.LeftButton:
         self.__drag_start_pos = QPoint(event.pos())
     QTabBar.mousePressEvent(self, event)
Exemplo n.º 19
0
 def sizeHint(self):
     """Return the size of the TabBar with increased width for the plus button."""
     sizeHint = QTabBar.sizeHint(self)
     width = sizeHint.width()
     height = sizeHint.height()
     return QSize(width+25, height)
Exemplo n.º 20
0
class AxesTabWidgetView(QWidget):

    def __init__(self, parent=None):
        super(AxesTabWidgetView, self).__init__(parent=parent)

        self.ui = load_ui(__file__,
                          'axes_tab_widget.ui',
                          baseinstance=self)
        self.color_selector_widget = ColorSelector(parent=self)
        self.color_selector_layout.replaceWidget(self.color_selector_dummy_widget,
                                                 self.color_selector_widget)
        self.setAttribute(Qt.WA_DeleteOnClose, True)

        # QTabBar cannot be created in QTDesigner
        # QTabWidget not suitable because we reuse controls for each axis
        self.axis_tab_bar = QTabBar(parent=self)
        self.x_tab = self.axis_tab_bar.addTab("x")
        self.y_tab = self.axis_tab_bar.addTab("y")
        self.z_tab = self.axis_tab_bar.addTab("z")
        self.axis_tab_bar_layout.replaceWidget(self.dummy_axis_tab_bar, self.axis_tab_bar)

        self.lower_limit_validator = LineEditDoubleValidator(self.lower_limit_line_edit, 0.0)
        self.upper_limit_validator = LineEditDoubleValidator(self.upper_limit_line_edit, 1.0)
        self.lower_limit_line_edit.setValidator(self.lower_limit_validator)
        self.upper_limit_line_edit.setValidator(self.upper_limit_validator)

    def populate_select_axes_combo_box(self, axes_names):
        self.select_axes_combo_box.addItems(axes_names)

    def set_selected_axes_selector_text(self, new_text):
        """Replace the text of the selected item in the combo box"""
        current_index = self.select_axes_combo_box.currentIndex()
        self.select_axes_combo_box.setItemText(current_index, new_text)

    def get_selected_ax_name(self):
        return self.select_axes_combo_box.currentText()

    def get_properties(self):
        return AxProperties.from_view(self)

    def get_title(self):
        return self.axes_title_line_edit.text()

    def set_title(self, title):
        self.axes_title_line_edit.setText(title)

    def get_show_minor_ticks(self):
        return self.show_minor_ticks_check_box.isChecked()

    def set_show_minor_ticks(self, check):
        self.show_minor_ticks_check_box.setChecked(check)

    def get_show_minor_gridlines(self):
        return self.show_minor_gridlines_check_box.isChecked()

    def set_show_minor_gridlines(self, check):
        self.show_minor_gridlines_check_box.setChecked(check)

    def set_minor_grid_tick_controls_visible(self, visible):
        self.show_minor_gridlines_check_box.setVisible(visible)
        self.show_minor_ticks_check_box.setVisible(visible)

    def set_minor_gridlines_check_box_enabled(self, enabled):
        self.show_minor_gridlines_check_box.setEnabled(enabled)

    def get_lower_limit(self):
        return float(self.lower_limit_line_edit.text())

    def get_upper_limit(self):
        return float(self.upper_limit_line_edit.text())

    def get_label(self):
        return self.label_line_edit.text()

    def get_scale(self):
        return self.scale_combo_box.currentText()

    def get_canvas_color(self):
        return self.color_selector_widget.get_color()

    def get_autoscale_enabled(self):
        return self.autoscale.isChecked()

    def get_z_axis_selector_checked(self):
        return self.axis_tab_bar.currentIndex() == 2

    def set_lower_limit(self, limit):
        self.lower_limit_validator.last_valid_value = str(limit)
        self.lower_limit_line_edit.setText(str(limit))

    def set_upper_limit(self, limit):
        self.upper_limit_validator.last_valid_value = str(limit)
        self.upper_limit_line_edit.setText(str(limit))

    def set_label(self, label):
        self.label_line_edit.setText(label)

    def set_scale(self, scale):
        self.scale_combo_box.setCurrentText(scale.title())

    def set_canvas_color(self, color_hex):
        self.color_selector_widget.set_color(color_hex)

    def set_autoscale_enabled(self, enabled):
        self.autoscale.setChecked(enabled)

    def set_limit_input_enabled(self, enabled):
        self.lower_limit_line_edit.setEnabled(enabled)
        self.upper_limit_line_edit.setEnabled(enabled)

    def set_z_axis_selector_enabled(self, enabled):
        self.axis_tab_bar.setTabEnabled(2, enabled)

    def set_x_axis_selector_click(self):
        self.axis_tab_bar.setCurrentIndex(0)

    def set_scale_combo_box_enabled(self, eneabled):
        self.scale_combo_box.setEnabled(eneabled)

    def get_axis(self):
        return "xyz"[self.axis_tab_bar.currentIndex()]
Exemplo n.º 21
0
 def sizeHint(self):
     """Return the size of the TabBar with increased width for the plus button."""
     sizeHint = QTabBar.sizeHint(self)
     width = sizeHint.width()
     height = sizeHint.height()
     return QSize(width + 25, height)
Exemplo n.º 22
0
 def mousePressEvent(self, event):
     """Reimplement Qt method"""
     if event.button() == Qt.LeftButton:
         self.__drag_start_pos = QPoint(event.pos())
     QTabBar.mousePressEvent(self, event)