**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-** Copyright (c) 2007 Chris Moore
+** Copyright (c) 2007, 2008 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
#include <synfig/canvas.h>
#include "asyncrenderer.h"
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
/* === M E T H O D S ======================================================= */
-RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInterface> canvas_interface):
+RenderSettings::RenderSettings(Gtk::Window& parent, etl::handle<synfigapp::CanvasInterface> canvas_interface):
Gtk::Dialog(_("Render Settings"),parent,false,true),
canvas_interface_(canvas_interface),
adjustment_quality(3,0,9),
set_title(_("Render Settings")+String(" - ")+canvas_interface_->get_canvas()->get_name());
-
- toggle_single_frame.set_active(true);
- widget_rend_desc.disable_time_section();
+ toggle_single_frame.set_active(false);
+ widget_rend_desc.enable_time_section();
set_entry_filename();
void
RenderSettings::set_entry_filename()
{
- String filename(canvas_interface_->get_canvas()->get_file_name());
-
- // if the basename of the filename has an extension, remove it
- String base = basename(filename);
- if(find(base.begin(),base.end(),'.')!=base.end())
- filename = String(filename.begin(), filename.begin()+filename.find_last_of('.'));
+ 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";
RenderSettings::on_choose_pressed()
{
String filename=entry_filename.get_text();
- if(App::dialog_save_file("Save Render As",filename))
+ if(App::dialog_save_file("Save Render As", filename, RENDER_DIR_PREFERENCE))
entry_filename.set_text(filename);
}
RenderSettings::on_render_pressed()
{
String filename=entry_filename.get_text();
+ synfig::String calculated_target_name(target_name);
if(filename.empty())
{
// If the target type is not yet defined,
// try to figure it out from the outfile.
- if(target_name.empty())
+ if(calculated_target_name.empty())
{
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 '.'
+ synfig::info("render target filename: '%s'; extension: '%s'", filename.c_str(), ext.c_str());
if(Target::ext_book().count(ext))
- target_name=Target::ext_book()[ext];
+ {
+ calculated_target_name=Target::ext_book()[ext];
+ synfig::info("'%s' is a known extension - using target '%s'", ext.c_str(), calculated_target_name.c_str());
+ }
else
- target_name=ext;
+ {
+ calculated_target_name=ext;
+ synfig::info("unknown extension");
+ }
}
catch(std::runtime_error x)
{
}
}
- if(filename.empty() && target_name!="null")
+ if(filename.empty() && calculated_target_name!="null")
{
canvas_interface_->get_ui_interface()->error(_("A filename is required for this target"));
return;
}
- Target::Handle target=Target::create(target_name,filename);
+ Target::Handle target=Target::create(calculated_target_name,filename);
if(!target)
{
canvas_interface_->get_ui_interface()->error(_("Unable to create target for ")+filename);
target->set_rend_desc(&rend_desc);
target->set_quality((int)adjustment_quality.get_value());
if( !target->init() ){
- canvas_interface_->get_ui_interface()->error(_("Target initialisation failure"));
+ canvas_interface_->get_ui_interface()->error(_("Target initialization failure"));
return;
}