Suggest file name for the image

This commit is contained in:
Alexander Kojevnikov 2010-05-15 11:28:20 +10:00
parent 5d1749b144
commit 6f57f45eb1
2 changed files with 18 additions and 9 deletions

View File

@ -23,8 +23,8 @@ using Gtk;
namespace Spek { namespace Spek {
class Spectrogram : DrawingArea { class Spectrogram : DrawingArea {
public string file_name { get; private set; }
private Source source; private Source source;
private string file_name;
private const int THRESHOLD = -92; private const int THRESHOLD = -92;
private const int BANDS = 1024; private const int BANDS = 1024;

View File

@ -23,7 +23,7 @@ namespace Spek {
public class Window : Gtk.Window { public class Window : Gtk.Window {
private Spectrogram spectrogram; private Spectrogram spectrogram;
private string path; private string cur_dir;
public Window () { public Window () {
title = _("Spek - Acoustic Spectrum Analyser"); title = _("Spek - Acoustic Spectrum Analyser");
@ -73,7 +73,7 @@ namespace Spek {
toolbar.insert (about, -1); toolbar.insert (about, -1);
spectrogram = new Spectrogram (); spectrogram = new Spectrogram ();
path = Environment.get_home_dir (); cur_dir = Environment.get_home_dir ();
var vbox = new VBox (false, 0); var vbox = new VBox (false, 0);
vbox.pack_start (toolbar, false, true, 0); vbox.pack_start (toolbar, false, true, 0);
@ -89,12 +89,11 @@ namespace Spek {
STOCK_OPEN, ResponseType.ACCEPT, null); STOCK_OPEN, ResponseType.ACCEPT, null);
chooser.set_default_response (ResponseType.ACCEPT); chooser.set_default_response (ResponseType.ACCEPT);
chooser.select_multiple = false; chooser.select_multiple = false;
chooser.local_only = false; chooser.set_current_folder (cur_dir);
chooser.set_current_folder (path);
if (chooser.run () == ResponseType.ACCEPT) { if (chooser.run () == ResponseType.ACCEPT) {
var filename = chooser.get_filename (); var file_name = chooser.get_filename ();
path = Path.get_dirname (filename); cur_dir = Path.get_dirname (file_name);
spectrogram.open (filename); spectrogram.open (file_name);
} }
chooser.destroy (); chooser.destroy ();
} }
@ -104,12 +103,22 @@ namespace Spek {
_("Save Spectrogram"), this, FileChooserAction.SAVE, _("Save Spectrogram"), this, FileChooserAction.SAVE,
STOCK_CANCEL, ResponseType.CANCEL, STOCK_CANCEL, ResponseType.CANCEL,
STOCK_SAVE, ResponseType.ACCEPT, null); 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 (); var filter = new FileFilter ();
filter.add_pattern ("*.png"); filter.add_pattern ("*.png");
filter.set_name (_("PNG Images")); filter.set_name (_("PNG Images"));
chooser.add_filter (filter); chooser.add_filter (filter);
if (chooser.run () == ResponseType.ACCEPT) { 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 (); chooser.destroy ();
} }