Beispiel #1
0
    def setToolTip(self, active = True):
        '''Turn on/off the tooltips for this Widget.
        The tooltip will display the index and value for the matrix
        at the current mouse position.
        
        Arguments
        ---------
        active : bool or str
            Will turn the tooltips on or off. When a string is provided
            that string will be used as tooltip. The string can have
            up to three placeholders, being filled with 1=row, 2=column,
            3=matrix value.
        '''

        self.toolTipActive = active != False
        
        if isinstance(active, str):
            self.toolTipText = active
        elif active:
            self.toolTipText = "C({},{}) = {:.2f}"
        else:
            self.toolTipText = ""

        self.setMouseTracking(self.toolTipActive)

        if not self.toolTipActive:
            QToolTip.hideText()
Beispiel #2
0
 def mouseMoveEvent(self, event):
     if self._show_tooltips:
         tooltip = self.get_tooltip_at_mouse_position(event.pos())
         if not tooltip:
             QToolTip.hideText()
         self.setToolTip(tooltip)
     return super().mouseMoveEvent(event)
Beispiel #3
0
 def eventFilter(self, obj, event):
     # text = ''
     # if event.type() == QEvent.UpdateRequest:text = 'UpdateRequest'
     # elif event.type() == QEvent.Leave:text = 'Leave'
     # elif event.type() == QEvent.Enter:text = 'Enter'
     # elif event.type() == QEvent.ToolTip:text = 'ToolTip'
     # elif event.type() == QEvent.StatusTip:text = 'StatusTip'
     # elif event.type() == QEvent.ZOrderChange:text = 'ZOrderChange'
     # elif event.type() == QEvent.Show:text = 'Show'
     # elif event.type() == QEvent.ShowToParent:text = 'ShowToParent'
     # elif event.type() == QEvent.UpdateLater:text = 'UpdateLater'
     # elif event.type() == QEvent.MouseMove:text = 'MouseMove'
     # elif event.type() == QEvent.Close:text = 'Close'
     # elif event.type() == QEvent.Hide:text = 'Hide'
     # elif event.type() == QEvent.HideToParent:text = 'HideToParent'
     # elif event.type() == QEvent.Timer:text = 'Timer'
     # elif event.type() == QEvent.Paint:text = 'Paint'
     # elif event.type() == QEvent.MouseButtonPress:
     #     text = 'MouseButtonPress(%d %d)'%(event.globalPos().x(), event.globalPos().y())
     # logging.info("%s %d %s"%(self.title(), event.type(), text))
     if obj == self:
         if event.type() == QEvent.WindowDeactivate:
             self.Hide()
         elif event.type() == QEvent.ToolTip:
             act = self.activeAction()
             if act != 0 and act.toolTip() != act.text():
                 QToolTip.showText(event.globalPos(), act.toolTip())
             else:
                 QToolTip.hideText()
     return False
Beispiel #4
0
 def makeTT(self, mpos, curs):
     """ Converts a mouse position and text cursor into a tooltip by getting the true residue IDs """
     # Such elegance.
     resn = curs.selectedText()
     pos = self.textCursor().position()
     row_pos = self.textCursor().positionInBlock()
     resids = self.getSeqPos(pos, row_pos)
     if resids and resn in [
             'A', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N',
             'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'Y'
     ]:
         string = []
         for i, each in enumerate(resids):
             name = self.names[each[0]]
             resi = each[1]
             if resi == 0:
                 resi = "N/A"
             text = str(resi) + " of " + name
             if i > 0:
                 text = " --->" + text
             string.append(text)
             if 0 < i < len(resids):
                 string.insert(-1, "\n")
         string = "".join(string)
         QToolTip.showText(mpos, resn + " at " + string)
         del string
     else:
         QToolTip.hideText()
     del mpos, curs, resn, pos, row_pos, resids,
