def last_visible_row(self):
     geom = self.viewport().geometry()
     for y in xrange(geom.bottom(), geom.bottom() - 2 * self.spacing(), -5):
         for x in xrange(geom.left(), (self.spacing() * 2) + geom.left(),
                         5):
             ans = self.indexAt(QPoint(x, y)).row()
             if ans > -1:
                 item_width = self.delegate.item_size.width(
                 ) + 2 * self.spacing()
                 return ans + (geom.width() // item_width)
 def __add_node(self, node):
     widget = NodeWidget(node, parent=self)
     # Set initial position centered to given point
     widget.move(QPoint(node.x - widget.width() / 2,
                        node.y - widget.height() / 2))
     widget.observe(self.__on_node_click)
     self.__model_widget_map[node] = widget
     self.__widget_model_map[widget] = node
     widget.show()
     self.__initalize_label(node)
Beispiel #3
0
    def __InitData(self):

        self.__size = QSize(900, 700)

        # 新建QPixmap作为画板,尺寸为__size
        self.__board = QPixmap(self.__size)
        self.__board.fill(Qt.white)  # 用白色填充画板

        self.__IsEmpty = True  # 默认为空画板
        self.EraserMode = False  # 默认为禁用橡皮擦模式

        self.__lastPos = QPoint(0, 0)  # 上一次鼠标位置
        self.__currentPos = QPoint(0, 0)  # 当前的鼠标位置

        self.__painter = QPainter()  # 新建绘图工具

        self.__thickness = 10  # 默认画笔粗细为10px
        self.__penColor = QColor("black")  # 设置默认画笔颜色为黑色
        self.__colorList = QColor.colorNames()  # 获取颜色列表
 def __init__(self):
     super(ImageBox, self).__init__()
     self.img = None
     self.scaled_img = None
     self.point = QPoint(0, 0)
     self.start_pos = None
     self.end_pos = None
     self.left_click = False
     self.scale = 1
     self.SR_flag = False
Beispiel #5
0
 def click_cancel(widget):
     test = QTestHelper()
     test.sleep()
     btn = [
         b for b in widget.buttons()
         if "Cancel" in b.text() or "Отмена" in  # i18n
         b.text().replace("&", "")
     ][0]
     test.mouse_click(btn, QPoint(1, 1))
     self.assertEqual(widget.text(), "CORRECT")
Beispiel #6
0
 def mouse_move_event_move(self, mouse_event):
     position = QPoint(mouse_event.x(), mouse_event.y())
     position = self.mapToGlobal(position)
     position = self.ui.patternFrame.mapFromGlobal(position)
     if not self.move_mouse.is_started():
         self.move_mouse.start_drag(position)
     else:
         self.move_mouse.move_drag(position)
     if self.pattern is not None:
         self.pattern.move_selected_starfishes(self.move_mouse.delta())
Beispiel #7
0
    def test_insert_image(self):
        diff(self.text.toHtml())
        self.test.wrd_click(self.text, "!!!")

        image = self.editor.view.toolbar.controls["image"]
        with patch.object(QFileDialog, "exec_", returning_value=True):
            self.test.mouse_click(image, QPoint(1, 1))
        changed = diff(self.text.toHtml())
        self.assertTrue('image' in changed["add"])
        self.test.sleep()
Beispiel #8
0
 def mouse_dbl_click(self,
                     widget: QWidget,
                     pos: QPoint = QPoint(0, 0),
                     btn: int = Qt.LeftButton,
                     delay: float = 0) -> None:
     """Send mouse double click to widget"""
     widget.setFocus()
     mouse_dbl = self._mouse_event(QEvent.MouseButtonDblClick, pos, btn)
     QCoreApplication.postEvent(widget, mouse_dbl)
     self.sleep(delay)
Beispiel #9
0
    def __init__(self, parent=None):
        super().__init__(parent)
        self._enabled = False
        self._timeout = 0
        self._notifType = 0  # Type
        self._position = QPoint()

        self._desktopNotif = None  # QPointer<DesktopNotification>
        self._uint = 0  # quint32

        self.loadSettings()
Beispiel #10
0
    def test_clear_format(self):
        clear = self.text.toHtml()
        self.test.wrd_d_click(self.text, "WdItOr")
        bold = self.editor.view.toolbar.controls["bold"]
        self.test.mouse_click(bold, QPoint(1, 1))
        self.test.wrd_d_click(self.text, "")
        self.assertNotEqual(clear, self.text.toHtml())

        eraser = self.editor.view.toolbar.controls["eraser"]
        with patch.object(QMessageBox, 'question',
                          return_value=QMessageBox.No):
            self.test.mouse_click(eraser, QPoint(1, 1))
        self.assertNotEqual(clear, self.text.toHtml())

        with patch.object(QMessageBox,
                          'question',
                          return_value=QMessageBox.Yes):
            self.test.mouse_click(eraser, QPoint(1, 1))
        self.assertEqual(clear, self.text.toHtml())
        self.test.sleep()
 def __reposition(self):
     """
     Reposition on parent widget based on own size and owner position.
     """
     center = self.__owner_widget.get_center()
     p = QPoint(center.x()
                + self.__owner.label_dx
                - self.width() / 2,
                center.y() + self.__owner.label_dy
                - self.height() / 2)
     self.move(p)
Beispiel #12
0
 def branch_transformed_event(self, event: CurvedBranchTransformedEvent):
     """
     Triggered after branch has been transformed.
     Makes sure the spline positions is udpated accordingly.
     """
     if self.get_branch() is event.branch:
         new_spline2 = QPoint(event.branch.spline2_x,
                              event.branch.spline2_y)
         if not self._spline_abs == new_spline2:
             self._spline_abs = new_spline2
             self.updateGeometry()
Beispiel #13
0
 def imagen(self, nombre):
     self.imag = nombre
     self.edicion.hide()
     self.edicion.origin = QPoint()
     self.edicion.ruber = QRubberBand(QRubberBand.Rectangle, self.edicion)
     self.pixmap4 = QPixmap(nombre).scaled(781, 621)
     self.pixmap = self.pixmap4.toImage()
     self.edicion.setPixmap(self.pixmap4)
     self.edicion.setAlignment(Qt.AlignCenter)
     self.edicion.show()
     self.show()
Beispiel #14
0
    def updateGeometry(self):
        # Get absolute position of handle by spline
        __handle_pos_abs = rotate_point(
            self._origin_abs,
            self._spline_abs,
            math.radians(180))

        # Calculate bounding rect including circle and line
        rect = QRect(self._origin_abs, __handle_pos_abs).normalized()  # Line
        circle_offset = QPoint(self.__circle_width + self.__radius,
                               self.__circle_width + self.__radius)
        circle_rect = QRect(__handle_pos_abs - circle_offset,  # Circle
                            __handle_pos_abs + circle_offset).normalized()

        self.setGeometry(rect.united(circle_rect))

        self.__handle_pos = self.mapFromParent(__handle_pos_abs)
        self._origin = self.mapFromParent(self._origin_abs)
        self._spline = self.mapFromParent(self._spline_abs)

        # Create line
        self.line_path = QPainterPath()
        self.line_path.moveTo(self.__handle_pos)
        self.line_path.lineTo(self._origin)

        # Create and set mask
        circle_mask_rect = QRect(__handle_pos_abs - circle_offset,  # Circle
                                 __handle_pos_abs + circle_offset).normalized()
        circle_region = QRegion(circle_mask_rect, QRegion.Ellipse)
        offset = self.mapFromParent(QPoint())
        circle_region.translate(offset)

        # Create stroke to give space for anti aliasing pixels of line
        stroker = QPainterPathStroker()
        stroker.setWidth(4)
        line_stroke = stroker.createStroke(self.line_path)

        mask = circle_region.united(
            QRegion(line_stroke.toFillPolygon().toPolygon()))
        self.setMask(mask)
        super().updateGeometry()
Beispiel #15
0
    def test_hidden_char(self):
        self.test.wrd_d_click(self.text, "Hello")

        fn = self.editor.view.toolbar.controls["font-size"]
        self.test.key_click(fn, Qt.Key_A, "", Qt.ControlModifier)
        self.test.key_clicks(fn, "5", delay=1)

        y = self.test.get_xy_for_word(self.text, "YOU").y()
        self.test.wrd_d_click(self.text, "WdItOr")

        invis_sym = self.editor.view.toolbar.controls["invisible-symbol"]
        self.test.mouse_click(invis_sym, QPoint(1, 1))

        # reduced the size of the 1st line (with word "Hello")
        y1 = self.test.get_xy_for_word(self.text, "YOU").y()
        self.test.wrd_d_click(self.text, "")

        self.assertNotEqual(y, y1)
        self.test.sleep()
        # switch off (for next tests)
        self.test.mouse_click(invis_sym, QPoint(1, 1))
 def mousePressEvent(self, event):
     index = self.indexAt(QPoint(event.pos().x(), event.pos().y()))
     row, _ = index.row(), index.column()
     if row < 0:
         return
     self.setCurrentIndex(index)
     if event.buttons() == Qt.RightButton:
         rmenu = QMenu()
         rmenu.setAttribute(Qt.WA_DeleteOnClose)
         delete_action = rmenu.addAction("删除")
         delete_action.triggered.connect(self.delete_row_record)
         rmenu.exec_(QCursor.pos())
Beispiel #17
0
    def __InitData(self):

        # self.__size = QSize(480,460)
        # self.__size = QSize(280, 280)
        # self.__size = QSize(600, 600)
        self.__size = QSize(280, 280)
        self.__board = QPixmap(self.__size)  #新建QPixmap作为画板,宽350px,高250px
        self.__board.fill(Qt.black)  #用白色填充画板

        self.__IsEmpty = True  #默认为空画板
        self.EraserMode = False  #默认为禁用橡皮擦模式

        self.__lastPos = QPoint(0, 0)
        self.__currentPos = QPoint(0, 0)

        self.__painter = QPainter()
        self.__painter.setRenderHints(QPainter.Antialiasing, True)

        self.__thickness = 60  #默认画笔粗细为20px
        self.__penColor = QColor("white")  #设置默认画笔颜色为黑色
        self.__colorList = QColor.colorNames()  #获取颜色列表
Beispiel #18
0
    def paintEvent(self, event: QPaintEvent):
        # Init painter
        pen = QPen()
        pen.setWidth(self.__pen_width)
        pen.setColor(self.__line_color)
        painter = QPainter()
        painter.begin(self)
        painter.setPen(pen)

        # Horizontal lines
        start_h = QPoint(0, self.__offset.y())
        end_h = QPoint(self.width(), self.__offset.y())
        distance_h = QPoint(0, self.__grid_size)

        # Vertical lines
        start_v = QPoint(self.__offset.x(), 0)
        end_v = QPoint(self.__offset.x(), self.height())
        distance_v = QPoint(self.__grid_size, 0)

        while start_h.y() < self.height():
            painter.drawLine(start_h, end_h)
            start_h += distance_h
            end_h += distance_h

        while start_v.x() < self.width():
            painter.drawLine(start_v, end_v)
            start_v += distance_v
            end_v += distance_v

        painter.end()
Beispiel #19
0
    def test_all(self):
        self.lbl.setText("CURRENT TEST: test_all")

        # no select color
        self.test.mouse_click(self.cp, QPoint(1, 1))
        self.test.sleep()
        self.test.mouse_click(self.cw, QPoint(-1, 1))
        self.test.sleep()
        self.assertEqual(self.selected_colors, [])

        # select first button in colors grid
        self.test.mouse_click(self.cp, QPoint(1, 1))
        self.test.sleep()
        self.test.mouse_click(self.cw.clrbtn[0], QPoint(1, 1))
        self.test.sleep()
        self.assertEqual(self.selected_colors[-1], self.cp._colors[0])

        # select other color
        with patch.object(self.cp, '_get_color', return_value=QColor("blue")):
            self.test.mouse_click(self.cp, QPoint(1, 1))
            self.test.sleep()
            self.test.mouse_click(self.cw.clrbtn[-1], QPoint(3, 3))
            self.test.sleep()
        self.assertEqual(self.selected_colors[-1], QColor("blue").name())

        self.test.sleep()
    def __init__(self, bookmark, parent=None):
        super().__init__(parent)
        self._bookmark = bookmark  # BookmarkItem
        self._window = None  # BrowserWindow

        self._showOnlyIcon = False
        self._showOnlyText = True
        self._dragStartPosition = QPoint()

        self._init()

        if self._bookmark.isFolder():
            self.acceptDrops(True)
Beispiel #21
0
    def mouse_move_event_select(self, mouse_event):
        position = QPoint(mouse_event.x(), mouse_event.y())
        position = self.mapToGlobal(position)
        position = self.ui.patternFrame.mapFromGlobal(position)
        position = self._transformations.point_from_screen(position)
        if not self.select_mouse.is_started():
            self.select_mouse.start_drag(position)
        else:
            self.select_mouse.move_drag(position)

        if self.pattern is not None:
            selection_rect = QRectF(self.select_mouse.start_position(), self.select_mouse.end_position())
            self.pattern.select_in_rect(selection_rect)
 def __init__(self):
     super(ImageBox, self).__init__()
     self.img = None
     self.img_array = None
     self.img_array_HLS = None
     self.width = None
     self.height = None
     self.scaled_img = None
     self.point = QPoint(0, 0)
     self.start_pos = None
     self.end_pos = None
     self.left_click = False
     self.scale = 1
 def open_modal(self):
     if self.sort_mode or self.filter_mode:
         pos = self.mapToGlobal(QPoint(0, self.height()))
         if self.filter_modal is None:
             self.filter_modal = FilterModal(parent=self,
                                             title=self.title,
                                             name_filter=self.name_filter,
                                             pos=pos,
                                             sort_mode=self.sort_mode,
                                             filter_mode=self.filter_mode,
                                             width=self.width())
             self.filter_modal.WANT_TO_CLOSE_SIGNAL.connect(
                 self.close_modal)
Beispiel #24
0
    def paintEvent(self, ev):
        offset = QPoint(0, 0)
        p = QPainter(self)
        p.setClipRect(ev.rect())
        bottom = self.rect().bottom()

        if self.results:
            for i, (prefix, full, text) in enumerate(self.results):
                size = prefix.size()
                if offset.y() + size.height() > bottom:
                    break
                self.max_result = i
                offset.setX(0)
                if i in (self.current_result, self.mouse_hover_result):
                    p.save()
                    if i != self.current_result:
                        p.setPen(Qt.PenStyle.DotLine)
                    p.drawLine(offset, QPoint(self.width(), offset.y()))
                    p.restore()
                offset.setY(offset.y() + self.MARGIN // 2)
                p.drawStaticText(offset, prefix)
                offset.setX(self.maxwidth + 5)
                p.drawStaticText(offset, self.divider)
                offset.setX(offset.x() + self.divider.size().width())
                p.drawStaticText(offset, full)
                offset.setY(offset.y() + size.height() + self.MARGIN // 2)
                if i in (self.current_result, self.mouse_hover_result):
                    offset.setX(0)
                    p.save()
                    if i != self.current_result:
                        p.setPen(Qt.PenStyle.DotLine)
                    p.drawLine(offset, QPoint(self.width(), offset.y()))
                    p.restore()
        else:
            p.drawText(self.rect(), Qt.AlignmentFlag.AlignCenter,
                       _('No results found'))

        p.end()
Beispiel #25
0
    def popup(self, select_first=True):
        if self.disable_popup:
            return
        p = self
        m = p.model()
        widget = self.completer_widget()
        if widget is None:
            return
        screen = QApplication.desktop().availableGeometry(widget)
        h = (p.sizeHintForRow(0) * min(self.max_visible_items, m.rowCount()) +
             3) + 3
        hsb = p.horizontalScrollBar()
        if hsb and hsb.isVisible():
            h += hsb.sizeHint().height()

        rh = widget.height()
        pos = widget.mapToGlobal(QPoint(0, widget.height() - 2))
        w = min(widget.width(), screen.width())

        if (pos.x() + w) > (screen.x() + screen.width()):
            pos.setX(screen.x() + screen.width() - w)
        if pos.x() < screen.x():
            pos.setX(screen.x())

        top = pos.y() - rh - screen.top() + 2
        bottom = screen.bottom() - pos.y()
        h = max(h, p.minimumHeight())
        if h > bottom:
            h = min(max(top, bottom), h)

            if top > bottom:
                pos.setY(pos.y() - h - rh + 2)

        p.setGeometry(pos.x(), pos.y(), w, h)

        if (tweaks['preselect_first_completion'] and select_first
                and not self.currentIndex().isValid()
                and self.model().rowCount() > 0):
            self.setCurrentIndex(self.model().index(0))

        if not p.isVisible():
            if isosx and get_osx_version() >= (10, 9, 0):
                # On mavericks the popup menu seems to use a font smaller than
                # the widgets font, see for example:
                # https://bugs.launchpad.net/bugs/1243761
                fp = QFontInfo(widget.font())
                f = QFont()
                f.setPixelSize(fp.pixelSize())
                self.setFont(f)
            p.show()
Beispiel #26
0
 def loadSettings(self):
     settings = Settings()
     settings.beginGroup('Notifications')
     self._enabled = settings.value('Enabled', True)
     self._timeout = settings.value('Timeout', 6000)
     if const.OS_UNIX:  # && !defined(DISABLE_DBUS)
         if settings.value('UseNativeDesktop', True):
             self._notifType = self.DesktopNative
         else:
             self._notifType = self.PopupWidget
     else:
         self._notifType = self.PopupWidget
     self._position = settings.value('Position', QPoint(10, 10), type=QPoint)
     settings.endGroup()
Beispiel #27
0
    def __init__(self, csvfile):
        super(RtReadDataBase, self).__init__(csvfile)
        for name in self.db.keys():
            self.db[name]['max'] = float(self.db[name]['max'])
            self.db[name]['min'] = float(self.db[name]['min'])
            self.db[name]['wr'] = True if (self.db[name]['wr']
                                           == 'TRUE') else False
            self.db[name]['value'] = None
            self.db[name]['step'] = float(self.db[name]['step'])

            args = self.db[name]['valid'].split('~')
            x = float(args[0])
            y = float(args[1])
            self.db[name]['valid'] = QPoint(x, y)
Beispiel #28
0
 def draw_circle(self, qp):
     if self.do_paint:
         qp.setBrush(QColor(255, 255, 0))
         qp.setPen(PyQt5.QtCore.Qt.NoPen)
         radius = random.randint(10, 100)
         self.circles.append([
             QPoint(random.randint(radius,
                                   self.width() - radius),
                    random.randint(radius,
                                   self.height() - radius)), radius, radius
         ])
         for i in self.circles:
             qp.drawEllipse(*i)
         self.do_paint = False
Beispiel #29
0
 def drag_data(self):
     m = self.model()
     rows = self.selectionModel().selectedRows()
     paths = [force_unicode(p, enc=filesystem_encoding) for p in m.paths(rows) if p]
     md = QMimeData()
     md.setData('application/calibre+from_device', 'dummy')
     md.setUrls([QUrl.fromLocalFile(p) for p in paths])
     drag = QDrag(self)
     drag.setMimeData(md)
     cover = self.drag_icon(m.cover(self.currentIndex().row()), len(paths) >
             1)
     drag.setHotSpot(QPoint(-15, -15))
     drag.setPixmap(cover)
     return drag
Beispiel #30
0
    def mousePressEvent(self, event):
        '''
        @param: event QMouseEvent
        '''
        super().mousePressEvent(event)

        if gVar.app.plugins().processMousePress(const.ON_TabBar, self, event):
            return

        if event.buttons() == Qt.LeftButton and not self.emptyArea(
                event.pos()):
            self._dragStartPosition = event.pos()
        else:
            self._dragStartPosition = QPoint()