Applied user interface rework patch by David Roden (Bombe)
authorxerakko <xerakko@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Thu, 31 Aug 2006 20:16:47 +0000 (20:16 +0000)
committerxerakko <xerakko@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Thu, 31 Aug 2006 20:16:47 +0000 (20:16 +0000)
git-svn-id: http://svn.voria.com/code@224 1f10aa63-cdf2-0310-b900-c93c546f37ac

synfig-studio/trunk/src/gtkmm/canvasoptions.cpp
synfig-studio/trunk/src/gtkmm/canvasproperties.cpp
synfig-studio/trunk/src/gtkmm/dialog_preview.cpp
synfig-studio/trunk/src/gtkmm/dialog_preview.h
synfig-studio/trunk/src/gtkmm/renddesc.cpp
synfig-studio/trunk/src/gtkmm/renddesc.h
synfig-studio/trunk/src/gtkmm/render.cpp
synfig-studio/trunk/src/gtkmm/toolbox.cpp
synfig-studio/trunk/src/gtkmm/widget_vector.cpp
synfig-studio/trunk/src/gtkmm/widget_waypoint.cpp
synfig-studio/trunk/src/gtkmm/widget_waypoint.h

index 73c49d7..c937586 100644 (file)
@@ -34,6 +34,7 @@
 #include <gtkmm/table.h>
 #include <gtkmm/label.h>
 #include <gtkmm/notebook.h>
+#include <gtkmm/alignment.h>
 #include "canvasview.h"
 #include "workarea.h"
 
@@ -57,32 +58,59 @@ using namespace studio;
 CanvasOptions::CanvasOptions(loose_handle<studio::CanvasView> canvas_view):
        Gtk::Dialog(_("Canvas Options"),*canvas_view,false,true),
        canvas_view_(canvas_view),
-       toggle_grid_snap(_("Grid Snap")),
-       toggle_grid_show(_("Grid Show")),
-       toggle_time_snap(_("Snap-To-Frame"))
+       toggle_grid_snap(_("_Snap to grid"), true),
+       toggle_grid_show(_("S_how grid"), true),
+       toggle_time_snap(_("Snap to _frame"), true)
 {
        vector_grid_size.set_canvas(canvas_view->get_canvas());
+
+       Gtk::Alignment *dialogPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       dialogPadding->set_padding(12, 12, 12, 12);
        
        Gtk::Notebook *notebook=manage(new class Gtk::Notebook());
+       dialogPadding->add(*notebook);
 
        toggle_grid_snap.signal_toggled().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_grid_snap_toggle));
        toggle_grid_show.signal_toggled().connect(sigc::mem_fun(*this, &studio::CanvasOptions::on_grid_show_toggle));
 
