def test_scintillawrapper_void_int_cells_in_callback(self): editor.write('Hi') editor.setText('') editor.callback(lambda args: self.callback_scintillawrapper_void_int_cells(args), [SCINTILLANOTIFICATION.SAVEPOINTREACHED]) editor.setSavePoint() self.poll_for_callback() self.assertEqual(self.callbackCalled, True)
def run(self): line_ending = ['\r\n', '\r', '\n'][notepad.getFormatType()] if editor.getSelectionEmpty(): editor.setText(line_ending.join(self.__sort(editor.getCharacterPointer()))) elif editor.getSelectionMode() == 1: print '-->> {}'.format(editor.getSelectionNStart(0)) start = editor.getSelectionNStart(0) end = editor.getSelectionNEnd(0) start_column = editor.getColumn(start) end_column = editor.getColumn(end) line_start, line_end = editor.getUserLineSelection() start_position_selected_lines = editor.positionFromLine(line_start) end_position_selected_lines = editor.getLineEndPosition(line_end) def sort_as_int_if_possible(text): return int(text.strip()) if text.strip().isdigit() else text if (line_start==0) and (line_end==editor.getLineCount()-1): editor.setText(line_ending.join(self.__sort(editor.getCharacterPointer(),lambda x: sort_as_int_if_possible(x[start_column:end_column])))) else: lines = self.__sort(editor.getTextRange(start_position_selected_lines, end_position_selected_lines), lambda x: sort_as_int_if_possible(x[start_column:end_column])) print line_ending.join(lines) editor.setTarget(start_position_selected_lines, end_position_selected_lines) editor.replaceTarget(line_ending.join(lines)) else: text_of_sel = editor.getTextRange(*editor.getUserCharSelection()) line_end_of_sel = line_ending if text_of_sel.endswith(line_ending) else '' lines = self.__sort(text_of_sel) editor.replaceSel(line_ending.join(lines) + line_end_of_sel) self.window.destroy()
def test_scintillawrapper_void_position_int(self): editor.setText('Hello world') editor.setLexer(LEXER.CONTAINER) editor.startStyling(0, 31) editor.setStyling(5, 29) styledText = editor.getStyledText(0, 5) editor.setLexer(LEXER.NULL) self.assertEqual(styledText, ('Hello', [29, 29, 29, 29, 29]))
def reformat(separator, area): separator = window.clipboard_get() if separator_dict.get( separator) == 'clipboard' else separator_dict.get(separator) used_eol = format_types_dict.get(notepad.getFormatType()) editor.beginUndoAction() if area == 0: rows = editor.getCharacterPointer().splitlines() rows = prepare(separator, rows, used_eol) editor.setText(used_eol.join(rows)) elif area == 1: if editor.selectionIsRectangle(): selections = [(editor.getSelectionNStart(i), editor.getSelectionNEnd(i)) for i in range(editor.getSelections())] rows = [ editor.getRangePointer(x, y - x) for x, y in selections ] rows = prepare(separator, rows, used_eol) editor.clearSelections() for i, position in zip(reversed(range(len(selections))), reversed(selections)): editor.setTarget(*position) editor.replaceTarget(rows[i]) else: first_selected_line, last_selected_line = editor.getUserLineSelection( ) startpos = editor.positionFromLine(first_selected_line) endpos = editor.positionFromLine(last_selected_line) rows = editor.getRangePointer(startpos, endpos - startpos) rows = prepare(separator, rows.split(used_eol), used_eol) editor.setTarget(startpos, endpos) editor.replaceTarget(used_eol.join(rows)) else: first_visible_line = editor.getFirstVisibleLine() startpos = editor.positionFromLine(first_visible_line) endpos = editor.positionFromLine(editor.linesOnScreen() + first_visible_line) rows = editor.getRangePointer(startpos, endpos - startpos) rows = prepare(separator, rows.split(used_eol), used_eol) editor.setTarget(startpos, endpos) editor.replaceTarget(used_eol.join(rows)) editor.endUndoAction()
def run_demo(): demo_message = ('Running in demo mode\n' 'By commenting run_demo() line or by commenting/deleting the whole tag it is ready to be used') notepad.messageBox(demo_message,'Demo Mode') import random _number_of_lines = 100000 _s = 50 _line_split_separator = ',' _data = ['{0}{3}{1}{3}{2}\r\n'.format('a'*random.randint(0,_s),'b'*random.randint(0,_s),'c'*random.randint(0,_s),_line_split_separator) for i in xrange(_number_of_lines)] notepad.new() editor.setText(''.join(_data)) del _data
def run(self): line_ending = ['\r\n', '\r', '\n'][notepad.getFormatType()] if editor.getSelectionEmpty(): editor.setText( line_ending.join(self.__sort(editor.getCharacterPointer()))) elif editor.getSelectionMode() == 1: print '-->> {}'.format(editor.getSelectionNStart(0)) start = editor.getSelectionNStart(0) end = editor.getSelectionNEnd(0) start_column = editor.getColumn(start) end_column = editor.getColumn(end) line_start, line_end = editor.getUserLineSelection() start_position_selected_lines = editor.positionFromLine(line_start) end_position_selected_lines = editor.getLineEndPosition(line_end) def sort_as_int_if_possible(text): return int(text.strip()) if text.strip().isdigit() else text if (line_start == 0) and (line_end == editor.getLineCount() - 1): editor.setText( line_ending.join( self.__sort( editor.getCharacterPointer(), lambda x: sort_as_int_if_possible(x[start_column: end_column])))) else: lines = self.__sort( editor.getTextRange(start_position_selected_lines, end_position_selected_lines), lambda x: sort_as_int_if_possible(x[start_column:end_column])) print line_ending.join(lines) editor.setTarget(start_position_selected_lines, end_position_selected_lines) editor.replaceTarget(line_ending.join(lines)) else: text_of_sel = editor.getTextRange(*editor.getUserCharSelection()) line_end_of_sel = line_ending if text_of_sel.endswith( line_ending) else '' lines = self.__sort(text_of_sel) editor.replaceSel(line_ending.join(lines) + line_end_of_sel) self.window.destroy()
def reformat(separator,area): separator = window.clipboard_get() if separator_dict.get(separator) == 'clipboard' else separator_dict.get(separator) used_eol = format_types_dict.get(notepad.getFormatType()) editor.beginUndoAction() if area == 0: rows = editor.getCharacterPointer().splitlines() rows = prepare(separator, rows, used_eol) editor.setText(used_eol.join(rows)) elif area == 1: if editor.selectionIsRectangle(): selections = [(editor.getSelectionNStart(i),editor.getSelectionNEnd(i)) for i in range(editor.getSelections())] rows = [editor.getRangePointer(x, y-x) for x,y in selections] rows = prepare(separator, rows, used_eol) editor.clearSelections() for i, position in zip(reversed(range(len(selections))), reversed(selections)): editor.setTarget(*position) editor.replaceTarget(rows[i]) else: first_selected_line, last_selected_line = editor.getUserLineSelection() startpos = editor.positionFromLine(first_selected_line) endpos = editor.positionFromLine(last_selected_line) rows = editor.getRangePointer(startpos, endpos-startpos) rows = prepare(separator, rows.split(used_eol), used_eol) editor.setTarget(startpos, endpos) editor.replaceTarget(used_eol.join(rows)) else: first_visible_line = editor.getFirstVisibleLine() startpos = editor.positionFromLine(first_visible_line) endpos = editor.positionFromLine(editor.linesOnScreen() + first_visible_line) rows = editor.getRangePointer(startpos, endpos-startpos) rows = prepare(separator, rows.split(used_eol), used_eol) editor.setTarget(startpos, endpos) editor.replaceTarget(used_eol.join(rows)) editor.endUndoAction()
def run_demo(): demo_message = ( 'Running in demo mode\n' 'By commenting run_demo() line or by commenting/deleting the whole tag it is ready to be used' ) notepad.messageBox(demo_message, 'Demo Mode') import random _number_of_lines = 100000 _s = 50 _line_split_separator = ',' _data = [ '{0}{3}{1}{3}{2}\r\n'.format('a' * random.randint(0, _s), 'b' * random.randint(0, _s), 'c' * random.randint(0, _s), _line_split_separator) for i in xrange(_number_of_lines) ] notepad.new() editor.setText(''.join(_data)) del _data
def callback_scintillawrapper_int_position_void(self, args): editor.clearCallbacks() editor.setText('') self.test_scintillawrapper_int_position_void_getColumn() editor.setText('') self.test_scintillawrapper_int_position_void_getCharAt() editor.setText('') self.test_scintillawrapper_int_position_void_lineFromPosition() self.callbackCalled = True
for line in editor.getText().splitlines(): if line.strip(): # skip empty lines if in_text_line: if len(chords) == 1: new_content += '[{0}]{1}\r\n'.format(chords[0][1], line) else: for i, chord in enumerate(chords[:-1]): _line = line[chords[i][0][0]:chords[i+1][0][0]] new_content += '[{0}]{1} '.format(chords[i][1], _line).replace('[]','') # last element in list _line = line[chords[-1][0][0]:] new_content += '[{0}]{1}\r\n'.format(chords[-1][1], _line).replace('[]','') # next line must be a chord line chords = [] # .clear() in_text_line = False else: # in chord lines chords = [(m.span(), m.group()) for m in re.finditer('[^ ]+', line)] # add a dummy entry if the chord does not start at the beginning of the line if chords[0][0][0] > 0: chords.insert(0, ((0,0), '')) # next line must be a text line in_text_line = True editor.setText(new_content)
def callback_scintillawrapper_void_void_void(self, args): editor.clearCallbacks() editor.setText('') self.test_scintillawrapper_void_void_void() self.callbackCalled = True
def test_scintillawrapper_int_void_void(self): editor.setText('12345') length = editor.getLength() self.assertEqual(length, 5)
def test_scintillawrapper_void_int_string(self): editor.setText('abc123') editor.gotoPos(3) editor.addText('def') resultText = editor.getText() self.assertEqual(resultText, 'abcdef123')
def callback_scintillawrapper_int_position_bool(self, args): editor.clearCallbacks() editor.setText('abcdef ghijkl mnopqrst') wordStart = editor.wordStartPosition(10, False) self.assertEqual(wordStart, 7) self.callbackCalled = True
if prev_level == get_level(lines[current_line]): found_additional_filters = [ lines[current_line].count(x) for x in combined_filters ] found_unique_filters = [ lines[current_line].count(u) for u in unique_filters ] level_stack[-1][0].add(sum(found_additional_filters), found_unique_filters) # create a list of all Node objects results = [x[0].result() for x in level_stack] results.extend([x[0].result() for x in save_popped_levels]) # reformat the resulting content if notepad.messageBox('Should additional filtering be applied?', '', MESSAGEBOXFLAGS.YESNO) == MESSAGEBOXFLAGS.RESULTYES: for line, _sum, _additional_filters, _unique_filters in sorted(results): __unique_filters = ', '.join([str(x) for x in _unique_filters]) __unique_filters = ', ' + __unique_filters if __unique_filters else '' lines[line] = '{0:<{1}}({2}{3}{4}{5})'.format(lines[line][:80], 80, _sum, ', ', _additional_filters, __unique_filters) else: for line, _sum, _ in sorted(results): lines[line] = '{0:<{1}}({2})'.format(lines[line][:80], 80, _sum) # set the new content editor.setText('\r\n'.join(lines))