[meld] Set cut/copy/paste sensitivity based on selection in file comparison
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Set cut/copy/paste sensitivity based on selection in file comparison
- Date: Sat, 22 Jun 2013 21:47:04 +0000 (UTC)
commit 971c1dd5d7d41fa58397f51f1b229deee5a65024
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Jun 23 07:15:02 2013 +1000
Set cut/copy/paste sensitivity based on selection in file comparison
meld/filediff.py | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index 1580c95..5ffa688 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -216,6 +216,8 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.animating_chunks = [[] for buf in self.textbuffer]
for buf in self.textbuffer:
buf.create_tag("inline")
+ buf.connect("notify::has-selection",
+ self.update_text_actions_sensitivity)
actions = (
("MakePatch", None, _("Format as Patch..."), None,
@@ -714,6 +716,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.on_cursor_position_changed(view.get_buffer(), None, True)
self._set_save_action_sensitivity()
self._set_merge_action_sensitivity()
+ self.update_text_actions_sensitivity()
def on_textview_focus_out_event(self, view, event):
self._set_merge_action_sensitivity()
@@ -922,6 +925,20 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
line = cursor_it.get_line() + 1
self._open_files([self.textbuffer[pane].data.filename], line)
+ def update_text_actions_sensitivity(self, *args):
+ widget = self.focus_pane
+ if not widget:
+ cut, copy, paste = False, False, False
+ else:
+ cut = copy = widget.get_buffer().get_has_selection()
+ # Ideally, this would check whether the clipboard included
+ # something pasteable. However, there is no changed signal.
+ # widget.get_clipboard(
+ # gtk.gdk.SELECTION_CLIPBOARD).wait_is_text_available()
+ paste = widget.get_editable()
+ for action, sens in zip(("Cut", "Copy", "Paste"), (cut, copy, paste)):
+ self.main_actiongroup.get_action(action).set_sensitive(sens)
+
def get_selected_text(self):
"""Returns selected text of active pane"""
pane = self._get_focused_pane()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]