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 show(self): msg = '' notepad.menuCommand(MENUCOMMAND.SEARCH_REPLACE) if (self.findwhat_handle is None) or (self.replacewith_handle is None): self.find_controls() if editor.getSelections() == 2: if (editor.getSelectionMode() == SELECTIONMODE.STREAM) and (not editor.getSelectionEmpty()): _find_what = editor.getTextRange(editor.getSelectionNStart(0), editor.getSelectionNEnd(0)) _replace_with = editor.getTextRange(editor.getSelectionNStart(1), editor.getSelectionNEnd(1)) if len(_find_what) > 2046: _find_what = _find_what[:2046] msg += 'Warning: Selected text too long for find-what box; truncating to 2046 characters.\n' if len(_replace_with) > 2046: _replace_with = _replace_with[:2046] msg += 'Warning: Selected text too long for replace-with box; truncating to 2046 characters.' if self.SetWindowText(self.findwhat_handle, self.return_proper_string(_find_what)) == 0: msg += 'Error: Problem setting find-what text\n' if self.SetWindowText(self.replacewith_handle, self.return_proper_string(_replace_with)) == 0: msg += 'Error: Problem setting replace-with text' else: msg = 'Error: Either empty selection or unsupported selection mode detected' if len(msg) > 0: notepad.messageBox(msg)
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 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()