Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / synfigapp / instance.cpp
index f64cac4..c3c542b 100644 (file)
@@ -1,20 +1,22 @@
 /* === S Y N F I G ========================================================= */
-/*!    \file instance.cpp
+/*!    \file synfigapp/instance.cpp
 **     \brief Instance
 **
-**     $Id: instance.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+**     $Id$
 **
 **     \legal
-**     Copyright (c) 2002 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007, 2008 Chris Moore
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     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.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     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
 */
 /* ========================================================================= */
 #include <synfig/valuenode_composite.h>
 #include <synfig/valuenode_radialcomposite.h>
 #include <synfig/valuenode_reference.h>
+#include <synfig/valuenode_greyed.h>
+#include <synfig/valuenode_blinecalctangent.h>
+#include <synfig/valuenode_blinecalcvertex.h>
+#include <synfig/valuenode_blinecalcwidth.h>
+#include <synfig/valuenode_scale.h>
 #include <map>
 
+#include "general.h"
+
 #endif
 
 /* === U S I N G =========================================================== */
@@ -59,11 +68,14 @@ bool
 synfigapp::is_editable(synfig::ValueNode::Handle value_node)
 {
        if(ValueNode_Const::Handle::cast_dynamic(value_node)
-               || ValueNode_TimedSwap::Handle::cast_dynamic(value_node)
                || ValueNode_Animated::Handle::cast_dynamic(value_node)
                || ValueNode_Composite::Handle::cast_dynamic(value_node)
                || ValueNode_RadialComposite::Handle::cast_dynamic(value_node)
-               || ValueNode_Reference::Handle::cast_dynamic(value_node)
+               ||(ValueNode_Reference::Handle::cast_dynamic(value_node) && !ValueNode_Greyed::Handle::cast_dynamic(value_node))
+               || ValueNode_BLineCalcVertex::Handle::cast_dynamic(value_node)
+               || ValueNode_BLineCalcTangent::Handle::cast_dynamic(value_node)
+               || ValueNode_BLineCalcWidth::Handle::cast_dynamic(value_node)
+               || ValueNode_Scale::Handle::cast_dynamic(value_node)
        )
                return true;
        return false;
@@ -79,19 +91,19 @@ synfigapp::find_instance(etl::handle<synfig::Canvas> canvas)
 
 /* === M E T H O D S ======================================================= */
 
-Instance::Instance(Canvas::Handle canvas):
+Instance::Instance(etl::handle<synfig::Canvas> canvas):
        CVSInfo(canvas->get_file_name()),
        canvas_(canvas)
 {
        assert(canvas->is_root());
 
        unset_selection_manager();
-       
+
        instance_map_[canvas]=this;
 } // END of synfigapp::Instance::Instance()
 
 handle<Instance>
-Instance::create(Canvas::Handle canvas)
+Instance::create(etl::handle<synfig::Canvas> canvas)
 {
        // Construct a new instance
        handle<Instance> instance(new Instance(canvas));
@@ -115,17 +127,19 @@ Instance::set_file_name(const synfig::String &name)
 Instance::~Instance()
 {
        instance_map_.erase(canvas_);
-       synfig::info("studio::Instance::~Instance(): Deleted");
-} // END of studio::Instance::~Instance()
+
+       if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+               synfig::info("Instance::~Instance(): Deleted");
+}
 
 handle<CanvasInterface>
-Instance::find_canvas_interface(handle<Canvas> canvas)
+Instance::find_canvas_interface(synfig::Canvas::Handle canvas)
 {
        if(!canvas)
                return 0;
        while(canvas->is_inline())
                canvas=canvas->parent();
-       
+
        CanvasInterfaceList::iterator iter;
 
        for(iter=canvas_interface_list().begin();iter!=canvas_interface_list().end();iter++)
@@ -148,24 +162,12 @@ Instance::save()const
 }
 
 bool
-Instance::save_as(const std::string &file_name)const
-{
-       bool ret=save_canvas(file_name,canvas_);
-       if(ret)
-       {
-               reset_action_count();
-               const_cast<sigc::signal<void>& >(signal_saved_)();
-       }
-       return ret;
-}
-
-bool
-Instance::save_as(const std::string &file_name)
+Instance::save_as(const synfig::String &file_name)
 {
        bool ret;
 
        String old_file_name(get_file_name());
-       
+
        set_file_name(file_name);
 
        ret=save_canvas(file_name,canvas_);
@@ -176,9 +178,7 @@ Instance::save_as(const std::string &file_name)
                signal_saved_();
        }
        else
-       {
                set_file_name(old_file_name);
-       }
 
        signal_filename_changed_();