Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/TextThought.py
diff options
context:
space:
mode:
authorWalter 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)
commit67ba6b26c6a9e112065a42be9ad785a7158e441c (patch)
tree191c55869fae3278cfe297f078adeb8dfba8fc4c /src/TextThought.py
parent1e622866f18294b956faa178c0a8675d3dac4315 (diff)
basic copy/paste working
Diffstat (limited to 'src/TextThought.py')
-rw-r--r--src/TextThought.py64
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