treebox refined
This commit is contained in:
parent
238e85756f
commit
6c3ba75f6f
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* A Tree Box Implementation
|
* A Tree Box Implementation
|
||||||
* Nana C++ Library(http://www.nanapro.org)
|
* Nana C++ Library(http://www.nanapro.org)
|
||||||
* Copyright(C) 2003-2016 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -110,17 +110,14 @@ namespace nana
|
|||||||
|
|
||||||
struct pseudo_node_type{};
|
struct pseudo_node_type{};
|
||||||
|
|
||||||
typedef widgets::detail::tree_cont<treebox_node_type> tree_cont_type;
|
using tree_cont_type = widgets::detail::tree_cont<treebox_node_type>;
|
||||||
typedef tree_cont_type::node_type node_type;
|
using node_type = tree_cont_type::node_type;
|
||||||
|
|
||||||
trigger();
|
trigger();
|
||||||
~trigger();
|
~trigger();
|
||||||
|
|
||||||
implement * impl() const;
|
implement * impl() const;
|
||||||
|
|
||||||
void auto_draw(bool);
|
|
||||||
void checkable(bool);
|
|
||||||
bool checkable() const;
|
|
||||||
void check(node_type*, checkstate);
|
void check(node_type*, checkstate);
|
||||||
bool draw();
|
bool draw();
|
||||||
|
|
||||||
@ -136,7 +133,6 @@ namespace nana
|
|||||||
node_type* insert(node_type*, const std::string& key, std::string&&);
|
node_type* insert(node_type*, const std::string& key, std::string&&);
|
||||||
node_type* insert(const std::string& path, std::string&&);
|
node_type* insert(const std::string& path, std::string&&);
|
||||||
|
|
||||||
bool verify(const void*) const;
|
|
||||||
bool verify_kinship(node_type* parent, node_type* child) const;
|
bool verify_kinship(node_type* parent, node_type* child) const;
|
||||||
|
|
||||||
void remove(node_type*);
|
void remove(node_type*);
|
||||||
@ -148,7 +144,6 @@ namespace nana
|
|||||||
node_image_tag& icon(const ::std::string&) const;
|
node_image_tag& icon(const ::std::string&) const;
|
||||||
void icon_erase(const ::std::string&);
|
void icon_erase(const ::std::string&);
|
||||||
void node_icon(node_type*, const ::std::string& id);
|
void node_icon(node_type*, const ::std::string& id);
|
||||||
|
|
||||||
unsigned node_width(const node_type*) const;
|
unsigned node_width(const node_type*) const;
|
||||||
|
|
||||||
bool rename(node_type*, const char* key, const char* name);
|
bool rename(node_type*, const char* key, const char* name);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* A Treebox Implementation
|
* A Treebox Implementation
|
||||||
* Nana C++ Library(http://www.nanapro.org)
|
* Nana C++ Library(http://www.nanapro.org)
|
||||||
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
|
* Copyright(C) 2003-2017 Jinhao(cnjinhao@hotmail.com)
|
||||||
*
|
*
|
||||||
* Distributed under the Boost Software License, Version 1.0.
|
* Distributed under the Boost Software License, Version 1.0.
|
||||||
* (See accompanying file LICENSE_1_0.txt or copy at
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -1562,35 +1562,6 @@ namespace nana
|
|||||||
return impl_;
|
return impl_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trigger::auto_draw(bool ad)
|
|
||||||
{
|
|
||||||
if(impl_->attr.auto_draw != ad)
|
|
||||||
{
|
|
||||||
impl_->attr.auto_draw = ad;
|
|
||||||
if(ad)
|
|
||||||
API::update_window(impl_->data.widget_ptr->handle());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void trigger::checkable(bool enable)
|
|
||||||
{
|
|
||||||
auto & comp_placer = impl_->data.comp_placer;
|
|
||||||
if(comp_placer->enabled(component::crook) != enable)
|
|
||||||
{
|
|
||||||
comp_placer->enable(component::crook, enable);
|
|
||||||
if(impl_->attr.auto_draw)
|
|
||||||
{
|
|
||||||
impl_->draw(false);
|
|
||||||
API::update_window(impl_->data.widget_ptr->handle());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool trigger::checkable() const
|
|
||||||
{
|
|
||||||
return impl_->data.comp_placer->enabled(component::crook);
|
|
||||||
}
|
|
||||||
|
|
||||||
void trigger::check(node_type* node, checkstate cs)
|
void trigger::check(node_type* node, checkstate cs)
|
||||||
{
|
{
|
||||||
if (!node->owner) return;
|
if (!node->owner) return;
|
||||||
@ -1727,11 +1698,6 @@ namespace nana
|
|||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool trigger::verify(const void* node) const
|
|
||||||
{
|
|
||||||
return impl_->attr.tree_cont.verify(reinterpret_cast<const node_type*>(node));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool trigger::verify_kinship(node_type* parent, node_type* child) const
|
bool trigger::verify_kinship(node_type* parent, node_type* child) const
|
||||||
{
|
{
|
||||||
if(false == (parent && child)) return false;
|
if(false == (parent && child)) return false;
|
||||||
@ -1744,7 +1710,7 @@ namespace nana
|
|||||||
|
|
||||||
void trigger::remove(node_type* node)
|
void trigger::remove(node_type* node)
|
||||||
{
|
{
|
||||||
if(!verify(node))
|
if (!tree().verify(node))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto & shape = impl_->shape;
|
auto & shape = impl_->shape;
|
||||||
@ -1769,9 +1735,9 @@ namespace nana
|
|||||||
|
|
||||||
void trigger::selected(node_type* node)
|
void trigger::selected(node_type* node)
|
||||||
{
|
{
|
||||||
if(impl_->attr.tree_cont.verify(node) && impl_->set_selected(node))
|
if(tree().verify(node) && impl_->set_selected(node))
|
||||||
{
|
{
|
||||||
impl_->draw(true);
|
if(impl_->draw(true))
|
||||||
API::update_window(impl_->data.widget_ptr->handle());
|
API::update_window(impl_->data.widget_ptr->handle());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2160,6 +2126,8 @@ namespace nana
|
|||||||
}//end namespace drawerbase
|
}//end namespace drawerbase
|
||||||
|
|
||||||
//class treebox
|
//class treebox
|
||||||
|
using component = drawerbase::treebox::component;
|
||||||
|
|
||||||
treebox::treebox(){}
|
treebox::treebox(){}
|
||||||
|
|
||||||
treebox::treebox(window wd, bool visible)
|
treebox::treebox(window wd, bool visible)
|
||||||
@ -2184,18 +2152,30 @@ namespace nana
|
|||||||
|
|
||||||
void treebox::auto_draw(bool ad)
|
void treebox::auto_draw(bool ad)
|
||||||
{
|
{
|
||||||
get_drawer_trigger().auto_draw(ad);
|
auto impl = get_drawer_trigger().impl();
|
||||||
|
if (impl->attr.auto_draw != ad)
|
||||||
|
{
|
||||||
|
impl->attr.auto_draw = ad;
|
||||||
|
if (ad)
|
||||||
|
API::refresh_window(this->handle());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
treebox & treebox::checkable(bool enable)
|
treebox & treebox::checkable(bool enable)
|
||||||
{
|
{
|
||||||
get_drawer_trigger().checkable(enable);
|
auto impl = get_drawer_trigger().impl();
|
||||||
|
auto & comp_placer = impl->data.comp_placer;
|
||||||
|
if (comp_placer->enabled(component::crook) != enable)
|
||||||
|
{
|
||||||
|
comp_placer->enable(component::crook, enable);
|
||||||
|
get_drawer_trigger().draw();
|
||||||
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool treebox::checkable() const
|
bool treebox::checkable() const
|
||||||
{
|
{
|
||||||
return get_drawer_trigger().checkable();
|
return get_drawer_trigger().impl()->data.comp_placer->enabled(component::crook);
|
||||||
}
|
}
|
||||||
|
|
||||||
void treebox::clear()
|
void treebox::clear()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user