X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Floadcanvas.cpp;h=40260b76a7e273898f528b8813ddd5673b25570d;hb=86a4f7f8b74d0fcdf6c7ce47202c3ce4bc261400;hp=5482fd90fd29c6dba2dad437d5e84deb211d08b5;hpb=cba72b25145dee544dcc8b8bee96f1aaa4f53abf;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/loadcanvas.cpp b/synfig-core/trunk/src/synfig/loadcanvas.cpp index 5482fd9..40260b7 100644 --- a/synfig-core/trunk/src/synfig/loadcanvas.cpp +++ b/synfig-core/trunk/src/synfig/loadcanvas.cpp @@ -2120,6 +2120,32 @@ CanvasParser::parse_canvas(xmlpp::Element *element,Canvas::Handle parent,bool in return canvas; } +void +CanvasParser::register_canvas_in_map(Canvas::Handle canvas, String as) +{ + get_open_canvas_map()[etl::absolute_path(as)]=canvas; + canvas->signal_deleted().connect(sigc::bind(sigc::ptr_fun(_remove_from_open_canvas_map),canvas.get())); + canvas->signal_file_name_changed().connect(sigc::bind(sigc::ptr_fun(_canvas_file_name_changed),canvas.get())); +} + +#ifdef _DEBUG +void +CanvasParser::show_canvas_map(String file, int line, String text) +{ + return; + printf(" .-----\n | %s:%d %s\n", file.c_str(), line, text.c_str()); + std::map > canvas_map(synfig::get_open_canvas_map()); + std::map >::iterator iter; + for (iter = canvas_map.begin(); iter != canvas_map.end(); iter++) + { + synfig::String first(iter->first); + etl::loose_handle second(iter->second); + printf(" | %40s : %lx (%d)\n", first.c_str(), ulong(&*second), second->count()); + } + printf(" `-----\n\n"); +} +#endif // _DEBUG + Canvas::Handle CanvasParser::parse_from_file_as(const String &file_,const String &as_,String &errors) { @@ -2139,9 +2165,7 @@ CanvasParser::parse_from_file_as(const String &file_,const String &as_,String &e { Canvas::Handle canvas(parse_canvas(parser.get_document()->get_root_node(),0,false,as)); if (!canvas) return canvas; - get_open_canvas_map()[etl::absolute_path(as)]=canvas; - canvas->signal_deleted().connect(sigc::bind(sigc::ptr_fun(_remove_from_open_canvas_map),canvas.get())); - canvas->signal_file_name_changed().connect(sigc::bind(sigc::ptr_fun(_canvas_file_name_changed),canvas.get())); + register_canvas_in_map(canvas, as); const ValueNodeList& value_node_list(canvas->value_node_list());