|
Carlos Lopez |
a09598 |
/* === S Y N F I G ========================================================= */
|
|
Carlos Lopez |
a09598 |
/*! \file gtkmm/instance.h
|
|
Carlos Lopez |
a09598 |
** \brief writeme
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** $Id$
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** \legal
|
|
Carlos Lopez |
a09598 |
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
|
|
Carlos Lopez |
a09598 |
** Copyright (c) 2007 Chris Moore
|
|
|
f084ff |
** Copyright (c) 2012 Konstantin Dmitriev
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** This package is free software; you can redistribute it and/or
|
|
Carlos Lopez |
a09598 |
** modify it under the terms of the GNU General Public License as
|
|
Carlos Lopez |
a09598 |
** published by the Free Software Foundation; either version 2 of
|
|
Carlos Lopez |
a09598 |
** the License, or (at your option) any later version.
|
|
Carlos Lopez |
a09598 |
**
|
|
Carlos Lopez |
a09598 |
** This package is distributed in the hope that it will be useful,
|
|
Carlos Lopez |
a09598 |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Carlos Lopez |
a09598 |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Carlos Lopez |
a09598 |
** General Public License for more details.
|
|
Carlos Lopez |
a09598 |
** \endlegal
|
|
Carlos Lopez |
a09598 |
*/
|
|
Carlos Lopez |
a09598 |
/* ========================================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === S T A R T =========================================================== */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#ifndef __SYNFIG_STUDIO_INSTANCE_H
|
|
Carlos Lopez |
a09598 |
#define __SYNFIG_STUDIO_INSTANCE_H
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === H E A D E R S ======================================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#include <etl handle=""></etl>
|
|
Carlos Lopez |
a09598 |
#include <gtkmm treeview.h=""></gtkmm>
|
|
Carlos Lopez |
a09598 |
#include <gtkmm treestore.h=""></gtkmm>
|
|
Carlos Lopez |
a09598 |
#include <synfigapp instance.h=""></synfigapp>
|
|
[d.j.a.y] Jerome Blanchi |
f8d04e |
#include <sigc++ sigc++.h=""></sigc++>
|
|
Carlos Lopez |
a09598 |
#include <synfigapp value_desc.h=""></synfigapp>
|
|
Nikita Kitaev |
27b5a5 |
#include "trees/historytreestore.h"
|
|
|
fd0f71 |
#include <synfig layer_switch.h="" layers=""></synfig>
|
|
Carlos Lopez |
a09598 |
#include <synfig canvas.h=""></synfig>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === M A C R O S ========================================================= */
|
|
Carlos Lopez |
a09598 |
#define DEFAULT_FILENAME_PREFIX _("Synfig Animation ") // will be followed by a different number for each document
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === T Y P E D E F S ===================================================== */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === C L A S S E S & S T R U C T S ======================================= */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
namespace Gtk { class Menu; class ActionGroup; };
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
namespace studio {
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
class CanvasView;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
class Instance : public synfigapp::Instance
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
public:
|
|
Carlos Lopez |
a09598 |
typedef std::list< etl::handle<canvasview> > CanvasViewList;</canvasview>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
enum Status
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
STATUS_OK,
|
|
Carlos Lopez |
a09598 |
STATUS_ERROR,
|
|
Carlos Lopez |
a09598 |
STATUS_CANCEL
|
|
Carlos Lopez |
a09598 |
};
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
class CanvasTreeModel : public Gtk::TreeModel::ColumnRecord
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
public:
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<glib::refptr<gdk::pixbuf> > icon;</glib::refptr<gdk::pixbuf>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<glib::ustring> label;</glib::ustring>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<glib::ustring> name;</glib::ustring>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<glib::ustring> id;</glib::ustring>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<synfig::canvas::handle> canvas;</synfig::canvas::handle>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<bool> is_canvas;</bool>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<synfig::valuenode::handle> value_node;</synfig::valuenode::handle>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<bool> is_value_node;</bool>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<synfig::valuebase> value;</synfig::valuebase>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<glib::ustring> type;</glib::ustring>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<int> link_id;</int>
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<int> link_count;</int>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<bool> is_editable;</bool>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Gtk::TreeModelColumn<synfigapp::valuedesc> value_desc;</synfigapp::valuedesc>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
CanvasTreeModel()
|
|
Carlos Lopez |
a09598 |
{
|
|
Carlos Lopez |
a09598 |
add(value);
|
|
Carlos Lopez |
a09598 |
add(name);
|
|
Carlos Lopez |
a09598 |
add(label);
|
|
Carlos Lopez |
a09598 |
add(icon);
|
|
Carlos Lopez |
a09598 |
add(type);
|
|
Carlos Lopez |
a09598 |
add(id);
|
|
Carlos Lopez |
a09598 |
add(canvas);
|
|
Carlos Lopez |
a09598 |
add(value_node);
|
|
Carlos Lopez |
a09598 |
add(is_canvas);
|
|
Carlos Lopez |
a09598 |
add(is_value_node);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
add(is_editable);
|
|
Carlos Lopez |
a09598 |
add(value_desc);
|
|
Carlos Lopez |
a09598 |
add(link_count);
|
|
Carlos Lopez |
a09598 |
add(link_id);
|
|
Carlos Lopez |
a09598 |
}
|
|
Carlos Lopez |
a09598 |
} canvas_tree_model;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
private:
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
sigc::signal<void,canvasview*> signal_canvas_view_created_;</void,canvasview*>
|
|
Carlos Lopez |
a09598 |
sigc::signal<void,canvasview*> signal_canvas_view_deleted_;</void,canvasview*>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
sigc::signal<void> signal_undo_redo_status_changed_;</void>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Tree containing the canvases -- used for the "canvas browser"
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<gtk::treestore> canvas_tree_store_;</gtk::treestore>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Tree containing the actions -- used for the "canvas browser"
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<historytreestore> history_tree_store_;</historytreestore>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Instance number
|
|
Carlos Lopez |
a09598 |
int id_;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Used to calculate instance ID
|
|
Carlos Lopez |
a09598 |
static int instance_count_;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! List of canvas view windows
|
|
Carlos Lopez |
a09598 |
CanvasViewList canvas_view_list_;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool undo_status_;
|
|
Carlos Lopez |
a09598 |
bool redo_status_;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void set_undo_status(bool x);
|
|
Carlos Lopez |
a09598 |
void set_redo_status(bool x);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
protected:
|
|
Carlos Lopez |
a09598 |
|
|
|
0dde72 |
Instance(synfig::Canvas::Handle, synfig::FileSystem::Handle);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
public:
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
sigc::signal<void>& signal_undo_redo_status_changed() { return signal_undo_redo_status_changed_; }</void>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
~Instance();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
sigc::signal<void,canvasview*>& signal_canvas_view_created() { return signal_canvas_view_created_; }</void,canvasview*>
|
|
Carlos Lopez |
a09598 |
sigc::signal<void,canvasview*>& signal_canvas_view_deleted() { return signal_canvas_view_deleted_; }</void,canvasview*>
|
|
Carlos Lopez |
a09598 |
|
|
Ankit Kumar Dwivedi |
ecdee9 |
bool is_img(synfig::String ext) const;
|
|
Ankit Kumar Dwivedi |
ecdee9 |
|
|
|
fd0f71 |
synfig::Layer::Handle layer_inside_switch(synfig::Layer_Switch::Handle paste) const;
|
|
ankit-kumar-dwivedi |
16a7cf |
|
|
Carlos Lopez |
a09598 |
bool get_undo_status()const { return undo_status_; }
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool get_redo_status()const { return redo_status_; }
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
int get_visible_canvases()const;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<gtk::treestore> canvas_tree_store() { return canvas_tree_store_; }</gtk::treestore>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<const gtk::treestore=""> canvas_tree_store()const { return canvas_tree_store_; }</const>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<historytreestore> history_tree_store() { return history_tree_store_; }</historytreestore>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Glib::RefPtr<const historytreestore=""> history_tree_store()const { return history_tree_store_; }</const>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Returns the number of instances that are currently open in the program
|
|
Carlos Lopez |
a09598 |
static int get_count() { return instance_count_; }
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//etl::handle<synfig::canvas> get_canvas()const { return synfigapp::Instance::get_canvas(); }</synfig::canvas>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
etl::handle<canvasview> find_canvas_view(etl::handle<synfig::canvas> canvas);</synfig::canvas></canvasview>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Sets the focus to a specific canvas
|
|
Carlos Lopez |
a09598 |
void focus(etl::handle<synfig::canvas> canvas);</synfig::canvas>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
CanvasViewList & canvas_view_list() { return canvas_view_list_; }
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
const CanvasViewList & canvas_view_list()const { return canvas_view_list_; }
|
|
[d.j.a.y] Jerome Blanchi |
db9e08 |
|
|
|
29f8f3 |
void run_plugin(std::string plugin_path);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool save_as(const synfig::String &filename);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! returns true if the instance has a real filename associated with it, rather than the made up "synfig animation 1" or some such
|
|
Carlos Lopez |
a09598 |
bool has_real_filename();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Opens a "Save As" dialog, and then saves the composition to that file
|
|
Carlos Lopez |
a09598 |
//! returns true if the save was successful
|
|
Carlos Lopez |
a09598 |
bool dialog_save_as();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void open();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
Status save();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void dialog_cvs_commit();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void dialog_cvs_add();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void dialog_cvs_update();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void dialog_cvs_revert();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
//! Closes the instance of this composition
|
|
Carlos Lopez |
a09598 |
void close();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void revert();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void update_all_titles();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void refresh_canvas_tree();
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
bool safe_revert();
|
|
[d.j.a.y] Jerome Blanchi |
db9e08 |
//! Perform necessary tests before close an instance
|
|
[d.j.a.y] Jerome Blanchi |
db9e08 |
//! returns true if it's safe to close the instance
|
|
Carlos Lopez |
a09598 |
bool safe_close();
|
|
Carlos Lopez |
a09598 |
|
|
|
de146d |
void gather_uri(std::set<synfig::string> &x, const synfig::ValueNode::Handle &value_node) const;</synfig::string>
|
|
|
de146d |
void gather_uri(std::set<synfig::string> &x, const synfig::Layer::Handle &layer) const;</synfig::string>
|
|
|
de146d |
void gather_uri(std::set<synfig::string> &x, const synfig::Canvas::Handle &canvas) const;</synfig::string>
|
|
|
de146d |
void gather_uri(std::set<synfig::string> &x, const synfigapp::SelectionManager::LayerList &layers) const;</synfig::string>
|
|
|
de146d |
void gather_uri(std::map<synfig::string, synfig::string=""> &x, const synfigapp::SelectionManager::LayerList &layers) const;</synfig::string,>
|
|
|
de146d |
|
|
|
de146d |
void add_actions_to_menu(Gtk::Menu *menu, const synfigapp::Action::ParamList ¶m_list, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const;
|
|
Carlos Lopez |
a09598 |
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;
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void add_actions_to_group(const Glib::RefPtr<gtk::actiongroup>& action_group, synfig::String& ui_info, const synfigapp::Action::ParamList ¶m_list, synfigapp::Action::Category category=synfigapp::Action::CATEGORY_ALL)const;</gtk::actiongroup>
|
|
Carlos Lopez |
a09598 |
|
|
|
de146d |
void add_special_layer_actions_to_menu(Gtk::Menu *menu, const synfig::Layer::Handle &layer) const;
|
|
|
de146d |
void add_special_layer_actions_to_group(const Glib::RefPtr<gtk::actiongroup>& action_group, synfig::String& ui_info, const synfig::Layer::Handle &layer) const;</gtk::actiongroup>
|
|
|
de146d |
void add_special_layer_actions_to_menu(Gtk::Menu *menu, const synfigapp::SelectionManager::LayerList &layers) const;
|
|
|
de146d |
void add_special_layer_actions_to_group(const Glib::RefPtr<gtk::actiongroup>& action_group, synfig::String& ui_info, const synfigapp::SelectionManager::LayerList &layers) const;</gtk::actiongroup>
|
|
|
de146d |
|
|
Carlos Lopez |
a09598 |
void process_action(synfig::String name, synfigapp::Action::ParamList param_list);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
void make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas, synfigapp::ValueDesc value_desc, float location=0.5f, bool bezier=false);
|
|
Carlos Lopez |
a09598 |
|
|
|
0ee033 |
void make_param_menu(Gtk::Menu *menu,synfig::Canvas::Handle canvas,const std::list<synfigapp::valuedesc>& value_desc_list, const synfigapp::ValueDesc &value_desc = synfigapp::ValueDesc());</synfigapp::valuedesc>
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
static void edit_waypoint(synfigapp::ValueDesc value_desc,synfig::Waypoint waypoint);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
private:
|
|
Carlos Lopez |
a09598 |
void insert_canvas(Gtk::TreeRow row,synfig::Canvas::Handle canvas);
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
public:
|
|
|
0dde72 |
static etl::handle<instance> create(synfig::Canvas::Handle canvas, synfig::FileSystem::Handle container);</instance>
|
|
Carlos Lopez |
a09598 |
}; // END class Instance
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
}; // END namespace studio
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
/* === E N D =============================================================== */
|
|
Carlos Lopez |
a09598 |
|
|
Carlos Lopez |
a09598 |
#endif
|