aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llui/llbutton.h
diff options
context:
space:
mode:
authorJacek Antonelli2008-08-15 23:44:46 -0500
committerJacek Antonelli2008-08-15 23:44:46 -0500
commit38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4 (patch)
treeadca584755d22ca041a2dbfc35d4eca01f70b32c /linden/indra/llui/llbutton.h
parentREADME.txt (diff)
downloadmeta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.zip
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.gz
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.bz2
meta-impy-38d6d37f2d982fa959e9e8a4a3f7e1ccfad7b5d4.tar.xz
Second Life viewer sources 1.13.2.12
Diffstat (limited to '')
-rw-r--r--linden/indra/llui/llbutton.h283
1 files changed, 283 insertions, 0 deletions
diff --git a/linden/indra/llui/llbutton.h b/linden/indra/llui/llbutton.h
new file mode 100644
index 0000000..fe906a6
--- /dev/null
+++ b/linden/indra/llui/llbutton.h
@@ -0,0 +1,283 @@
1/**
2 * @file llbutton.h
3 * @brief Header for buttons
4 *
5 * Copyright (c) 2001-2007, Linden Research, Inc.
6 *
7 * The source code in this file ("Source Code") is provided by Linden Lab
8 * to you under the terms of the GNU General Public License, version 2.0
9 * ("GPL"), unless you have obtained a separate licensing agreement
10 * ("Other License"), formally executed by you and Linden Lab. Terms of
11 * the GPL can be found in doc/GPL-license.txt in this distribution, or
12 * online at http://secondlife.com/developers/opensource/gplv2
13 *
14 * There are special exceptions to the terms and conditions of the GPL as
15 * it is applied to this Source Code. View the full text of the exception
16 * in the file doc/FLOSS-exception.txt in this software distribution, or
17 * online at http://secondlife.com/developers/opensource/flossexception
18 *
19 * By copying, modifying or distributing this software, you acknowledge
20 * that you have read and understood your obligations described above,
21 * and agree to abide by those obligations.
22 *
23 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
24 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
25 * COMPLETENESS OR PERFORMANCE.
26 */
27
28#ifndef LL_LLBUTTON_H
29#define LL_LLBUTTON_H
30
31#include "lluuid.h"
32#include "llcontrol.h"
33#include "lluictrl.h"
34#include "v4color.h"
35#include "llframetimer.h"
36#include "llfontgl.h"
37#include "llimage.h"
38#include "lluistring.h"
39
40//
41// Constants
42//
43
44// PLEASE please use these "constants" when building your own buttons.
45// They are loaded from settings.xml at run time.
46extern S32 LLBUTTON_H_PAD;
47extern S32 LLBUTTON_V_PAD;
48extern S32 BTN_HEIGHT_SMALL;
49extern S32 BTN_HEIGHT;
50
51
52// All button widths should be rounded up to this size
53extern S32 BTN_GRID;
54
55
56class LLUICtrlFactory;
57
58//
59// Classes
60//
61
62class LLButton
63: public LLUICtrl
64{
65public:
66 // simple button with text label
67 LLButton(const LLString& name, const LLRect &rect, const LLString& control_name = "",
68 void (*on_click)(void*) = NULL, void *data = NULL);
69
70 LLButton(const LLString& name, const LLRect& rect,
71 const LLString &unselected_image,
72 const LLString &selected_image,
73 const LLString& control_name,
74 void (*click_callback)(void*),
75 void *callback_data = NULL,
76 const LLFontGL* mGLFont = NULL,
77 const LLString& unselected_label = LLString::null,
78 const LLString& selected_label = LLString::null );
79
80 virtual ~LLButton();
81 void init(void (*click_callback)(void*), void *callback_data, const LLFontGL* font, const LLString& control_name);
82 virtual EWidgetType getWidgetType() const;
83 virtual LLString getWidgetTag() const;
84
85 void addImageAttributeToXML(LLXMLNodePtr node, const LLString& imageName,
86 const LLUUID& imageID,const LLString& xmlTagName) const;
87 virtual LLXMLNodePtr getXML(bool save_children = true) const;
88 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
89
90 virtual BOOL handleUnicodeCharHere(llwchar uni_char, BOOL called_from_parent);
91 virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent);
92 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
93 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
94 virtual BOOL handleHover(S32 x, S32 y, MASK mask);
95 virtual void draw();
96
97 // HACK: "committing" a button is the same as clicking on it.
98 virtual void onCommit();
99
100 void setUnselectedLabelColor( const LLColor4& c ) { mUnselectedLabelColor = c; }
101 void setSelectedLabelColor( const LLColor4& c ) { mSelectedLabelColor = c; }
102
103 void setClickedCallback( void (*cb)(void *data), void* data = NULL ); // mouse down and up within button
104 void setMouseDownCallback( void (*cb)(void *data) ) { mMouseDownCallback = cb; } // mouse down within button
105 void setMouseUpCallback( void (*cb)(void *data) ) { mMouseUpCallback = cb; } // mouse up, EVEN IF NOT IN BUTTON
106 void setHeldDownCallback( void (*cb)(void *data) ) { mHeldDownCallback = cb; } // Mouse button held down and in button
107 void setHeldDownDelay( F32 seconds) { mHeldDownDelay = seconds; }
108
109 F32 getHeldDownTime() const { return mMouseDownTimer.getElapsedTimeF32(); }
110
111 BOOL toggleState() { setToggleState( !mToggleState ); return mToggleState; }
112 BOOL getToggleState() const { return mToggleState; }
113 void setToggleState(BOOL b);
114
115 void setFlashing( BOOL b ) { mFlashing = b; }
116 BOOL getFlashing() const { return mFlashing; }
117
118 void setHAlign( LLFontGL::HAlign align ) { mHAlign = align; }
119 void setLeftHPad( S32 pad ) { mLeftHPad = pad; }
120 void setRightHPad( S32 pad ) { mRightHPad = pad; }
121
122 const LLString getLabelUnselected() const { return wstring_to_utf8str(mUnselectedLabel); }
123 const LLString getLabelSelected() const { return wstring_to_utf8str(mSelectedLabel); }
124
125
126 // HACK to allow images to be freed when the caller knows he's done with it.
127 LLImageGL* getImageUnselected() const { return mImageUnselected; }
128
129 void setImageColor(const LLString& color_control);
130 void setImages(const LLString &image_name, const LLString &selected_name);
131 void setImageColor(const LLColor4& c);
132
133 void setDisabledImages(const LLString &image_name, const LLString &selected_name);
134 void setDisabledImages(const LLString &image_name, const LLString &selected_name, const LLColor4& c);
135
136 void setHoverImages(const LLString &image_name, const LLString &selected_name);
137
138 void setDisabledImageColor(const LLColor4& c) { mDisabledImageColor = c; }
139
140 void setDisabledSelectedLabelColor( const LLColor4& c ) { mDisabledSelectedLabelColor = c; }
141
142 virtual void setValue(const LLSD& value );
143 virtual LLSD getValue() const;
144
145 void setLabel( const LLString& label);
146 virtual BOOL setLabelArg( const LLString& key, const LLString& text );
147 void setLabelUnselected(const LLString& label);
148 void setLabelSelected(const LLString& label);
149 void setDisabledLabel(const LLString& disabled_label);
150 void setDisabledSelectedLabel(const LLString& disabled_label);
151 void setDisabledLabelColor( const LLColor4& c ) { mDisabledLabelColor = c; }
152
153 void setFont(const LLFontGL *font)
154 { mGLFont = ( font ? font : LLFontGL::sSansSerif); }
155 void setScaleImage(BOOL scale) { mScaleImage = scale; }
156
157 void setDropShadowedText(BOOL b) { mDropShadowedText = b; }
158
159 void setBorderEnabled(BOOL b) { mBorderEnabled = b; }
160
161 static void onHeldDown(void *userdata); // to be called by gIdleCallbacks
162 static void onMouseCaptureLost(LLMouseHandler* old_captor);
163
164 void setFixedBorder(S32 width, S32 height) { mFixedWidth = width; mFixedHeight = height; }
165 void setHoverGlowStrength(F32 strength) { mHoverGlowStrength = strength; }
166
167private:
168 void setImageUnselectedID(const LLUUID &image_id);
169 void setImageSelectedID(const LLUUID &image_id);
170 void setImageHoverSelectedID(const LLUUID &image_id);
171 void setImageHoverUnselectedID(const LLUUID &image_id);
172 void setImageDisabledID(const LLUUID &image_id);
173 void setImageDisabledSelectedID(const LLUUID &image_id);
174public:
175 void setImageUnselected(const LLString &image_name);
176 void setImageSelected(const LLString &image_name);
177 void setImageHoverSelected(const LLString &image_name);
178 void setImageHoverUnselected(const LLString &image_name);
179 void setImageDisabled(const LLString &image_name);
180 void setImageDisabledSelected(const LLString &image_name);
181 void setCommitOnReturn(BOOL commit) { mCommitOnReturn = commit; }
182 BOOL getCommitOnReturn() { return mCommitOnReturn; }
183
184protected:
185 virtual void drawBorder(const LLColor4& color, S32 size);
186
187protected:
188
189 void (*mClickedCallback)(void* data );
190 void (*mMouseDownCallback)(void *data);
191 void (*mMouseUpCallback)(void *data);
192 void (*mHeldDownCallback)(void *data);
193
194 const LLFontGL *mGLFont;
195
196 LLFrameTimer mMouseDownTimer;
197 F32 mHeldDownDelay; // seconds, after which held-down callbacks get called
198
199 LLPointer<LLImageGL> mImageUnselected;
200 LLUIString mUnselectedLabel;
201 LLColor4 mUnselectedLabelColor;
202
203 LLPointer<LLImageGL> mImageSelected;
204 LLUIString mSelectedLabel;
205 LLColor4 mSelectedLabelColor;
206
207 LLPointer<LLImageGL> mImageHoverSelected;
208
209 LLPointer<LLImageGL> mImageHoverUnselected;
210
211 LLPointer<LLImageGL> mImageDisabled;
212 LLUIString mDisabledLabel;
213 LLColor4 mDisabledLabelColor;
214
215 LLPointer<LLImageGL> mImageDisabledSelected;
216 LLUIString mDisabledSelectedLabel;
217 LLColor4 mDisabledSelectedLabelColor;
218
219
220 LLUUID mImageUnselectedID;
221 LLUUID mImageSelectedID;
222 LLUUID mImageHoverSelectedID;
223 LLUUID mImageHoverUnselectedID;
224 LLUUID mImageDisabledID;
225 LLUUID mImageDisabledSelectedID;
226 LLString mImageUnselectedName;
227 LLString mImageSelectedName;
228 LLString mImageHoverSelectedName;
229 LLString mImageHoverUnselectedName;
230 LLString mImageDisabledName;
231 LLString mImageDisabledSelectedName;
232
233 LLColor4 mHighlightColor;
234 LLColor4 mUnselectedBgColor;
235 LLColor4 mSelectedBgColor;
236
237 LLColor4 mImageColor;
238 LLColor4 mDisabledImageColor;
239
240 BOOL mToggleState;
241 BOOL mScaleImage;
242
243 BOOL mDropShadowedText;
244
245 BOOL mBorderEnabled;
246
247 BOOL mFlashing;
248
249 LLFontGL::HAlign mHAlign;
250 S32 mLeftHPad;
251 S32 mRightHPad;
252
253 S32 mFixedWidth;
254 S32 mFixedHeight;
255
256 F32 mHoverGlowStrength;
257 F32 mCurGlowStrength;
258
259 BOOL mNeedsHighlight;
260 BOOL mCommitOnReturn;
261
262 LLPointer<LLImageGL> mImagep;
263
264 static LLFrameTimer sFlashingTimer;
265};
266
267class LLSquareButton
268: public LLButton
269{
270public:
271 LLSquareButton(const LLString& name, const LLRect& rect,
272 const LLString& label,
273 const LLFontGL *font = NULL,
274 const LLString& control_name = "",
275 void (*click_callback)(void*) = NULL,
276 void *callback_data = NULL,
277 const LLString& selected_label = LLString::null );
278};
279
280// Helpful functions
281S32 round_up(S32 grid, S32 value);
282
283#endif // LL_LLBUTTON_H