Since the last change will require a recompilation of pretty much everything, I took...
[synfig.git] / synfig-studio / trunk / src / gtkmm / render.cpp
index ac6e907..4b2f2b2 100644 (file)
@@ -1,8 +1,8 @@
 /* === S Y N F I G ========================================================= */
-/*!    \file render.cpp
+/*!    \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
@@ -32,6 +32,7 @@
 #include "render.h"
 #include "app.h"
 #include <gtkmm/frame.h>
+#include <gtkmm/alignment.h>
 #include <synfig/target_scanline.h>
 #include <synfig/canvas.h>
 #include "asyncrenderer.h"
@@ -60,14 +61,14 @@ RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInter
        entry_quality(adjustment_quality,1,0),
        adjustment_antialias(1,1,31),
        entry_antialias(adjustment_antialias,1,0),
-       toggle_single_frame(_("Use Current Frame"))
+       toggle_single_frame(_("Use _current frame"), true)
 {
        widget_rend_desc.show();
        widget_rend_desc.signal_changed().connect(sigc::mem_fun(*this,&studio::RenderSettings::on_rend_desc_changed));
        widget_rend_desc.set_rend_desc(canvas_interface_->get_canvas()->rend_desc());
-       
+
        canvas_interface->signal_rend_desc_changed().connect(sigc::mem_fun(*this,&RenderSettings::on_rend_desc_changed));
-       
+
        menu_target=manage(new class Gtk::Menu());
 
        menu_target->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Auto"),
@@ -76,7 +77,7 @@ RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInter
 
        synfig::Target::Book::iterator iter;
        synfig::Target::Book book(synfig::Target::book());
-       
+
        for(iter=book.begin();iter!=book.end();iter++)
        {
                menu_target->items().push_back(Gtk::Menu_Helpers::MenuElem(iter->first,
@@ -86,44 +87,78 @@ RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInter
        optionmenu_target.set_menu(*menu_target);
 
        optionmenu_target.set_history(0);
-       
-       
-       
-       
+
+       Gtk::Alignment *dialogPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       dialogPadding->set_padding(12, 12, 12, 12);
+       get_vbox()->pack_start(*dialogPadding, false, false, 0);
+
+       Gtk::VBox *dialogBox = manage(new Gtk::VBox(false, 12));
+       dialogPadding->add(*dialogBox);
 
        Gtk::Button *choose_button(manage(new class Gtk::Button(Gtk::StockID(_("Choose...")))));
        choose_button->show();
        choose_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_choose_pressed));
-       
+
        Gtk::Frame *target_frame=manage(new Gtk::Frame(_("Target")));
-       Gtk::Table *target_table=manage(new Gtk::Table(2,2,false));
-       target_frame->add(*target_table);
-       target_table->attach(*manage(new Gtk::Label(_("Filename"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       target_table->attach(entry_filename, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       target_table->attach(*choose_button, 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       target_table->attach(*manage(new Gtk::Label(_("Target"))), 3, 4, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       target_table->attach(optionmenu_target, 4, 5, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       get_vbox()->pack_start(*target_frame);
+       target_frame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) target_frame->get_label_widget())->set_markup(_("<b>Target</b>"));
+       dialogBox->pack_start(*target_frame);
+       Gtk::Alignment *targetPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       targetPadding->set_padding(6, 0, 24, 0);
+       target_frame->add(*targetPadding);
+
+       Gtk::Table *target_table = manage(new Gtk::Table(2, 3, false));
+       target_table->set_row_spacings(6);
+       target_table->set_col_spacings(12);
+       targetPadding->add(*target_table);
+
+       Gtk::Label *filenameLabel = manage(new Gtk::Label(_("_Filename"), true));
+       filenameLabel->set_alignment(0, 0.5);
+       filenameLabel->set_mnemonic_widget(entry_filename);
+       target_table->attach(*filenameLabel, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+       target_table->attach(entry_filename, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+       target_table->attach(*choose_button, 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+
+       Gtk::Label *targetLabel = manage(new Gtk::Label(_("_Target"), true));
+       targetLabel->set_alignment(0, 0.5);
+       targetLabel->set_mnemonic_widget(optionmenu_target);
+       target_table->attach(*targetLabel, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+       target_table->attach(optionmenu_target, 1, 3, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
 
        toggle_single_frame.signal_toggled().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_single_frame_toggle));
 
-
        Gtk::Frame *settings_frame=manage(new Gtk::Frame(_("Settings")));
+       settings_frame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) settings_frame->get_label_widget())->set_markup(_("<b>Settings</b>"));
+       dialogBox->pack_start(*settings_frame);
+
+       Gtk::Alignment *settingsPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       settingsPadding->set_padding(6, 0, 24, 0);
+       settings_frame->add(*settingsPadding);
+
        Gtk::Table *settings_table=manage(new Gtk::Table(2,2,false));
-       settings_frame->add(*settings_table);
-       settings_table->attach(*manage(new Gtk::Label(_("Quality"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-       settings_table->attach(entry_quality, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-       settings_table->attach(*manage(new Gtk::Label(_("Anti-Alias"))), 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);       
-       settings_table->attach(entry_antialias, 3, 4, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       settings_table->attach(toggle_single_frame, 4, 5, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       get_vbox()->pack_start(*settings_frame);
-       
-       
-
-
-       get_vbox()->pack_start(widget_rend_desc);
-       
-       
+       settings_table->set_row_spacings(6);
+       settings_table->set_col_spacings(12);
+       settingsPadding->add(*settings_table);
+
+       Gtk::Label *qualityLabel = manage(new Gtk::Label(_("_Quality"), true));
+       qualityLabel->set_alignment(0, 0.5);
+       qualityLabel->set_mnemonic_widget(entry_quality);
+       settings_table->attach(*qualityLabel, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+       settings_table->attach(entry_quality, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+
+       Gtk::Label *antiAliasLabel = manage(new Gtk::Label(_("_Anti-Aliasing"), true));
+       antiAliasLabel->set_alignment(0, 0.5);
+       antiAliasLabel->set_mnemonic_widget(entry_antialias);
+       settings_table->attach(*antiAliasLabel, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+       settings_table->attach(entry_antialias, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+
+       toggle_single_frame.set_alignment(0, 0.5);
+       settings_table->attach(toggle_single_frame, 0, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+
+       dialogBox->pack_start(widget_rend_desc);
+
+
        Gtk::Button *render_button(manage(new class Gtk::Button(Gtk::StockID("Render"))));
        render_button->show();
        add_action_widget(*render_button,1);
@@ -135,24 +170,24 @@ RenderSettings::RenderSettings(Gtk::Window& parent,handle<synfigapp::CanvasInter
        cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_cancel_pressed));
 
        //set_default_response(1);
-       
+
        set_title(_("Render Settings")+String(" - ")+canvas_interface_->get_canvas()->get_name());
 
 
        toggle_single_frame.set_active(true);
        widget_rend_desc.disable_time_section();
-       
+
 
        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(Glib::build_filename(Glib::get_home_dir(),Glib::ustring("Desktop")+ETL_DIRECTORY_SEPARATOR+Glib::ustring("output.png")));
        }
        catch(...)
        {
                synfig::warning("Averted crash!");
                entry_filename.set_text("output.png");
        }
-       
+
        get_vbox()->show_all();
 }
 
@@ -184,7 +219,7 @@ void
 RenderSettings::on_render_pressed()
 {
        String filename=entry_filename.get_text();
-       
+
        if(filename.empty())
        {
                canvas_interface_->get_ui_interface()->error(_("You must supply a filename!"));
@@ -206,7 +241,7 @@ RenderSettings::on_render_pressed()
                catch(std::runtime_error x)
                {
                        canvas_interface_->get_ui_interface()->error(_("Unable to determine proper target from filename."));
-                       return;                 
+                       return;
                }
        }
 
@@ -224,17 +259,21 @@ RenderSettings::on_render_pressed()
        }
 
        hide();
-       
+
        target->set_canvas(canvas_interface_->get_canvas());
        RendDesc rend_desc(widget_rend_desc.get_rend_desc());
        rend_desc.set_antialias((int)adjustment_antialias.get_value());
-       
+
        // If we are to only render the current frame
        if(toggle_single_frame.get_active())
                rend_desc.set_time(canvas_interface_->get_time());
 
        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"));
+               return;
+       }
 
        canvas_interface_->get_ui_interface()->task(_("Rendering ")+filename);
 
@@ -253,21 +292,21 @@ RenderSettings::on_render_pressed()
                canvas_interface_->get_ui_interface()->amount_complete(0,10000);
                return;
        }
-       
+
        // 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; 
+       return;
 }
 
 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);
 }
-       
+
 void
 RenderSettings::on_cancel_pressed()
 {