X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc2%2Fsrc%2Fgtkmm%2Flayergrouptreestore.h;fp=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc2%2Fsrc%2Fgtkmm%2Flayergrouptreestore.h;h=cd0c196a3557613a3ccb0fe381dcc86869447ddd;hb=88a983aae927e85c110bb243a5197df5548c2cf2;hp=0000000000000000000000000000000000000000;hpb=3078b7103aa069392b711486dbc1eaf6d4804acc;p=synfig.git diff --git a/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/layergrouptreestore.h b/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/layergrouptreestore.h new file mode 100644 index 0000000..cd0c196 --- /dev/null +++ b/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/layergrouptreestore.h @@ -0,0 +1,202 @@ +/* === S Y N F I G ========================================================= */ +/*! \file layergrouptreestore.h +** \brief Template Header +** +** $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 +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SYNFIG_STUDIO_LAYERGROUPTREESTORE_H +#define __SYNFIG_STUDIO_LAYERGROUPTREESTORE_H + +/* === H E A D E R S ======================================================= */ + +#include +#include +#include +#include +#include + +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace studio { + +class LayerGroupTreeStore : public Gtk::TreeStore +{ + /* + -- ** -- P U B L I C T Y P E S --------------------------------------------- + */ + +public: + typedef std::list LayerList; + + class Model : public Gtk::TreeModel::ColumnRecord + { + public: + Gtk::TreeModelColumn > icon; + Gtk::TreeModelColumn label; + Gtk::TreeModelColumn tooltip; + + Gtk::TreeModelColumn group_name; + Gtk::TreeModelColumn parent_group_name; + + Gtk::TreeModelColumn canvas; + + Gtk::TreeModelColumn active; + Gtk::TreeModelColumn is_layer; + Gtk::TreeModelColumn is_group; + Gtk::TreeModelColumn layer; + + Gtk::TreeModelColumn all_layers; + Gtk::TreeModelColumn child_layers; + + Model() + { + add(icon); + add(label); + add(group_name); + add(parent_group_name); + add(canvas); + add(tooltip); + add(active); + add(layer); + add(is_layer); + add(is_group); + add(all_layers); + add(child_layers); + } + }; + + /* + -- ** -- P U B L I C D A T A ------------------------------------------------ + */ + +public: + + //! TreeModel for the layers + const Model model; + + bool rebuilding; + + /* + -- ** -- P R I V A T E D A T A --------------------------------------------- + */ + +private: + + etl::loose_handle canvas_interface_; + + Glib::RefPtr layer_icon; + Glib::RefPtr group_icon; + + /* + -- ** -- P R I V A T E M E T H O D S --------------------------------------- + */ + +private: + + /* + -- ** -- P R O T E C T E D M E T H O D S ----------------------------------- + */ + +private: + + virtual void set_value_impl (const Gtk::TreeModel::iterator& row, int column, const Glib::ValueBase& value); + virtual void get_value_vfunc (const Gtk::TreeModel::iterator& iter, int column, Glib::ValueBase& value)const; + + virtual bool row_draggable_vfunc (const TreeModel::Path& path)const; + virtual bool drag_data_get_vfunc (const TreeModel::Path& path, Gtk::SelectionData& selection_data)const; + virtual bool drag_data_delete_vfunc (const TreeModel::Path& path); + virtual bool drag_data_received_vfunc (const TreeModel::Path& dest, const Gtk::SelectionData& selection_data); + virtual bool row_drop_possible_vfunc (const TreeModel::Path& dest, const Gtk::SelectionData& selection_data)const; + + + void on_group_pair_added(synfig::String group, etl::handle layer); + void on_group_pair_removed(synfig::String group, etl::handle layer); + + void on_activity(); + + /* + -- ** -- S I G N A L T E R M I N A L S ------------------------------------- + */ + +private: + + bool on_layer_tree_event(GdkEvent *event); + + void on_layer_new_description(synfig::Layer::Handle handle,synfig::String desc); + + void on_layer_status_changed(synfig::Layer::Handle handle,bool); + + bool find_layer_row_(const synfig::Layer::Handle &handle, synfig::Canvas::Handle canvas, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter, Gtk::TreeModel::Children::iterator &prev); + + bool find_group_row_(const synfig::String &group, Gtk::TreeModel::Children layers, Gtk::TreeModel::Children::iterator &iter, Gtk::TreeModel::Children::iterator &prev); + + bool on_group_removed(synfig::String group); + bool on_group_changed(synfig::String group); + + /* + -- ** -- P U B L I C M E T H O D S ----------------------------------------- + */ + +public: + + LayerGroupTreeStore(etl::loose_handle canvas_interface_); + ~LayerGroupTreeStore(); + + Gtk::TreeRow on_group_added(synfig::String group); + etl::loose_handle canvas_interface() { return canvas_interface_; } + etl::loose_handle canvas_interface()const { return canvas_interface_; } + etl::loose_handle get_canvas_interface()const { return canvas_interface_; } + + bool find_layer_row(const synfig::Layer::Handle &handle, Gtk::TreeModel::Children::iterator &iter); + + bool find_group_row(const synfig::String &group, Gtk::TreeModel::Children::iterator &iter); + + bool find_prev_layer_row(const synfig::Layer::Handle &handle, Gtk::TreeModel::Children::iterator &iter); + + void rebuild(); + + void refresh(); + + void refresh_row(Gtk::TreeModel::Row &row); + + void set_row_layer(Gtk::TreeRow &row,synfig::Layer::Handle &handle); + + static bool search_func(const Glib::RefPtr&,int,const Glib::ustring&,const TreeModel::iterator&); + + /* + -- ** -- S T A T I C P U B L I C M E T H O D S --------------------------- + */ + +public: + + static Glib::RefPtr create(etl::loose_handle canvas_interface_); + +}; // END of class LayerGroupTreeStore + +}; // END of namespace studio + +/* === E N D =============================================================== */ + +#endif