00001 /* 00002 * mmscanvasfactory.cpp 00003 * 00004 * Created on: Nov 3, 2011 00005 * Author: sxs 00006 */ 00007 00008 #include "mmsgui/mmscanvasfactory.h" 00009 00010 MMS_CANVAS_MAP MMSCanvasFactory::canvasFactoryList; 00011 00012 MMSCanvasFactory::MMSCanvasFactory() { 00013 00014 } 00015 00016 MMSCanvasFactory::~MMSCanvasFactory() { 00017 00018 } 00019 00020 void MMSCanvasFactory::registerCanvas(string name, MMS_CANVAS_CONSTRUCTOR constructor) { 00021 MMS_CANVAS_MAP::iterator it = this->canvasFactoryList.find(name); 00022 if(it != this->canvasFactoryList.end()) { 00023 throw MMSCanvasFactoryError(1, "a canvas mit name '" + name + "' already registered"); 00024 } 00025 00026 this->canvasFactoryList.insert(std::make_pair(name, constructor)); 00027 } 00028 00029 MMSCanvasWidget *MMSCanvasFactory::constructCanvas(const char *name, MMSWindow *root, string classname, MMSTheme *theme) { 00030 MMS_CANVAS_MAP::iterator it = this->canvasFactoryList.find(name); 00031 00032 if(it == this->canvasFactoryList.end()) { 00033 return NULL; 00034 } 00035 return it->second(root, classname, theme); 00036 }