Move the widget register code to its own file.
Part of cleaning up and polishing the existing widget code.
This commit is contained in:
parent
60f8d3213f
commit
5ad5a523e0
26 changed files with 93 additions and 49 deletions
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/button.hpp"
|
||||
#include "gui/auxiliary/window_builder/button.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "sound.hpp"
|
||||
|
|
69
src/gui/widgets/detail/register.tpp
Normal file
69
src/gui/widgets/detail/register.tpp
Normal file
|
@ -0,0 +1,69 @@
|
|||
/* $Id$ */
|
||||
/*
|
||||
Copyright (C) 2007 - 2013 by Mark de Wever <koraq@xs4all.nl>
|
||||
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY.
|
||||
|
||||
See the COPYING file for more details.
|
||||
*/
|
||||
|
||||
#ifndef GUI_WIDGETS_DETAIL_REGISTER_TPP_INCLUDED
|
||||
#define GUI_WIDGETS_DETAIL_REGISTER_TPP_INCLUDED
|
||||
|
||||
/**
|
||||
* Registers a widget.
|
||||
*
|
||||
* Call this function to register a widget. Use this macro in the
|
||||
* implementation, inside the gui2 namespace.
|
||||
*
|
||||
* @see @ref gui2::load_widget_definitions for more information.
|
||||
*
|
||||
* @note When the type is tfoo_definition, the id "foo" and no special key best
|
||||
* use RESISTER_WIDGET(foo) instead.
|
||||
*
|
||||
* @param type Class type of the window to register.
|
||||
* @param id Id of the widget
|
||||
* @param key The id to load if differs from id.
|
||||
*/
|
||||
#define REGISTER_WIDGET3( \
|
||||
type \
|
||||
, id \
|
||||
, key) \
|
||||
namespace { \
|
||||
\
|
||||
namespace ns_##type { \
|
||||
\
|
||||
struct tregister_helper { \
|
||||
tregister_helper() \
|
||||
{ \
|
||||
register_widget(#id, boost::bind( \
|
||||
load_widget_definitions<type> \
|
||||
, _1 \
|
||||
, _2 \
|
||||
, _3 \
|
||||
, key)); \
|
||||
\
|
||||
register_builder_widget(#id, boost::bind( \
|
||||
build_widget<implementation::tbuilder_##id> \
|
||||
, _1)); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
static tregister_helper register_helper; \
|
||||
} \
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for REGISTER_WIDGET3.
|
||||
*
|
||||
* "Calls" REGISTER_WIDGET3(tid_definition, id, _4)
|
||||
*/
|
||||
#define REGISTER_WIDGET(id) REGISTER_WIDGET3(t##id##_definition, id, _4)
|
||||
|
||||
#endif
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/drawing.hpp"
|
||||
#include "gui/auxiliary/window_builder/drawing.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include "gui/widgets/horizontal_scrollbar.hpp"
|
||||
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/auxiliary/widget_definition/horizontal_scrollbar.hpp"
|
||||
#include "gui/auxiliary/window_builder/horizontal_scrollbar.hpp"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "gui/auxiliary/widget_definition/image.hpp"
|
||||
#include "gui/auxiliary/window_builder/image.hpp"
|
||||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/label.hpp"
|
||||
#include "gui/auxiliary/window_builder/label.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "gui/auxiliary/widget_definition/listbox.hpp"
|
||||
#include "gui/auxiliary/window_builder/listbox.hpp"
|
||||
#include "gui/auxiliary/window_builder/horizontal_listbox.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/matrix.hpp"
|
||||
#include "gui/auxiliary/window_builder/matrix.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/minimap.hpp"
|
||||
#include "gui/auxiliary/window_builder/minimap.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "map.hpp"
|
||||
#include "map_exception.hpp"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/multi_page.hpp"
|
||||
#include "gui/auxiliary/window_builder/multi_page.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/generator.hpp"
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/panel.hpp"
|
||||
#include "gui/auxiliary/window_builder/panel.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/text_box.hpp"
|
||||
#include "gui/auxiliary/window_builder/password_box.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "serialization/string_utils.hpp"
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/widget_definition/progress_bar.hpp"
|
||||
#include "gui/auxiliary/window_builder/progress_bar.hpp"
|
||||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "utils/foreach.tpp"
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "gui/auxiliary/timer.hpp"
|
||||
#include "gui/auxiliary/widget_definition/repeating_button.hpp"
|
||||
#include "gui/auxiliary/window_builder/repeating_button.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "sound.hpp"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/scroll_label.hpp"
|
||||
#include "gui/auxiliary/window_builder/scroll_label.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/scrollbar.hpp"
|
||||
#include "gui/widgets/spacer.hpp"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/scrollbar_panel.hpp"
|
||||
#include "gui/auxiliary/window_builder/scrollbar_panel.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "gui/auxiliary/widget_definition/slider.hpp"
|
||||
#include "gui/auxiliary/window_builder/slider.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "sound.hpp"
|
||||
#include "utils/foreach.tpp"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/spacer.hpp"
|
||||
#include "gui/auxiliary/window_builder/spacer.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/stacked_widget.hpp"
|
||||
#include "gui/auxiliary/window_builder/stacked_widget.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/generator.hpp"
|
||||
#include "utils/foreach.tpp"
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/text_box.hpp"
|
||||
#include "gui/auxiliary/window_builder/text_box.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "game_preferences.hpp"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/toggle_button.hpp"
|
||||
#include "gui/auxiliary/window_builder/toggle_button.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "sound.hpp"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/toggle_panel.hpp"
|
||||
#include "gui/auxiliary/window_builder/toggle_panel.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "sound.hpp"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "gui/auxiliary/log.hpp"
|
||||
#include "gui/auxiliary/widget_definition/tree_view.hpp"
|
||||
#include "gui/auxiliary/window_builder/tree_view.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/tree_view_node.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
#include "gui/auxiliary/widget_definition/vertical_scrollbar.hpp"
|
||||
#include "gui/auxiliary/window_builder/vertical_scrollbar.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
|
|
@ -817,55 +817,6 @@ T& find_widget(typename utils::tconst_clone<twidget, T>::pointer widget
|
|||
|
||||
} // namespace gui2
|
||||
|
||||
/**
|
||||
* Registers a widget.
|
||||
*
|
||||
* Call this function to register a widget. Use this macro in the
|
||||
* implementation, inside the gui2 namespace.
|
||||
*
|
||||
* @see @ref gui2::load_widget_definitions for more information.
|
||||
*
|
||||
* @note When the type is tfoo_definition, the id "foo" and no special key best
|
||||
* use RESISTER_WIDGET(foo) instead.
|
||||
*
|
||||
* @param type Class type of the window to register.
|
||||
* @param id Id of the widget
|
||||
* @param key The id to load if differs from id.
|
||||
*/
|
||||
#define REGISTER_WIDGET3( \
|
||||
type \
|
||||
, id \
|
||||
, key) \
|
||||
namespace { \
|
||||
\
|
||||
namespace ns_##type { \
|
||||
\
|
||||
struct tregister_helper { \
|
||||
tregister_helper() \
|
||||
{ \
|
||||
register_widget(#id, boost::bind( \
|
||||
load_widget_definitions<type> \
|
||||
, _1 \
|
||||
, _2 \
|
||||
, _3 \
|
||||
, key)); \
|
||||
\
|
||||
register_builder_widget(#id, boost::bind( \
|
||||
build_widget<implementation::tbuilder_##id> \
|
||||
, _1)); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
static tregister_helper register_helper; \
|
||||
} \
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for REGISTER_WIDGET3.
|
||||
*
|
||||
* "Calls" REGISTER_WIDGET3(tid_definition, id, _4)
|
||||
*/
|
||||
#define REGISTER_WIDGET(id) REGISTER_WIDGET3(t##id##_definition, id, _4)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "gui/dialogs/title_screen.hpp"
|
||||
#include "gui/dialogs/tip.hpp"
|
||||
#include "gui/widgets/button.hpp"
|
||||
#include "gui/widgets/detail/register.tpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
|
||||
#include "gui/widgets/debug.hpp"
|
||||
|
|
Loading…
Add table
Reference in a new issue