def popup(self, pos=None, searchText=""): """ Popup the menu at `pos` (in screen coordinates). 'Search' text field is initialized with `searchText` if provided. """ if pos is None: pos = QPoint() self.__clearCurrentItems() self.__search.setText(searchText) patt = QRegExp("(^|\W)" + searchText) patt.setCaseSensitivity(False) self.__suggestPage.setFilterRegExp(patt) self.ensurePolished() if self.testAttribute(Qt.WA_Resized) and self.sizeGripEnabled(): size = self.size() else: size = self.sizeHint() desktop = QApplication.desktop() screen_geom = desktop.availableGeometry(pos) # Adjust the size to fit inside the screen. if size.height() > screen_geom.height(): size.setHeight(screen_geom.height()) if size.width() > screen_geom.width(): size.setWidth(screen_geom.width()) geom = QRect(pos, size) if geom.top() < screen_geom.top(): geom.setTop(screen_geom.top()) if geom.left() < screen_geom.left(): geom.setLeft(screen_geom.left()) bottom_margin = screen_geom.bottom() - geom.bottom() right_margin = screen_geom.right() - geom.right() if bottom_margin < 0: # Falls over the bottom of the screen, move it up. geom.translate(0, bottom_margin) # TODO: right to left locale if right_margin < 0: # Falls over the right screen edge, move the menu to the # other side of pos. geom.translate(-size.width(), 0) self.setGeometry(geom) self.show() if searchText: self.setFocusProxy(self.__search) else: self.setFocusProxy(None)
def popup(self, pos=None, searchText=""): """ Popup the menu at `pos` (in screen coordinates). 'Search' text field is initialized with `searchText` if provided. """ if pos is None: pos = QPoint() self.__clearCurrentItems() self.__search.setText(searchText) patt = QRegExp("(^|\W)"+searchText) patt.setCaseSensitivity(False) self.__suggestPage.setFilterRegExp(patt) self.ensurePolished() if self.testAttribute(Qt.WA_Resized) and self.sizeGripEnabled(): size = self.size() else: size = self.sizeHint() desktop = QApplication.desktop() screen_geom = desktop.availableGeometry(pos) # Adjust the size to fit inside the screen. if size.height() > screen_geom.height(): size.setHeight(screen_geom.height()) if size.width() > screen_geom.width(): size.setWidth(screen_geom.width()) geom = QRect(pos, size) if geom.top() < screen_geom.top(): geom.setTop(screen_geom.top()) if geom.left() < screen_geom.left(): geom.setLeft(screen_geom.left()) bottom_margin = screen_geom.bottom() - geom.bottom() right_margin = screen_geom.right() - geom.right() if bottom_margin < 0: # Falls over the bottom of the screen, move it up. geom.translate(0, bottom_margin) # TODO: right to left locale if right_margin < 0: # Falls over the right screen edge, move the menu to the # other side of pos. geom.translate(-size.width(), 0) self.setGeometry(geom) self.show() if searchText: self.setFocusProxy(self.__search) else: self.setFocusProxy(None)
def __init__(self, parent=None): super(RomanSpinBox, self).__init__(parent) regex = QRegExp(r"^M?M?M?(?:CM|CD|D?C?C?C?)" r"(?:XC|XL|L?X?X?X?)(?:IX|IV|V?I?I?I?)$") regex.setCaseSensitivity(Qt.CaseInsensitive) self.validator = QRegExpValidator(regex, self) self.setRange(1, 3999) self.lineEdit().textEdited.connect(self.fixCase)
def findcontrol(self, name): regex = QRegExp("^{}$".format(QRegExp.escape(name))) regex.setCaseSensitivity(Qt.CaseInsensitive) try: widget = self.findChildren(QWidget, regex)[0] except IndexError: widget = None return widget
def findcontrol(self, name): regex = QRegExp("^{}$".format(name)) regex.setCaseSensitivity(Qt.CaseInsensitive) try: widget = self.findChildren(QWidget, regex)[0] except IndexError: widget = None return widget
def end_pattern(self): regexp = QRegExp(self.__pattern) if 'I' in self.__flags: regexp.setCaseSensitivity(Qt.CaseInsensitive) rule = (regexp, 0, self.get_style(self.__style), ) self._grammar.append(rule) del self.__pattern del self.__group del self.__flags del self.__style
def init(self): if self.typeid in (typeId.Int16, typeId.Int32, typeId.Int64): exp = "^(\+|-)?\d+$" elif self.typeid in (typeId.UInt16, typeId.UInt32, typeId.UInt64): exp = "^\d+$" else: exp = "^.+$" regexp = QRegExp(exp) regexp.setCaseSensitivity(Qt.CaseInsensitive) self.setRegExp(regexp)
def hasEnvironmentEntry(key): """ Module function to check, if the environment contains an entry. @param key key of the requested environment entry (string) @return flag indicating the presence of the requested entry (boolean) """ filter = QRegExp("^%s[ \t]*=" % key) if isWindowsPlatform(): filter.setCaseSensitivity(Qt.CaseInsensitive) entries = QProcess.systemEnvironment().filter(filter) return entries.count() > 0
def _textAndFindFlags(self, backward=False): text = self.findComboBox.currentText() flags = QTextDocument.FindFlags() if backward: flags |= QTextDocument.FindBackward if not self.ignoreCaseCheckBox.isChecked(): flags |= QTextDocument.FindCaseSensitively if self.flagsComboBox.currentIndex() == self.FULL_WORD: flags |= QTextDocument.FindWholeWords elif self.flagsComboBox.currentIndex() == self.STARTS_WITH: text = QRegExp("\\b%s" % text) caseSensitive = not self.ignoreCaseCheckBox.isChecked() and Qt.CaseSensitive or Qt.CaseInsensitive text.setCaseSensitivity(caseSensitive) return text, flags
def end_pattern(self): regexp = QRegExp(self.__pattern) if 'I' in self.__flags: regexp.setCaseSensitivity(Qt.CaseInsensitive) rule = ( regexp, 0, self.get_style(self.__style), ) self._grammar.append(rule) del self.__pattern del self.__group del self.__flags del self.__style
def _textAndFindFlags(self, backward=False): text = self.findComboBox.currentText() flags = QTextDocument.FindFlags() if backward: flags |= QTextDocument.FindBackward if not self.ignoreCaseCheckBox.isChecked(): flags |= QTextDocument.FindCaseSensitively if self.flagsComboBox.currentIndex() == self.FULL_WORD: flags |= QTextDocument.FindWholeWords elif self.flagsComboBox.currentIndex() == self.STARTS_WITH: text = QRegExp("\\b%s" % text) caseSensitive = not self.ignoreCaseCheckBox.isChecked( ) and Qt.CaseSensitive or Qt.CaseInsensitive text.setCaseSensitivity(caseSensitive) return text, flags
def replaceAll(self): textEdit = self.textEdit count = 0 if textEdit is not None and len(self.findComboBox.currentText()) > 0: findText = self.findComboBox.currentText() replaceText = self.replaceComboBox.currentText() caseSensitive = not self.ignoreCaseCheckBox.isChecked( ) and Qt.CaseSensitive or Qt.CaseInsensitive flagsIndex = self.flagsComboBox.currentIndex() if flagsIndex == self.STARTS_WITH: pattern = "\\b%s" elif flagsIndex == self.FULL_WORD: pattern = "\\b%s\\b" else: pattern = "%s" rx = QRegExp(pattern % findText) rx.setCaseSensitivity(caseSensitive) current = textEdit.toPlainText() pos = 0 while pos >= 0: pos = rx.indexIn(current, pos) if pos >= 0: pos += 1 count += 1 replaced = current.replace(rx, replaceText) textEdit.selectAll() cursor = textEdit.textCursor() cursor.beginEditBlock() cursor.insertText(replaced) cursor.endEditBlock() if textEdit is not None: if not count: QApplication.beep() self.feedbackLabel.setText(self.tr("Not found")) else: self.feedbackLabel.setText(self.tr("%s replaced" % count)) self.writeSettings()
def replaceAll(self): textEdit = self.textEdit count = 0 if textEdit is not None and len(self.findComboBox.currentText()) > 0: findText = self.findComboBox.currentText() replaceText = self.replaceComboBox.currentText() caseSensitive = not self.ignoreCaseCheckBox.isChecked() and Qt.CaseSensitive or Qt.CaseInsensitive flagsIndex = self.flagsComboBox.currentIndex() if flagsIndex == self.STARTS_WITH: pattern = "\\b%s" elif flagsIndex == self.FULL_WORD: pattern = "\\b%s\\b" else: pattern = "%s" rx = QRegExp(pattern % findText) rx.setCaseSensitivity(caseSensitive) current = textEdit.toPlainText() pos = 0 while pos >= 0: pos = rx.indexIn(current, pos) if pos >= 0: pos += 1 count += 1 replaced = current.replace(rx, replaceText) textEdit.selectAll() cursor = textEdit.textCursor() cursor.beginEditBlock() cursor.insertText(replaced) cursor.endEditBlock() if textEdit is not None: if not count: QApplication.beep() self.feedbackLabel.setText(self.tr("Not found")) else: self.feedbackLabel.setText(self.tr("%s replaced" % count)) self.writeSettings()
def getEnvironmentEntry(key, default = None): """ Module function to get an environment entry. @param key key of the requested environment entry (string) @param default value to be returned, if the environment doesn't contain the requested entry (string) @return the requested entry or the default value, if the entry wasn't found (string or None) """ filter = QRegExp("^%s[ \t]*=" % key) if isWindowsPlatform(): filter.setCaseSensitivity(Qt.CaseInsensitive) entries = QProcess.systemEnvironment().filter(filter) if entries.count() == 0: return default # if there are multiple entries, just consider the first one ename, val = unicode(entries[0]).split("=", 1) return val.strip()
def applyFilter(self, filterby, filter): self.filter = filter self.filter_by = filterby if filter == u'' or filterby == '': self.filtered_edw_list = copy(self.edw_list) else: self.filtered_edw_list = [] rx = QRegExp(filter) rx.setCaseSensitivity(Qt.CaseInsensitive) for edw in self.edw_list: grp_name = unicode(edw.getVal(filterby)) if rx.indexIn(grp_name) != -1: self.filtered_edw_list.append(edw) self.refreshGroups() # refresh the cell display for table in self.grouped_tables.itervalues(): table.refresh(None) table.disable_display = False table.refreshDisplay()
def search(self, pattern, **kwargs): """ Searchs given pattern text in the document. Usage:: >>> scriptEditor = Umbra.componentsManager.getInterface("factory.scriptEditor") True >>> codeEditor = scriptEditor.getCurrentEditor() True >>> codeEditor.search(searchPattern, caseSensitive=True, wholeWord=True, regularExpressions=True, \ backwardSearch=True, wrapAround=True) True :param pattern: Pattern to search for. :type pattern: unicode :param \*\*kwargs: Search settings. :type \*\*kwargs: dict :return: Method success. :rtype: bool """ settings = foundations.dataStructures.Structure(**{"caseSensitive" : False, "wholeWord" : False, "regularExpressions" : False, "backwardSearch" : False, "wrapAround" : True}) settings.update(kwargs) self.__searchPattern = pattern if settings.regularExpressions: pattern = QRegExp(pattern) pattern.setCaseSensitivity(Qt.CaseSensitive if settings.caseSensitive else Qt.CaseInsensitive) flags = QTextDocument.FindFlags() if settings.caseSensitive: flags = flags | QTextDocument.FindCaseSensitively if settings.wholeWord: flags = flags | QTextDocument.FindWholeWords if settings.backwardSearch: flags = flags | QTextDocument.FindBackward cursor = self.document().find(pattern, self.textCursor(), flags) if not cursor.isNull(): self.setTextCursor(cursor) return True else: if settings.wrapAround: self.storeTextCursorAnchor() cursor = self.textCursor() if settings.backwardSearch: cursor.movePosition(QTextCursor.End, QTextCursor.MoveAnchor) else: cursor.movePosition(QTextCursor.Start, QTextCursor.MoveAnchor) self.setTextCursor(cursor) settings.wrapAround = False if self.search(pattern, **settings): return True else: self.restoreTextCursorAnchor()
def __on_textEdited(self, text): patt = QRegExp("(^|\W)" + text) patt.setCaseSensitivity(False) self.__suggestPage.setFilterRegExp(patt) self.__pages.setCurrentPage(self.__suggestPage)