Beispiel #5
0
    def on_mouse_moved(self, pos, index):
        # This method controls for which rows the buttons/box should be drawn
        if self.hover_index != index:
            self.hover_index = index
            if not self.button_box.contains(pos):
                # Hide the tooltip when cell hover changes
                QToolTip.hideText()

        # Check if we hover over the 'edit tags' button
        new_hovering_state = False
        if (self.hover_index != self.no_index and self.hover_index.column()
                == index.model().column_position[Column.NAME]):
            if index in index.model().edit_tags_rects:
                rect = index.model().edit_tags_rects[index]
                if rect.contains(pos):
                    QApplication.setOverrideCursor(
                        QCursor(Qt.PointingHandCursor))
                    new_hovering_state = True

        if new_hovering_state != self.hovering_over_tag_edit_button:
            self.redraw_required.emit(index, False)
        self.hovering_over_tag_edit_button = new_hovering_state

        for controls in self.controls:
            controls.on_mouse_moved(pos, index)
Beispiel #6
0
    def mouseMoveEvent(self, event):
        """
        When mouse moves, we show tooltip when appropriate.
        """
        textEditView.mouseMoveEvent(self, event)

        onRect = [r for r in self.clickRects if r.rect.contains(event.pos())]

        if not onRect:
            qApp.restoreOverrideCursor()
            QToolTip.hideText()
            return

        ct = onRect[0]
        if not qApp.overrideCursor():
            qApp.setOverrideCursor(Qt.PointingHandCursor)

        if ct.regex == self.automaticLinkRegex:
            tooltip = ct.texts[2] or ct.texts[4]

        elif ct.regex == self.imageRegex:
            tt = ("<p><b>" + ct.texts[1] + "</b></p>" +
                  "<p><img src='data:image/png;base64,{}'></p>")
            tooltip = None
            pos = event.pos() + QPoint(0, ct.rect.height())
            ImageTooltip.fromUrl(ct.texts[2], pos, self)

        elif ct.regex == self.inlineLinkRegex:
            tooltip = ct.texts[1] or ct.texts[2]

        if tooltip:
            tooltip = self.tr("{} (CTRL+Click to open)").format(tooltip)
            QToolTip.showText(self.mapToGlobal(event.pos()), tooltip)
    def execute_queries(self, query=''):
        """ This function executes queries """

        # Hide tooltip if visible
        if QToolTip.isVisible():
            QToolTip.hideText()

        # If text is selected, then this text is the query,
        # otherwise the query is all text that has the editor
        editor_widget = self.currentWidget().get_editor()
        if editor_widget.textCursor().hasSelection():
            query = editor_widget.textCursor().selectedText()
        else:
            query = editor_widget.toPlainText()

        relations = self.currentWidget().relations
        central = Pireal.get_service("central")
        table_widget = central.get_active_db().table_widget

        # Restore
        relations.clear()
        self.currentWidget().clear_results()

        # Parse query
        sc = scanner.Scanner(query)
        lex = lexer.Lexer(sc)
        try:
            par = parser.Parser(lex)
            interpreter = parser.Interpreter(par)
            interpreter.clear()
            interpreter.to_python()
        except Exception as reason:
            pireal = Pireal.get_service("pireal")
            pireal.show_error_message(self.parse_error(reason.__str__()))
            return
        relations.update(table_widget.relations)
        for relation_name, expression in list(interpreter.SCOPE.items()):
            if relation_name in relations:
                QMessageBox.critical(self,
                                     self.tr("Query Error"),
                                     self.tr("<b>{}</b> is a duplicate "
                                             "relation name.<br><br> "
                                             "Please choose a unique name "
                                             "and re-execute the "
                                             "queries.".format(
                                                 relation_name)))
                del interpreter.SCOPE[relation_name]
                return
            try:
                new_relation = eval(expression, {}, relations)

            except Exception as reason:
                pireal = Pireal.get_service("pireal")
                pireal.show_error_message(self.parse_error(reason.__str__()),
                                          syntax_error=False)
                return

            relations[relation_name] = new_relation
            self.__add_table(new_relation, relation_name)
Beispiel #8
0
    def _on_key_released(self, event):
        if event.key() in (Qt.Key_ParenLeft, Qt.Key_Comma):
            self._neditor._intellisense.process("signatures")

        elif event.key() in (Qt.Key_ParenRight, Qt.Key_Return, Qt.Key_Left,
                             Qt.Key_Right, Qt.Key_Down, Qt.Key_Up,
                             Qt.Key_Backspace, Qt.Key_Escape):
            QToolTip.hideText()
