| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** 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 3 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, see <http://www.gnu.org/licenses/>.
- */
- /***********************************************************************************************
- *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
- ***********************************************************************************************
- * *
- * Project Name : Combat *
- * *
- * $Archive:: /Commando/Code/wwui/dialogcontrol.h $*
- * *
- * Author:: Patrick Smith *
- * *
- * $Modtime:: 1/09/02 4:06p $*
- * *
- * $Revision:: 23 $*
- * *
- *---------------------------------------------------------------------------------------------*
- * Functions: *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #ifndef __DIALOG_CONTROL_H
- #define __DIALOG_CONTROL_H
- #include "rect.h"
- #include "vector2.h"
- #include "vector3.h"
- #include "widestring.h"
- #include "bittype.h"
- #include "controladvisesink.h"
- ////////////////////////////////////////////////////////////////
- // Forward declarations
- ////////////////////////////////////////////////////////////////
- class DialogBaseClass;
- class ButtonCtrlClass;
- class CheckBoxCtrlClass;
- class EditCtrlClass;
- class ListCtrlClass;
- class TabCtrlClass;
- class DialogTextClass;
- class InputCtrlClass;
- class ButtonCtrlClass;
- class MenuEntryCtrlClass;
- class ComboBoxCtrlClass;
- class ScrollBarCtrlClass;
- class SliderCtrlClass;
- class ViewerCtrlClass;
- class ShortcutBarCtrlClass;
- ////////////////////////////////////////////////////////////////
- // Useful macros
- ////////////////////////////////////////////////////////////////
- #define ADVISE_NOTIFY(fn) \
- if (Parent != NULL) { Parent->fn; } \
- if (AdviseSink != NULL) { AdviseSink->fn; }
-
- ////////////////////////////////////////////////////////////////
- //
- // DialogControlClass
- //
- ////////////////////////////////////////////////////////////////
- class DialogControlClass : public ControlAdviseSinkClass
- {
- public:
- ////////////////////////////////////////////////////////////////
- // Public friends
- ////////////////////////////////////////////////////////////////
- friend class DialogBaseClass;
- friend class DialogMgrClass;
- ////////////////////////////////////////////////////////////////
- // Public constructors/destructors
- ////////////////////////////////////////////////////////////////
- DialogControlClass (void);
- virtual ~DialogControlClass (void);
- ////////////////////////////////////////////////////////////////
- // Public methods
- ////////////////////////////////////////////////////////////////
- //
- // RTTI
- //
- virtual CheckBoxCtrlClass * As_CheckBoxCtrlClass (void) { return NULL; }
- virtual EditCtrlClass * As_EditCtrlClass (void) { return NULL; }
- virtual ListCtrlClass * As_ListCtrlClass (void) { return NULL; }
- virtual TabCtrlClass * As_TabCtrlClass (void) { return NULL; }
- virtual DialogTextClass * As_DialogTextClass (void) { return NULL; }
- virtual InputCtrlClass * As_InputCtrlClass (void) { return NULL; }
- virtual ButtonCtrlClass * As_ButtonCtrlClass (void) { return NULL; }
- virtual MenuEntryCtrlClass * As_MenuEntryCtrlClass (void) { return NULL; }
- virtual ComboBoxCtrlClass * As_ComboBoxCtrlClass (void) { return NULL; }
- virtual ScrollBarCtrlClass * As_ScrollBarCtrlClass (void) { return NULL; }
- virtual SliderCtrlClass * As_SliderCtrlClass (void) { return NULL; }
- virtual ViewerCtrlClass * As_ViewerCtrlClass (void) { return NULL; }
- virtual ShortcutBarCtrlClass * As_ShortcutBarCtrlClass (void){ return NULL; }
- virtual TreeCtrlClass * As_TreeCtrlClass (void) { return NULL; }
- //
- // Simple property access
- //
- virtual const WCHAR * Get_Text (void) const { return Title; }
- virtual const RectClass & Get_Window_Rect (void) const { return Rect; }
- Vector2 Get_Window_Pos (void) const { return Rect.Upper_Left (); }
- const RectClass & Get_Client_Rect (void) const { return ClientRect; }
- DWORD Get_Style (void) const { return Style; }
- int Get_ID (void) const { return ID; }
- virtual void Set_Text (const WCHAR *title) { Title = title; Set_Dirty (); }
- void Set_Window_Rect (const RectClass &rect) { Rect = rect; Update_Client_Rect (); }
- virtual void Set_Window_Pos (const Vector2 &pos);
- void Set_Client_Rect (const RectClass &rect) { ClientRect = rect; }
- virtual void Set_Style (DWORD style) { Style = style; }
- void Set_ID (int id) { ID = id; }
-
- //
- // Parent access
- //
- DialogBaseClass * Peek_Parent (void) const { return Parent; }
- void Set_Parent (DialogBaseClass *parent) { Parent = parent; }
- //
- // Advise sink access
- //
- ControlAdviseSinkClass * Get_Advise_Sink (void) const { return AdviseSink; }
- void Set_Advise_Sink (ControlAdviseSinkClass *sink) { AdviseSink = sink; }
- //
- // Focus support
- //
- bool Has_Focus (void) const { return HasFocus; }
- void Set_Focus (void);
- bool Wants_Focus (void) const { return WantsFocus; }
- void Set_Wants_Focus (bool onoff) { WantsFocus = onoff; }
- //
- // Enabled support
- //
- bool Is_Enabled (void) const { return IsEnabled; }
- void Enable (bool onoff);
- //
- // Visibility
- //
- void Show (bool onoff) { IsVisible = onoff; }
- bool Is_Visible (void) const { return IsVisible; }
- //
- // Embedded support
- //
- void Set_Is_Embedded (bool onoff) { IsEmbedded = onoff; }
- bool Is_Embedded (void) const { return IsEmbedded; }
- //
- // Input capture support
- //
- void Set_Capture (void);
- void Release_Capture (void);
- //
- // Tooltip support
- //
- virtual bool Wants_Tooltip (void) const { return (ToolTipText.Get_Length () > 0); }
- virtual void Get_Tooltip_Text (WideStringClass &text) { text = ToolTipText; }
- virtual void Set_Tooltip_Text (const WCHAR *text) { ToolTipText = text; }
- //
- // Appearance control
- //
- const Vector3 & Get_Text_Color (void) const { return TextColor; }
- void Set_Text_Color (const Vector3 &color) { TextColor = color; IsTextColorOverridden = true; Set_Dirty (); }
- //
- // Display methods
- //
- virtual void Render (void) { IsDirty = false; }
- virtual void Center_Mouse (void);
- //
- // Dirty support
- //
- virtual void Set_Dirty (bool onoff = true) { IsDirty = onoff; }
- virtual bool Is_Dirty (void) const { return IsDirty; }
- protected:
- ////////////////////////////////////////////////////////////////
- // Protected methods
- ////////////////////////////////////////////////////////////////
- virtual void On_LButton_Down (const Vector2 &mouse_pos) {}
- virtual void On_LButton_DblClk (const Vector2 &mouse_pos) {}
- virtual void On_LButton_Up (const Vector2 &mouse_pos) {}
- virtual void On_RButton_Down (const Vector2 &mouse_pos) {}
- virtual void On_RButton_Up (const Vector2 &mouse_pos) {}
- virtual void On_MButton_Down (const Vector2 &mouse_pos) {}
- virtual void On_MButton_Up (const Vector2 &mouse_pos) {}
- virtual void On_Mouse_Move (const Vector2 &mouse_pos) {}
- virtual bool On_Key_Down (uint32 key_id, uint32 key_data) {return false;}
- virtual bool On_Key_Up (uint32 key_id) {return false;}
- virtual void On_Unicode_Char(WCHAR unicode) {}
- virtual void On_Mouse_Wheel (int direction) {}
- virtual void On_Set_Cursor (const Vector2 &mouse_pos);
- virtual void On_Create (void) {}
- virtual void On_Destroy (void) {}
- virtual void On_Add_To_Dialog (void) {}
- virtual void On_Remove_From_Dialog (void) {}
- virtual void On_Frame_Update (void) {}
- virtual void On_Set_Focus (void) { HasFocus = true; }
- virtual void On_Kill_Focus (DialogControlClass *) { HasFocus = false; }
- virtual void Update_Client_Rect (void) { ClientRect = Rect; Set_Dirty (); }
- ////////////////////////////////////////////////////////////////
- // Protected member data
- ////////////////////////////////////////////////////////////////
- WideStringClass Title;
- WideStringClass ToolTipText;
- RectClass Rect;
- RectClass ClientRect;
- DWORD Style;
- int ID;
- DialogBaseClass * Parent;
- bool HasFocus;
- bool IsDirty;
- bool WantsFocus;
- bool IsEnabled;
- bool IsVisible;
- bool IsEmbedded;
- Vector3 TextColor;
- bool IsTextColorOverridden;
- ControlAdviseSinkClass * AdviseSink;
- };
- #endif //__DIALOG_CONTROL_H
|