Merge branch 'qPCR4vir-hotfixes-1.0.1' into hotfixes-1.0.1

This commit is contained in:
Jinhao 2015-03-17 05:10:15 +08:00
commit b00953c935
23 changed files with 86 additions and 68 deletions

View File

@ -1,13 +1,13 @@
/* /**
* A Button Implementation * A Button Implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 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
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/button.hpp * @file: nana/gui/widgets/button.hpp
*/ */
#ifndef NANA_GUI_WIDGET_BUTTON_HPP #ifndef NANA_GUI_WIDGET_BUTTON_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A Categorize Implementation * A Categorize 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-2015 Jinhao(cnjinhao@hotmail.com)
@ -7,7 +7,7 @@
* (See accompanying file LICENSE_1_0.txt or copy at * (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/categorize.hpp * @file: nana/gui/widgets/categorize.hpp
*/ */
#ifndef NANA_GUI_WIDGET_CATEGORIZE_HPP #ifndef NANA_GUI_WIDGET_CATEGORIZE_HPP

View File

@ -1,13 +1,13 @@
/* /**
* A CheckBox Implementation * A CheckBox Implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 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
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/checkbox.hpp * @file: nana/gui/widgets/checkbox.hpp
*/ */
#ifndef NANA_GUI_WIDGET_CHECKBOX_HPP #ifndef NANA_GUI_WIDGET_CHECKBOX_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A Combox Implementation * A Combox 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-2015 Jinhao(cnjinhao@hotmail.com)
@ -7,7 +7,7 @@
* (See accompanying file LICENSE_1_0.txt or copy at * (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/combox.hpp * @file: nana/gui/widgets/combox.hpp
*/ */
#ifndef NANA_GUI_WIDGETS_COMBOX_HPP #ifndef NANA_GUI_WIDGETS_COMBOX_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A date chooser Implementation * A date chooser 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,7 +1,7 @@
/* /**
* A float_listbox Implementation * A float_listbox Implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 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

View File

@ -1,4 +1,4 @@
/* /**
* A Form Implementation * A Form 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,7 +1,7 @@
/* /**
* A Frame Implementation * A Frame Implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 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
@ -9,7 +9,7 @@
* *
* @file: nana/gui/widgets/frame.hpp * @file: nana/gui/widgets/frame.hpp
* *
* A frame provides a way to contain the platform window in a stdex GUI Window * @brief A frame provides a way to contain the platform window in a stdex GUI Window
*/ */
#ifndef NANA_GUI_WIDGET_FRAME_HPP #ifndef NANA_GUI_WIDGET_FRAME_HPP

View File

@ -1,7 +1,7 @@
/* /**
* A Label Control Implementation * A Label Control Implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2003-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 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

View File

@ -1,4 +1,4 @@
/* /**
* A List Box Implementation * A List Box 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Menu implementation * A Menu implementation
* Nana C++ Library(http://www.nanapro.org) * Nana C++ Library(http://www.nanapro.org)
* Copyright(C) 2009-2014 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2009-2014 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Panel Implementation * A Panel Implementation
* Nana C++ Library(http://www.nanaro.org) * Nana C++ Library(http://www.nanaro.org)
* Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
@ -9,7 +9,7 @@
* *
* @file: nana/gui/widgets/panel.hpp * @file: nana/gui/widgets/panel.hpp
* *
* @brief: panel is a widget used for placing some widgets. * @brief panel is a widget used for placing some widgets.
*/ */
#ifndef NANA_GUI_WIDGETS_PANEL_HPP #ifndef NANA_GUI_WIDGETS_PANEL_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A Picture Implementation * A Picture 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-2015 Jinhao(cnjinhao@hotmail.com)
@ -9,7 +9,7 @@
* *
* @file: nana/gui/widgets/picture.hpp * @file: nana/gui/widgets/picture.hpp
* *
* Used for showing a picture * @brief Used for showing a picture
*/ */
#ifndef NANA_GUI_WIDGET_PICTURE_HPP #ifndef NANA_GUI_WIDGET_PICTURE_HPP
#define NANA_GUI_WIDGET_PICTURE_HPP #define NANA_GUI_WIDGET_PICTURE_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A Progress Indicator Implementation * A Progress Indicator 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Scroll Implementation * A Scroll 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Slider Implementation * A Slider 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Spin box widget * A Spin box widget
* 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Tabbar implementation * A Tabbar 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-2015 Jinhao(cnjinhao@hotmail.com)
@ -7,8 +7,8 @@
* (See accompanying file LICENSE_1_0.txt or copy at * (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/tabbar.hpp * @file: nana/gui/widgets/tabbar.hpp
* @brief: A tabbar contains tab items and toolbox for scrolling, closing, selecting items. * @brief A tabbar contains tab items and toolbox for scrolling, closing, selecting items.
* *
*/ */
#ifndef NANA_GUI_WIDGET_TABBAR_HPP #ifndef NANA_GUI_WIDGET_TABBAR_HPP

View File

@ -1,4 +1,4 @@
/* /**
* A Textbox Implementation * A Textbox 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* A Toolbar Implementation * A Toolbar 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -1,4 +1,4 @@
/* /**
* 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-2015 Jinhao(cnjinhao@hotmail.com) * Copyright(C) 2003-2015 Jinhao(cnjinhao@hotmail.com)
@ -7,12 +7,12 @@
* (See accompanying file LICENSE_1_0.txt or copy at * (See accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt) * http://www.boost.org/LICENSE_1_0.txt)
* *
* @file: nana/gui/widgets/treebox.hpp * @file: nana/gui/widgets/treebox.hpp
* @brief: * @brief
* The treebox organizes the nodes by a key string. * The treebox organizes the nodes by a key string.
* The treebox would have a vertical scrollbar if the node * The treebox would have a vertical scrollbar if there are too many nodes
* is too many to display. And it does not have a horizontal scrollbar, * to display. It does not have an horizontal scrollbar:
* the widget will adjust the node's displaying position for fitting. * the widget will adjust the node's displaying position for fitting.
*/ */
#ifndef NANA_GUI_WIDGETS_TREEBOX_HPP #ifndef NANA_GUI_WIDGETS_TREEBOX_HPP
@ -332,12 +332,13 @@ namespace nana
}//end namespace treebox }//end namespace treebox
}//end namespace drawerbase }//end namespace drawerbase
struct arg_treebox /// a type of treebox event parameter
struct arg_treebox
: public event_arg : public event_arg
{ {
treebox& widget; treebox& widget; ///< where the event occurs
drawerbase::treebox::item_proxy & item; drawerbase::treebox::item_proxy & item; ///< the operated node
bool operated; bool operated; ///< operation state of the event
arg_treebox(treebox&, drawerbase::treebox::item_proxy&, bool operated); arg_treebox(treebox&, drawerbase::treebox::item_proxy&, bool operated);
}; };
@ -349,28 +350,30 @@ namespace nana
struct treebox_events struct treebox_events
: public general_events : public general_events
{ {
basic_event<arg_treebox> expanded; basic_event<arg_treebox> expanded; ///< a user expands or shrinks a node
basic_event<arg_treebox> checked; basic_event<arg_treebox> checked; ///< a user checks or unchecks a node
basic_event<arg_treebox> selected; basic_event<arg_treebox> selected; ///< a user selects or unselects a node
basic_event<arg_treebox> hovered; basic_event<arg_treebox> hovered; ///< a user moves the cursor over a node
}; };
}//end namespace treebox }//end namespace treebox
}//end namespace drawerbase }//end namespace drawerbase
/// Displays a hierarchical list of items, such as the files and directories on a disk. /// \brief Displays a hierarchical list of items, such as the files and directories on a disk.
class treebox /// See also in [documentation](http://nanapro.org/en-us/help/widgets/treebox.htm)
class treebox
:public widget_object < category::widget_tag, drawerbase::treebox::trigger, drawerbase::treebox::treebox_events> :public widget_object < category::widget_tag, drawerbase::treebox::trigger, drawerbase::treebox::treebox_events>
{ {
public: public:
/// A type refers to the item and also used to iterate through the node. /// A type refers to the item and is also used to iterate through the nodes.
typedef drawerbase::treebox::item_proxy item_proxy; typedef drawerbase::treebox::item_proxy item_proxy;
/// state images for the node
typedef drawerbase::treebox::node_image_tag node_image_type; typedef drawerbase::treebox::node_image_tag node_image_type;
/// The interface of treebox item renderer /// The interface of treebox user-defined item renderer
typedef drawerbase::treebox::renderer_interface renderer_interface; typedef drawerbase::treebox::renderer_interface renderer_interface;
/// The interface of treebox compset_placer /// The interface of treebox compset_placer to define the position of node components
typedef drawerbase::treebox::compset_placer_interface compset_placer_interface; typedef drawerbase::treebox::compset_placer_interface compset_placer_interface;
/// The default constructor without creating the widget. /// The default constructor without creating the widget.
@ -378,7 +381,7 @@ namespace nana
/// \brief The construct that creates a widget. /// \brief The construct that creates a widget.
/// @param wd A handle to the parent window of the widget being created. /// @param wd A handle to the parent window of the widget being created.
/// @param visible specifying the visible after creating. /// @param visible specifying the visibility after creating.
treebox(window wd, bool visible); treebox(window wd, bool visible);
/// \brief The construct that creates a widget. /// \brief The construct that creates a widget.
@ -388,16 +391,16 @@ namespace nana
treebox(window, const nana::rectangle& = rectangle(), bool visible = true); treebox(window, const nana::rectangle& = rectangle(), bool visible = true);
template<typename ItemRenderer> template<typename ItemRenderer>
treebox & renderer(const ItemRenderer & rd) treebox & renderer(const ItemRenderer & rd) ///< set user-defined node renderer
{ {
get_drawer_trigger().renderer(::nana::pat::cloneable<renderer_interface>(rd)); get_drawer_trigger().renderer(::nana::pat::cloneable<renderer_interface>(rd));
return *this; return *this;
} }
const nana::pat::cloneable<renderer_interface> & renderer() const; const nana::pat::cloneable<renderer_interface> & renderer() const; ///< get user-defined node renderer
template<typename Placer> template<typename Placer>
treebox & placer(const Placer & r) treebox & placer(const Placer & r) ///< location of a node components
{ {
get_drawer_trigger().placer(::nana::pat::cloneable<compset_placer_interface>(r)); get_drawer_trigger().placer(::nana::pat::cloneable<compset_placer_interface>(r));
return *this; return *this;
@ -406,38 +409,51 @@ namespace nana
const nana::pat::cloneable<compset_placer_interface> & placer() const; const nana::pat::cloneable<compset_placer_interface> & placer() const;
/// \brief Eanble the widget to be draws automatically when it is operated. /// \brief Eanble the widget to be draws automatically when it is operated.
///
/// The treebox automatically redraws after certain operations, but,
/// under some circumstances, it is good to disable the automatic drawing mode,
/// for example, before adding nodes in a loop, disable the mode to avoiding
/// frequent and useless refresh for better performance, and then, after
/// the operations, enable the automatic redraw mode again.
/// @param bool whether to enable. /// @param bool whether to enable.
void auto_draw(bool); void auto_draw(bool);
/// \brief Enable the checkbox for each item of the widget. /// \brief Enable the checkboxs for each item of the widget.
/// @param bool wheter to enable. /// @param bool indicates whether to show or hide the checkboxs.
treebox & checkable(bool enable); treebox & checkable(bool enable);
/// Determinte whether the checkbox is enabled.
bool checkable() const; bool checkable() const; ///< Determinte whether the checkboxs are enabled.
node_image_type& icon(const nana::string& id) const; /// \brief Creates an icon scheme with the specified name.
///
/// The icon scheme includes 3 images for node states.
/// These states are 'normal', 'hovered' and 'expanded'.
/// If 'hovered' or 'expanded' are not set, it uses 'normal' state image for these 2 states.
/// See also in [documentation](http://nanapro.org/en-us/help/widgets/treebox.htm)
node_image_type& icon(const nana::string& id ///< the name of an icon scheme. If the name is not existing, it creates a new scheme for the name.
) const;
void icon_erase(const nana::string& id); void icon_erase(const nana::string& id);
item_proxy find(const nana::string& keypath); ///< Find an item though a specified keypath. item_proxy find(const nana::string& keypath); ///< Find an item though a specified keypath.
/// Inserts a new node to treebox, but if the keypath exists returns the existing node. /// Inserts a new node to treebox, but if the keypath exists returns the existing node.
item_proxy insert(const nana::string& path_key, ///< specifies the node hierarchical item_proxy insert(const nana::string& path_key, ///< specifies the node hierarchy
nana::string title ///< used for displaying nana::string title ///< used for displaying
); );
/// Inserts a new node to treebox, but if the keypath exists returns the existing node. /// Inserts a new node to treebox, but if the keypath exists returns the existing node.
item_proxy insert( item_proxy pos, ///< the parent item node item_proxy insert( item_proxy pos, ///< the parent item node
const nana::string& key, ///< specifies the new node const nana::string& key, ///< specifies the new node
nana::string title ///< used for displaying. nana::string title ///< title used for displaying in the new node.
); );
item_proxy erase(item_proxy i); item_proxy erase(item_proxy i); ///< Removes the node at pos and return the Item proxy following the removed node
void erase(const nana::string& keypath); void erase(const nana::string& keypath); ///< Removes the node by the key path.
nana::string make_key_path(item_proxy i, const nana::string& splitter) const;///<returns the key path nana::string make_key_path(item_proxy i, const nana::string& splitter) const;///<returns the key path
item_proxy selected() const; item_proxy selected() const; ///< returns the selected node
};//end class treebox };//end class treebox
}//end namespace nana }//end namespace nana
#endif #endif

View File

@ -1,4 +1,4 @@
/* /**
* The fundamental widget class implementation * The fundamental widget class 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-2015 Jinhao(cnjinhao@hotmail.com)

View File

@ -2151,6 +2151,8 @@ namespace nana
if (impl_->root_division && impl_->window_handle) if (impl_->root_division && impl_->window_handle)
{ {
impl_->root_division->field_area = API::window_size(impl_->window_handle); impl_->root_division->field_area = API::window_size(impl_->window_handle);
if (impl_->root_division->field_area.empty()) return;
impl_->root_division->collocate(impl_->window_handle); impl_->root_division->collocate(impl_->window_handle);
for (auto & field : impl_->fields) for (auto & field : impl_->fields)