Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f092377

Browse files
committed
GTK3 implementation of the copy canvas tool
1 parent dda9144 commit f092377

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

lib/matplotlib/backend_tools.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,13 @@ def _get_help_html(self):
10631063
"<tbody>".join(rows[1:]) + "</tbody></table>")
10641064

10651065

1066+
class ToolCopyToClipboardBase(ToolBase):
1067+
"""Tool to copy the figure to the clipboard"""
1068+
1069+
description = 'Copy the canvas figure to clipboard'
1070+
default_keymap = rcParams['keymap.copy']
1071+
1072+
10661073
default_tools = {'home': ToolHome, 'back': ToolBack, 'forward': ToolForward,
10671074
'zoom': ToolZoom, 'pan': ToolPan,
10681075
'subplots': 'ToolConfigureSubplots',
@@ -1081,6 +1088,7 @@ def _get_help_html(self):
10811088
'cursor': 'ToolSetCursor',
10821089
'rubberband': 'ToolRubberband',
10831090
'help': 'ToolHelp',
1091+
'copy': 'ToolCopyToClipboard',
10841092
}
10851093
"""Default tools"""
10861094

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,15 @@ def trigger(self, *args):
856856
dialog.destroy()
857857

858858

859+
class ToolCopyToClipboardGTK3(backend_tools.ToolCopyToClipboardBase):
860+
def trigger(self, *args, **kwargs):
861+
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
862+
window = self.canvas.get_window()
863+
x, y, width, height = window.get_geometry()
864+
pb = Gdk.pixbuf_get_from_window(window, x, y, width, height)
865+
clipboard.set_image(pb)
866+
867+
859868
# Define the file to use as the GTk icon
860869
if sys.platform == 'win32':
861870
icon_filename = 'matplotlib.png'
@@ -888,6 +897,7 @@ def error_msg_gtk(msg, parent=None):
888897
backend_tools.ToolSetCursor = SetCursorGTK3
889898
backend_tools.ToolRubberband = RubberbandGTK3
890899
backend_tools.ToolHelp = HelpGTK3
900+
backend_tools.ToolCopyToClipboard = ToolCopyToClipboardGTK3
891901

892902
Toolbar = ToolbarGTK3
893903

lib/matplotlib/rcsetup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1421,6 +1421,7 @@ def _validate_linestyle(ls):
14211421
'keymap.xscale': [['k', 'L'], validate_stringlist],
14221422
'keymap.all_axes': [['a'], validate_stringlist],
14231423
'keymap.help': [['f1'], validate_stringlist],
1424+
'keymap.copy': [('ctrl+c', 'cmd+c', 'shift+ctrl+c'), validate_stringlist],
14241425

14251426
# sample data
14261427
'examples.directory': ['', validate_string],

0 commit comments

Comments
 (0)