Use filename_extension() and filename_sans_extension().
[synfig.git] / synfig-studio / trunk / src / gtkmm / render.cpp
index da96fb9..1ee95c3 100644 (file)
@@ -2,10 +2,11 @@
 /*!    \file gtkmm/render.cpp
 **     \brief Template File
 **
-**     $Id: render.cpp,v 1.2 2005/01/10 08:13:44 darco Exp $
+**     $Id$
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -177,22 +178,39 @@ RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInter
        toggle_single_frame.set_active(true);
        widget_rend_desc.disable_time_section();
 
+       set_entry_filename();
+
+       get_vbox()->show_all();
+}
+
+RenderSettings::~RenderSettings()
+{
+}
+
+void
+RenderSettings::set_entry_filename()
+{
+       String filename(filename_sans_extension(canvas_interface_->get_canvas()->get_file_name()));
+
+       // if this isn't the root canvas, append (<canvasname>) to the filename
+       etl::handle<synfig::Canvas> canvas = canvas_interface_->get_canvas();
+       if (!canvas->is_root())
+               if(canvas->get_name().empty())
+                       filename+=" ("+canvas->get_id()+')';
+               else
+                       filename+=" ("+canvas->get_name()+')';
+
+       filename += ".png";
 
        try
        {
-               entry_filename.set_text(Glib::build_filename(Glib::get_home_dir(),Glib::ustring("Desktop")+ETL_DIRECTORY_SEPERATOR+Glib::ustring("output.png")));
+               entry_filename.set_text((filename));
        }
        catch(...)
        {
                synfig::warning("Averted crash!");
                entry_filename.set_text("output.png");
        }
-
-       get_vbox()->show_all();
-}
-
-RenderSettings::~RenderSettings()
-{
 }
 
 void
@@ -211,7 +229,7 @@ void
 RenderSettings::on_choose_pressed()
 {
        String filename=entry_filename.get_text();
-       if(App::dialog_saveas_file("Save Render As",filename))
+       if(App::dialog_save_file("Save Render As",filename))
                entry_filename.set_text(filename);
 }
 
@@ -232,7 +250,8 @@ RenderSettings::on_render_pressed()
        {
                try
                {
-                       String ext=String(find(filename.begin(),filename.end(),'.')+1,filename.end());
+                       String ext(filename_extension(filename));
+                       if (ext.size()) ext=ext.substr(1); // skip initial '.'
                        if(Target::ext_book().count(ext))
                                target_name=Target::ext_book()[ext];
                        else
@@ -294,7 +313,7 @@ RenderSettings::on_render_pressed()
        }
 
        // Success!
-       canvas_interface_->get_ui_interface()->task(filename+_(" rendered sucessfuly"));
+       canvas_interface_->get_ui_interface()->task(filename+_(" rendered successfully"));
        canvas_interface_->get_ui_interface()->amount_complete(0,10000);
        */
        return;
@@ -303,7 +322,7 @@ RenderSettings::on_render_pressed()
 void
 RenderSettings::on_finished()
 {
-       canvas_interface_->get_ui_interface()->task(_("File rendered sucessfuly"));
+       canvas_interface_->get_ui_interface()->task(_("File rendered successfully"));
        canvas_interface_->get_ui_interface()->amount_complete(0,10000);
 }