def _on_item_clicked(self, item): """ Go to the item position in the editor. """ if item: name = item.data(0, QtCore.Qt.UserRole) if name: go = name.block.blockNumber() helper = TextHelper(self._editor) if helper.current_line_nbr() != go: helper.goto_line(go, column=name.column) self._editor.setFocus()
def test_add_decoration(editor): helper = TextHelper(editor) helper.goto_line(2, 2) cursor = helper.word_under_cursor(select_whole_word=True) deco = TextDecoration(cursor) deco.set_as_bold() deco.set_as_underlined(QtGui.QColor("#FF0000")) editor.decorations.append(deco) assert not editor.decorations.append(deco) assert deco.contains_cursor(cursor) # keep editor clean for next tests editor.decorations.clear()
def _on_bt_toggled(self, *ar): if not self._lock: self._lock = True for w in self._widgets: if w == self.sender(): break if self._toggled: self._toggled.setChecked(False) self._toggled = w th = TextHelper(self.editor) line = w.scope.blockNumber() th.goto_line(line, column=th.line_indent(line)) self._lock = False self.editor.setFocus()
def test_dynamic_folding_insert_section(): # test insert section under empty data division # data division (which is not a fold trigger initially) block will become a fold trigger editor = CobolCodeEdit() editor.setPlainText(section_code, '', '') th = TextHelper(editor) block = editor.document().findBlockByNumber(2) assert TextBlockHelper.is_fold_trigger(block) is False cursor = th.goto_line(2, column=len(' DATA DIVISION.')) cursor.insertText('\n WORKING-STORAGE SECTION.') assert TextBlockHelper.is_fold_trigger(block) is True
def _auto_import(self): helper = TextHelper(self.editor) name = helper.word_under_cursor(select_whole_word=True).selectedText() if name: import_stmt = 'import %s' % name else: import_stmt = '' import_stmt, status = QtWidgets.QInputDialog.getText( self.editor, _('Add import'), _('Import statement:'), QtWidgets.QLineEdit.Normal, import_stmt) if status: sh = self.editor.syntax_highlighter line_number = sh.import_statements[0].blockNumber() for stmt in sh.import_statements: if stmt.text() == import_stmt: # same import already exists return l, c = helper.cursor_position() cursor = helper.goto_line(line_number) cursor.insertText(import_stmt + '\n') helper.goto_line(l + 1, c)
def test_dynamic_folding_insert_end_perform(): # test insert section under empty data division # data division (which is not a fold trigger initially) block will become a fold trigger editor = CobolCodeEdit() editor.setPlainText(end_perform_code, '', '') th = TextHelper(editor) block = editor.document().findBlockByNumber(6) first, last = FoldScope(block).get_range() assert first == 6 assert last == 7 cursor = th.goto_line(7, column=len(' DISPLAY "FOO"')) cursor.insertText('\n END-PERFORM') first, last = FoldScope(block).get_range() assert first == 6 assert last == 8 editor.close()
def test_dynamic_folding_insert_end_if(): # test insert section under empty data division # data division (which is not a fold trigger initially) block will become a fold trigger editor = CobolCodeEdit() editor.setPlainText(end_if_code, '', '') th = TextHelper(editor) block = editor.document().findBlockByNumber(4) first, last = FoldScope(block).get_range() assert first == 4 assert last == 5 cursor = th.goto_line(5, column=len(' DISPLAY "FOO"')) cursor.insertText('\n END-IF') first, last = FoldScope(block).get_range() assert first == 4 assert last == 6 editor.close()