Beispiel #9
0
    def mouseMoveEvent(self, event):
        blockNumber = self._qpart.cursorForPosition(event.pos()).blockNumber()
        if blockNumber in self._qpart._lintMarks:
            msgType, msgText = self._qpart._lintMarks[blockNumber]
            QToolTip.showText(event.globalPos(), msgText)
        else:
            QToolTip.hideText()

        return QWidget.mouseMoveEvent(self, event)
Beispiel #10
0
 def event(self, e):
     action = self.activeAction()
     if e.type() == QEvent.ToolTip and \
         action                    and \
         action.toolTip() != action.text():
         QToolTip.showText(e.globalPos(), self.activeAction().toolTip())
     else:
         QToolTip.hideText()
     return super(Menu, self).event(e)
Beispiel #11
0
 def update_show_tooltips(self):
     """Toggles wordwrap in the script editor
     """
     self._show_tooltips = self.show_tooltips_action.isChecked()
     config = get_config()
     config.persist['script_editor_tooltips'] = self._show_tooltips
     if not self._show_tooltips:
         QToolTip.hideText()
         self.setToolTip('')
Beispiel #12
0
 def update_tooltip(self):
     if self.underMouse() and self.toolTip():
         position = self.mapFromGlobal(QCursor.pos())
         tooltip = self.get_tooltip_at_mouse_position(position)
         if tooltip != self.toolTip():
             # Hide tooltip if the entity causing this tooltip
             # was moved away from the mouse position
             QToolTip.hideText()
             self.setToolTip(tooltip)
Beispiel #13
0
    def mouseMoveEvent(self, event):
        blockNumber = self._qpart.cursorForPosition(event.pos()).blockNumber()
        if blockNumber in self._qpart._lintMarks:
            msgType, msgText = self._qpart._lintMarks[blockNumber]
            QToolTip.showText(event.globalPos(), msgText)
        else:
            QToolTip.hideText()

        return QWidget.mouseMoveEvent(self, event)
Beispiel #14
0
 def show_tooltip(self, evt: QHelpEvent) -> bool:
     assert isinstance(evt, QHelpEvent)
     for feat in self.features:
         if feat.rect.contains(evt.pos()):
             QToolTip.showText(evt.globalPos(), feat.tooltip())
             break
     else:
         QToolTip.hideText()
         evt.ignore()
     return True
Beispiel #15
0
 def _show_tip(self, it: bool = False):
     self._last_mouse = self._mouse_pos
     star = self.renderer.find_star(*self._mouse_pos, 1)
     if star is not None:
         if self._last_star is None or star.star != self._last_star or it:
             self._last_star = star.star
             QToolTip.showText(QPoint(*self._mouse_gpos), str(star.star))
     else:
         QToolTip.hideText()
         self._last_star = None
Beispiel #16
0
 def set_id_tooltip(self, valid, message):
     if valid is True:
         self.input_id.setStyleSheet("")
         self.input_id.setToolTip("Insert abbreviation")
         QToolTip.hideText()
     else:
         self.input_id.setToolTip(message)
         QToolTip.showText(self.input_id.mapToGlobal(QtCore.QPoint(0, 0)),
                           message)
         self.input_id.setStyleSheet("border: 1px solid red;")
Beispiel #17
0
 def event(self, e):
     action = self.activeAction()
     if e.type() == QEvent.ToolTip and \
         action                    and \
         action.toolTip() != action.text():
             QToolTip.showText(e.globalPos(),
                               self.activeAction().toolTip())
     else:
         QToolTip.hideText()
     return super(Menu, self).event(e)
    def leaveEvent(self, event):
        """Handle the mouse leave event.
        When tooltips are shown in this widgets, they should
        be removed when the mouse leaves the widget.

        Parameters
        ----------
        event : QEvent
        """
        if self.toolTipActive:
            QToolTip.hideText()
Beispiel #19
0
 def leaveEvent(self, event):
     '''Handle the mouse leave event.
     When tooltips are shown in this widgets, they should
     be removed when the mouse leaves the widget.
     
     Arguments
     ---------
     event : QEvent
     '''
     if self.toolTipActive:
         QToolTip.hideText()
