commit 6f57f45eb170091f8719192f540c06ad67b5c46a
parent 5d1749b14456cf73f5108828efea557fa4e716f5
Author: Alexander Kojevnikov <alexander@kojevnikov.com>
Date:   Sat, 15 May 2010 11:28:20 +1000
Suggest file name for the image
Diffstat:
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/src/spek-spectrogram.vala b/src/spek-spectrogram.vala
@@ -23,8 +23,8 @@ using Gtk;
 namespace Spek {
 	class Spectrogram : DrawingArea {
 
+		public string file_name { get; private set; }
 		private Source source;
-		private string file_name;
 		private const int THRESHOLD = -92;
 		private const int BANDS = 1024;
 
diff --git a/src/spek-window.vala b/src/spek-window.vala
@@ -23,7 +23,7 @@ namespace Spek {
 	public class Window : Gtk.Window {
 
 		private Spectrogram spectrogram;
-		private string path;
+		private string cur_dir;
 
 		public Window () {
 			title = _("Spek - Acoustic Spectrum Analyser");
@@ -73,7 +73,7 @@ namespace Spek {
 			toolbar.insert (about, -1);
 
 			spectrogram = new Spectrogram ();
-			path = Environment.get_home_dir ();
+			cur_dir = Environment.get_home_dir ();
 
 			var vbox = new VBox (false, 0);
 			vbox.pack_start (toolbar, false, true, 0);
@@ -89,12 +89,11 @@ namespace Spek {
 				STOCK_OPEN, ResponseType.ACCEPT, null);
 			chooser.set_default_response (ResponseType.ACCEPT);
 			chooser.select_multiple = false;
-			chooser.local_only = false;
-			chooser.set_current_folder (path);
+			chooser.set_current_folder (cur_dir);
 			if (chooser.run () == ResponseType.ACCEPT) {
-				var filename = chooser.get_filename ();
-				path = Path.get_dirname (filename);
-				spectrogram.open (filename);
+				var file_name = chooser.get_filename ();
+				cur_dir = Path.get_dirname (file_name);
+				spectrogram.open (file_name);
 			}
 			chooser.destroy ();
 		}
@@ -104,12 +103,22 @@ namespace Spek {
 				_("Save Spectrogram"), this, FileChooserAction.SAVE,
 				STOCK_CANCEL, ResponseType.CANCEL,
 				STOCK_SAVE, ResponseType.ACCEPT, null);
+			chooser.set_default_response (ResponseType.ACCEPT);
+			chooser.set_current_folder (cur_dir);
+
+			// Suggested name is <file_name>.png
+			var file_name = Path.get_basename (spectrogram.file_name);
+			file_name += ".png";
+			chooser.set_current_name (file_name);
+
 			var filter = new FileFilter ();
 			filter.add_pattern ("*.png");
 			filter.set_name (_("PNG Images"));
 			chooser.add_filter (filter);
 			if (chooser.run () == ResponseType.ACCEPT) {
-				spectrogram.save (chooser.get_filename ());
+				file_name = chooser.get_filename ();
+				cur_dir = Path.get_dirname (file_name);
+				spectrogram.save (file_name);
 			}
 			chooser.destroy ();
 		}