X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fstable%2Fsrc%2Fgtkmm%2Fdockbook.cpp;fp=synfig-studio%2Ftags%2Fstable%2Fsrc%2Fgtkmm%2Fdockbook.cpp;h=0000000000000000000000000000000000000000;hb=17a7ed174603c1e7703c66e40da1b79ced252042;hp=a7470f9ff3afd4d6aa9be11b378a15f2b2beaca5;hpb=684cf1db661a9a5cbc142238cf05d6d2f7aa3f89;p=synfig.git diff --git a/synfig-studio/tags/stable/src/gtkmm/dockbook.cpp b/synfig-studio/tags/stable/src/gtkmm/dockbook.cpp deleted file mode 100644 index a7470f9..0000000 --- a/synfig-studio/tags/stable/src/gtkmm/dockbook.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file dockbook.cpp -** \brief Template File -** -** $Id$ -** -** \legal -** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** -** This package is free software; you can redistribute it and/or -** modify it under the terms of the GNU General Public License as -** published by the Free Software Foundation; either version 2 of -** the License, or (at your option) any later version. -** -** This package is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -** General Public License for more details. -** \endlegal -*/ -/* ========================================================================= */ - -/* === H E A D E R S ======================================================= */ - -#ifdef USING_PCH -# include "pch.h" -#else -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "dockbook.h" -#include "dockable.h" -#include "app.h" -#include "dockmanager.h" - -#include -#include -#include - -#endif - -/* === U S I N G =========================================================== */ - -using namespace std; -using namespace etl; -using namespace synfig; -using namespace studio; - -/* === M A C R O S ========================================================= */ - -/* === G L O B A L S ======================================================= */ - -/* === P R O C E D U R E S ================================================= */ - -/* === M E T H O D S ======================================================= */ - -DockBook::DockBook() -{ - std::list listTargets; - listTargets.push_back( Gtk::TargetEntry("DOCK") ); - - drag_dest_set(listTargets); - //set_sensitive(true); - set_flags(get_flags()|Gtk::RECEIVES_DEFAULT|Gtk::HAS_GRAB); - //add_events(Gdk::ALL_EVENTS_MASK); - //set_extension_events(Gdk::EXTENSION_EVENTS_ALL); - set_show_tabs(true); - deleting_=false; -} - -DockBook::~DockBook() -{ - deleting_=true; - clear(); -} - -void -DockBook::clear() -{ - while(get_n_pages()) - { - remove(static_cast(*get_nth_page(get_n_pages()-1))); - } -} - -void -DockBook::on_drag_data_received(const Glib::RefPtr& context, int, int, const Gtk::SelectionData& selection_data, guint, guint time) -{ - if ((selection_data.get_length() >= 0) && (selection_data.get_format() == 8)) - { - Dockable& dockable(**reinterpret_cast(const_cast(selection_data.get_data()))); - if(dockable.parent_!=this) - add(dockable); - dockable.present(); - context->drag_finish(true, false, time); - return; - } - - context->drag_finish(false, false, time); -} - -void -DockBook::add(Dockable& dockable, int position) -{ - dockable.detach(); - - if(position==-1) - append_page(dockable, " "); - else - insert_page(dockable, " ", position); - - refresh_tab(&dockable); - - dockable.signal_stock_id_changed().connect( - sigc::bind( - sigc::mem_fun( - *this, - &DockBook::refresh_tab - ), - &dockable - ) - ); - - dockable.parent_=this; - - dockable.show(); - - //set_current_page(get_n_pages()-1); - - signal_changed_(); -} - -void -DockBook::refresh_tab(Dockable* dockable) -{ - Gtk::Widget* label(dockable->create_tab_label()); - - label->signal_button_press_event().connect( - sigc::bind( - sigc::mem_fun( - *this, - &DockBook::tab_button_pressed - ), - dockable - ) - ); - - set_tab_label(*dockable, *label); - label->show(); -} - - -void -DockBook::remove(Dockable& dockable) -{ - dockable.hide(); - remove_page(dockable); - dockable.parent_=0; - - if(!deleting_) - { - signal_changed_(); - - if(get_n_pages()==0) - signal_empty()(); - } -} - -void -DockBook::present() -{ - show(); -} - -synfig::String -DockBook::get_local_contents()const -{ - synfig::String ret; - - for(int i(0);i!=const_cast(this)->get_n_pages();i++) - { - Dockable& dockable(static_cast(*const_cast(this)->get_nth_page(i))); - - if(i) - ret+=", "; - ret+=dockable.get_local_name(); - } - - return ret; -} - -synfig::String -DockBook::get_contents()const -{ - synfig::String ret; - - for(int i(0);i!=const_cast(this)->get_n_pages();i++) - { - Dockable& dockable(static_cast(*const_cast(this)->get_nth_page(i))); - - if(i) - ret+=' '; - ret+=dockable.get_name(); - } - - return ret; -} - -void -DockBook::set_contents(const synfig::String& x) -{ - synfig::String str(x); - while(!str.empty()) - { - synfig::String::size_type separator=str.find_first_of(' '); - synfig::String dock; - if(separator==synfig::String::npos) - { - dock=str; - str.clear(); - } - else - { - dock=String(str.begin(),str.begin()+separator); - str=String(str.begin()+separator+1,str.end()); - } - - try - { - add(App::dock_manager->find_dockable(dock)); - }catch(...) { } - } -} - -bool -DockBook::tab_button_pressed(GdkEventButton* event, Dockable* dockable) -{ - if(event->button!=3) - return false; - - Gtk::Menu *tabmenu=manage(new class Gtk::Menu()); - - tabmenu->items().push_back( - Gtk::Menu_Helpers::StockMenuElem(Gtk::StockID("gtk-close"), - sigc::mem_fun(*dockable,&Dockable::detach) - ) - ); - - tabmenu->popup(event->button,gtk_get_current_event_time()); - - return true; -}