def focus_widget(self, event=None): '''Focus buffer widget.''' if event is None: event = QFocusEvent(QEvent.FocusIn, Qt.MouseFocusReason) QApplication.sendEvent(self.buffer_widget.focusProxy(), event) # Activate emacs window when call focus widget, avoid first char is not eval_in_emacs('eaf-activate-emacs-window', [])
def focus_widget(image, library, widget_name): names = {"the library": library, "the image": image} try: widget = names[widget_name] except KeyError: raise KeyError( f"Unknown widget '{widget_name}'. Currently supported: {', '.join(names)}" ) event = QFocusEvent(QFocusEvent.FocusOut) widget.focusOutEvent(event)
def focusOutEvent(self, event: QFocusEvent): # http://doc.qt.io/qt-5/qt.html#FocusReason-enum # LimitValueLineEdit.__LOG.debug("{0} edit focus out, reason: {1}", # self.__name, event.reason()) reason = event.reason() if reason == Qt.MouseFocusReason or reason == Qt.TabFocusReason: if self.hasAcceptableInput(): self.value_changed.emit(float(self.text())) super().focusOutEvent(event) else: self.setFocus()
def contextMenuEvent(self, event): """Custom context menu handler to add a spelling suggestions submenu""" if enchant is None: return popup_menu = self.createSpellcheckContextMenu(event.pos()) popup_menu.exec_(event.globalPos()) # Fix bug observed in Qt 5.2.1 on *buntu 14.04 LTS where: # 1. The cursor remains invisible after closing the context menu # 2. Keyboard input causes it to appear, but it doesn't blink # 3. Switching focus away from and back to the window fixes it self.focusInEvent(QFocusEvent(QEvent.FocusIn))
def focus_widget(self): '''Focus buffer widget.''' event = QFocusEvent(QEvent.FocusIn, Qt.MouseFocusReason) QApplication.sendEvent(self.buffer_widget.focusProxy(), event)
def setFocus(widget): event = QFocusEvent(QEvent.FocusIn) qapp.sendEvent(widget, event)
def testGuiNovelTree_TreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd): """Test navigating the novel tree. """ # Block message box monkeypatch.setattr(QMessageBox, "question", lambda *a: QMessageBox.Yes) monkeypatch.setattr(QMessageBox, "information", lambda *a: QMessageBox.Yes) monkeypatch.setattr(GuiEditLabel, "getLabel", lambda *a, text: (text, True)) buildTestProject(nwGUI, fncProj) nwGUI.switchFocus(nwWidget.TREE) nwGUI.projView.projTree.clearSelection() nwGUI.projView.projTree._getTreeItem("000000000000a").setSelected(True) nwGUI.projView.projTree.newTreeItem(nwItemType.FILE) writeFile( os.path.join(nwGUI.theProject.projContent, "0000000000010.nwd"), "# Jane Doe\n\n@tag: Jane\n\n" ) writeFile( os.path.join(nwGUI.theProject.projContent, "000000000000f.nwd"), ( "### Scene One\n\n" "@pov: Jane\n" "@focus: Jane\n\n" "% Synopsis: This is a scene." ) ) novelView = nwGUI.novelView novelTree = novelView.novelTree novelBar = novelView.novelBar # Show/Hide Scrollbars # ==================== nwGUI.mainConf.hideVScroll = True nwGUI.mainConf.hideHScroll = True novelView.initSettings() assert not novelTree.verticalScrollBar().isVisible() assert not novelTree.horizontalScrollBar().isVisible() nwGUI.mainConf.hideVScroll = False nwGUI.mainConf.hideHScroll = False novelView.initSettings() assert novelTree.verticalScrollBar().isEnabled() assert novelTree.horizontalScrollBar().isEnabled() # Populate Tree # ============= nwGUI.projStack.setCurrentIndex(nwGUI.idxNovelView) nwGUI.rebuildIndex() novelTree._populateTree(rootHandle=None) assert novelTree.topLevelItemCount() == 3 # Rebuild should preserve selection topItem = novelTree.topLevelItem(0) assert not topItem.isSelected() topItem.setSelected(True) assert novelTree.selectedItems()[0] == topItem assert novelView.getSelectedHandle() == ("000000000000c", 0) # Refresh using the slot for the butoom novelBar._refreshNovelTree() assert novelTree.topLevelItem(0).isSelected() # Open Items # ========== # Clear selection novelTree.clearSelection() scItem = novelTree.topLevelItem(2) scItem.setSelected(True) assert scItem.isSelected() # Clear selection with mouse vPort = novelTree.viewport() qtbot.mouseClick(vPort, Qt.LeftButton, pos=vPort.rect().center(), delay=10) assert not scItem.isSelected() # Double-click item scItem.setSelected(True) assert scItem.isSelected() assert nwGUI.docEditor.docHandle() is None novelTree._treeDoubleClick(scItem, 0) assert nwGUI.docEditor.docHandle() == "000000000000f" # Open item with middle mouse button scItem.setSelected(True) assert scItem.isSelected() assert nwGUI.docViewer.docHandle() is None qtbot.mouseClick(vPort, Qt.MiddleButton, pos=vPort.rect().center(), delay=10) assert nwGUI.docViewer.docHandle() is None scRect = novelTree.visualItemRect(scItem) oldData = scItem.data(novelTree.C_TITLE, novelTree.D_HANDLE) scItem.setData(novelTree.C_TITLE, novelTree.D_HANDLE, None) qtbot.mouseClick(vPort, Qt.MiddleButton, pos=scRect.center(), delay=10) assert nwGUI.docViewer.docHandle() is None scItem.setData(novelTree.C_TITLE, novelTree.D_HANDLE, oldData) qtbot.mouseClick(vPort, Qt.MiddleButton, pos=scRect.center(), delay=10) assert nwGUI.docViewer.docHandle() == "000000000000f" # Last Column # =========== novelBar.setLastColType(NovelTreeColumn.HIDDEN) assert novelTree.isColumnHidden(novelTree.C_EXTRA) is True assert novelTree.lastColType == NovelTreeColumn.HIDDEN assert novelTree._getLastColumnText("000000000000f", "T000001") == ("", "") novelBar.setLastColType(NovelTreeColumn.POV) assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.lastColType == NovelTreeColumn.POV assert novelTree._getLastColumnText("000000000000f", "T000001") == ( "Jane", "Point of View: Jane" ) novelBar.setLastColType(NovelTreeColumn.FOCUS) assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.lastColType == NovelTreeColumn.FOCUS assert novelTree._getLastColumnText("000000000000f", "T000001") == ( "Jane", "Focus: Jane" ) novelBar.setLastColType(NovelTreeColumn.PLOT) assert novelTree.isColumnHidden(novelTree.C_EXTRA) is False assert novelTree.lastColType == NovelTreeColumn.PLOT assert novelTree._getLastColumnText("000000000000f", "T000001") == ( "", "Plot: " ) novelTree._lastCol = None assert novelTree._getLastColumnText("0000000000000", "T000000") == ("", "") # Item Meta # ========= ttText = "" def showText(pos, text): nonlocal ttText ttText = text mIndex = novelTree.model().index(2, novelTree.C_MORE) with monkeypatch.context() as mp: mp.setattr(QToolTip, "showText", showText) novelTree._treeItemClicked(mIndex) assert ttText == ( "<p><b>Point of View</b>: Jane<br><b>Focus</b>: Jane</p>" "<p><b>Synopsis</b>: This is a scene.</p>" ) # Other Checks # ============ scItem = novelTree.topLevelItem(2) scItem.setSelected(True) assert scItem.isSelected() novelTree.focusOutEvent(QFocusEvent(QEvent.None_, Qt.MouseFocusReason)) assert not scItem.isSelected() # Close # ===== # qtbot.stop() nwGUI.closeProject()