src/widget/widget_button_txt.cpp
author KUDr
Mon, 26 Mar 2007 21:00:16 +0000
branchcpp_gui
changeset 6301 e0251f797d59
parent 6295 a88d8c2cff6e
permissions -rw-r--r--
(svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
-Add: Panel widget with DoLayout() method that moves/resizes widgets with respect to their minimal sizes.
-Add: QuerySizes() method added to widget. Widgets are now able to calculate their minimal size.
-Add: SizeT class added (similar to PointT) to make Point/Size/Rectangle math simpler
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     1
/* $Id$ */
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     2
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     3
#include "../stdafx.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     4
#include <stdarg.h>
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     5
#include "../openttd.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     6
#include "../debug.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     7
#include "../functions.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     8
#include "../map.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
     9
#include "../player.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    10
#include "../window.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    11
#include "../gfx.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    12
#include "../viewport.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    13
#include "../console.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    14
#include "../variables.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    15
#include "../table/sprites.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    16
#include "../genworld.h"
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    17
#include "../helpers.hpp"
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    18
#include "window_events.hpp"
6289
be3d8bd9fb02 (svn r9010) [cpp_gui] -Add: Sticky button widget
KUDr
parents: 6264
diff changeset
    19
#include "widget_types.h"
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    20
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    21
namespace gui {
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    22
6301
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    23
StringID TextButton::GetTextId()
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    24
{
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    25
	if (m_text_id != STR_NULL) return m_text_id;
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    26
	StringID temp_id = BindCString(m_text.c_str());
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    27
	return temp_id;
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    28
}
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    29
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    30
/*virtual*/ void TextButton::QuerySizes()
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    31
{
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    32
	static Point16 border_size(6, 2);
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    33
	StringID text_id = GetTextId();
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    34
	m_min_size = GetStringSize(text_id) + border_size;
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    35
}
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    36
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    37
/*virtual*/ void TextButton::OnPaint(EvtPaint &ev)
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    38
{
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    39
	DrawBackground(ev);
6301
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    40
	Point center = GetSize() / 2;
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    41
	if (m_pushed) center += Point(1, 1);
6301
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    42
	StringID text_id = GetTextId();
e0251f797d59 (svn r9484) [cpp_gui] -Add: Auto layout/resize ability of widgets.
KUDr
parents: 6295
diff changeset
    43
	DrawStringCentered(center.x, center.y - 5, text_id, 16);
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    44
	ev.SetHandled();
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    45
}
6258
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    46
a2f86b8fd99b (svn r8801) [cpp_gui] -Codechange: few changes towards OO GUI:
KUDr
parents:
diff changeset
    47
6264
9fc3b5467396 (svn r8931) [cpp_gui] -Add: first OO widget type (TextButton) added only with basic functionality
KUDr
parents: 6258
diff changeset
    48
}; // namespace gui