Beispiel #20
0
 def event(self, event: QEvent) -> bool:
     if event.type() == QEvent.ToolTip:
         tt = self.isValidIndex(self._hoverIndex) and self.tabToolTip(
             self._hoverIndex)
         if tt:
             QToolTip.showText(event.globalPos(), tt, self, self._hoverRect)
         else:
             QToolTip.hideText()
             event.ignore()
         return True
     return super().event(event)
Beispiel #21
0
    def event(self, event):
        if event.type() == QEvent.ToolTip:
            helpEvent = event
            index = self.itemAt(helpEvent.pos())
            if index != -1:
                QToolTip.showText(helpEvent.globalPos(), self.shapeItems[index].toolTip())
            else:
                QToolTip.hideText()
                event.ignore()

            return True

        return super(SortingBox, self).event(event)
Beispiel #22
0
    def event(self, ev):
        if not self.enabled:
            super().event(ev)

        if ev.type() == QEvent.ToolTip:
            key = self.hit_test(ev.pos())[0]
            if key is not None:
                QToolTip.showText(ev.globalPos(), key.tooltip)
            else:
                QToolTip.hideText()
        if ev.type() == QEvent.LayoutRequest:
            self.update_layout()
        return super().event(ev)
Beispiel #23
0
 def event(self, event):
     if event.type() == QEvent.ToolTip:
         index = None
         for recordIndex, rect in self._tabsRects.items():
             if QRect(*rect).contains(event.pos()):
                 index = recordIndex
         if index is not None:
             QToolTip.showText(event.globalPos(), self._tabs[index])
         else:
             QToolTip.hideText()
             event.ignore()
         return True
     return super().event(event)
Beispiel #24
0
    def event(self, event):
        if event.type() == QEvent.ToolTip:
            helpEvent = event
            index = self.itemAt(helpEvent.pos())
            if index != -1:
                QToolTip.showText(helpEvent.globalPos(),
                                  self.shapeItems[index].toolTip())
            else:
                QToolTip.hideText()
                event.ignore()

            return True

        return super(SortingBox, self).event(event)
Beispiel #25
0
 def mouseMoveEvent(self, mouse_event):
     result = self.find_star_on_screen(mouse_event.x(), mouse_event.y())
     if result is not None:
         tool_tip, constellation = result
         QToolTip\
             .showText(QPoint(mouse_event.globalX(),
                              mouse_event.globalY()),
                       tool_tip)
         self._change_rotation_angle(0, 0, 0)
         self.draw_stars_and_sides_on_picture(constellation, 50)
     else:
         QToolTip.hideText()
         self._change_rotation_angle(0, 0, 0)
         self.draw_stars_and_sides_on_picture()
    def setToolTip(self, active: bool = True) -> None:
        """Turn on/off the tooltips for this Widget.
        The tooltip will display the index and value for the matrix
        at the current mouse position.

        Parameters
        ----------
        active: bool
            Will turn the tooltips on or off.
        """
        self.toolTipActive = active
        self.setMouseTracking(self.toolTipActive)

        if not self.toolTipActive:
            QToolTip.hideText()
Beispiel #27
0
    def event(self, ev):
        if not self.enabled:
            super().event(ev)

        if ev.type() == QEvent.ToolTip:
            key = self.hit_test(ev.pos())[0]
            if key is not None:
                QToolTip.showText(ev.globalPos(), key.tooltip)
            else:
                QToolTip.hideText()
        elif ev.type() == QEvent.LayoutRequest:
            self.update_layout()
        elif ev.type() == QEvent.MouseButtonDblClick and self.active_key:
            self.anykey.emit()
        return super().event(ev)
Beispiel #28
0
    def event(self, e):

        if e.type() == QEvent.ToolTip:

            index = self.itemIndexAt(e.pos())

            if index != -1:
                QToolTip.showText(e.globalPos(), self.shapes[index].toolTip())
            else:
                QToolTip.hideText()
                e.ignore()

            return True

        return super(Example, self).event(e)