-       Gtk::Table *grid_page=manage(new class Gtk::Table(2,2,false));
-       notebook->append_page(*grid_page,_("Grids"));
-       grid_page->attach(vector_grid_size, 0, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       grid_page->attach(toggle_grid_snap, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       grid_page->attach(toggle_grid_show, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       
-       Gtk::Table *time_page=manage(new class Gtk::Table(2,2,false));
-       notebook->append_page(*time_page,_("Time"));
-       time_page->attach(toggle_time_snap, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       
-       Gtk::Table *unit_page=manage(new class Gtk::Table(2,2,false));
-       notebook->append_page(*unit_page,_("Units"));
-       unit_page->attach(*manage(new Gtk::Label(_("Not yet implemented"))), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);   
-       
+       Gtk::Alignment *gridPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       gridPadding->set_padding(12, 12, 12, 12);
+       notebook->append_page(*gridPadding, _("Grid"));
+
+       Gtk::VBox *gridBox = manage(new Gtk::VBox(false, 12));
+       gridPadding->add(*gridBox);
        
+       Gtk::Table *gridTable = manage(new Gtk::Table(3, 2, false));
+       gridTable->set_row_spacings(6);
+       gridTable->set_col_spacings(12);
+       gridBox->pack_start(*gridTable, false, false, 0);
+
+       Gtk::Label *gridSizeLabel = manage(new Gtk::Label(_("_Grid size"), true));
+       gridSizeLabel->set_alignment(0, 0.5);
+       gridSizeLabel->set_mnemonic_widget(vector_grid_size);
+
+       toggle_grid_show.set_alignment(0, 0.5);
+       toggle_grid_snap.set_alignment(0, 0.5);
+
+       gridTable->attach(*gridSizeLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       gridTable->attach(vector_grid_size, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       gridTable->attach(toggle_grid_show, 0, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       gridTable->attach(toggle_grid_snap, 0, 2, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Alignment *timePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       timePadding->set_padding(12, 12, 12, 12);
+       notebook->append_page(*timePadding, _("Time"));
+
+       Gtk::VBox *timeBox = manage(new Gtk::VBox(false, 12));
+       timePadding->add(*timeBox);
+
+       timeBox->pack_start(toggle_time_snap, false, false, 0);
+
+       Gtk::Alignment *unitPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       unitPadding->set_padding(12, 12, 12, 12);
+       notebook->append_page(*unitPadding, _("Units"));
+       unitPadding->add(*manage(new Gtk::Label(_("Not yet implemented!"))));
+
        Gtk::Button *ok_button(manage(new class Gtk::Button(Gtk::StockID("gtk-ok"))));
        ok_button->show();
        add_action_widget(*ok_button,2);
@@ -101,8 +129,8 @@ CanvasOptions::CanvasOptions(loose_handle<studio::CanvasView> canvas_view):
        //set_default_response(1);
        
        
-       get_vbox()->pack_start(*notebook);
-       notebook->show_all();
+       get_vbox()->pack_start(*dialogPadding);
+       get_vbox()->show_all();
        
        signal_show().connect(sigc::mem_fun(*this, &studio::CanvasOptions::refresh));
 
index 5de901c..331f8b2 100644 (file)
@@ -33,7 +33,7 @@
 #include <gtkmm/frame.h>
 #include <gtkmm/table.h>
 #include <gtkmm/label.h>
-#include <gtkmm/notebook.h>
+#include <gtkmm/alignment.h>
 #include <synfigapp/canvasinterface.h>
 #include "metadatatreestore.h"
 #include <gtkmm/treeview.h>
@@ -62,36 +62,51 @@ CanvasProperties::CanvasProperties(Gtk::Window& parent,handle<synfigapp::CanvasI
        canvas_interface_(canvas_interface)
 {
        widget_rend_desc.show();
-
        widget_rend_desc.signal_changed().connect(sigc::mem_fun(*this,&studio::CanvasProperties::on_rend_desc_changed));
 
+       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::Frame *info_frame=manage(new Gtk::Frame(_("Canvas Info")));
+       info_frame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) info_frame->get_label_widget())->set_markup(_("<b>Canvas Info</b>"));
+       dialogBox->pack_start(*info_frame, false, false, 0);
+
+       Gtk::Alignment *infoPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       infoPadding->set_padding(6, 0, 24, 0);
+       info_frame->add(*infoPadding);
        
        Gtk::Table *info_table=manage(new Gtk::Table(2,2,false));
-       info_frame->add(*info_table);
+       info_table->set_row_spacings(6);
+       info_table->set_col_spacings(12);
+       infoPadding->add(*info_table);
 
        // The root canvas doesn't have an ID, so don't
        // display it if this is a root canvas.
        if(!canvas_interface_->get_canvas()->is_root())
        {
-               info_table->attach(*manage(new Gtk::Label(_("ID"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
+               Gtk::Label *idLabel = manage(new Gtk::Label(_("_ID"), true));
+               idLabel->set_alignment(0, 0.5);
+               idLabel->set_mnemonic_widget(entry_id);
+               info_table->attach(*idLabel, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
                info_table->attach(entry_id, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
        }
-       info_table->attach(*manage(new Gtk::Label(_("Name"))), 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       info_table->attach(*manage(new Gtk::Label(_("Description"))), 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
+       Gtk::Label *nameLabel = manage(new Gtk::Label(_("_Name"), true));
+       nameLabel->set_alignment(0, 0.5);
+       nameLabel->set_mnemonic_widget(entry_name);
+       Gtk::Label *descriptionLabel = manage(new Gtk::Label(_("_Description"), true));
+       descriptionLabel->set_alignment(0, 0.5);
+       descriptionLabel->set_mnemonic_widget(entry_description);
+       info_table->attach(*nameLabel, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
+       info_table->attach(*descriptionLabel, 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
        info_table->attach(entry_name, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
        info_table->attach(entry_description, 1, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
 
-       info_frame->show_all();
-       
-       get_vbox()->pack_start(*info_frame);
-       
-       Gtk::Notebook* notebook(manage(new Gtk::Notebook()));
-       notebook->show();
-       notebook->append_page(widget_rend_desc,_("RendDesc"));
-       //notebook->append_page(create_meta_data_view(),_("MetaData"));
-       
-       get_vbox()->pack_start(*notebook);
+       dialogBox->pack_start(widget_rend_desc, false, false, 0);
 
        canvas_interface_->signal_rend_desc_changed().connect(sigc::mem_fun(*this,&studio::CanvasProperties::refresh));
 
@@ -112,6 +127,7 @@ CanvasProperties::CanvasProperties(Gtk::Window& parent,handle<synfigapp::CanvasI
 
        //set_default_response(1);
        
+       get_vbox()->show_all();
        refresh();
 
        update_title();
index a1e6e00..d1b9e15 100644 (file)
@@ -32,7 +32,9 @@
 #include "dialog_preview.h"
 #include "preview.h"
 #include <gtkmm/spinbutton.h>
-
+#include <gtkmm/alignment.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/box.h>
 #endif
 
 /* === U S I N G =========================================================== */
@@ -84,40 +86,93 @@ Dialog_PreviewOptions::Dialog_PreviewOptions()
 :Dialog(_("Preview Options"),false,true),
 adj_zoom(0.5,0.1,5.0,0.1,0.2),
 adj_fps(15,1,120,1,5),
-check_overbegin(_("Begin Time"),false),
-check_overend(_("End Time"),false),
+check_overbegin(_("_Begin Time"),false),
+check_overend(_("_End Time"),false),
 settings(this,"prevoptions")
 {
        //framerate = 15.0f;
        //zoom = 0.2f;
        
        //set the fps of the time widgets       
-       Gtk::Table      *ot = manage(new class Gtk::Table);
+       Gtk::Alignment *dialogPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       dialogPadding->set_padding(12, 12, 12, 12);
+       get_vbox()->add(*dialogPadding);
+
+       Gtk::VBox *dialogBox = manage(new Gtk::VBox(false, 12));
+       dialogPadding->add(*dialogBox);
+
+       Gtk::Frame *generalFrame = manage(new Gtk::Frame(_("General Settings")));
+       generalFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) generalFrame->get_label_widget())->set_markup(_("<b>General Settings</b>"));
+       dialogBox->pack_start(*generalFrame, false, false, 0);
+
+       Gtk::Alignment *generalPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       generalPadding->set_padding(6, 0, 24, 0);
+       generalFrame->add(*generalPadding);
        
-       ot->attach(*manage(new class Gtk::Label(_("Zoom"))),0,1,0,1);   
-       ot->attach(*manage(new class Gtk::Label(_("FPS"))),1,2,0,1);
+       Gtk::Table *generalTable = manage(new Gtk::Table(2, 2, false));
+       generalTable->set_row_spacings(6);
+       generalTable->set_col_spacings(12);
+       generalPadding->add(*generalTable);
+
+       Gtk::Label *zoomLabel = manage(new Gtk::Label(_("_Zoom")));
+       zoomLabel->set_alignment(0, 0.5);
+       zoomLabel->set_use_underline(TRUE);
+       Gtk::SpinButton *zoomSpinner = manage(new Gtk::SpinButton(adj_zoom, 0.1, 2));
+       zoomLabel->set_mnemonic_widget(*zoomSpinner);
+       zoomSpinner->set_alignment(1);
+       generalTable->attach(*zoomLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       generalTable->attach(*zoomSpinner, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *fpsLabel = manage(new Gtk::Label(_("_Frames per second")));
+       fpsLabel->set_alignment(0, 0.5);
+       fpsLabel->set_use_underline(TRUE);
+       Gtk::SpinButton *fpsSpinner = manage(new Gtk::SpinButton(adj_fps, 1, 1));
+       fpsLabel->set_mnemonic_widget(*fpsSpinner);
+       fpsSpinner->set_alignment(1);
+       generalTable->attach(*fpsLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       generalTable->attach(*fpsSpinner, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
        
-       ot->attach(*manage(new class Gtk::SpinButton(adj_zoom,0.1,2)),0,1,1,2); 
-       ot->attach(*manage(new class Gtk::SpinButton(adj_fps,1,1)),1,2,1,2);
+       Gtk::Frame *timeFrame = manage(new Gtk::Frame(_("Time Settings")));
+       timeFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) timeFrame->get_label_widget())->set_markup(_("<b>Time Settings</b>"));
+       dialogBox->pack_start(*timeFrame, false, false, 0);
+
+       Gtk::Alignment *timePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       timePadding->set_padding(6, 0, 24, 0);
+       timeFrame->add(*timePadding);
+
+       Gtk::Table *timeTable = manage(new Gtk::Table(2, 2, false));
+       timeTable->set_row_spacings(6);
+       timeTable->set_col_spacings(12);
+       timePadding->add(*timeTable);
+       
+       check_overbegin.set_alignment(0, 0.5);
+       check_overbegin.set_use_underline(TRUE);
+       check_overend.set_alignment(0, 0.5);
+       check_overend.set_use_underline(TRUE);
+       time_begin.set_alignment(1);
+       time_end.set_alignment(1);
+       timeTable->attach(check_overbegin, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeTable->attach(time_begin, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeTable->attach(check_overend, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeTable->attach(time_end, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
        
-       ot->attach(check_overbegin,0,1,2,3);
-       ot->attach(check_overend,1,2,2,3);
        check_overbegin.signal_toggled().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_overbegin_toggle));
        check_overend.signal_toggled().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_overend_toggle));
                
-       ot->attach(time_begin,0,1,3,4);
-       ot->attach(time_end,1,2,3,4);
-       
-       Gtk::Button *okbutton = manage(new Gtk::Button(_("Preview")));
+       Gtk::Button *cancelButton = manage(new Gtk::Button(Gtk::StockID("gtk-cancel")));
+       cancelButton->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_PreviewOptions::on_cancel_pressed));
+       add_action_widget(*cancelButton, 1);
+
+       Gtk::Button *okbutton = manage(new Gtk::Button(Gtk::StockID("gtk-go-forward")));
+       okbutton->set_label(_("Preview"));
        okbutton->signal_clicked().connect(sigc::mem_fun(*this,&Dialog_PreviewOptions::on_ok_pressed));
-       ot->attach(*okbutton,0,2,4,5);
-       
-       ot->show_all();
-       
-       get_vbox()->pack_start(*ot);
+       add_action_widget(*okbutton, 0);
        
        time_begin.set_sensitive(false);
        time_end.set_sensitive(false);
+       show_all();
 }
 
 Dialog_PreviewOptions::~Dialog_PreviewOptions()
@@ -139,6 +194,12 @@ void Dialog_PreviewOptions::on_ok_pressed()
        signal_finish_.clear();
 }
 
+void
+Dialog_PreviewOptions::on_cancel_pressed()
+{
+       hide();
+}
+
 void Dialog_PreviewOptions::on_overbegin_toggle()
 {
        time_begin.set_sensitive(get_begin_override());
index a2272b5..b65c121 100644 (file)
@@ -90,6 +90,7 @@ class Dialog_PreviewOptions : public Gtk::Dialog
        
        // for finishing
        void on_ok_pressed();
+       void on_cancel_pressed();
        
        //for ui stuff
        void on_overbegin_toggle();
index 49a7ef3..5d7cb63 100644 (file)
@@ -32,6 +32,8 @@
 #include "renddesc.h"
 #include <gtkmm/label.h>
 #include <gtkmm/frame.h>
+#include <gtkmm/alignment.h>
+#include <gtkmm/box.h>
 #include <ETL/misc>
 #include <synfig/general.h>
 //#include <gtkmm/seperator.h>
@@ -76,7 +78,7 @@ using namespace studio;
 /* === M E T H O D S ======================================================= */
 
 Widget_RendDesc::Widget_RendDesc():
-       Gtk::Table(1,2,false),
+       Gtk::Notebook(),
        adjustment_width(1,1,SYNFIG_MAX_PIXEL_WIDTH),
        adjustment_height(1,1,SYNFIG_MAX_PIXEL_HEIGHT),
        adjustment_xres(0,0,10000000),
@@ -87,135 +89,19 @@ Widget_RendDesc::Widget_RendDesc():
        adjustment_span(0,0,10000000)
 {
        update_lock=0;
-       
-       Gtk::Frame *size_frame=manage(new Gtk::Frame(_("Image Size")));
-       Gtk::Frame *area_frame=manage(new Gtk::Frame(_("Image Area")));
-       time_frame=manage(new Gtk::Frame(_("Time")));
-       
-       Gtk::Table *size_table=manage(new Gtk::Table(2,2,false));
-       size_frame->add(*size_table);
-
-       Gtk::Table *area_table=manage(new Gtk::Table(2,2,false));
-       area_frame->add(*area_table);
-
-       time_table=manage(new Gtk::Table(2,2,false));
-       time_frame->add(*time_table);
-
-       Gtk::Frame *other_frame=manage(new Gtk::Frame(_("Other")));
-       Gtk::Table *other_table=manage(new Gtk::Table(2,2,false));
-       other_frame->add(*other_table);
-
-       Gtk::Frame *lock_frame=manage(new Gtk::Frame(_("Locks and Links")));
-       Gtk::Table *lock_table=manage(new Gtk::Table(2,2,false));
-       lock_frame->add(*lock_table);
-       
-       entry_width=manage(new Gtk::SpinButton(adjustment_width,1,0));
-       entry_height=manage(new Gtk::SpinButton(adjustment_height,1,0));        
-       entry_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_width_changed));
-       entry_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_height_changed));
-       size_table->attach(*manage(new Gtk::Label(_("Width"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       size_table->attach(*manage(new Gtk::Label(_("Height"))), 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);       
-       size_table->attach(*entry_width, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       size_table->attach(*entry_height, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       
-       entry_xres=manage(new Gtk::SpinButton(adjustment_xres,0.5,1));
-       entry_yres=manage(new Gtk::SpinButton(adjustment_yres,0.5,1));  
-       entry_xres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_xres_changed));
-       entry_yres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_yres_changed));
-       size_table->attach(*manage(new Gtk::Label(_("XRes"))), 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       size_table->attach(*manage(new Gtk::Label(_("YRes"))), 2, 3, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       size_table->attach(*entry_xres, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-       size_table->attach(*entry_yres, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-
-       entry_phy_width=manage(new Gtk::SpinButton(adjustment_phy_width,0.25,2));
-       entry_phy_height=manage(new Gtk::SpinButton(adjustment_phy_height,0.25,2));     
-       entry_phy_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_width_changed));
-       entry_phy_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_height_changed));
-       size_table->attach(*manage(new Gtk::Label(_("PhyWidth"))), 4, 5, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       size_table->attach(*manage(new Gtk::Label(_("PhyHeight"))), 4, 5, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       size_table->attach(*entry_phy_width, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       size_table->attach(*entry_phy_height, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-
-
-       entry_span=manage(new Gtk::SpinButton(adjustment_span,0.1,4));  
-       entry_span->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_span_changed));
-       size_table->attach(*manage(new Gtk::Label(_("Span"))), 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       size_table->attach(*entry_span, 1, 2, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-
-       entry_tl=manage(new Widget_Vector());
-       entry_br=manage(new Widget_Vector());
-       entry_tl->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_tl_changed));
-       entry_br->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_br_changed));
-       area_table->attach(*manage(new Gtk::Label(_("Top-Left"))), 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);       
-       area_table->attach(*manage(new Gtk::Label(_("Bottom-Right"))), 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       area_table->attach(*entry_tl, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       area_table->attach(*entry_br, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-
-       entry_fps=manage(new Gtk::SpinButton(adjustment_fps,1,5));
-       entry_start_time=manage(new Widget_Time());
-       entry_end_time=manage(new Widget_Time());       
-       //entry_start_frame=manage(new Gtk::SpinButton(adjustment_start_frame,1,0));
-       //entry_end_frame=manage(new Gtk::SpinButton(adjustment_end_frame,1,0));        
-       entry_fps->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_fps_changed));
-       entry_start_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_time_changed));
-       entry_end_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_time_changed));
-       //entry_start_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_frame_changed));
-       //entry_end_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_frame_changed));
-       time_table->attach(*manage(new Gtk::Label(_("FPS"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-       time_table->attach(*manage(new Gtk::Label(_("Start Time"))), 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       time_table->attach(*manage(new Gtk::Label(_("End Time"))), 2, 3, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       //time_table->attach(*manage(new Gtk::Label(_("Start Frame"))), 4, 5, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       //time_table->attach(*manage(new Gtk::Label(_("End Frame"))), 4, 5, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);  
-       time_table->attach(*entry_fps, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       time_table->attach(*entry_start_time, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       time_table->attach(*entry_end_time, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);      
-       //time_table->attach(*entry_start_frame, 5, 6, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       //time_table->attach(*entry_end_frame, 5, 6, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-
-       entry_focus=manage(new Widget_Vector());
-       entry_focus->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_focus_changed));
-       other_table->attach(*manage(new Gtk::Label(_("Focus Point"))), 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);   
-       other_table->attach(*entry_focus, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-
-
-
-       toggle_px_aspect=manage(new Gtk::CheckButton(_("Pixel Aspect")));
-       toggle_px_width=manage(new Gtk::CheckButton(_("Pixel Width")));
-       toggle_px_height=manage(new Gtk::CheckButton(_("Pixel Height")));
-
-       toggle_im_aspect=manage(new Gtk::CheckButton(_("Image Aspect")));
-       toggle_im_width=manage(new Gtk::CheckButton(_("Image Width")));
-       toggle_im_height=manage(new Gtk::CheckButton(_("Image Height")));
-       toggle_im_span=manage(new Gtk::CheckButton(_("Image Span")));
-
-       toggle_px_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_px_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_px_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_im_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_im_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_im_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
-       toggle_im_span->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
 
-       lock_table->attach(*toggle_px_aspect, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       lock_table->attach(*toggle_px_width, 0, 1, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       lock_table->attach(*toggle_px_height, 0, 1, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-
-       lock_table->attach(*toggle_im_aspect, 1, 2, 0, 1, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       lock_table->attach(*toggle_im_width, 1, 2, 1, 2, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       lock_table->attach(*toggle_im_height, 1, 2, 2, 3, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       lock_table->attach(*toggle_im_span, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK|Gtk::FILL, 0, 0);      
-
-
-       lock_frame->show_all();
-       other_frame->show_all();
-       size_frame->show_all();
-       area_frame->show_all();
-       time_frame->show_all();
-       attach(*size_frame, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       attach(*area_frame, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       attach(*lock_frame, 0, 1, 2,3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);     
-       attach(*time_frame, 0, 1, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);    
-       attach(*other_frame, 0, 1, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);   
+       create_widgets();
+       connect_signals();
+
+       Gtk::Label *image_tab_label = manage(new Gtk::Label(_("Image")));
+       Gtk::Label *time_tab_label = manage(new Gtk::Label(_("Time")));
+       Gtk::Label *other_tab_label = manage(new Gtk::Label(_("Other")));
+       Gtk::Widget *imageTab = create_image_tab();
+       Gtk::Widget *timeTab = create_time_tab();
+       Gtk::Widget *otherTab = create_other_tab();
+       append_page(*imageTab, *image_tab_label);
+       append_page(*timeTab, *time_tab_label);
+       append_page(*otherTab, *other_tab_label);
 }
 
 Widget_RendDesc::~Widget_RendDesc()
@@ -225,7 +111,7 @@ Widget_RendDesc::~Widget_RendDesc()
 void Widget_RendDesc::set_rend_desc(const synfig::RendDesc &rend_desc)
 {
        if(update_lock)return;
-       
+
        rend_desc_=rend_desc;
        refresh();
 }
@@ -258,7 +144,7 @@ Widget_RendDesc::refresh()
        toggle_im_aspect->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_ASPECT));
        toggle_im_width->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_W));
        toggle_im_height->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_H));
-       toggle_im_span->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_SPAN));   
+       toggle_im_span->set_active((bool)(rend_desc_.get_flags()&RendDesc::IM_SPAN));
 }
 
 void Widget_RendDesc::apply_rend_desc(const synfig::RendDesc &rend_desc)
@@ -303,7 +189,7 @@ Widget_RendDesc::on_lock_changed()
        DO_TOGGLE(im_span,IM_SPAN);
 
 #undef DO_TOGGLE
-       
+
        refresh();
        signal_changed()();
 }
@@ -454,15 +340,15 @@ void
 Widget_RendDesc::disable_time_section()
 {
        time_frame->set_sensitive(false);
-       
+
 /*
        Gtk::Table::TableList &list=time_table->children();
        Gtk::Table::TableList::iterator iter;
        for(iter=list.begin();iter!=list.end();iter++)
                iter->get_widget()->set_sensitive(false);
-*/     
+*/
 }
-       
+
 void
 Widget_RendDesc::enable_time_section()
 {
@@ -476,3 +362,261 @@ Widget_RendDesc::enable_time_section()
 
 */
 }
+
+void
+Widget_RendDesc::create_widgets()
+{
+       entry_width=manage(new Gtk::SpinButton(adjustment_width,1,0));
+       entry_width->set_alignment(1);
+       entry_height=manage(new Gtk::SpinButton(adjustment_height,1,0));
+       entry_height->set_alignment(1);
+       entry_xres=manage(new Gtk::SpinButton(adjustment_xres,0.5,1));
+       entry_xres->set_alignment(1);
+       entry_yres=manage(new Gtk::SpinButton(adjustment_yres,0.5,1));
+       entry_yres->set_alignment(1);
+       entry_phy_width=manage(new Gtk::SpinButton(adjustment_phy_width,0.25,2));
+       entry_phy_width->set_alignment(1);
+       entry_phy_height=manage(new Gtk::SpinButton(adjustment_phy_height,0.25,2));
+       entry_phy_height->set_alignment(1);
+       entry_span=manage(new Gtk::SpinButton(adjustment_span,0.1,4));
+       entry_span->set_alignment(1);
+       entry_tl=manage(new Widget_Vector());
+       entry_br=manage(new Widget_Vector());
+       entry_fps=manage(new Gtk::SpinButton(adjustment_fps,1,5));
+       entry_start_time=manage(new Widget_Time());
+       entry_end_time=manage(new Widget_Time());
+       //entry_start_frame=manage(new Gtk::SpinButton(adjustment_start_frame,1,0));
+       //entry_end_frame=manage(new Gtk::SpinButton(adjustment_end_frame,1,0));
+       entry_focus=manage(new Widget_Vector());
+       toggle_px_aspect=manage(new Gtk::CheckButton(_("_Pixel Aspect"), true));
+       toggle_px_aspect->set_alignment(0, 0.5);
+       toggle_px_width=manage(new Gtk::CheckButton(_("Pi_xel Width"), true));
+       toggle_px_width->set_alignment(0, 0.5);
+       toggle_px_height=manage(new Gtk::CheckButton(_("Pix_el Height"), true));
+       toggle_px_height->set_alignment(0, 0.5);
+       toggle_im_aspect=manage(new Gtk::CheckButton(_("Image _Aspect"), true));
+       toggle_im_aspect->set_alignment(0, 0.5);
+       toggle_im_width=manage(new Gtk::CheckButton(_("Image _Width"), true));
+       toggle_im_width->set_alignment(0, 0.5);
+       toggle_im_height=manage(new Gtk::CheckButton(_("Image _Height"), true));
+       toggle_im_height->set_alignment(0, 0.5);
+       toggle_im_span=manage(new Gtk::CheckButton(_("Image _Span"), true));
+       toggle_im_span->set_alignment(0, 0.5);
+       time_frame=manage(new Gtk::Frame(_("Time")));
+}
+
+void
+Widget_RendDesc::connect_signals()
+{
+       entry_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_width_changed));
+       entry_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_height_changed));
+       entry_xres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_xres_changed));
+       entry_yres->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_yres_changed));
+       entry_phy_width->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_width_changed));
+       entry_phy_height->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_phy_height_changed));
+       entry_span->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_span_changed));
+       entry_tl->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_tl_changed));
+       entry_br->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_br_changed));
+       entry_fps->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_fps_changed));
+       entry_start_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_time_changed));
+       entry_end_time->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_time_changed));
+       //entry_start_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_start_frame_changed));
+       //entry_end_frame->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_end_frame_changed));
+       entry_focus->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_RendDesc::on_focus_changed));
+       toggle_px_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_px_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_px_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_im_aspect->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_im_width->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_im_height->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+       toggle_im_span->signal_toggled().connect(sigc::mem_fun(*this, &studio::Widget_RendDesc::on_lock_changed));
+}
+
+Gtk::Widget *
+Widget_RendDesc::create_image_tab()
+{
+       Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
+       paddedPanel->set_padding(12, 12, 12, 12);
+
+       Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12));
+       paddedPanel->add(*panelBox);
+
+       Gtk::Frame *imageFrame = manage(new Gtk::Frame(_("Image Size")));
+       imageFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) imageFrame->get_label_widget())->set_markup(_("<b>Image Size</b>"));
+       panelBox->pack_start(*imageFrame, false, false, 0);
+
+       Gtk::Alignment *tablePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       tablePadding->set_padding(6, 0, 24, 0);
+       Gtk::Table *imageSizeTable = manage(new Gtk::Table(2, 6, false));
+       imageSizeTable->set_row_spacings(6);
+       imageSizeTable->set_col_spacings(12);
+       tablePadding->add(*imageSizeTable);
+       imageFrame->add(*tablePadding);
+
+       Gtk::Label *size_width_label = manage(new Gtk::Label(_("_Width"), 0, 0.5, true));
+       size_width_label->set_mnemonic_widget(*entry_width);
+
+       Gtk::Label *size_height_label = manage(new Gtk::Label(_("_Height"), 0, 0.5, true));
+       size_height_label->set_mnemonic_widget(*entry_height);
+
+       Gtk::Label *size_xres_label = manage(new Gtk::Label(_("_XRes"), 0, 0.5, true));
+       size_xres_label->set_mnemonic_widget(*entry_xres);
+
+       Gtk::Label *size_yres_label = manage(new Gtk::Label(_("_YRes"), 0, 0.5, true));
+       size_yres_label->set_mnemonic_widget(*entry_yres);
+
+       Gtk::Label *size_physwidth_label = manage(new Gtk::Label(_("_Physical Width"), 0, 0.5, true));
+       size_physwidth_label->set_mnemonic_widget(*entry_phy_width);
+
+       Gtk::Label *size_physheight_label = manage(new Gtk::Label(_("Phy_sical Height"), 0, 0.5, true));
+       size_physheight_label->set_mnemonic_widget(*entry_phy_height);
+
+       Gtk::Label *size_span = manage(new Gtk::Label(_("I_mage Span"), 0, 0.5, true));
+       size_span->set_mnemonic_widget(*entry_span);
+
+       imageSizeTable->attach(*size_width_label, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*size_height_label, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_width, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_height, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+
+       imageSizeTable->attach(*size_xres_label, 2, 3, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*size_yres_label, 2, 3, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_xres, 3, 4, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_yres, 3, 4, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       imageSizeTable->attach(*size_physwidth_label, 4, 5, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*size_physheight_label, 4, 5, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_phy_width, 5, 6, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_phy_height, 5, 6, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       imageSizeTable->attach(*size_span, 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       imageSizeTable->attach(*entry_span, 1, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+
+       Gtk::Frame *imageAreaFrame = manage(new Gtk::Frame(_("Image Area")));
+       imageAreaFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) imageAreaFrame->get_label_widget())->set_markup(_("<b>Image Area</b>"));
+       panelBox->pack_start(*imageAreaFrame, false, false, 0);
+
+       Gtk::Alignment *imageAreaPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       imageAreaPadding->set_padding(6, 0, 24, 0);
+       imageAreaFrame->add(*imageAreaPadding);
+
+       Gtk::Table *imageAreaTable = manage(new Gtk::Table(2, 2, false));
+       imageAreaTable->set_row_spacings(6);
+       imageAreaTable->set_col_spacings(12);
+       imageAreaPadding->add(*imageAreaTable);
+
+       Gtk::Label *imageAreaTopLeftLabel = manage(new Gtk::Label(_("_Top Left"), 0, 0.5, true));
+       imageAreaTopLeftLabel->set_mnemonic_widget(*entry_tl);
+
+       Gtk::Label *imageAreaBottomRightLabel = manage(new Gtk::Label(_("_Bottom Right"), 0, 0.5, true));
+       imageAreaBottomRightLabel->set_mnemonic_widget(*entry_br);
+
+       imageAreaTable->attach(*imageAreaTopLeftLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageAreaTable->attach(*imageAreaBottomRightLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageAreaTable->attach(*entry_tl, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       imageAreaTable->attach(*entry_br, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       paddedPanel->show_all();
+       return paddedPanel;
+}
+
+Gtk::Widget *
+Widget_RendDesc::create_time_tab()
+{
+       Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
+       paddedPanel->set_padding(12, 12, 12, 12);
+
+       Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12)); // for future widgets
+       paddedPanel->add(*panelBox);
+
+       Gtk::Frame *time_frame = manage(new Gtk::Frame("Time Settings"));
+       time_frame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) time_frame->get_label_widget())->set_markup("<b>Time Settings</b>");
+       panelBox->pack_start(*time_frame, false, false, 0);
+
+       Gtk::Alignment *timeFramePadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       timeFramePadding->set_padding(6, 0, 24, 0);
+       time_frame->add(*timeFramePadding);
+
+       Gtk::Table *timeFrameTable = manage(new Gtk::Table(3, 2, false));
+       timeFrameTable->set_row_spacings(6);
+       timeFrameTable->set_col_spacings(12);
+       timeFramePadding->add(*timeFrameTable);
+
+       Gtk::Label *timeFPSLabel = manage(new Gtk::Label(_("_Frames per second"), 0, 0.5, true));
+       timeFPSLabel->set_mnemonic_widget(*entry_fps);
+       timeFrameTable->attach(*timeFPSLabel, 0, 1, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeFrameTable->attach(*entry_fps, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *timeStartLabel = manage(new Gtk::Label(_("_Start Time"), 0, 0.5, true));
+       timeStartLabel->set_mnemonic_widget(*entry_start_time);
+       timeFrameTable->attach(*timeStartLabel, 0, 1, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeFrameTable->attach(*entry_start_time, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *timeEndLabel = manage(new Gtk::Label(_("_End Time"), 0, 0.5, true));
+       timeEndLabel->set_mnemonic_widget(*entry_end_time);
+       timeFrameTable->attach(*timeEndLabel, 0, 1, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       timeFrameTable->attach(*entry_end_time, 1, 2, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       paddedPanel->show_all();
+       return paddedPanel;
+}
+
+Gtk::Widget *
+Widget_RendDesc::create_other_tab()
+{
+       Gtk::Alignment *paddedPanel = manage(new Gtk::Alignment(0, 0, 1, 1));
+       paddedPanel->set_padding(12, 12, 12, 12);
+
+       Gtk::VBox *panelBox = manage(new Gtk::VBox(false, 12));
+       paddedPanel->add(*panelBox);
+
+       Gtk::Frame *lockFrame = manage(new Gtk::Frame(_("Locks and Links")));
+       lockFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) lockFrame->get_label_widget())->set_markup(_("<b>Locks and Links</b>"));
+       panelBox->pack_start(*lockFrame, false, false, 0);
+
+       Gtk::Alignment *lockPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       lockPadding->set_padding(6, 0, 24, 0);
+       lockFrame->add(*lockPadding);
+
+       Gtk::Table *lockTable = manage(new Gtk::Table(2, 4, false));
+       lockTable->set_row_spacings(6);
+       lockTable->set_col_spacings(12);
+       lockPadding->add(*lockTable);
+
+       lockTable->attach(*toggle_im_width, 0, 1, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       lockTable->attach(*toggle_im_height, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       lockTable->attach(*toggle_im_aspect, 2, 3, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       lockTable->attach(*toggle_im_span, 3, 4, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       lockTable->attach(*toggle_px_width, 0, 1, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       lockTable->attach(*toggle_px_height, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       lockTable->attach(*toggle_px_aspect, 2, 3, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Frame *focusFrame = manage(new Gtk::Frame(_("Focus Point")));
+       focusFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) focusFrame->get_label_widget())->set_markup(_("<b>Focus Point</b>"));
+       panelBox->pack_start(*focusFrame, false, false, 0);
+
+       Gtk::Alignment *focusPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       focusPadding->set_padding(6, 0, 24, 0);
+       focusFrame->add(*focusPadding);
+
+       Gtk::HBox *focusBox = manage(new Gtk::HBox(false, 12));
+       focusPadding->add(*focusBox);
+
+       Gtk::Label *focusLabel = manage(new Gtk::Label(_("_Focus Point"), 0, 0.5, true));
+       focusLabel->set_mnemonic_widget(*entry_focus);
+       focusBox->pack_start(*focusLabel, false, false, 0);
+       focusBox->pack_start(*entry_focus, true, true, 0);
+
+       paddedPanel->show_all();
+       return paddedPanel;
+}
+
+/*
+ * vim:ts=4:sw=4
+ */
index 88e78f1..a6c688d 100644 (file)
@@ -32,6 +32,7 @@
 #include <gtkmm/spinbutton.h>
 #include <gtkmm/adjustment.h>
 #include <gtkmm/checkbutton.h>
+#include <gtkmm/notebook.h>
 #include "widget_vector.h"
 #include "widget_time.h"
 
@@ -43,7 +44,7 @@
 
 namespace studio {
 
-class Widget_RendDesc : public Gtk::Table
+class Widget_RendDesc : public Gtk::Notebook
 {
        synfig::RendDesc rend_desc_;
        sigc::signal<void> signal_changed_;
@@ -83,7 +84,7 @@ class Widget_RendDesc : public Gtk::Table
        Gtk::CheckButton *toggle_im_height;
        Gtk::CheckButton *toggle_im_span;
 
-       Gtk::Table *time_table;
+       /* Gtk::Table *time_table; */
        Gtk::Frame *time_frame;
 
        Widget_Vector *entry_tl;
@@ -142,6 +143,12 @@ private:
        void on_lock_changed();
        void on_focus_changed();
        void on_span_changed();
+
+       void create_widgets();
+       void connect_signals();
+       Gtk::Widget *create_image_tab();
+       Gtk::Widget *create_time_tab();
+       Gtk::Widget *create_other_tab();
 };
        
 }; // END of namespace studio
index ac6e907..9c25a77 100644 (file)
@@ -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,7 +61,7 @@ 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));
@@ -86,42 +87,76 @@ 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_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);   
-       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);
+       
+       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->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);  
-       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);
-       
-       
 
+       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);    
 
-       get_vbox()->pack_start(widget_rend_desc);
+       dialogBox->pack_start(widget_rend_desc);
        
        
        Gtk::Button *render_button(manage(new class Gtk::Button(Gtk::StockID("Render"))));
index 2edd9d5..880dd11 100644 (file)
@@ -193,11 +193,11 @@ Toolbox::Toolbox():
 {
        GRAB_HINT_DATA(
                "toolbox",
-#ifdef __APPLE__
+//#ifdef __APPLE__
                Gdk::WINDOW_TYPE_HINT_NORMAL
-#else
-               Gdk::WINDOW_TYPE_HINT_UTILITY
-#endif
+//#else
+//             Gdk::WINDOW_TYPE_HINT_UTILITY
+//#endif
        );
        set_keep_above(false);
        set_role("toolbox");
index 98b1152..e99b3a3 100644 (file)
@@ -53,16 +53,19 @@ using namespace studio;
 /* === M E T H O D S ======================================================= */
 
 Widget_Vector::Widget_Vector():
+       Gtk::HBox(false, 5),
        x_adjustment(0,-100000000,100000000,0.05,0.05,0.05),
        y_adjustment(0,-100000000,100000000,0.05,0.05,0.05)
 {
        Gtk::Label *label;
        
-       label=manage(new class Gtk::Label("x:"));
+       label=manage(new class Gtk::Label("X:"));
+       label->set_alignment(0, 0.5);
        label->show();
        pack_start(*label, Gtk::PACK_SHRINK);
 
        spinbutton_x=manage(new class Gtk::SpinButton(x_adjustment,0.05,DIGITS));
+       spinbutton_x->set_alignment(1);
        spinbutton_x->set_update_policy(Gtk::UPDATE_ALWAYS);
        spinbutton_x->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_Vector::on_value_changed));
        pack_start(*spinbutton_x, Gtk::PACK_EXPAND_WIDGET);
@@ -73,11 +76,13 @@ Widget_Vector::Widget_Vector():
        distance_x->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_Vector::on_value_changed));
        pack_start(*distance_x, Gtk::PACK_EXPAND_WIDGET);
 
-       label=manage(new class Gtk::Label("y:"));
+       label=manage(new class Gtk::Label("Y:"));
+       label->set_alignment(0, 0.5);
        label->show();
        pack_start(*label, Gtk::PACK_SHRINK);
 
        spinbutton_y=manage(new class Gtk::SpinButton(y_adjustment,0.05,DIGITS));
+       spinbutton_y->set_alignment(1);
        spinbutton_y->set_update_policy(Gtk::UPDATE_ALWAYS);
        spinbutton_y->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Widget_Vector::on_value_changed));
        spinbutton_y->signal_activate().connect(sigc::mem_fun(*this,&studio::Widget_Vector::activate));
