Example #1
0
 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)
Example #2
0
    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()
Example #3
0
 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]))
Example #4
0
    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()
Example #5
0
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
Example #6
0
    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()
Example #7
0
    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()
Example #8
0
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
Example #9
0
 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
Example #10
0
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)
Example #11
0
 def callback_scintillawrapper_void_void_void(self, args):
     editor.clearCallbacks()
     editor.setText('')
     self.test_scintillawrapper_void_void_void()
     self.callbackCalled = True
Example #12
0
 def test_scintillawrapper_int_void_void(self):
     editor.setText('12345')
     length = editor.getLength()
     self.assertEqual(length, 5)
Example #13
0
 def test_scintillawrapper_void_int_string(self):
     editor.setText('abc123')
     editor.gotoPos(3)
     editor.addText('def')
     resultText = editor.getText()
     self.assertEqual(resultText, 'abcdef123')
Example #14
0
 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
Example #15
0
    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))