X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fsynfigstudio_0_61_05%2Fsynfig-studio%2Fsrc%2Fgtkmm%2Finstance.h;fp=synfig-studio%2Ftags%2Fsynfigstudio_0_61_05%2Fsynfig-studio%2Fsrc%2Fgtkmm%2Finstance.h;h=ac9a76366df0bc4e20a97b4bc6fd2b16efea080b;hb=7ba2096dd58b21ba3a08b28b5a6f70795f6ea265;hp=0000000000000000000000000000000000000000;hpb=043865a2284e71de646b09cc0f22b5674b95a454;p=synfig.git diff --git a/synfig-studio/tags/synfigstudio_0_61_05/synfig-studio/src/gtkmm/instance.h b/synfig-studio/tags/synfigstudio_0_61_05/synfig-studio/src/gtkmm/instance.h new file mode 100644 index 0000000..ac9a763 --- /dev/null +++ b/synfig-studio/tags/synfigstudio_0_61_05/synfig-studio/src/gtkmm/instance.h @@ -0,0 +1,224 @@ +/* === S Y N F I G ========================================================= */ +/*! \file instance.h +** \brief writeme +** +** $Id: instance.h,v 1.2 2005/01/13 18:37:30 darco Exp $ +** +** \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_INSTANCE_H +#define __SYNFIG_STUDIO_INSTANCE_H + +/* === H E A D E R S ======================================================= */ + +#include +#include +#include +#include +#include +#include +#include "historytreestore.h" +#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 Gtk { class Menu; class ActionGroup; }; + +namespace studio { + +class CanvasView; + + +class Instance : public synfigapp::Instance +{ +public: + typedef std::list< etl::handle > CanvasViewList; + + class CanvasTreeModel : public Gtk::TreeModel::ColumnRecord + { + public: + Gtk::TreeModelColumn > icon; + Gtk::TreeModelColumn label; + Gtk::TreeModelColumn name; + Gtk::TreeModelColumn id; + + Gtk::TreeModelColumn canvas; + Gtk::TreeModelColumn is_canvas; + + Gtk::TreeModelColumn value_node; + Gtk::TreeModelColumn is_value_node; + Gtk::TreeModelColumn value; + Gtk::TreeModelColumn type; + Gtk::TreeModelColumn link_id; + Gtk::TreeModelColumn link_count; + + Gtk::TreeModelColumn is_editable; + + Gtk::TreeModelColumn value_desc; + + CanvasTreeModel() + { + add(value); + add(name); + add(label); + add(icon); + add(type); + add(id); + add(canvas); + add(value_node); + add(is_canvas); + add(is_value_node); + + add(is_editable); + add(value_desc); + add(link_count); + add(link_id); + } + } canvas_tree_model; + +private: + + sigc::signal signal_canvas_view_created_; + sigc::signal signal_canvas_view_deleted_; + + sigc::signal signal_undo_redo_status_changed_; + + //! Tree containing the canvases -- used for the "canvas browser" + Glib::RefPtr canvas_tree_store_; + + //! Tree containing the actions -- used for the "canvas browser" + Glib::RefPtr history_tree_store_; + + //! Instance number + int id_; + + //! Used to calculate instance ID + static int instance_count_; + + //! List of canvas view windows + CanvasViewList canvas_view_list_; + + bool undo_status_; + bool redo_status_; + + void set_undo_status(bool x); + void set_redo_status(bool x); + + static void _revert(Instance *); + +protected: + + Instance(synfig::Canvas::Handle); + +public: + + sigc::signal& signal_undo_redo_status_changed() { return signal_undo_redo_status_changed_; } + + ~Instance(); + + sigc::signal& signal_canvas_view_created() { return signal_canvas_view_created_; } + sigc::signal& signal_canvas_view_deleted() { return signal_canvas_view_deleted_; } + + bool get_undo_status()const { return undo_status_; } + + bool get_redo_status()const { return redo_status_; } + + int get_visible_canvases()const; + + Glib::RefPtr canvas_tree_store() { return canvas_tree_store_; } + + Glib::RefPtr canvas_tree_store()const { return canvas_tree_store_; } + + Glib::RefPtr history_tree_store() { return history_tree_store_; } + + Glib::RefPtr history_tree_store()const { return history_tree_store_; } + + //! Returns the number of instances that are currently open in the program + static int get_count() { return instance_count_; } + + //etl::handle get_canvas()const { return synfigapp::Instance::get_canvas(); } + + etl::handle find_canvas_view(etl::handle canvas); + + //! Sets the focus to a specific canvas + void focus(etl::handle canvas); + + CanvasViewList & canvas_view_list() { return canvas_view_list_; } + + const CanvasViewList & canvas_view_list()const { return canvas_view_list_; } + + bool save_as(const synfig::String &filename)const; + + bool save_as(const synfig::String &filename); + + //! Opens a "Save As" dialog, and then saves the composition to that file + void dialog_save_as(); + + bool save(); + + void dialog_cvs_commit(); + + void dialog_cvs_add(); + + void dialog_cvs_update(); + + void dialog_cvs_revert(); + + //! Closes the instance of this composition + void close(); + + void revert(); + + void update_all_titles(); + + void refresh_canvas_tree(); + + bool safe_revert(); + bool safe_close(); + + void add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamList ¶m_list, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const; + void add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamList ¶m_list1,const synfigapp::Action::ParamList ¶m_list2, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const; + + void add_actions_to_group(const Glib::RefPtr& action_group, synfig::String& ui_info, const synfigapp::Action::ParamList ¶m_list, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const; + + void process_action(synfig::String name, synfigapp::Action::ParamList param_list); + + void make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas, synfigapp::ValueDesc value_desc, float location=0.5f); + + void make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas,const std::list& value_desc_list); + + + static void edit_waypoint(synfigapp::ValueDesc value_desc,synfig::Waypoint waypoint); + +private: + void insert_canvas(Gtk::TreeRow row,synfig::Canvas::Handle canvas); + +public: + static etl::handle create(synfig::Canvas::Handle canvas); +}; // END class Instance + +}; // END namespace studio + +/* === E N D =============================================================== */ + +#endif