File: Gump_ToggleButton.h

package info (click to toggle)
exult 0.98rc1-2
  • links: PTS
  • area: contrib
  • in suites: woody
  • size: 6,924 kB
  • ctags: 8,928
  • sloc: cpp: 83,768; sh: 7,643; ansic: 4,328; makefile: 890; yacc: 618; lex: 255; xml: 19
file content (81 lines) | stat: -rw-r--r-- 2,004 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
Copyright (C) 2001 The Exult Team

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; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

#ifndef _GUMP_TOGGLEBUTTON_H
#define _GUMP_TOGGLEBUTTON_H

#include "Gump_button.h"
#include "Text_button.h"

/*
 * A button that toggles shape when pushed
 */

class Gump_ToggleButton : public Gump_button
{
 public:
	Gump_ToggleButton(Gump *par, int px, int py, int shapenum,
						   int selectionnum, int numsel)
		: Gump_button(par, shapenum, px, py, SF_EXULT_FLX), 
		numselections(numsel)
	 {
		 set_frame(2 * selectionnum);
	 }

	virtual void activate(Game_window *gwin);

	int getselection() const { return get_framenum()/2; }
	virtual void toggle(int state) = 0;

 private:
	int numselections;
};

/*
 * A text button that toggles shape when pushed
 */

class Gump_ToggleTextButton : public Text_button
{
 public:
	Gump_ToggleTextButton(Gump *par, std::string *s,  int selectionnum, int numsel,
		int px, int py, int width, int height = 0)
		: Text_button(par, "", px, py, width, height), selections(s),
		numselections(numsel)
	{
		set_frame(selectionnum);
		text = selections[selectionnum];
		init();
	}

	virtual ~Gump_ToggleTextButton()
	{
		delete [] selections; 
	}
	virtual void activate(Game_window *gwin);

	int getselection() const { return get_framenum(); }
	virtual void toggle(int state) = 0;

 private:
	int numselections;
	std::string	*selections;
};


#endif