Beispiel #29
0
    def mouseMoveEvent(self, event):
        MDEditView.mouseMoveEvent(self, event)

        onRef = [r for r in self.refRects if r.contains(event.pos())]

        if not onRef:
            qApp.restoreOverrideCursor()
            QToolTip.hideText()
            return

        cursor = self.cursorForPosition(event.pos())
        ref = self.refUnderCursor(cursor)
        if ref:
            if not qApp.overrideCursor():
                qApp.setOverrideCursor(Qt.PointingHandCursor)
            QToolTip.showText(self.mapToGlobal(event.pos()), Ref.tooltip(ref))
    def mouseMoveEvent(self, event):
        textEditView.mouseMoveEvent(self, event)

        onRef = [r for r in self.refRects if r.contains(event.pos())]

        if not onRef:
            qApp.restoreOverrideCursor()
            QToolTip.hideText()
            return

        cursor = self.cursorForPosition(event.pos())
        ref = self.refUnderCursor(cursor)
        if ref:
            if not qApp.overrideCursor():
                qApp.setOverrideCursor(Qt.PointingHandCursor)
            QToolTip.showText(self.mapToGlobal(event.pos()), Ref.tooltip(ref))
Beispiel #31
0
 def mouseMoveEvent(self, ev):
     """Track the mouse move to show the tooltip"""
     super(View, self).mouseMoveEvent(ev)
     cursor_at_mouse = self.cursorForPosition(ev.pos())
     cur_block = cursor_at_mouse.block()
     # Only check tooltip when changing line/block or after invalidating
     if self.include_target or not cur_block == self.block_at_mouse:
         self.block_at_mouse = cur_block
         self.include_target = open_file_at_cursor.includeTarget(cursor_at_mouse)
         if self.include_target:
             if ev.modifiers() == Qt.ControlModifier:
                self.viewport().setCursor(QCursor(Qt.PointingHandCursor))
             self.showIncludeToolTip()
         else:
             self.include_target = []
             self.block_at_mouse = None
             self.viewport().setCursor(Qt.IBeamCursor)
             QToolTip.hideText()
Beispiel #32
0
 def updateKineticCursor(self, active):
     """Cursor handling when kinetic move starts/stops.
     
     - reset the cursor and hide tooltips if visible at start,
     - update the cursor and show the appropriate tooltips at stop.
     
     Used as a slot linked to the kineticStarted() signal.
     """
     if active:
         self.unsetCursor()
         if QToolTip.isVisible():
             QToolTip.hideText()
     else:
         self.updateCursor(QCursor.pos())
         if self._linksEnabled:
             page, link = self.pageLayout().linkAt(self.mapFromGlobal(QCursor.pos()))
             if link:
                 self.linkHelpEvent(QCursor.pos(), page, link)
Beispiel #33
0
    def helpEvent(self, event, view, option, index):
        if event is None or view is None:
            return False

        if event.type() == QEvent.ToolTip and index.isValid():
            if option.rect.width() <= self.sizeHint(option, index).width():
                tooltip = index.data(Qt.DisplayRole)

                # If text is elided, show tooltip
                if tooltip != '':
                    QToolTip.showText(event.globalPos(), tooltip, view)
                    return True

            if not super().helpEvent(event, view, option, index):
                QToolTip.hideText()
                return True

        return super().helpEvent(event, view, option, index)
Beispiel #34
0
 def mouseMoveEvent(self, ev):
     """Track the mouse move to show the tooltip"""
     super(View, self).mouseMoveEvent(ev)
     cursor_at_mouse = self.cursorForPosition(ev.pos())
     cur_block = cursor_at_mouse.block()
     # Only check tooltip when changing line/block or after invalidating
     if self.include_target or not cur_block == self.block_at_mouse:
         self.block_at_mouse = cur_block
         self.include_target = open_file_at_cursor.includeTarget(
             cursor_at_mouse)
         if self.include_target:
             if ev.modifiers() == Qt.ControlModifier:
                 self.viewport().setCursor(QCursor(Qt.PointingHandCursor))
             self.showIncludeToolTip()
         else:
             self.include_target = []
             self.block_at_mouse = None
             self.viewport().setCursor(Qt.IBeamCursor)
             QToolTip.hideText()
