Skip to content

Commit f916aad

Browse files
authored
Merge pull request #10864 from mspacek/patch-1
API: Do not suggest a unique filename in save dialogue
2 parents f78e4d4 + 84b9ca2 commit f916aad

File tree

4 files changed

+14
-28
lines changed

4 files changed

+14
-28
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Stop adding a suffix to suggest unique file name
2+
------------------------------------------------
3+
4+
Previously, when saving a figure to a file using the GUI's
5+
save dialog box, if the default filename (based on the
6+
figure window title) already existed on disk, Matplotlib
7+
would append a suffix (e.g. `Figure_1-1.png`), preventing
8+
the dialog from prompting to overwrite the file. This
9+
behaviour has been removed. Now if the file name exists on
10+
disk, the user is prompted whether or not to overwrite it.
11+
This eliminates guesswork, and allows intentional
12+
overwriting, especially when the figure name has been
13+
manually set using `fig.canvas.set_window_title()`.

lib/matplotlib/backend_bases.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2267,17 +2267,6 @@ def get_default_filename(self):
22672267
default_basename = default_basename.replace(' ', '_')
22682268
default_filetype = self.get_default_filetype()
22692269
default_filename = default_basename + '.' + default_filetype
2270-
2271-
save_dir = os.path.expanduser(rcParams['savefig.directory'])
2272-
2273-
# ensure non-existing filename in save dir
2274-
i = 1
2275-
while os.path.isfile(os.path.join(save_dir, default_filename)):
2276-
# attach numerical count to basename
2277-
default_filename = (
2278-
'{}-{}.{}'.format(default_basename, i, default_filetype))
2279-
i += 1
2280-
22812270
return default_filename
22822271

22832272
def switch_backends(self, FigureCanvasClass):

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ def __init__(self,
592592
):
593593
super().__init__(title, parent, action, buttons)
594594
self.set_default_response(Gtk.ResponseType.OK)
595+
self.set_do_overwrite_confirmation(True)
595596

596597
if not path:
597598
path = os.getcwd()

lib/matplotlib/tests/test_backend_bases.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -60,20 +60,3 @@ def test_get_default_filename():
6060
assert filename == 'image.png'
6161
finally:
6262
shutil.rmtree(test_dir)
63-
64-
65-
def test_get_default_filename_already_exists():
66-
# From #3068: Suggest non-existing default filename
67-
try:
68-
test_dir = tempfile.mkdtemp()
69-
plt.rcParams['savefig.directory'] = test_dir
70-
fig = plt.figure()
71-
canvas = FigureCanvasBase(fig)
72-
73-
# create 'image.png' in figure's save dir
74-
open(os.path.join(test_dir, 'image.png'), 'w').close()
75-
76-
filename = canvas.get_default_filename()
77-
assert filename == 'image-1.png'
78-
finally:
79-
shutil.rmtree(test_dir)

0 commit comments

Comments
 (0)