layer_tree=0;
children_tree=0;
duck_refresh_flag=true;
+ toggling_ducks_=false;
smach_.set_default_state(&state_normal);
//create all allocated stuff for this canvas
audio = new AudioContainer();
- Gtk::Table *layout_table= manage(new class Gtk::Table(1, 3, false));
+ Gtk::Table *layout_table= manage(new class Gtk::Table(1, 4, false));
//layout_table->attach(*vpaned, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
layout_table->attach(*create_work_area(), 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ layout_table->attach(*create_display_bar(), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
init_menus();
//layout_table->attach(*App::ui_manager()->get_widget("/menu-main"), 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
keyframedial->show();
keyframebutton=keyframedial->get_lock_button();
- Gtk::Table *table = manage(new class Gtk::Table(5, 3, false));
- timebar = table;
+ timebar = manage(new class Gtk::Table(5, 4, false));
- //Attach widgets to the time bar table
- table->attach(*manage(disp_audio), 1, 5, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
- table->attach(*framedial, 0, 1, 2, 3,Gtk::SHRINK, Gtk::SHRINK);
- table->attach(*current_time_widget, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
- table->attach(*timeslider, 1, 3, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
- table->attach(*time_window_scroll, 1, 3, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
- table->attach(*keyframedial, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK);
- table->attach(*animatebutton, 4, 5, 1, 2, Gtk::SHRINK, Gtk::SHRINK);
- //table->attach(*keyframebutton, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK);
+ //Attach widgets to the timebar
+ timebar->attach(*manage(disp_audio), 1, 5, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+ timebar->attach(*framedial, 0, 1, 2, 3,Gtk::SHRINK, Gtk::SHRINK);
+ timebar->attach(*current_time_widget, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0);
+ timebar->attach(*timeslider, 1, 3, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+ timebar->attach(*time_window_scroll, 1, 3, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
+ timebar->attach(*keyframedial, 3, 4, 1, 2, Gtk::SHRINK, Gtk::SHRINK);
+ timebar->attach(*animatebutton, 4, 5, 1, 2, Gtk::SHRINK, Gtk::SHRINK);
+ //timebar->attach(*keyframebutton, 1, 2, 3, 4, Gtk::SHRINK, Gtk::SHRINK);
+ timebar->show();
- table->show();
-
- return table;
+ return timebar;
}
Gtk::Widget *
return statusbartable;
}
+Gtk::Widget*
+CanvasView::create_display_bar()
+{
+ displaybar = manage(new class Gtk::Table(1, 1, false));
+ // Setup the ToggleDuckDial widget
+ toggleducksdial = Gtk::manage(new class ToggleDucksDial());
+
+ Duck::Type m = work_area->get_type_mask();
+ toggleducksdial->update_toggles(m);
+
+ toggleducksdial->signal_ducks_position().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_POSITION)
+ );
+ toggleducksdial->signal_ducks_vertex().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_VERTEX)
+ );
+ toggleducksdial->signal_ducks_tangent().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_TANGENT)
+ );
+ toggleducksdial->signal_ducks_radius().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_RADIUS)
+ );
+ toggleducksdial->signal_ducks_width().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_WIDTH)
+ );
+ toggleducksdial->signal_ducks_angle().connect(
+ sigc::bind(sigc::mem_fun(*this, &studio::CanvasView::toggle_duck_mask),Duck::TYPE_ANGLE)
+ );
+ toggleducksdial->show();
+
+ displaybar->attach(*toggleducksdial, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK);
+ displaybar->show();
+
+ return displaybar;
+
+}
+
void
CanvasView::on_current_time_widget_changed()
{
void
CanvasView::toggle_duck_mask(Duckmatic::Type type)
{
+ if(toggling_ducks_)
+ return;
+ toggling_ducks_=true;
bool is_currently_on(work_area->get_type_mask()&type);
if(is_currently_on)
work_area->set_type_mask(work_area->get_type_mask()|type);
work_area->queue_draw();
+ try
+ {
+ toggleducksdial->update_toggles(work_area->get_type_mask());
+ }
+ catch(...)
+ {
+ toggling_ducks_=false;
+ }
+ toggling_ducks_=false;
}
void