Use filename_extension() and filename_sans_extension().
[synfig.git] / synfig-studio / trunk / src / gtkmm / render.cpp
index 1e098b7..1ee95c3 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \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_SEPARATOR+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
@@ -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