Beispiel #35
0
 def updateKineticCursor(self, active):
     """Cursor handling when kinetic move starts/stops.
     
     - reset the cursor and hide tooltips if visible at start,
     - update the cursor and show the appropriate tooltips at stop.
     
     Used as a slot linked to the kineticStarted() signal.
     """
     if active:
         self.unsetCursor()
         if QToolTip.isVisible():
             QToolTip.hideText()
     else:
         self.updateCursor(QCursor.pos())
         if self._linksEnabled:
             page, link = self.pageLayout().linkAt(
                 self.mapFromGlobal(QCursor.pos()))
             if link:
                 self.linkHelpEvent(QCursor.pos(), page, link)
    def helpEvent(self, event, view, option, index):
        if not event or not view:
            return False

        if event.type() == QEvent.ToolTip:
            rect = view.visualRect(index)
            size = self.sizeHint(option, index)

            if rect.width() < size.width():
                tooltip = index.data(Qt.DisplayRole)

                QToolTip.showText(event.globalPos(), tooltip)
                return True

            if not QStyledItemDelegate.helpEvent(self, event, view, option, index):
                QToolTip.hideText()

            return True

        return QStyledItemDelegate.helpEvent(self, event, view, option, index)
Beispiel #37
0
    def on_mouse_moved(self, pos, index):
        # This method controls for which rows the buttons/box should be drawn
        redraw = False
        if self.hover_index != index:
            self.hover_index = index
            self.hoverrow = index.row()
            if not self.button_box.contains(pos):
                redraw = True
                # Hide the tooltip when cell hover changes
                QToolTip.hideText()
        # Redraw when the mouse leaves the table
        if index.row() == -1 and self.hoverrow != -1:
            self.hoverrow = -1
            redraw = True

        for controls in self.controls:
            redraw = controls.on_mouse_moved(pos, index) or redraw

        if redraw:
            # TODO: optimize me to only redraw the rows that actually changed!
            self.redraw_required.emit()
Beispiel #38
0
    def mouseMoveEvent(self, event):
        if self.pressedKey:
            return
        widgetPosition = self.mapFromGlobal(event.globalPos())
        self.currentKey = (widgetPosition.y() // self.cell_size) * \
            self.columns + widgetPosition.x() // self.cell_size

        if self.currentKey != self.lastKey:
            self.lastKey = self.currentKey
            name = self.parent.table._symbol_list[self.currentKey]
            if name == "no info":
                QToolTip.hideText()
            else:
                info_str = (
                    '<i style="text-align:center">{0}</i>'
                    '<pre style="text-align:center">Hex: {1:04X} | Dec: {1}</pre>'
                    '<p style="font-size:48px;text-align:center">{2}</p>'
                ).format(name, self.currentKey, chr(self.currentKey))
                # info_str = '{0}\nU+{1:04X} | Dec:{1}'.format(name, self.currentKey)
                QToolTip.showText(event.globalPos(), info_str, self)
            self.update()
Beispiel #39
0
 def viewportEvent(self, event):
     if event.type() == QEvent.ToolTip:
         pos = event.pos()
         tc = self.cursorForPosition(pos)
         block = tc.block()
         line = block.layout().lineForTextPosition(tc.positionInBlock())
         if line.isValid():
             if pos.x() <= self.blockBoundingRect(block).left() + \
                     line.naturalTextRect().right():
                 column = tc.positionInBlock()
                 line = self.line_from_position(pos.y())
                 checkers = self._neditable.sorted_checkers
                 for items in checkers:
                     checker, _, _ = items
                     messages_for_line = checker.message(line)
                     if messages_for_line is not None:
                         for (start, end), message, content in \
                                 messages_for_line:
                             if column >= start and column <= end:
                                 QToolTip.showText(
                                     self.mapToGlobal(pos), message, self)
                 return True
             QToolTip.hideText()
     return super().viewportEvent(event)
Beispiel #40
0
 def hide_tooltip(self):
     QToolTip.hideText()
Beispiel #41
0
 def hide_tool_tip(self, e):
     QToolTip.hideText()