diff --git a/include/nana/filesystem/filesystem.hpp b/include/nana/filesystem/filesystem.hpp index b00760d2..284faea1 100644 --- a/include/nana/filesystem/filesystem.hpp +++ b/include/nana/filesystem/filesystem.hpp @@ -1,12 +1,13 @@ /* * A filesystem Implementation - * Copyright(C) 2003 Jinhao(cnjinhao@hotmail.com) + * Nana C++ Library(http://www.nanapro.org) + * Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com) * * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) * - * @file: stdex/filesystem/filesystem.hpp + * @file: nana/filesystem/filesystem.hpp * @description: * file_iterator is a toolkit for applying each file and directory in a * specified path. diff --git a/include/nana/gui/widgets/group.hpp b/include/nana/gui/widgets/group.hpp index 26a0e408..cff1f21e 100644 --- a/include/nana/gui/widgets/group.hpp +++ b/include/nana/gui/widgets/group.hpp @@ -9,7 +9,7 @@ * * @file: nana/gui/widgets/group.hpp * - * @contributors: Stefan Pfeifer (st-321), Jinhao, Ariel Vina-Rodriguez (qPCR4vir) + * @Author: Stefan Pfeifer(st-321), Ariel Vina-Rodriguez (qPCR4vir) * * @brief group is a widget used to visually group and layout other widgets. */ @@ -21,27 +21,34 @@ #include namespace nana{ - class group - : public panel - { - place plc_outer{*this}; - panel content {*this}; - place plc_inner{content}; - + class group + : public panel + { struct implement; - public: - group( window parent, ///< - std::wstring titel_ ={STR("")}, ///< - bool format =false, ///< Use a formated label? - unsigned gap =2, ///< betwen the content and the external limit - rectangle r ={} ///< - ); + public: + group( window parent, ///< + std::wstring titel_ ={STR("")}, ///< + bool format =false, ///< Use a formated label? + unsigned gap =2, ///< betwen the content and the external limit + rectangle r ={} ///< + ); ~group(); - place& plc (){ return plc_inner; } - window inner(){ return content; } + place& get_place(); + + template + Widget* create_child(const char* field, Args && ... args) + { + auto wdg = new Widget(inner(), std::forward(args)...); + _m_add_child(field, wdg); + return wdg; + } + + window inner(); private: + void _m_add_child(const char* field, widget*); + ::nana::string _m_caption() const override; void _m_caption(::nana::string&&) override; private: diff --git a/source/gui/widgets/group.cpp b/source/gui/widgets/group.cpp index e18f0bbd..5b61a9e3 100644 --- a/source/gui/widgets/group.cpp +++ b/source/gui/widgets/group.cpp @@ -23,7 +23,17 @@ namespace nana{ struct group::implement { - label caption; + label caption; + panel content; + place place_outter; + place place_content; + + implement(group* host): + caption(*host), + content(*host), + place_outter(*host), + place_content(content) + {} }; group::group( window parent, ///< @@ -33,28 +43,30 @@ namespace nana{ rectangle r /*={} */ ///< ) : panel (parent, r), - impl_(new implement) + impl_(new implement(this)) { - impl_->caption.create(*this); impl_->caption.format(format); ::nana::size sz = impl_->caption.measure(1000); std::stringstream ft; - ft << "vert margin=[0," << gap << "," << gap << "," << gap << "]" + ft << "vert margin=[0," << gap << ","< >" << " "; - plc_outer.div(ft.str().c_str()); + + auto & outter = impl_->place_outter; + + outter.div(ft.str().c_str()); - plc_outer["titel" ] << impl_->caption; - plc_outer["content"] << content; - plc_outer.collocate(); + outter["titel"] << impl_->caption; + outter["content"] << impl_->content; + outter.collocate(); color pbg = API::bgcolor( parent); impl_->caption.bgcolor(pbg.blend(colors::black, 0.975) ); color bg=pbg.blend(colors::black, 0.950 ); bgcolor(pbg); - content.bgcolor(bg); + impl_->content.bgcolor(bg); drawing dw(*this); @@ -73,6 +85,21 @@ namespace nana{ { } + place& group::get_place() + { + return impl_->place_content; + } + + window group::inner() + { + return impl_->content; + } + + void group::_m_add_child(const char* field, widget* wdg) + { + impl_->place_content[field] << wdg->handle(); + } + ::nana::string group::_m_caption() const { return impl_->caption.caption();