本文整理汇总了Python中pyqode.core.api.utils.DelayJobRunner.cancel_requests方法的典型用法代码示例。如果您正苦于以下问题:Python DelayJobRunner.cancel_requests方法的具体用法?Python DelayJobRunner.cancel_requests怎么用?Python DelayJobRunner.cancel_requests使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyqode.core.api.utils.DelayJobRunner
的用法示例。
在下文中一共展示了DelayJobRunner.cancel_requests方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CodeEdit
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
self.mouse_wheel_activated.emit(event)
if not event.isAccepted():
event.setAccepted(initial_state)
super(CodeEdit, self).wheelEvent(event)
def mouseMoveEvent(self, event):
"""
Overrides mouseMovedEvent to display any decoration tooltip and emits
the mouse_moved event.
:param event: QMouseEvent
"""
cursor = self.cursorForPosition(event.pos())
self._last_mouse_pos = event.pos()
block_found = False
for sel in self.decorations:
if sel.contains_cursor(cursor) and sel.tooltip:
if (self._prev_tooltip_block_nbr != cursor.blockNumber() or
not QtWidgets.QToolTip.isVisible()):
pos = event.pos()
# add left margin
pos.setX(pos.x() + self.panels.margin_size())
# add top margin
pos.setY(pos.y() + self.panels.margin_size(0))
self._tooltips_runner.request_job(
self.show_tooltip,
self.mapToGlobal(pos), sel.tooltip[0: 1024], sel)
self._prev_tooltip_block_nbr = cursor.blockNumber()
block_found = True
break
if not block_found and self._prev_tooltip_block_nbr != -1:
QtWidgets.QToolTip.hideText()
self._prev_tooltip_block_nbr = -1
self._tooltips_runner.cancel_requests()
self.mouse_moved.emit(event)
super(CodeEdit, self).mouseMoveEvent(event)
def showEvent(self, event):
""" Overrides showEvent to update the viewport margins """
super(CodeEdit, self).showEvent(event)
_logger().debug('show event: %r' % self)
def get_context_menu(self):
"""
Gets the editor context menu.
:return: QMenu
"""
mnu = QtWidgets.QMenu()
mnu.addActions(self._actions)
mnu.addSeparator()
for menu in self._menus:
mnu.addMenu(menu)
return mnu
def _show_context_menu(self, point):
""" Shows the context menu """
self._mnu = self.get_context_menu()
self._mnu.popup(self.mapToGlobal(point))
def _set_whitespaces_flags(self, show):
""" Sets show white spaces flag """
doc = self.document()
options = doc.defaultTextOption()
if show:
options.setFlags(options.flags() |
示例2: SearchAndReplacePanel
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
def on_toolButtonClose_clicked(self):
self.close_panel()
@QtCore.Slot()
def on_actionSearch_triggered(self):
self.widgetSearch.show()
self.widgetReplace.hide()
self.show()
new_text = self.text_helper.selected_text()
old_text = self.lineEditSearch.text()
text_changed = new_text != old_text
self.lineEditSearch.setText(new_text)
self.lineEditSearch.selectAll()
self.lineEditSearch.setFocus()
self.setFocusPolicy(QtCore.Qt.ClickFocus)
if not text_changed:
self.request_search(new_text)
@QtCore.Slot()
def on_actionActionSearchAndReplace_triggered(self):
self.widgetSearch.show()
self.widgetReplace.show()
self.show()
new_txt = self.text_helper.selected_text()
old_txt = self.lineEditSearch.text()
txt_changed = new_txt != old_txt
self.lineEditSearch.setText(new_txt)
self.lineEditReplace.clear()
self.lineEditReplace.setFocus()
if not txt_changed:
self.request_search(new_txt)
def focusOutEvent(self, event):
self.job_runner.cancel_requests()
Panel.focusOutEvent(self, event)
def request_search(self, txt=None):
"""
Requests a search operation.
:param txt: The text to replace. If None, the content of lineEditSearch
is used instead.
"""
if self.checkBoxRegex.isChecked():
try:
re.compile(self.lineEditSearch.text(), re.DOTALL)
except sre_constants.error as e:
self._show_error(e)
return
else:
self._show_error(None)
if txt is None or isinstance(txt, int):
txt = self.lineEditSearch.text()
if txt:
self.job_runner.request_job(
self._exec_search, txt, self._search_flags())
else:
self.job_runner.cancel_requests()
self._clear_occurrences()
self._on_search_finished()
@staticmethod
def _set_widget_background_color(widget, color):
"""
Changes the base color of a widget (background).
示例3: CheckerMode
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
self.editor.textCursor(), start_line=message.line,
tooltip=tooltip, draw_order=3)
message.decoration.select_line()
message.decoration.set_as_error(color=QtGui.QColor(
message.color))
self.editor.decorations.append(message.decoration)
QtCore.QTimer.singleShot(1, self._add_batch)
self.editor.repaint()
return True
def remove_message(self, message):
"""
Removes a message.
:param message: Message to remove
"""
import time
_logger(self.__class__).debug('removing message %s' % message)
t = time.time()
usd = message.block.userData()
if usd:
try:
usd.messages.remove(message)
except (AttributeError, ValueError):
pass
if message.decoration:
self.editor.decorations.remove(message.decoration)
self._messages.remove(message)
def clear_messages(self):
"""
Clears all messages.
"""
while len(self._messages):
msg = self._messages.pop(0)
usd = msg.block.userData()
if usd and hasattr(usd, 'messages'):
usd.messages[:] = []
if msg.decoration:
self.editor.decorations.remove(msg.decoration)
def on_state_changed(self, state):
if state:
self.editor.textChanged.connect(self.request_analysis)
self.editor.new_text_set.connect(self.clear_messages)
self.request_analysis()
else:
self.editor.textChanged.disconnect(self.request_analysis)
self.editor.new_text_set.disconnect(self.clear_messages)
self._job_runner.cancel_requests()
self.clear_messages()
def _on_work_finished(self, status, results):
"""
Display results.
:param status: Response status
:param results: Response data, messages.
"""
if status:
messages = []
for msg in results:
msg = CheckerMessage(*msg)
block = self.editor.document().findBlockByNumber(msg.line)
msg.block = block
messages.append(msg)
self.add_messages(messages)
def request_analysis(self):
"""
Requests an analysis.
"""
if self._finished:
_logger(self.__class__).debug('running analysis')
self._job_runner.request_job(self._request)
elif self.editor:
# retry later
_logger(self.__class__).debug(
'delaying analysis (previous analysis not finished)')
QtCore.QTimer.singleShot(500, self.request_analysis)
def _request(self):
""" Requests a checking of the editor content. """
if not self.editor:
return
try:
request_data = {
'code': self.editor.toPlainText(),
'path': self.editor.file.path,
'encoding': self.editor.file.encoding
}
except RuntimeError:
return
try:
self.editor.backend.send_request(
self._worker, request_data, on_receive=self._on_work_finished)
self._finished = False
except NotRunning:
# retry later
QtCore.QTimer.singleShot(100, self._request)
示例4: CodeCompletionMode
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
self._update_prefix(event, is_end_of_word, is_navigation_key)
if is_printable:
if event.text() == " ":
self._cancel_next = self._request_cnt
return
else:
# trigger symbols
if symbols:
for symbol in symbols:
if text_to_cursor.endswith(symbol):
_logger().debug("cc: symbols trigger")
self._hide_popup()
self.request_completion()
return
# trigger length
if (not self._completer.popup().isVisible() and
event.text().isalnum()):
prefix_len = len(self.completion_prefix)
if prefix_len >= self._trigger_len:
_logger().debug("cc: Len trigger")
self.request_completion()
return
if self.completion_prefix == "":
return self._hide_popup()
def _on_selected_completion_changed(self, completion):
self._current_completion = completion
def _on_cursor_position_changed(self):
current_line = TextHelper(self.editor).current_line_nbr()
if current_line != self._cursor_line:
self._cursor_line = current_line
self._hide_popup()
self._job_runner.cancel_requests()
@QtCore.Slot()
def _set_wait_cursor(self):
# self.editor.set_mouse_cursor(QtCore.Qt.WaitCursor)
pass
def _is_last_char_end_of_word(self):
try:
cursor = self._helper.word_under_cursor()
cursor.setPosition(cursor.position())
cursor.movePosition(cursor.StartOfLine, cursor.KeepAnchor)
line = cursor.selectedText()
last_char = line[len(line) - 1]
if last_char != ' ':
symbols = self._trigger_symbols
seps = self.editor.word_separators
return last_char in seps and last_char not in symbols
return False
except (IndexError, TypeError):
return False
def _show_completions(self, completions):
_logger().info("showing %d completions" % len(completions))
self._job_runner.cancel_requests()
# user typed too fast: end of word char has been inserted
if (not self._cancel_next and not self._is_last_char_end_of_word() and
not (len(completions) == 1 and
completions[0]['name'] == self.completion_prefix)):
# we can show the completer
t = time.time()
self._update_model(completions)
elapsed = time.time() - t
示例5: MarkerPanel
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
:return: Marker of None
:rtype: pyqode.core.Marker
"""
markers = []
for marker in self._markers:
if line == marker.position:
markers.append(marker)
return markers
def sizeHint(self):
"""
Returns the panel size hint. (fixed with of 16px)
"""
metrics = QtGui.QFontMetricsF(self.editor.font())
size_hint = QtCore.QSize(metrics.height(), metrics.height())
if size_hint.width() > 16:
size_hint.setWidth(16)
return size_hint
def paintEvent(self, event):
Panel.paintEvent(self, event)
painter = QtGui.QPainter(self)
for top, block_nbr, block in self.editor.visible_blocks:
user_data = block.userData()
if hasattr(user_data, "markers"):
markers = user_data.markers
for i, marker in enumerate(markers):
if (hasattr(marker, 'panel_ref') and
marker.panel_ref == self):
# only draw our markers
if marker in self._to_remove:
try:
user_data.markers.remove(None)
self._to_remove.remove(marker)
except ValueError:
pass
continue
if marker and marker.icon:
rect = QtCore.QRect()
rect.setX(0)
rect.setY(top)
rect.setWidth(self.sizeHint().width())
rect.setHeight(self.sizeHint().height())
if isinstance(marker.icon, tuple):
key = marker.icon[0]
else:
key = marker.icon
if key not in self._icons:
key, val = self.make_marker_icon(marker.icon)
if key and val:
self._icons[key] = val
else:
continue
self._icons[key].paint(painter, rect)
def mousePressEvent(self, event):
# Handle mouse press:
# - emit add marker signal if there were no marker under the mouse
# cursor
# - emit remove marker signal if there were one or more markers under
# the mouse cursor.
line = TextHelper(self.editor).line_nbr_from_position(event.pos().y())
if self.marker_for_line(line):
_logger().debug("remove marker requested")
self.remove_marker_requested.emit(line)
else:
_logger().debug("add marker requested")
self.add_marker_requested.emit(line)
def mouseMoveEvent(self, event):
# Requests a tooltip if the cursor is currently over a marker.
line = TextHelper(self.editor).line_nbr_from_position(event.pos().y())
markers = self.marker_for_line(line)
text = '\n'.join([marker.description for marker in markers if
marker.description])
if len(markers):
if self._previous_line != line:
top = TextHelper(self.editor).line_pos_from_number(
markers[0].position)
if top:
self._job_runner.request_job(self._display_tooltip,
text, top)
else:
self._job_runner.cancel_requests()
self._previous_line = line
def leaveEvent(self, *args, **kwargs):
"""
Hide tooltip when leaving the panel region.
"""
QtWidgets.QToolTip.hideText()
self._previous_line = -1
def _display_tooltip(self, tooltip, top):
"""
Display tooltip at the specified top position.
"""
QtWidgets.QToolTip.showText(self.mapToGlobal(QtCore.QPoint(
self.sizeHint().width(), top)), tooltip, self)
示例6: MarkerPanel
# 需要导入模块: from pyqode.core.api.utils import DelayJobRunner [as 别名]
# 或者: from pyqode.core.api.utils.DelayJobRunner import cancel_requests [as 别名]
#.........这里部分代码省略.........
Removes a marker from the panel
:param marker: Marker to remove
:type marker: pyqode.core.Marker
"""
self._markers.remove(marker)
self._to_remove.append(marker)
if hasattr(marker, 'decoration'):
self.editor.decorations.remove(marker.decoration)
self.repaint()
def clear_markers(self):
""" Clears the markers list """
while len(self._markers):
self.remove_marker(self._markers[0])
def marker_for_line(self, line):
"""
Returns the marker that is displayed at the specified line number if
any.
:param line: The marker line.
:return: Marker of None
:rtype: pyqode.core.Marker
"""
markers = []
for marker in self._markers:
if line == marker.position:
markers.append(marker)
return markers
def sizeHint(self):
"""
Returns the panel size hint. (fixed with of 16px)
"""
metrics = QtGui.QFontMetricsF(self.editor.font())
size_hint = QtCore.QSize(metrics.height(), metrics.height())
if size_hint.width() > 16:
size_hint.setWidth(16)
return size_hint
def paintEvent(self, event):
Panel.paintEvent(self, event)
painter = QtGui.QPainter(self)
for top, block_nbr, block in self.editor.visible_blocks:
for marker in self._markers:
if marker.block == block and marker.icon:
rect = QtCore.QRect()
rect.setX(0)
rect.setY(top)
rect.setWidth(self.sizeHint().width())
rect.setHeight(self.sizeHint().height())
marker.icon.paint(painter, rect)
def mousePressEvent(self, event):
# Handle mouse press:
# - emit add marker signal if there were no marker under the mouse
# cursor
# - emit remove marker signal if there were one or more markers under
# the mouse cursor.
line = TextHelper(self.editor).line_nbr_from_position(event.pos().y())
if self.marker_for_line(line):
if event.button() == QtCore.Qt.LeftButton:
self.remove_marker_requested.emit(line)
else:
self.edit_marker_requested.emit(line)
else:
self.add_marker_requested.emit(line)
def mouseMoveEvent(self, event):
# Requests a tooltip if the cursor is currently over a marker.
line = TextHelper(self.editor).line_nbr_from_position(event.pos().y())
markers = self.marker_for_line(line)
text = '\n'.join([marker.description for marker in markers if
marker.description])
if len(markers):
if self._previous_line != line:
top = TextHelper(self.editor).line_pos_from_number(
markers[0].position)
if top:
self._job_runner.request_job(self._display_tooltip,
text, top)
else:
self._job_runner.cancel_requests()
self._previous_line = line
def leaveEvent(self, *args, **kwargs):
"""
Hide tooltip when leaving the panel region.
"""
QtWidgets.QToolTip.hideText()
self._previous_line = -1
def _display_tooltip(self, tooltip, top):
"""
Display tooltip at the specified top position.
"""
QtWidgets.QToolTip.showText(self.mapToGlobal(QtCore.QPoint(
self.sizeHint().width(), top)), tooltip, self)