index 0f9dca2..054fd14 100644 (file)
@@ -30,6 +30,8 @@
 #endif
 
 #include <gtkmm/label.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/alignment.h>
 #include "dialog_waypoint.h"
 #include <gtk/gtk.h>
 #include <gtkmm/spinbutton.h>
@@ -57,7 +59,7 @@ using namespace studio;
 /* === M E T H O D S ======================================================= */
 
 Widget_Waypoint::Widget_Waypoint(etl::handle<synfig::Canvas> canvas):
-       Gtk::Table(4,3,false),
+       Gtk::Alignment(0, 0, 1, 1),
        waypoint(synfig::ValueBase(),0),
        adj_tension(0.0,-20,20,0.1,1),
        adj_continuity(0.0,-20,20,0.1,1),
@@ -108,34 +110,108 @@ Widget_Waypoint::Widget_Waypoint(etl::handle<synfig::Canvas> canvas):
        spin_temporal_tension=manage(new class Gtk::SpinButton(adj_temporal_tension,0.1,3));
        spin_temporal_tension->show();
        
+       set_padding(12, 12, 12, 12);
        
-       Gtk::HBox *hbox(manage(new Gtk::HBox()));
-       hbox->show();
-       hbox->pack_start(*value_widget);
-       hbox->pack_start(*value_node_label);
+       Gtk::VBox *widgetBox = manage(new Gtk::VBox(false, 12));
+       add(*widgetBox);
        
