Skip to content

Commit a975717

Browse files
OceanWolftacaswell
authored andcommitted
MEP22 Save Figure Tool
1 parent 5542c5a commit a975717

File tree

4 files changed

+43
-33
lines changed

4 files changed

+43
-33
lines changed

lib/matplotlib/backend_tools.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import time
2020
import warnings
2121

22+
import os
23+
2224

2325
class Cursors(object):
2426
"""Simple namespace for cursor reference"""
@@ -765,6 +767,43 @@ class SaveFigureBase(ToolBase):
765767
default_keymap = rcParams['keymap.save']
766768

767769

770+
class ToolSaveFigure(ToolBase):
771+
"""Saves the figure"""
772+
773+
description = 'Save the figure'
774+
image = 'filesave.png'
775+
default_keymap = rcParams['keymap.save']
776+
777+
def get_filechooser(self):
778+
fc = self.figure.canvas.backend.FileChooserDialog(
779+
title='Save the figure',
780+
parent=self.figure.canvas.manager.window,
781+
path=os.path.expanduser(rcParams.get('savefig.directory', '')),
782+
filetypes=self.figure.canvas.get_supported_filetypes(),
783+
default_filetype=self.figure.canvas.get_default_filetype())
784+
fc.set_current_name(self.figure.canvas.get_default_filename())
785+
return fc
786+
787+
def trigger(self, *args, **kwargs):
788+
chooser = self.get_filechooser()
789+
fname, format_ = chooser.get_filename_from_user()
790+
chooser.destroy()
791+
if fname:
792+
startpath = os.path.expanduser(
793+
rcParams.get('savefig.directory', ''))
794+
if startpath == '':
795+
# explicitly missing key or empty str signals to use cwd
796+
rcParams['savefig.directory'] = startpath
797+
else:
798+
# save dir for next time
799+
rcParams['savefig.directory'] = os.path.dirname(
800+
six.text_type(fname))
801+
try:
802+
self.figure.canvas.print_figure(fname, format=format_)
803+
except Exception as e:
804+
error_msg_gtk(str(e), parent=self)
805+
806+
768807
class ZoomPanBase(ToolToggleBase):
769808
"""Base class for `ToolZoom` and `ToolPan`"""
770809
def __init__(self, *args):

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -912,38 +912,6 @@ def set_message(self, s):
912912
self.push(self._context, s)
913913

914914

915-
class SaveFigureGTK3(backend_tools.SaveFigureBase):
916-
917-
def get_filechooser(self):
918-
fc = FileChooserDialog(
919-
title='Save the figure',
920-
parent=self.figure.canvas.manager.window,
921-
path=os.path.expanduser(rcParams.get('savefig.directory', '')),
922-
filetypes=self.figure.canvas.get_supported_filetypes(),
923-
default_filetype=self.figure.canvas.get_default_filetype())
924-
fc.set_current_name(self.figure.canvas.get_default_filename())
925-
return fc
926-
927-
def trigger(self, *args, **kwargs):
928-
chooser = self.get_filechooser()
929-
fname, format_ = chooser.get_filename_from_user()
930-
chooser.destroy()
931-
if fname:
932-
startpath = os.path.expanduser(
933-
rcParams.get('savefig.directory', ''))
934-
if startpath == '':
935-
# explicitly missing key or empty str signals to use cwd
936-
rcParams['savefig.directory'] = startpath
937-
else:
938-
# save dir for next time
939-
rcParams['savefig.directory'] = os.path.dirname(
940-
six.text_type(fname))
941-
try:
942-
self.figure.canvas.print_figure(fname, format=format_)
943-
except Exception as e:
944-
error_msg_gtk(str(e), parent=self)
945-
946-
947915
class SetCursorGTK3(backend_tools.SetCursorBase):
948916
def set_cursor(self, cursor):
949917
self.figure.canvas.get_property("window").set_cursor(cursord[cursor])
@@ -1029,7 +997,6 @@ def error_msg_gtk(msg, parent=None):
1029997
dialog.destroy()
1030998

1031999

1032-
backend_tools.ToolSaveFigure = SaveFigureGTK3
10331000
backend_tools.ToolConfigureSubplots = ConfigureSubplotsGTK3
10341001
backend_tools.ToolSetCursor = SetCursorGTK3
10351002
backend_tools.ToolRubberband = RubberbandGTK3

lib/matplotlib/backends/backend_gtk3agg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ def new_figure_manager_given_figure(num, figure):
124124
Window = backend_gtk3.WindowGTK3
125125
Toolbar = backend_gtk3.ToolbarGTK3
126126
Statusbar = backend_gtk3.StatusbarGTK3
127+
FileChooserDialog = backend_gtk3.FileChooserDialog
128+
127129
Toolbar2 = backend_gtk3.NavigationToolbar2GTK3
128130
MainLoop = backend_gtk3.MainLoopGTK3
129131
show = backend_gtk3.show

lib/matplotlib/backends/backend_gtk3cairo.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def new_figure_manager_given_figure(num, figure):
7575
Window = backend_gtk3.WindowGTK3
7676
Toolbar = backend_gtk3.ToolbarGTK3
7777
Statusbar = backend_gtk3.StatusbarGTK3
78+
FileChooserDialog = backend_gtk3.FileChooserDialog
79+
7880
Toolbar2 = backend_gtk3.NavigationToolbar2GTK3
7981
MainLoop = backend_gtk3.MainLoopGTK3
8082
show = backend_gtk3.show

0 commit comments

Comments
 (0)