egami
C++ Image Processing program
|
00001 #include <stdexcept> 00002 #include <string> 00003 #include <memory> 00004 00005 #include <gtkmm/enums.h> 00006 00007 #include "processing_page.hpp" 00008 #include "processing_unit.hpp" 00009 00010 Processing_page::Instances Processing_page::instances; 00011 00012 Processing_page::Processing_page(const std::string &id){ 00013 instances.insert(Instances::value_type(id, this)); 00014 set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC); 00015 container.set_layout(Gtk::BUTTONBOX_START); 00016 container.set_spacing(20); 00017 add(container); 00018 show_all_children(); 00019 } 00020 00021 void Processing_page::add_unit_to_page(const std::string &id, std::shared_ptr<Processing_unit> unit){ 00022 Instances::iterator target=instances.find(id); 00023 if(target==instances.end()) 00024 throw std::runtime_error("Trying to add a unit to the non existing page "+id); 00025 target->second->insert(unit); 00026 } 00027 00028 void Processing_page::insert(std::shared_ptr<Processing_unit> unit){ 00029 childs.push_back(unit); 00030 container.add(*unit); 00031 show_all_children(); 00032 }