305 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			305 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 *	The fundamental widget class implementation
 | 
						|
 *	Copyright(C) 2003-2013 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: nana/gui/widgets/widget.cpp
 | 
						|
 */
 | 
						|
 | 
						|
#include <nana/gui/widgets/widget.hpp>
 | 
						|
#include <nana/gui/tooltip.hpp>
 | 
						|
 | 
						|
namespace nana
 | 
						|
{
 | 
						|
	namespace internationalization_parts
 | 
						|
	{
 | 
						|
		void set_eval(window, i18n_eval&&);
 | 
						|
	}
 | 
						|
	//class widget
 | 
						|
	//@brief:The definition of class widget
 | 
						|
		nana::string widget::caption() const
 | 
						|
		{
 | 
						|
			return this->_m_caption();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::caption(std::string utf8)
 | 
						|
		{
 | 
						|
			_m_caption(std::wstring(::nana::charset(utf8, ::nana::unicode::utf8)));
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::caption(nana::string str)
 | 
						|
		{
 | 
						|
			_m_caption(std::move(str));
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::i18n(i18n_eval eval)
 | 
						|
		{
 | 
						|
			if (handle())
 | 
						|
			{
 | 
						|
				_m_caption(eval());
 | 
						|
				internationalization_parts::set_eval(handle(), std::move(eval));
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		nana::cursor widget::cursor() const
 | 
						|
		{
 | 
						|
			return _m_cursor();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::cursor(nana::cursor cur)
 | 
						|
		{
 | 
						|
			_m_cursor(cur);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::typeface(const nana::paint::font& font)
 | 
						|
		{
 | 
						|
			_m_typeface(font);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::paint::font widget::typeface() const
 | 
						|
		{
 | 
						|
			return _m_typeface();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::close()
 | 
						|
		{
 | 
						|
			_m_close();
 | 
						|
		}
 | 
						|
 | 
						|
		window widget::parent() const
 | 
						|
		{
 | 
						|
			return API::get_parent_window(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::enabled() const
 | 
						|
		{
 | 
						|
			return API::window_enabled(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::enabled(bool value)
 | 
						|
		{
 | 
						|
			_m_enabled(value);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::enable_dropfiles(bool enb)
 | 
						|
		{
 | 
						|
			API::enable_dropfiles(handle(), enb);
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::empty() const
 | 
						|
		{
 | 
						|
			return (nullptr == handle());	
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::focus()
 | 
						|
		{
 | 
						|
			API::focus_window(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::focused() const
 | 
						|
		{
 | 
						|
			return (API::focus_window() == handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::show()
 | 
						|
		{
 | 
						|
			_m_show(true);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::hide()
 | 
						|
		{
 | 
						|
			_m_show(false);
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::visible() const
 | 
						|
		{
 | 
						|
			return _m_visible();
 | 
						|
		}
 | 
						|
 | 
						|
		nana::size widget::size() const
 | 
						|
		{
 | 
						|
			return API::window_size(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::size(const nana::size& sz)
 | 
						|
		{
 | 
						|
			_m_size(sz);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::point widget::pos() const
 | 
						|
		{
 | 
						|
			return API::window_position(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::move(int x, int y)
 | 
						|
		{
 | 
						|
			_m_move(x, y);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::move(const rectangle& r)
 | 
						|
		{
 | 
						|
			_m_move(r);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::fgcolor(const nana::color& col)
 | 
						|
		{
 | 
						|
			_m_fgcolor(col);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::color widget::fgcolor() const
 | 
						|
		{
 | 
						|
			return _m_fgcolor();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::bgcolor(const nana::color& col)
 | 
						|
		{
 | 
						|
			_m_bgcolor(col);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::color widget::bgcolor() const
 | 
						|
		{
 | 
						|
			return _m_bgcolor();
 | 
						|
		}
 | 
						|
 | 
						|
		general_events& widget::events() const
 | 
						|
		{
 | 
						|
			return _m_get_general_events();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::umake_event(event_handle eh) const
 | 
						|
		{
 | 
						|
			API::umake_event(eh);
 | 
						|
		}
 | 
						|
 | 
						|
		widget& widget::register_shortkey(char_t key)
 | 
						|
		{
 | 
						|
			if (key)
 | 
						|
				API::register_shortkey(handle(), static_cast<unsigned long>(key));
 | 
						|
			else
 | 
						|
				API::unregister_shortkey(handle());
 | 
						|
			return *this;
 | 
						|
		}
 | 
						|
 | 
						|
		widget& widget::take_active(bool activated, window take_if_not_activated)
 | 
						|
		{
 | 
						|
			API::take_active(handle(), activated, take_if_not_activated);
 | 
						|
			return *this;
 | 
						|
		}
 | 
						|
 | 
						|
		widget& widget::tooltip(const nana::string& text)
 | 
						|
		{
 | 
						|
			nana::tooltip::set(*this, text);
 | 
						|
			return *this;
 | 
						|
		}
 | 
						|
 | 
						|
		widget::operator widget::dummy_bool_type() const
 | 
						|
		{
 | 
						|
			return (handle()? dummy_bool_type(1):0);
 | 
						|
		}
 | 
						|
 | 
						|
		widget::operator window() const
 | 
						|
		{
 | 
						|
			return handle();
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_complete_creation()
 | 
						|
		{}
 | 
						|
 | 
						|
		nana::string widget::_m_caption() const
 | 
						|
		{
 | 
						|
			return API::dev::window_caption(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_caption(nana::string&& str)
 | 
						|
		{
 | 
						|
			API::dev::window_caption(handle(), std::move(str));
 | 
						|
		}
 | 
						|
 | 
						|
		nana::cursor widget::_m_cursor() const
 | 
						|
		{
 | 
						|
			return API::window_cursor(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_cursor(nana::cursor cur)
 | 
						|
		{
 | 
						|
			API::window_cursor(handle(), cur);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_close()
 | 
						|
		{
 | 
						|
			API::close_window(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::_m_enabled() const
 | 
						|
		{
 | 
						|
			return API::window_enabled(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_enabled(bool value)
 | 
						|
		{
 | 
						|
			API::window_enabled(handle(), value);
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::_m_show(bool visible)
 | 
						|
		{
 | 
						|
			API::show_window(handle(), visible);
 | 
						|
			return visible;
 | 
						|
		}
 | 
						|
 | 
						|
		bool widget::_m_visible() const
 | 
						|
		{
 | 
						|
			return API::visible(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_size(const nana::size& sz)
 | 
						|
		{
 | 
						|
			API::window_size(handle(), sz);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_move(int x, int y)
 | 
						|
		{
 | 
						|
			API::move_window(handle(), x, y);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_move(const rectangle& r)
 | 
						|
		{
 | 
						|
			API::move_window(handle(), r);
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_typeface(const paint::font& font)
 | 
						|
		{
 | 
						|
			API::typeface(handle(), font);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::paint::font widget::_m_typeface() const
 | 
						|
		{
 | 
						|
			return API::typeface(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_fgcolor(const nana::color& col)
 | 
						|
		{
 | 
						|
			API::fgcolor(handle(), col);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::color widget::_m_fgcolor() const
 | 
						|
		{
 | 
						|
			return API::fgcolor(handle());
 | 
						|
		}
 | 
						|
 | 
						|
		void widget::_m_bgcolor(const nana::color& col)
 | 
						|
		{
 | 
						|
			API::bgcolor(handle(), col);
 | 
						|
		}
 | 
						|
 | 
						|
		nana::color widget::_m_bgcolor() const
 | 
						|
		{
 | 
						|
			return API::bgcolor(handle());
 | 
						|
		}
 | 
						|
 | 
						|
	//end class widget
 | 
						|
}//end namespace nana
 | 
						|
 |