diff options
author | Walter Bender <walter.bender@gmail.com> | 2013-02-22 22:20:50 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2013-02-22 22:20:50 (GMT) |
commit | 67ba6b26c6a9e112065a42be9ad785a7158e441c (patch) | |
tree | 191c55869fae3278cfe297f078adeb8dfba8fc4c /src/TextThought.py | |
parent | 1e622866f18294b956faa178c0a8675d3dac4315 (diff) |
basic copy/paste working
Diffstat (limited to 'src/TextThought.py')
-rw-r--r-- | src/TextThought.py | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/src/TextThought.py b/src/TextThought.py index d376da0..0d927e5 100644 --- a/src/TextThought.py +++ b/src/TextThought.py @@ -67,6 +67,7 @@ class TextThought (ResizableThought): self._fixed = fixed self.textview = None self._textview_handler = None + self._clipboard = None if prefs.get_direction () == gtk.TEXT_DIR_LTR: self.pango_context.set_base_dir (pango.DIRECTION_LTR) @@ -764,7 +765,6 @@ class TextThought (ResizableThought): self.recalc_edges() self.emit ("update_view") - logging.debug('calling selection_changed') self.selection_changed() def _create_textview(self): @@ -786,14 +786,14 @@ class TextThought (ResizableThought): if self._textview_handler is None: self._textview_handler = self.textview.connect( 'focus-out-event', self._textview_focus_out_cb) - ''' self.copy_handler = self.textview.connect( 'copy-clipboard', self._textview_copy_cb) + self.cut_handler = self.textview.connect( + 'cut-clipboard', self._textview_cut_cb) self.paste_handler = self.textview.connect( 'paste-clipboard', self._textview_paste_cb) self.select_handler = self.textview.connect( 'select-all', self._textview_select_cb) - ''' self.textview.grab_focus() self._fixed.show() @@ -812,16 +812,26 @@ class TextThought (ResizableThought): return int(x + xo), int(y + yo), int(w), int(h) def _textview_copy_cb(self, widget=None, event=None): - logging.debug('copy') - return False + self.textview.get_buffer().copy_clipboard(self._clipboard) + return True + + def _textview_cut_cb(self, widget=None, event=None): + self.textview.get_buffer().cut_clipboard( + self._clipboard, self.textview.get_editable()) + self._textview_process() + return True def _textview_paste_cb(self, widget=None, event=None): - logging.debug('paste') - return False + self.textview.get_buffer().paste_clipboard( + self._clipboard, None, self.textview.get_editable()) + self._textview_process() + return True def _textview_select_cb(self, widget=None, event=None): - logging.debug('select all') - return False + buffer = self.textview.get_buffer() + buffer.select_range(buffer.get_start_iter(), + buffer.get_end_iter()) + return True def _textview_focus_out_cb(self, widget=None, event=None): self._textview_process() @@ -854,8 +864,9 @@ class TextThought (ResizableThought): return ResizableThought.process_button_release(self, event, transformed) def selection_changed (self): - (start, end) = (min(self.index, self.end_index), max(self.index, self.end_index)) - logging.debug('emit text_selection_changed') + # Fix me: We are forcing selection to entire buffer + # (start, end) = (min(self.index, self.end_index), max(self.index, self.end_index)) + start, end = 0, len(self.text) self.emit ("text_selection_changed", start, end, self.text[start:end]) def handle_motion (self, event, transformed): @@ -1043,35 +1054,16 @@ class TextThought (ResizableThought): self.recalc_edges() def copy_text (self, clip): - logging.debug('copy text') - if self.end_index > self.index: - clip.set_text (self.text[self.index:self.end_index]) - else: - clip.set_text (self.text[self.end_index:self.index]) + self._clipboard = clip + self._textview_copy_cb() def cut_text (self, clip): - logging.debug('cut text') - if self.end_index > self.index: - clip.set_text (self.text[self.index:self.end_index]) - else: - clip.set_text (self.text[self.end_index:self.index]) - self.delete_char () - self.recalc_edges () - self.emit ("title_changed", self.text) - self.bindex = self.bindex_from_index (self.index) - self.emit ("update_view") + self._clipboard = clip + self._textview_copy_cb() def paste_text (self, clip): - logging.debug('paste text') - text = clip.wait_for_text() - if not text: - return - self.add_text (text) - self.rebuild_byte_table () - self.recalc_edges () - self.emit ("title_changed", self.text) - self.bindex = self.bindex_from_index (self.index) - self.emit ("update_view") + self._clipboard = clip + self._textview_paste_cb() def delete_surroundings(self, imcontext, offset, n_chars, mode): # TODO: Add in Attr stuff |