is_horizontal=false;
last_dock_book=0;
box=0;
-
+
widget_comp_select=new Widget_CompSelect();
-
+
// Give ourselves an ID that is most likely unique
set_id(synfig::UniqueID().get_uid()^reinterpret_cast<long>(this));
-
+
set_role(strprintf("dock_dialog_%d",get_id()));
GRAB_HINT_DATA(
"dock_dialog",
#endif
);
set_keep_above(false);
-
+
// Set up the window
//set_type_hint(Gdk::WINDOW_TYPE_HINT_UTILITY);
set_title("Dock Dialog");
-
+
// Register with the dock manager
App::dock_manager->dock_dialog_list_.push_back(this);
-
- // connect our signals
+
+ // connect our signals
signal_delete_event().connect(
sigc::hide(
sigc::mem_fun(*this,&DockDialog::close)
)
);
-
+
/*
App::signal_canvas_view_focus().connect(
sigc::hide(
// but it causes crashes. Without it, a small
// memory hole is created--but at least it doesn't crash
// delete dock_book_list.front();
-
+
// Oddly enough, the following line should
// theoreticly do the same thing after this
// class is destroyed, but it doesn't seem to
context->drag_finish(true, false, time);
return;
}
-
+
context->drag_finish(false, false, time);
}
context->drag_finish(true, false, time);
return;
}
-
+
context->drag_finish(false, false, time);
}
DockDialog::prepend_dock_book()
{
if(is_deleting)return 0;
-
+
dock_book_list.push_front(new DockBook);
last_dock_book=dock_book_list.front();
DockDialog::append_dock_book()
{
if(is_deleting)return 0;
-
+
dock_book_list.push_back(new DockBook);
last_dock_book=dock_book_list.back();
last_dock_book->signal_empty().connect(
if(last_dock_book==dock_book)
last_dock_book=dock_book_list.front();
}
-
+
refresh();
-
+
return;
}
}
if(dock_book_list.empty())
return;
-
+
if(box)delete box;
box=(manage(is_horizontal?(Gtk::Box*)new Gtk::HBox:(Gtk::Box*)new Gtk::VBox));
add(*box);
-
+
box->pack_start(*widget_comp_select,false,true);
Gtk::Button* append_button(manage(new Gtk::Button));
Gtk::Button* prepend_button(manage(new Gtk::Button));
-
+
std::list<Gtk::TargetEntry> listTargets;
listTargets.push_back( Gtk::TargetEntry("DOCK") );
prepend_button->signal_drag_data_received().connect(
sigc::mem_fun(*this,&DockDialog::drop_on_prepend)
);
-
+
box->pack_start(*prepend_button,false,true);
box->pack_end(*append_button,false,true);
//prepend_button->show();
//append_button->show();
pannels_.clear();
-
+
if(dock_book_list.size()==1)
{
box->pack_start(get_dock_book(),true,true);
else
{
Gtk::Paned* parent(manage(is_horizontal?(Gtk::Paned*)new Gtk::HPaned:(Gtk::Paned*)new Gtk::VPaned));
-
+
pannels_.push_back(parent);
-
+
if(pannels_.size()<=dock_book_sizes_.size())
pannels_.back()->set_position(dock_book_sizes_[pannels_.size()-1]);
pannels_.back()->property_position().signal_changed().connect(
//parent->show();
parent->add1(*dock_book_list.front());
//dock_book_list.front()->show();
-
+
box->pack_start(*parent,true,true);
-
+
std::list<DockBook*>::iterator iter,next;
for(next=dock_book_list.begin(),next++,iter=next++;next!=dock_book_list.end();iter=next++)
{
Gtk::Paned* current(manage(is_horizontal?(Gtk::Paned*)new Gtk::HPaned:(Gtk::Paned*)new Gtk::VPaned));
pannels_.push_back(current);
-
+
if(pannels_.size()<=dock_book_sizes_.size())
pannels_.back()->set_position(dock_book_sizes_[pannels_.size()-1]);
pannels_.back()->property_position().signal_changed().connect(
current->add1(**iter);
//(*iter)->show();
//current->show();
-
+
parent=current;
}
parent->add2(**iter);
//(*iter)->show();
}
-
+
box->show_all();
if(!composition_selector_)
widget_comp_select->hide();
remove_accel_group(last_accel_group_);
last_accel_group_=Glib::RefPtr<Gtk::AccelGroup>();
}
-
+
etl::loose_handle<CanvasView> canvas_view(App::get_selected_canvas_view());
if(canvas_view)
{
synfig::info("DockDialog::close(): DELETED!");
empty_sig.disconnect();
//get_dock_book().clear();
- delete this;
+ delete this;
return true;
}
ret+=is_horizontal?" | ":" - ";
ret+=(*iter)->get_contents();
}
-
-
+
+
return ret;
}
is_horizontal=false;
}
}
-
+
synfig::String book_contents;
if(separator==synfig::String::npos)
{
book_contents=String(str.begin(),str.begin()+separator);
str=String(str.begin()+separator+1,str.end());
}
-
+
try
{
append_dock_book()->set_contents(book_contents);