-       attach(*manage(new Gtk::Label(_("ValueBase:"))), 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);       
-       //attach(*value_widget, 1, 4, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       //attach(*value_node_label, 0, 4, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("Time:"))), 0, 1, 2, 3, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       attach(*time_widget, 1, 4, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("In:"))), 0, 1, 3, 4, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);      
-       attach(*before, 1, 2, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("Out:"))), 2, 3, 3, 4, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);     
-       attach(*after, 3, 4, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-
-       attach(*manage(new Gtk::Label(_("Tension:"))), 0, 1, 4, 5, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); 
-       attach(*spin_tension, 1, 2, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("Continuity:"))), 2, 3, 4, 5, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);      
-       attach(*spin_continuity, 3, 4, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("Bias:"))), 0, 1, 5, 6, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);    
-       attach(*spin_bias, 1, 2, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
-       attach(*manage(new Gtk::Label(_("Temporal Tension:"))), 2, 3, 5, 6, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);        
-       attach(*spin_temporal_tension, 3, 4, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       Gtk::Frame *waypointFrame = manage(new Gtk::Frame(_("Waypoint")));
+       waypointFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) waypointFrame->get_label_widget())->set_markup(_("<b>Waypoint</b>"));
+       widgetBox->pack_start(*waypointFrame, false, false, 0);
+
+       Gtk::Alignment *waypointPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       waypointPadding->set_padding(6, 0, 24, 0);
+       waypointFrame->add(*waypointPadding);
+
+       Gtk::Table *waypointTable = manage(new Gtk::Table(2, 2, false));
+       waypointTable->set_row_spacings(6);
+       waypointTable->set_col_spacings(12);
+       waypointPadding->add(*waypointTable);
+
+       Gtk::Label *waypointValueLabel = manage(new Gtk::Label(_("_Value"), true));
+       waypointValueLabel->set_alignment(0, 0.5);
+       waypointValueLabel->set_mnemonic_widget(*value_widget);
+       waypointTable->attach(*waypointValueLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       waypointTable->attach(*value_widget, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *waypointTimeLabel = manage(new Gtk::Label(_("_Time"), true));
+       waypointTimeLabel->set_alignment(0, 0.5);
+       waypointTimeLabel->set_mnemonic_widget(*time_widget);
+       waypointTable->attach(*waypointTimeLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       waypointTable->attach(*time_widget, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Frame *interpolationFrame = manage(new Gtk::Frame(_("Interpolation")));
+       interpolationFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) interpolationFrame->get_label_widget())->set_markup(_("<b>Interpolation</b>"));
+       widgetBox->pack_start(*interpolationFrame, false, false, 0);
+
+       Gtk::Alignment *interpolationPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       interpolationPadding->set_padding(6, 0, 24, 0);
+       interpolationFrame->add(*interpolationPadding);
+
+       Gtk::Table *interpolationTable = manage(new Gtk::Table(2, 2, false));
+       interpolationTable->set_row_spacings(6);
+       interpolationTable->set_col_spacings(12);
+       interpolationPadding->add(*interpolationTable);
+       
+       Gtk::Label *interpolationInLabel = manage(new Gtk::Label(_("_In Interpolation"), true));
+       interpolationInLabel->set_alignment(0, 0.5);
+       interpolationInLabel->set_mnemonic_widget(*before);
+       interpolationTable->attach(*interpolationInLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       interpolationTable->attach(*before, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *interpolationOutLabel = manage(new Gtk::Label(_("_Out Interpolation"), true));
+       interpolationOutLabel->set_alignment(0, 0.5);
+       interpolationOutLabel->set_mnemonic_widget(*after);
+       interpolationTable->attach(*interpolationOutLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       interpolationTable->attach(*after, 1, 2, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Frame *tcbFrame = manage(new Gtk::Frame(_("TCB Parameters")));
+       tcbFrame->set_shadow_type(Gtk::SHADOW_NONE);
+       ((Gtk::Label *) tcbFrame->get_label_widget())->set_markup(_("<b>TCB Parameter</b>"));
+       widgetBox->pack_start(*tcbFrame, false, false, 0);
+
+       Gtk::Alignment *tcbPadding = manage(new Gtk::Alignment(0, 0, 1, 1));
+       tcbPadding->set_padding(6, 0, 24, 0);
+       tcbFrame->add(*tcbPadding);
+
+       Gtk::Table *tcbTable = manage(new Gtk::Table(4, 2, false));
+       tcbTable->set_row_spacings(6);
+       tcbTable->set_col_spacings(12);
+       tcbPadding->add(*tcbTable);
+
+       Gtk::Label *tensionLabel = manage(new Gtk::Label(_("T_ension"), true));
+       tensionLabel->set_alignment(0, 0.5);
+       tensionLabel->set_mnemonic_widget(*spin_tension);
+       spin_tension->set_alignment(1);
+       tcbTable->attach(*tensionLabel, 0, 1, 0, 1, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       tcbTable->attach(*spin_tension, 1, 2, 0, 1, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *continuityLabel = manage(new Gtk::Label(_("_Continuity"), true));
+       continuityLabel->set_alignment(0, 0.5);
+       continuityLabel->set_mnemonic_widget(*spin_continuity);
+       spin_continuity->set_alignment(1);
+       tcbTable->attach(*continuityLabel, 0, 1, 1, 2, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       tcbTable->attach(*spin_continuity, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *biasLabel = manage(new Gtk::Label(_("_Bias"), true));
+       biasLabel->set_alignment(0, 0.5);
+       biasLabel->set_mnemonic_widget(*spin_bias);
+       spin_bias->set_alignment(1);
+       tcbTable->attach(*biasLabel, 0, 1, 2, 3, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       tcbTable->attach(*spin_bias, 1, 2, 2, 3, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+
+       Gtk::Label *temporalTensionLabel = manage(new Gtk::Label(_("Te_mporal Tension"), true));
+       temporalTensionLabel->set_alignment(0, 0.5);
+       temporalTensionLabel->set_mnemonic_widget(*spin_temporal_tension);
+       spin_temporal_tension->set_alignment(1);
+       tcbTable->attach(*temporalTensionLabel, 0, 1, 3, 4, Gtk::SHRINK | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
+       tcbTable->attach(*spin_temporal_tension, 1, 2, 3, 4, Gtk::EXPAND | Gtk::FILL, Gtk::EXPAND | Gtk::FILL, 0, 0);
 
        show_all();
        hide();
-       attach(*hbox, 1, 4, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+       //attach(*hbox, 1, 4, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
        set_canvas(canvas);
 }
 
index 0331a2f..eb60288 100644 (file)
@@ -44,7 +44,7 @@
 #include <gtkmm/combo.h>
 #include <gtkmm/optionmenu.h>
 #include <gtkmm/spinbutton.h>
-
+#include <gtkmm/alignment.h>
 
 #include <synfigapp/value_desc.h>
 #include <synfig/waypoint.h>
@@ -65,7 +65,7 @@ class Widget_ValueBase;
 class Widget_Time;
 class Widget_Waypoint;
 
-class Widget_Waypoint : public Gtk::Table
+class Widget_Waypoint : public Gtk::Alignment
 {
     Widget_ValueBase *value_widget;
        Gtk::Label *value_node_label;