diff --git a/include/nana/gui/widgets/group.hpp b/include/nana/gui/widgets/group.hpp index 2e264289..8507c555 100644 --- a/include/nana/gui/widgets/group.hpp +++ b/include/nana/gui/widgets/group.hpp @@ -66,6 +66,10 @@ namespace nana{ group& collocate() throw(); group& div(const char* div_str) throw(); field_reference operator[](const char* field); + + void field_display(const char* field_name, bool display); /// Widget* create_child(const char* field, Args && ... args) diff --git a/include/nana/gui/widgets/toolbar.hpp b/include/nana/gui/widgets/toolbar.hpp index d92c7f8a..b3b7223e 100644 --- a/include/nana/gui/widgets/toolbar.hpp +++ b/include/nana/gui/widgets/toolbar.hpp @@ -90,6 +90,7 @@ namespace nana void separate(); ///< Adds a separator. void append(const ::std::string& text, const nana::paint::image& img); ///< Adds a control button. void append(const ::std::string& text); ///< Adds a control button. + void clear(); ///< Removes all control buttons and separators. bool enable(size_type index) const; void enable(size_type index, bool enable_state); void scale(unsigned s); ///< Sets the scale of control button. diff --git a/source/gui/widgets/group.cpp b/source/gui/widgets/group.cpp index 87d2ebc6..aedb110f 100644 --- a/source/gui/widgets/group.cpp +++ b/source/gui/widgets/group.cpp @@ -194,6 +194,21 @@ namespace nana{ return impl_->place_content.field(field); } + void group::field_display(const char* field_name, bool display) + { + impl_->place_content.field_display(field_name, display); + } + + bool group::field_display(const char* field_name) const + { + return impl_->place_content.field_display(field_name); + } + + void group::erase(window handle) + { + impl_->place_content.erase(handle); + } + void group::_m_add_child(const char* field, widget* wdg) { impl_->place_content[field] << wdg->handle(); diff --git a/source/gui/widgets/toolbar.cpp b/source/gui/widgets/toolbar.cpp index 953e4796..7fb927cc 100644 --- a/source/gui/widgets/toolbar.cpp +++ b/source/gui/widgets/toolbar.cpp @@ -57,8 +57,7 @@ namespace nana ~item_container() { - for(auto ptr : cont_) - delete ptr; + clear(); } void insert(size_type pos, std::string text, const nana::paint::image& img, item_type::kind type) @@ -120,6 +119,15 @@ namespace nana { return cont_.at(pos); } + + void clear() + { + for(auto ptr : cont_) + delete ptr; + + cont_.clear(); + } + private: container_type cont_; size_t right_{ npos }; @@ -461,6 +469,12 @@ namespace nana API::refresh_window(this->handle()); } + void toolbar::clear() + { + get_drawer_trigger().items().clear(); + API::refresh_window(this->handle()); + } + bool toolbar::enable(size_type pos) const { auto & items = get_drawer_trigger().items();