mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
1203 lines
41 KiB
C++
1203 lines
41 KiB
C++
/*
|
|
* $Logfile: /DescentIII/Main/Lib/ui.h $
|
|
* $Revision: 75 $
|
|
* $Date: 5/17/99 5:19p $
|
|
* $Author: Samir $
|
|
*
|
|
* UI system
|
|
*
|
|
* $Log: /DescentIII/Main/Lib/ui.h $
|
|
*
|
|
* 75 5/17/99 5:19p Samir
|
|
* added ability for edit box to autoselect when hitting the max number of
|
|
* characters typable.
|
|
*
|
|
* 74 5/02/99 2:08a Samir
|
|
* added Enable and Disable and only accept locking of button if mouse is
|
|
* inside the button.
|
|
*
|
|
* 73 4/29/99 2:21a Samir
|
|
* added flag for gadgets.
|
|
*
|
|
* 72 4/28/99 1:54a Samir
|
|
* visual tweaks to text
|
|
*
|
|
* 71 4/26/99 7:46p Samir
|
|
* you can get flags from a window now.
|
|
*
|
|
* 70 4/16/99 4:02a Jeff
|
|
* include linux_fix.h for linxu builds...reduces errors
|
|
*
|
|
* 69 4/15/99 1:45a Jeff
|
|
* changes for linux compile
|
|
*
|
|
* 68 4/03/99 9:26p Jeff
|
|
* changed dialogs that weren't using UID_OK and UID_CANCEL to use and
|
|
* handle them properly
|
|
*
|
|
* 67 3/23/99 9:02p Samir
|
|
* up accelerator count for windows to 48.
|
|
*
|
|
* 66 2/28/99 3:25a Samir
|
|
* added flag to input only numbers.
|
|
*
|
|
* 65 2/26/99 2:12a Samir
|
|
* added window accelrators
|
|
*
|
|
* 64 2/22/99 8:13p Samir
|
|
* added slave gadget system that only uses mouse input from window, but
|
|
* defers keys to its master.
|
|
*
|
|
* 63 2/21/99 6:36p Samir
|
|
* focusing changes and key input changes to ui.,
|
|
*
|
|
* 62 2/17/99 8:32p Samir
|
|
* fixed bugs in remove gadget, added callbacks for attaching and
|
|
* detaching gadgets.
|
|
*
|
|
* 61 2/16/99 12:08p Samir
|
|
* added gadget notification system.
|
|
*
|
|
* 60 1/18/99 5:08a Jeff
|
|
* added some flags related to sorted listboxes
|
|
*
|
|
* 59 12/30/98 12:16p Kevin
|
|
* Auto Mission Download system
|
|
*
|
|
* 58 11/03/98 7:05p Samir
|
|
* added word wrapping console.
|
|
*
|
|
* 57 10/20/98 12:14p Jeff
|
|
* added color to the UIGroup
|
|
*
|
|
* 56 10/19/98 6:30p Jeff
|
|
* changes made for detail variables. Put in preset values. Preset
|
|
* options. Removed terrain_cast from detail. Put new callbacks in
|
|
* UIListBox and UISlider
|
|
*
|
|
* 55 10/19/98 12:18p Samir
|
|
* made tabbing between edit controls possible.
|
|
*
|
|
* 54 10/17/98 11:26a Samir
|
|
* fixed some edit box scrolling issues.
|
|
*
|
|
* 53 10/16/98 1:42p Jeff
|
|
* updated UIGroup
|
|
*
|
|
* 52 10/07/98 11:25a Jeff
|
|
* created UIGroup
|
|
*
|
|
* 51 9/30/98 4:34p Samir
|
|
* added enable function.
|
|
*
|
|
* 50 9/22/98 3:57p Samir
|
|
* listbox prob fixed again.
|
|
*
|
|
* 49 9/14/98 11:22a Samir
|
|
* enhanced editboxes
|
|
*
|
|
* 48 9/02/98 6:50p Samir
|
|
* added new combo box.
|
|
*
|
|
* 47 8/27/98 5:03p Kevin
|
|
* Prettied up multiplayer screens and fixed some bugs.
|
|
*
|
|
* 46 8/27/98 2:52p Samir
|
|
* changing window system to work in two modes.
|
|
*
|
|
* 45 8/26/98 12:25p Samir
|
|
* fixed the whole editbox, keyboard access mess.
|
|
*
|
|
* 44 8/25/98 7:08p Samir
|
|
* select how keys are sent to a gadget.
|
|
*
|
|
* 43 8/25/98 5:27p Samir
|
|
* new focusing rules for keyboard.
|
|
*
|
|
* 42 8/24/98 3:12p Samir
|
|
* fixed text clipping
|
|
*
|
|
* 41 8/11/98 11:38a Samir
|
|
* fixed listbox probs yet again. arrows on side this time.
|
|
*
|
|
* 40 7/29/98 3:26p Samir
|
|
* fixed some listbox mouse problems.
|
|
*
|
|
* 39 6/23/98 5:05p Samir
|
|
* console supports color per line ONLY.
|
|
*
|
|
* 38 6/22/98 7:31p Samir
|
|
* added UIEdit::Activate, which activates an edit box manually.
|
|
*
|
|
* 37 6/22/98 2:15p Samir
|
|
* added UIConsoleGadget.
|
|
*
|
|
* 36 6/05/98 5:58p Jeff
|
|
* Added a way to change the items for the states of a HotSpot
|
|
*
|
|
* 35 6/05/98 5:35p Samir
|
|
* massive improvement in UI keyboard interface.
|
|
*
|
|
* 34 5/22/98 5:02p Jeff
|
|
* Added a flag for radio buttons so the button part won't be drawn (just
|
|
* the text)
|
|
*
|
|
* 33 5/08/98 3:58p Samir
|
|
* added ability to move a UI object.
|
|
*
|
|
* 32 4/29/98 1:04p Jeff
|
|
* fixed up the UIListBox a bit (color control and scroll buttons)
|
|
*
|
|
* 31 4/29/98 11:55a Samir
|
|
* allow user to change color of selected listbox item.
|
|
*
|
|
* 30 4/24/98 2:42a Samir
|
|
* added UICheckBox
|
|
*
|
|
* 29 4/13/98 7:02p Samir
|
|
* made some things protected.
|
|
*
|
|
* 28 3/13/98 5:18p Jeff
|
|
* Added 2 flags for new UIListBox for scrolling and some member vars for
|
|
* UIListBox
|
|
*
|
|
* 27 3/10/98 7:25p Samir
|
|
* Changes to UISlider
|
|
*
|
|
* 26 3/10/98 12:48p Samir
|
|
* Fixed flags for UIWindow so centering is supported.
|
|
*
|
|
* 25 3/09/98 5:05p Samir
|
|
* Added callback to selection change function.
|
|
*
|
|
* 24 3/09/98 3:43p Samir
|
|
* Made some window flag changes.
|
|
*
|
|
* 23 3/06/98 10:48a Samir
|
|
* Check if button is active.
|
|
*
|
|
* 22 3/05/98 6:40p Samir
|
|
* Implemented radio buttons.
|
|
*
|
|
* 21 3/04/98 12:08p Samir
|
|
* Slider fixed.
|
|
*
|
|
* 20 2/26/98 2:50p Samir
|
|
* Did some stuff with UISlider.
|
|
*
|
|
* 19 2/15/98 7:07p Samir
|
|
* Revamped way keys like up and down are handled in window system.
|
|
*
|
|
* 18 2/13/98 6:34p Samir
|
|
* Added UIStatic class.
|
|
*
|
|
* 17 2/10/98 4:55p Samir
|
|
* Added radio buttons.
|
|
*
|
|
* 16 2/02/98 7:36p Samir
|
|
* Added UIObject::Destroy.
|
|
*
|
|
* 15 1/30/98 7:03p Samir
|
|
* Added UIConsole.
|
|
*
|
|
* 14 1/23/98 5:45p Samir
|
|
* Added OnUserProcess to UIWindow class.
|
|
*
|
|
* 13 1/18/98 4:22p Samir
|
|
* Implemented new UIItem system.
|
|
*
|
|
* 12 1/13/98 6:59p Jeff
|
|
* (Samir) moved defines from UIlib.h to ui.h.
|
|
*
|
|
* 11 1/13/98 4:32p Samir
|
|
* Made tUIInput a shared structure to be used by ui_DoFrame to return UI
|
|
* input values.
|
|
*
|
|
* 10 1/13/98 4:28p Samir
|
|
* Added sliders.
|
|
*
|
|
* 9 1/09/98 12:01p Samir
|
|
* Added prototypes for sliders, listboxes, and scrollbars.
|
|
*
|
|
* 8 1/08/98 12:17p Samir
|
|
* Added TitledWindow and modified the UI interface for polling.
|
|
*
|
|
* 7 1/05/98 4:55p Samir
|
|
* Took out m_Flags from child classes of UIGadget
|
|
*
|
|
* 6 1/05/98 4:36p Samir
|
|
* Moved centering and fittext control flags to UIGadget class.
|
|
*
|
|
* 5 1/05/98 4:19p Samir
|
|
* UIGadget has fewer pure virtuals.
|
|
*
|
|
* 4 1/05/98 3:48p Jason
|
|
* added SetAllText function for buttons
|
|
*
|
|
* 3 1/05/98 3:18p Samir
|
|
* Added some button flags.
|
|
*
|
|
* 2 1/02/98 12:49p Samir
|
|
* Edit control and static control added.
|
|
*
|
|
* 1 12/30/97 4:37p Samir
|
|
* Initial revision
|
|
*
|
|
* $NoKeywords: $
|
|
*/
|
|
|
|
#ifndef UI_H
|
|
#define UI_H
|
|
|
|
#if defined(__LINUX__)
|
|
#include "linux/linux_fix.h" //for stricmp's through code
|
|
#endif
|
|
|
|
#include "uires.h"
|
|
|
|
#include "pstypes.h"
|
|
#include "pserror.h"
|
|
#include "grdefs.h"
|
|
|
|
// Class identification
|
|
|
|
typedef unsigned tUIClass;
|
|
|
|
const tUIClass uiObject = 0, uiWindow = 1, uiTitledWindow = 2, uiGadget = 3, uiHotspot = 4, uiButton = 5, uiEdit = 6,
|
|
uiText = 7, uiSlider = 8, uiVScrollBar = 9, uiListBox = 10;
|
|
|
|
const tUIClass uiNewClass = 100;
|
|
|
|
typedef int tUIBmpHandle;
|
|
|
|
class UIObject;
|
|
class UIGadget;
|
|
class UIInterface;
|
|
class UIItem;
|
|
class UITextItem;
|
|
class UIWindow;
|
|
// ----------------------------------------------------------------------------
|
|
// UIObject
|
|
// The absolute primitive for the UI system. All UI class are derived from
|
|
// tUIObject.
|
|
|
|
class UIObject {
|
|
bool m_Created; // is this object created?
|
|
|
|
// variables shared by the entire UI hierarchy
|
|
protected:
|
|
int m_X, m_Y; // Location of UIObject relative to some other object.
|
|
int m_W, m_H; // Dimensions of the UIObject
|
|
|
|
public:
|
|
UIObject();
|
|
virtual ~UIObject();
|
|
|
|
void Create(int x, int y, int w, int h); // define the ui object.
|
|
void Destroy() { m_Created = false; };
|
|
bool IsCreated() const { return m_Created; };
|
|
|
|
// data access
|
|
int X() const { return m_X; }; // access the X,Y,W,H fields.
|
|
int Y() const { return m_Y; };
|
|
int W() const { return m_W; };
|
|
int H() const { return m_H; };
|
|
|
|
// moves the object.
|
|
void Move(int x, int y, int w, int h);
|
|
|
|
// inheritable operations
|
|
public:
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiObject;
|
|
};
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIGadget
|
|
// A gadget is a user interface item which a mouse or keyboard may interact with.
|
|
// Gadgets typically are managed by their parent interface.
|
|
// All buttons, checkboxes, listboxes, etc use tUIGadget as their parent.
|
|
|
|
// flags
|
|
#define UIF_CENTER 0x01
|
|
#define UIF_FIT 0x02
|
|
#define UIF_BORDER 0x04 // for certain gadgets specifies that the border be drawn.
|
|
#define UIF_SLAVE 0x10 // gadget never gets focus from ui system directly (child gadgets).
|
|
#define UIF_NOTIFYMASTERSEL 0x20 // when slave gadget is selected, the master will know.
|
|
#define UIF_PROCESS_MENU 0x40 // use this to create a 'menu style' window (Options menu)
|
|
#define UIF_PROCESS_ALL UIF_PROCESS_MENU // to maintain compatibility with older code.
|
|
#define UIF_GROUP_START 0x80 // starts a group of gadgets that use the up and down arrows to move between
|
|
#define UIF_GROUP_END 0x100 // ends a group
|
|
|
|
#define UIF_CUSTOMF 0x200 // use this flag and any higher for custom gadget flags, a list of predefs below
|
|
|
|
#define UILB_NOSCROLL 0x800 // turns off automatic scroll buttons on UIListBox
|
|
#define UILB_AUTOSELECT 0x1000 // turns on automatic change of SelectedIndex if scrolled out of view
|
|
#define UILB_NOSORT 0x2000 // disables sorting in a listbox
|
|
#define UILB_CASESENSITIVE 0x4000 // only if !UILB_NOSORT. Makes the sorting case sensitive
|
|
|
|
#define UIRB_NOBUTTON 0x800 // disables the drawing of the button on the left of the text of a radio button
|
|
|
|
#define UIED_PASSWORD 0x800 // special password masking for edit box text (*)
|
|
#define UIED_NUMBERS 0x1000 // only accept numbers for input!
|
|
#define UIED_AUTOSELECT 0x2000 // selects when input reaches buffer length.
|
|
|
|
// any flags after 0x10000-0x40000000 are reserved internal to gadget controls
|
|
|
|
// ids
|
|
#define UID_OK 0xEE
|
|
#define UID_CANCEL 0xEF
|
|
|
|
class UIGadget : public UIObject {
|
|
friend class UIWindow;
|
|
|
|
UIGadget *m_Prev;
|
|
UIGadget *m_Next; // for maintaining list of linked gadgets.
|
|
|
|
// master gadgets
|
|
UIGadget *m_MasterGadget; // select target
|
|
UIGadget *m_CurrentSlave; // current slave gadget in master.
|
|
|
|
// slave gadgets
|
|
UIGadget *m_SlaveGadgets; // contains a list of slave gadgets.
|
|
UIGadget *m_NextSlave;
|
|
UIGadget *m_PrevSlave;
|
|
|
|
// information for gadgets
|
|
private:
|
|
int m_ID; // id value of gadget.
|
|
short m_Datum; // used to pass info around.
|
|
ushort m_Hotkey;
|
|
int m_SavedW, m_SavedH; // saved values of width and height.
|
|
bool m_Disabled; // is gadget disabled?
|
|
|
|
static int m_LastKey; // the last key pressed.
|
|
static int m_LastKeyCount; // number of times last key was pressed.
|
|
static float m_LastKeyTime; // last key time.
|
|
|
|
bool TrapKey(int key); // used to manage keypresses so repeating isn't quick.
|
|
void UntrapKey(int key);
|
|
void CheckFocusOnSlaves(int mx, int my);
|
|
|
|
// universal variables
|
|
#ifdef __LINUX__ // gcc has a hard time tracing through some of the derived classes that access m_Wnd
|
|
public:
|
|
#else
|
|
protected:
|
|
#endif
|
|
UIWindow *m_Wnd; // the gadget's parent window
|
|
|
|
protected:
|
|
int m_Flags; // flags
|
|
bool m_infocus; // gadget has focus.
|
|
|
|
int GetSavedW() const { return m_SavedW; };
|
|
int GetSavedH() const { return m_SavedH; };
|
|
inline bool HasFocus() const;
|
|
UIGadget *GetPrevUsableGadget(); // gets next gadget lower in chain that's not disabled
|
|
UIGadget *GetNextUsableGadget(); // gets next gadget higher in chain that's not disabled
|
|
void LostFocus(); // called by window system
|
|
void GainFocus(); // called by window system
|
|
void LockFocus(); // forces input to this gadget
|
|
void UnlockFocus(); // releases lock on input to gadget.
|
|
|
|
// called from outside gadget hierarchy.
|
|
#ifdef __LINUX__ // gcc has a hard time tracing through the dervived classes of newuiButton and thinks it can't access
|
|
// OnFormat()
|
|
public:
|
|
#else
|
|
protected:
|
|
#endif
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
|
|
protected:
|
|
virtual void OnLostFocus(){}; // override: behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(){}; // override: behavior when gadget gains input focus.
|
|
virtual void OnAttachToWindow(){}; // override: when gadget is attached to window, this is called.
|
|
virtual void OnDetachFromWindow(){}; // override: when gadget is detached from window, this is called.
|
|
virtual void OnDraw() = 0; // MUST override: behavior when gadget is being drawn.
|
|
|
|
// called by Process.
|
|
protected:
|
|
virtual void OnKeyDown(int key){}; // override: behavior when key is pressed.
|
|
virtual void OnKeyUp(int key){}; // override: behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn){}; // override: behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn){}; // override: behavior when mouse button is released.
|
|
virtual void OnDestroy(){}; // override: behavior when gadget is destroyed.
|
|
virtual void OnUserProcess(){}; // override: behavior when gadget is processed
|
|
virtual void OnNotifySelect(UIGadget *sender){}; // override: send gadget select message to another gadget.
|
|
|
|
// typically this function is called by a child class when we want
|
|
// to tell the caller that this gadget was selected for something.
|
|
virtual void OnSelect(); // override: behavior when gadget is selected.
|
|
|
|
public:
|
|
virtual void OnNotify(UIGadget *){}; // usually called by a child gadget of a gadget.
|
|
|
|
public:
|
|
UIGadget();
|
|
virtual ~UIGadget();
|
|
|
|
UIWindow *GetWindow() { // returns the parent window for a gadget.
|
|
return m_Wnd;
|
|
};
|
|
|
|
// returns link in gadget chain.
|
|
UIGadget *Next() const { return m_Next; };
|
|
UIGadget *Prev() const { return m_Prev; };
|
|
|
|
// defines the graphical representation of a gadget within a window.
|
|
// ALL Gadgets must have a wnd.
|
|
void Create(UIWindow *wnd, int id, int x, int y, int w, int h, int flags);
|
|
void Destroy();
|
|
|
|
// interprets input on this gadget. this gadget is in focus.
|
|
void Process(bool do_keys = true, bool do_mouse = true, bool do_user = true);
|
|
bool IsLocked() const; // is this gadget's focus locked?
|
|
|
|
// settings
|
|
void SetHotkey(int key); // set this when key is pressed, selects gadget.
|
|
int GetID() const { return m_ID; };
|
|
short GetDatum() const { return m_Datum; };
|
|
void SetDatum(short datum) { m_Datum = datum; };
|
|
bool IsDisabled() { return m_Disabled; }; // returns disabled state.
|
|
void Disable() { m_Disabled = true; }; // disables gadget.
|
|
void Enable() { m_Disabled = false; }; // enables gadget.
|
|
int GetFlags() const { return m_Flags; }; // gets flags for gadget.
|
|
void SetFlag(int flag);
|
|
void ClearFlag(int flag);
|
|
|
|
// OnSelect messages to another gadget
|
|
void AttachSlaveGadget(UIGadget *gadget);
|
|
void DetachSlaveGadget(UIGadget *gadget);
|
|
|
|
// class id
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiGadget;
|
|
};
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIHotspot
|
|
// This is simply a region within the parent window that when clicked on
|
|
// or key pressed, does something.
|
|
|
|
class UIHotspot : public UIGadget {
|
|
UIItem *m_ItemOff, *m_ItemOn; // off and on states items.
|
|
UIItem *m_ItemCur; // current item.
|
|
|
|
protected:
|
|
virtual void OnKeyDown(int key); // override: behavior when key is pressed.
|
|
virtual void OnKeyUp(int key){}; // override: behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // override: behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // override: behavior when mouse button is released.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
virtual void OnDraw(); // override: behavior when gadget is being drawn.
|
|
virtual void OnLostFocus(); // override: behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // override: behavior when gadget gains input focus.
|
|
virtual void OnDestroy(); // override: behavior when gadget is destroyed.
|
|
|
|
public:
|
|
UIHotspot();
|
|
virtual ~UIHotspot();
|
|
|
|
// optional key, when pressed, triggers hotspot.
|
|
void Create(UIWindow *wnd, int id, int key, UIItem *itemoff, UIItem *itemon, int x, int y, int w, int h,
|
|
int flags = 0);
|
|
|
|
// sets the items for the on/off state of the hotspot
|
|
void SetStates(UIItem *itemoff, UIItem *itemon);
|
|
|
|
// class id
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiHotspot;
|
|
};
|
|
};
|
|
|
|
// tUIButton family
|
|
// this family contains buttons, radio buttons, and checkboxes
|
|
|
|
// states
|
|
#define UI_BTS_NUM 4
|
|
#define UI_BTS_DISABLED 0
|
|
#define UI_BTS_INACTIVE 1
|
|
#define UI_BTS_HILITE 2
|
|
#define UI_BTS_ACTIVATED 3
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIButton
|
|
// This is a simple 2 state button (push down or push up)
|
|
// Buttons have properties of gadgets, plus bitmap information per state.
|
|
|
|
class UIButton : public UIGadget {
|
|
private:
|
|
UIItem *m_Items[UI_BTS_NUM]; // UI Items for each state
|
|
ddgr_color m_Colors[UI_BTS_NUM]; // Backgrounds for states
|
|
|
|
static int m_ButtonFont; // button fonts.
|
|
|
|
protected:
|
|
int m_State; // state of button
|
|
|
|
UIItem *GetStateItem(int state) {
|
|
ASSERT(state < UI_BTS_NUM);
|
|
return m_Items[state];
|
|
};
|
|
|
|
int GetColor(int state) const {
|
|
ASSERT(state < UI_BTS_NUM);
|
|
return m_Colors[state];
|
|
};
|
|
|
|
public:
|
|
static void SetDefaultFont(int font) { // sets the button font
|
|
UIButton::m_ButtonFont = font;
|
|
};
|
|
|
|
public:
|
|
UIButton();
|
|
virtual ~UIButton();
|
|
|
|
void Create(UIWindow *parent, int id, UIItem *title, int x, int y, int w, int h, int flags = 0);
|
|
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiButton;
|
|
};
|
|
|
|
// settings
|
|
void SetStateItem(int state, UIItem *item); // sets the background bitmap for a specified button state
|
|
void SetAllStates(UIItem *item); // Sets text for all states
|
|
void SetColor(int state, ddgr_color col);
|
|
void Disable(); // this adds to the gadget equivalent
|
|
void Enable(); // this adds to the gadget equivalent
|
|
|
|
// inheritable operations
|
|
protected:
|
|
virtual void OnLostFocus(); // behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // behavior when gadget gains input focus.
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
|
|
// called by Process.
|
|
protected:
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
virtual void OnDestroy(); // override: behavior when gadget is destroyed.
|
|
|
|
// typically this function is called by a child class when we want
|
|
// to tell the caller that this gadget was selected for something.
|
|
// virtual void OnSelect(); // override: behavior when gadget is
|
|
//selected.
|
|
};
|
|
|
|
// check boxes use most of the behavior of default buttons.
|
|
// the only difference is how states are set when an item is selected.
|
|
class UICheckBox : virtual public UIButton {
|
|
public:
|
|
UICheckBox();
|
|
|
|
void Create(UIWindow *parent, int id, UIItem *title, int x, int y, int w, int h, int flags);
|
|
|
|
void SetCheck(bool state); // turns on button (of off)
|
|
bool IsChecked() const // returns true if button is set.
|
|
{
|
|
return (m_State == UI_BTS_ACTIVATED) ? true : false;
|
|
};
|
|
|
|
protected:
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
|
|
virtual void OnLostFocus(); // behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // behavior when gadget gains input focus.
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
};
|
|
|
|
// radio buttons use most of the behavior of default buttons.
|
|
// the only difference is how states are set when an item is selected.
|
|
class UIRadioButton : virtual public UIButton {
|
|
UIRadioButton *m_PrevRB; // previous radio button in group.
|
|
UIRadioButton *m_NextRB; // next radio button in group.
|
|
|
|
void ActivateButton(); // activates this button, deactivating all others.
|
|
|
|
public:
|
|
UIRadioButton();
|
|
|
|
// flags. the group flags are set internally by Create. if prev_rb is NULL, that's the start.
|
|
void Create(UIWindow *parent, UIRadioButton *prev_rb, int id, UIItem *title, int x, int y, int w, int h, int flags);
|
|
|
|
void Activate(); // turns on button, turns off others in group.
|
|
bool IsActivated() const // returns true if button is set.
|
|
{
|
|
return (m_State == UI_BTS_ACTIVATED) ? true : false;
|
|
};
|
|
|
|
protected:
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
|
|
virtual void OnLostFocus(); // behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // behavior when gadget gains input focus.
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIStatic
|
|
// Just a static image/text/etc.
|
|
|
|
class UIStatic : public UIGadget {
|
|
protected:
|
|
UIPrimativeItem *m_Background;
|
|
UIItem *m_Title;
|
|
|
|
public:
|
|
UIStatic();
|
|
virtual ~UIStatic();
|
|
|
|
void Create(UIWindow *parent, UIItem *item, int x, int y, int w, int h, int flags = 0);
|
|
void SetBackground(UIPrimativeItem *prim);
|
|
void SetTitle(UIItem *item);
|
|
UIItem *GetItem() const { return m_Title; };
|
|
|
|
protected:
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
virtual void OnDestroy(); // called when gadget is being nuked.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIText
|
|
// This is a simple text.
|
|
|
|
class UIText : public UIStatic {
|
|
public:
|
|
void Create(UIWindow *parent, UITextItem *text, int x, int y, int flags = 0);
|
|
|
|
// inheritable operations
|
|
protected:
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIProgress
|
|
// Progress Bar
|
|
|
|
class UIProgress : public UIStatic {
|
|
public:
|
|
void Create(UIWindow *parent, int x, int y, int w, int h, int flags = 0);
|
|
void Update(float progress); // Call with a value from 0-1.0 to specify progress
|
|
|
|
// inheritable operations
|
|
protected:
|
|
float m_Progress;
|
|
int m_ProgressWidth;
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIGroup
|
|
// Draws a group box on to the window
|
|
|
|
class UIGroup : public UIStatic {
|
|
public:
|
|
UIGroup();
|
|
~UIGroup();
|
|
void Create(UIWindow *parent, char *label, int x, int y, int w, int h, ddgr_color label_color = GR_WHITE,
|
|
ddgr_color box_color = GR_WHITE, int flags = 0);
|
|
|
|
// inheritable operations
|
|
protected:
|
|
bool m_bTextCreated;
|
|
UIText m_tLabel;
|
|
char *m_Label;
|
|
ddgr_color m_LabelColor;
|
|
ddgr_color m_BoxColor;
|
|
virtual void OnDraw();
|
|
virtual void OnDestroy();
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIEdit
|
|
// A single line edit control.
|
|
|
|
#define KEYDOWN_FIRST_DELAY 0.5f
|
|
#define KEYDOWN_REPEAT_DELAY 0.10f
|
|
|
|
class UIEdit : public UIGadget {
|
|
char *m_TextBuf; // Text buffer for edit control.
|
|
int m_FontHandle; // font for edit control. (default -1 = window's font)
|
|
int m_BufSize; // buffersize
|
|
int m_Color; // color of text.
|
|
int m_CursorPosX; // text cursor position within box.
|
|
bool m_Active; // active?
|
|
int m_CurPos; // cursor postion in buffer.
|
|
int m_StartPos; // active start position in buffer of what's drawn.
|
|
int m_X1b, m_X2b, m_Yb; // x boundaries of text.
|
|
int m_ScrollThresh; // scrolling x threshold.
|
|
bool m_UpdateCount; // used to update scroll position on next draw frame.
|
|
|
|
// called from outside gadget hierarchy.
|
|
protected:
|
|
void DrawText(); // draws text in box
|
|
void Deactivate(); // deactivates edit box (use if you know what you're doing.)
|
|
void SetTextBounds(int x1, int x2, int yoff); // horizontal clipping of text within editbox
|
|
|
|
// called from outside gadget hierarchy.
|
|
protected:
|
|
virtual void OnLostFocus(); // override: behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // override: behavior when gadget gains input focus.
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
|
|
// called by Process.
|
|
protected:
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
virtual void OnSelect();
|
|
virtual void OnDestroy(); // override: behavior when gadget is destroyed.
|
|
|
|
public:
|
|
UIEdit();
|
|
virtual ~UIEdit();
|
|
|
|
void Create(UIWindow *parent, int id, int x, int y, int w, int h, int flags = 0);
|
|
|
|
// settings
|
|
void SetBufferLen(int length); // sets the length of the input buffer.
|
|
void SetText(char *text); // sets the text buffer.
|
|
void GetText(char *buffer, int len); // retrieve text in edit control.
|
|
void SetFont(int font); // sets font of control (default is window's font.)
|
|
void SetColor(ddgr_color col); // sets color of text.
|
|
void Activate(); // activates edit box manually (allows editing.)
|
|
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiEdit;
|
|
};
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UISlider
|
|
// A simple slider
|
|
|
|
class UISlider : public UIGadget {
|
|
void (*selectchange_fn)(int); // callback when selection changes in slider
|
|
void (*selectchange_id_fn)(int, void *); // callback when selection changes in slider, also returns the ID
|
|
void *m_callbackptr; // user defined callback pointer
|
|
int m_Pos; // this is the returned value as shown in the range.
|
|
int m_Range; // returned value of slider is 0 to m_Range-1.
|
|
int m_PixelWidth; // used to get the current position of slider.
|
|
float m_IntervalWidth; // width of one tick o
|
|
int switch_x, switch_y; // little box width and height.
|
|
int switch_w, switch_h;
|
|
|
|
UIItem *switch_item; // slider switch item
|
|
UIItem *slider_item; // slider item
|
|
|
|
public:
|
|
UISlider();
|
|
virtual ~UISlider();
|
|
|
|
void Create(UIWindow *parent, int id, int x, int y, int w, int h, int flags = 0);
|
|
|
|
// sets visual characteristics of slider.
|
|
void SetSliderSwitchItem(UIItem *item);
|
|
void SetSliderItem(UIItem *item);
|
|
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiSlider;
|
|
};
|
|
|
|
// settings
|
|
void SetRange(int range); // sets range of scroll bar
|
|
int GetRange() const { // range of scroll bar
|
|
return m_Range;
|
|
};
|
|
void SetPos(int pos) { // sets the position of the slider.
|
|
if (pos < 0)
|
|
pos = 0;
|
|
else if (pos >= m_Range)
|
|
pos = m_Range - 1;
|
|
m_Pos = pos;
|
|
};
|
|
int GetPos() const { // gets position of slider.
|
|
return m_Pos;
|
|
};
|
|
|
|
void SetSelectChangeCallback(void (*fn)(int));
|
|
void SetSelectChangeCallback(void (*fn)(int, void *), void *ptr);
|
|
|
|
// called from outside gadget hierarchy.
|
|
protected:
|
|
virtual void OnFormat(); // override: called when resized or before drawing.
|
|
virtual void OnLostFocus(){}; // override: behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(){}; // override: behavior when gadget gains input focus.
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnDestroy(); // behavior when gadget is being destroyed.
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
virtual void OnSelect(); // override
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIListBox
|
|
// A listbox may contain text items
|
|
// Allows the user to scroll through them too.
|
|
|
|
#define LISTBOX_BUFFER_SIZE 20
|
|
|
|
class UIListBox : public UIGadget {
|
|
void (*selectchange_fn)(int); // callback when selection changes in listbox.
|
|
void (*selectchange_id_fn)(int, void *); // callback when selection changes in listbox..also return the ID
|
|
void *m_callbackptr; // user defined callback pointer
|
|
ddgr_color m_SelectColor; // selected text color
|
|
ddgr_color m_HiliteColor; // color of hilite bar
|
|
int m_LastMseX, m_LastMseY; // used for double clicking.
|
|
ubyte m_Alpha; // alpha value of listbox.
|
|
|
|
bool MseCheckSelect(int x, int y); // check if x and y selection hits a selected item.
|
|
void SetInternalSelectedIndex(int index); // call by listbox system.
|
|
|
|
protected:
|
|
int m_TextOffX, m_TextOffY; // offset of text to border.
|
|
int m_ArrowWidth; // with of arrow.
|
|
int m_CX, m_CY, m_CX2, m_CY2; // clipping text.
|
|
|
|
public:
|
|
UIListBox();
|
|
virtual ~UIListBox();
|
|
|
|
void Create(UIWindow *parent, int id, int x, int y, int w, int h, int flags = 0);
|
|
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiListBox;
|
|
};
|
|
|
|
// settings
|
|
void AddItem(const UIItem *item); // adds an item to the list, no sorting
|
|
void RemoveItem(const UIItem *item); // removes an item from the list.
|
|
void RemoveAll(); // empties listbox
|
|
void SelectItem(const UIItem *item); // selects the given item in the list.
|
|
UIItem *GetItem(int index) const; // returns the item at listbox index given.
|
|
|
|
int GetListIndex() const; // returns the current listbox index
|
|
void SetListIndex(int index); // sets the index of a listbox
|
|
|
|
int GetSelectedIndex() const; // returns which item index is selected
|
|
void SetSelectedIndex(int index); // selects an item based on index and moves listbox
|
|
void SetSelectedColor(ddgr_color col); // selected text color.
|
|
void SetHiliteColor(ddgr_color col); // sets the hilite bar color
|
|
|
|
void SetSelectChangeCallback(void (*fn)(int));
|
|
void SetSelectChangeCallback(void (*fn)(int, void *), void *ptr);
|
|
|
|
// called from outside gadget hierarchy.
|
|
protected:
|
|
virtual void OnLostFocus(); // override: behavior when gadget loses input focus.
|
|
virtual void OnGainFocus(); // override: behavior when gadget gains input focus.
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released.
|
|
virtual void OnSelect();
|
|
virtual void OnDestroy(); // called when destroyed.
|
|
virtual void OnUserProcess(); // override: behavior when gadget is processed
|
|
|
|
private:
|
|
UIItem **m_ItemList; // list of items in listbox
|
|
int *m_Virt2Real; // translates virtual(user) id to real index
|
|
int *m_Real2Virt; // translates real index into virtual(user) id
|
|
|
|
float m_ClickTime; // done to check for double clicks?
|
|
int m_MouseState; // done for mouse selection.
|
|
int m_MouseX, m_MouseY;
|
|
int m_NumItems; // number of items in list.
|
|
int m_SelectedIndex; // current selected index into listbox
|
|
int m_Index; // current index of visible items.
|
|
bool m_ShowDown, m_ShowUp; // whether the down and up arrows are displayed
|
|
int m_UpArrowY0, m_DownArrowY0; // up and down arrow y locations.
|
|
int m_UpArrowY1, m_DownArrowY1; // up and down arrow y max locations.
|
|
int m_NumVisibleItems; // number of visible items in list viewport.
|
|
|
|
public:
|
|
int GetNumItems() const { return m_NumItems; };
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIComboBox
|
|
// A listbox may contain text items, BUT only one will be visible
|
|
// Allows the user to scroll through them too.
|
|
|
|
class UIComboBox : public UIGadget {
|
|
public:
|
|
UIComboBox();
|
|
virtual ~UIComboBox();
|
|
|
|
void Create(UIWindow *parent, int id, int x, int y, int w, int h, int flags = 0);
|
|
|
|
private:
|
|
UIItem **m_ItemList; // list of items in listbox
|
|
int m_nItems; // number of items.
|
|
int m_ArrY, m_ArrH; // up and down arrow dimensions
|
|
int m_UpArrX, m_UpArrW, m_DownArrX, m_DownArrW;
|
|
int m_Index; // current index.
|
|
void (*selectchange_fn)(int); // callback when selection changes in listbox.
|
|
bool m_ShowUp, m_ShowDown;
|
|
float m_scrolltimer; // scroll timer for delay in mouse.
|
|
int m_scrollstage; // determines how scrolling will work.
|
|
|
|
public:
|
|
void AddItem(const UIItem *item);
|
|
void RemoveItem(const UIItem *item); // removes an item from the list.
|
|
void RemoveAll(); // empties listbox
|
|
void SelectItem(const UIItem *item); // selects the given item in the list.
|
|
UIItem *GetItem(int index) const; // returns the item at listbox index given.
|
|
|
|
int GetSelectedIndex() const { // returns which item index is selected
|
|
return m_Index;
|
|
};
|
|
void SetSelectedIndex(int index); // sets the selected index.
|
|
|
|
void SetSelectChangeCallback(void (*fn)(int));
|
|
|
|
protected:
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnMouseBtnDown(int btn); // behavior when mouse button is pressed.
|
|
virtual void OnMouseBtnUp(int btn); // behavior when mouse button is released
|
|
virtual void OnSelect();
|
|
virtual void OnDestroy(); // called when destroyed.
|
|
|
|
protected:
|
|
int m_CX, m_CY, m_CX2, m_CY2; // text clippers.
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIConsoleGadget
|
|
// a console that's a gadget within a window
|
|
|
|
class UIConsoleGadget : public UIGadget {
|
|
int m_ConsoleFont; // standard font for text in console
|
|
ddgr_color *m_ColorRows; // color per row.
|
|
char *m_ConsoleBuffer; // text buffer of console.
|
|
int m_Rows, m_Cols; // dimensions in text.
|
|
int m_VisRows; // visible rows and columns
|
|
int m_VisRowStart; // scroll start of visible region of buffer.
|
|
int m_CurRow, m_CurCol; // current row and column of text pointer
|
|
int m_OffX, m_OffY;
|
|
int m_Rowsize; // rowsize of character buffer.
|
|
ddgr_color m_LineColor; // color of current line.
|
|
int m_LineIndex; // index within current row memory-wise(not column wise).
|
|
int m_PutsBufLen; // current length of puts buffer
|
|
char *m_PutsBuffer; // puts buffer.
|
|
|
|
private:
|
|
void PutChar(int ch); // outputs a character onto the console.
|
|
void Scroll(); // scrolls window.
|
|
|
|
protected:
|
|
virtual void OnDraw(); // behavior when gadget is being drawn.
|
|
virtual void OnUserProcess(); // behavior when gadget is processed
|
|
virtual void OnDestroy(); // behavior when gadget is destroyed.
|
|
|
|
public:
|
|
UIConsoleGadget();
|
|
virtual ~UIConsoleGadget();
|
|
|
|
// font = console font, NOT GADGET FONT. This font is used to proportion window
|
|
void Create(UIWindow *parent, int id, int x, int y, int font, int cols, int rows, int flags = UIF_BORDER);
|
|
|
|
// functions
|
|
void puts(ddgr_color color, const char *str);
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// UIWindow
|
|
// A window contains different UIGadgets.
|
|
// This is where all objects will interact with the user.
|
|
#define N_WINDOW_ACCELS 48
|
|
|
|
class UIWindow : public UIObject {
|
|
friend class UIGadget;
|
|
|
|
UIGadget *m_GadgetHead; // gadget list for window
|
|
UIGadget *m_GadgetTail;
|
|
UIGadget *m_GadgetCur;
|
|
UIGadget *m_LockedGadget; // marks a particular gadget that will always have focus
|
|
UIItem *m_BackItem; // background UI item.
|
|
|
|
float m_KeyTime; // time when key went down.
|
|
|
|
ddgr_color m_BackColor; // unconditional background color
|
|
int m_FontHandle;
|
|
int m_LastKey; // the last key pressed.
|
|
int m_LastKeyCount; // number of times last key was pressed.
|
|
float m_LastKeyTime; // last key time.
|
|
bool m_HoldHotkeys;
|
|
bool m_ResetCurGadget; // next process will reset current gadget to 1st valid one.
|
|
bool m_CurGadgetInGroup; // is m_GadgetCur inside a group?
|
|
struct {
|
|
int key;
|
|
int id;
|
|
} m_Accelerators[N_WINDOW_ACCELS]; // used for quick key press interaction
|
|
int m_naccels;
|
|
|
|
static int m_WindowFont; // global window default font
|
|
|
|
private:
|
|
bool TrapKey(int key);
|
|
void UntrapKey(int key);
|
|
void LockFocusOnGadget(UIGadget *gadget); // forces a particular gadget into focus, always until unlocked.
|
|
void UnlockFocusOnGadget();
|
|
|
|
protected:
|
|
ddgr_color GetBackColor() const { return m_BackColor; };
|
|
|
|
int m_Flags; // window flags.
|
|
|
|
// inheritable actions
|
|
protected:
|
|
virtual void OnDraw(); // overridable draws the window background before gadgets
|
|
virtual void OnUserProcess(); // overridable: runs after window is processed, to supplement it.
|
|
virtual void OnDestroy(){}; // overridable: called in Destroy
|
|
virtual void OnKeyDown(int key); // behavior when key is pressed.
|
|
virtual void OnKeyUp(int key); // behavior when key is released.
|
|
|
|
public:
|
|
static void SetDefaultFont(int font) { // sets the default font for any window
|
|
UIWindow::m_WindowFont = font;
|
|
};
|
|
|
|
public:
|
|
UIWindow();
|
|
virtual ~UIWindow();
|
|
|
|
void Destroy(); // must call if you created window. will be called in destructor
|
|
|
|
void Create(int x, int y, int w, int h, int flags = 0);
|
|
int GetFlags() const { return m_Flags; };
|
|
|
|
// used to mark key pressed to id numbers
|
|
void AddAcceleratorKey(int key, int id);
|
|
void ResetAcceleratorKey();
|
|
|
|
// gadget management
|
|
void AddGadget(UIGadget *gadget); // adds a gadget to the gadget list
|
|
void RemoveGadget(UIGadget *gadget); // removes a gadget from the list.
|
|
UIGadget *GetGadgetFromID(int id); // returns the gadget pointer given an id if in window
|
|
void SetFocusOnGadget(UIGadget *gadget, bool key = false);
|
|
|
|
UIGadget *GetFocus() { return m_GadgetCur; };
|
|
|
|
// input/output management
|
|
virtual int Process(); // handles gadget selection/focus and calls gadgets.
|
|
void Render(); // renders one window frame.
|
|
void Open(); // adds window to ui list.
|
|
void Close(); // removes window from ui list.
|
|
|
|
// settings
|
|
void SetFont(int handle); // sets window's font.
|
|
void SetBackItem(UIItem *item) { // sets the background drawing item.
|
|
if (m_BackItem)
|
|
delete m_BackItem;
|
|
m_BackItem = NULL;
|
|
if (item)
|
|
m_BackItem = item->CopyUIItem();
|
|
}; //
|
|
void SetBackColor(ddgr_color col) { // sets the background color. this is ALWAYS first, then the backitem
|
|
m_BackColor = col;
|
|
};
|
|
|
|
void HoldHotkeys() { m_HoldHotkeys = true; }; // no hotkeys will be processed until ResumeHotkeys is called.
|
|
void ResumeHotkeys() { m_HoldHotkeys = false; };
|
|
|
|
// class id
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiWindow;
|
|
};
|
|
|
|
// OBSOLETE
|
|
void LockKeyFocusOnGadget(UIGadget *gadget); // forces all keyinput onto one gadget. (be wary)
|
|
};
|
|
|
|
// Special windows
|
|
// titled window (functions as a standard dialog box.), without modality though.
|
|
|
|
class UITitledWindow : public UIWindow {
|
|
UITextItem m_Title; // title of window
|
|
int m_CaptionColor; // caption's color.
|
|
int m_BorderThickness; // border thickness.
|
|
|
|
public:
|
|
UITitledWindow();
|
|
virtual ~UITitledWindow();
|
|
|
|
void Create(UITextItem &title, int x, int y, int w, int h);
|
|
|
|
// class id
|
|
virtual tUIClass Class() const { // Overide this function to name the class
|
|
return uiTitledWindow;
|
|
};
|
|
|
|
// settings
|
|
void SetText(UITextItem &text) { // sets the text for a window title.
|
|
m_Title = text;
|
|
};
|
|
void SetCaptionColor(ddgr_color col) { // sets the color of the caption region
|
|
m_CaptionColor = col;
|
|
};
|
|
void SetBorderThickness(int thickness) { // sets the pixel thickness of the border
|
|
m_BorderThickness = thickness;
|
|
};
|
|
|
|
int GetBorderThickness() const { return m_BorderThickness; }; // returns border thickness.
|
|
|
|
// inheritable actions
|
|
protected:
|
|
virtual void OnDraw(); // overridable draws the window background before gadgets
|
|
};
|
|
|
|
// UIConsole
|
|
// should display a simple console window where anyone can dump text into
|
|
|
|
class UIConsole : public UIWindow {
|
|
UIConsoleGadget m_Console;
|
|
|
|
protected:
|
|
virtual void OnDraw();
|
|
|
|
public:
|
|
UIConsole();
|
|
virtual ~UIConsole();
|
|
|
|
// font = console font, NOT GADGET FONT. This font is used to proportion window
|
|
void Create(int x, int y, int font, int cols, int rows);
|
|
void Destroy();
|
|
|
|
// functions
|
|
void puts(const char *str);
|
|
void puts(ddgr_color col, const char *str);
|
|
};
|
|
|
|
// other inline functions
|
|
inline bool UIGadget::HasFocus() const { return ((m_Wnd->GetFocus() == this) ? true : false); };
|
|
|
|
#include "uisys.h"
|
|
#include "uidraw.h"
|
|
|
|
#endif
|