Crazy Eddie's GUI System  ${CEGUI_VERSION}
WidgetDemo.h
1 /***********************************************************************
2 created: 12/7/2012
3 author: Lukas E Meindl
4 *************************************************************************/
5 /***************************************************************************
6 * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27 #ifndef _Widget_Demo_
28 #define _Widget_Demo_
29 
30 #include "SampleBase.h"
31 
32 #include <vector>
33 #include <map>
34 
35 
36 #include "CEGUI/ForwardRefs.h"
37 
38 class EventHandlerObject;
39 class MyListItem;
41 
42 typedef std::vector<MyListItem*> WidgetListType;
43 
44 // Sample class
45 class WidgetDemo : public Sample
46 {
47 public:
48  // method to initialse the samples windows and events.
49  virtual bool initialise(CEGUI::GUIContext* guiContext);
50 
51  void handleWidgetEventFired(const CEGUI::String& eventName, CEGUI::String logMessage);
52 
53  // method to perform any required cleanup operations.
54  virtual void deinitialise();
55 protected:
56  // initialisation helpers
57  void initialiseAvailableWidgetsMap();
58 
59  void addItemToWidgetList(const CEGUI::String& widgetName, WidgetListType &widgetList);
60  void createLayout();
61 
62  void initialiseWidgetInspector(CEGUI::Window* container);
63 
64  void initialiseWidgetPropertiesDisplayWindow(CEGUI::Window* widgetPropertiesInspectionContainer);
65  void initialiseWidgetSelector(CEGUI::Window* container);
66  void initialiseWidgetDisplayWindow();
67  void initialiseEventLights(CEGUI::Window* container);
68  void initialiseWidgetSelectorContainer(CEGUI::Window* widgetSelectorContainer);
69  void initialiseWidgetSelectorListbox();
70  void initialiseBackgroundWindow(CEGUI::Window* background);
71  void initialiseSkinCombobox(CEGUI::Window* container);
72  void initialiseWidgetsEventsLog();
73 
74  void initialiseEventHandlerObjects();
75 
76  void createListContent(CEGUI::Window* root);
77 
78  bool handleSkinSelectionAccepted(const CEGUI::EventArgs& args);
79  bool handleWidgetSelectionChanged(const CEGUI::EventArgs& args);
80 
81  void fillWidgetPropertiesDisplayWindow( CEGUI::Window* widgetWindowRoot );
82  void handleSpecialWindowCases( CEGUI::Window* widgetWindowRoot, CEGUI::String widgetTypeString );
83  CEGUI::Window* retrieveOrCreateWidgetWindow(const CEGUI::String& widgetTypeString, const CEGUI::String& widgetName);
84  bool getWidgetType(CEGUI::String &widgetName, CEGUI::String &widgetTypeString);
85  CEGUI::Window* createWidget(const CEGUI::String &widgetMapping, const CEGUI::String &widgetType);
86 
87  CEGUI::Window* initialiseSpecialWidgets(CEGUI::Window* widgetWindow, const CEGUI::String &widgetType);
88 
89  void initMenubar(CEGUI::Menubar* menuBar);
90  void initRadioButtons(CEGUI::RadioButton* radioButton, CEGUI::Window*& widgetWindow);
91  void initListbox(CEGUI::Listbox* listbox);
92  void initItemListbox(CEGUI::ItemListbox* itemListbox);
93  void initCombobox(CEGUI::Combobox* combobox);
94  void initMultiColumnList(CEGUI::MultiColumnList* multilineColumnList);
95  void subscribeToAllEvents(CEGUI::Window* widgetWindow);
96  void addEventHandlerObjectToMap(CEGUI::String eventName);
97 
98 
99  void logFiredEvent(const CEGUI::String& logMessage);
100 
101  void destroyWidgetWindows();
102  void deinitWidgetListItems();
103 
104  bool handleRenderingEnded(const CEGUI::EventArgs& args);
105  bool handleRootWindowUpdate(const CEGUI::EventArgs& args);
106 
107  void saveWidgetPropertiesToMap(const CEGUI::Window* widgetRoot, const CEGUI::Window* widgetWindow);
108 
109  static const CEGUI::String s_widgetDemoWindowPrefix;
110 
111  CEGUI::GUIContext* d_guiContext;
112 
113  CEGUI::Listbox* d_widgetSelectorListbox;
114  CEGUI::Combobox* d_skinSelectionCombobox;
115  CEGUI::Window* d_widgetDisplayWindow;
116  CEGUI::Window* d_widgetDisplayWindowInnerWindow;
117  CEGUI::Window* d_widgetsEventsLog;
118 
119  CEGUI::Window* d_currentlyDisplayedWidgetRoot;
120 
121  CEGUI::Window* d_windowLightMouseMoveEvent;
122  CEGUI::Window* d_windowLightUpdatedEvent;
123 
124  CEGUI::MultiColumnList* d_widgetPropertiesDisplayWindow;
125 
126  std::map<CEGUI::String, WidgetListType> d_skinListItemsMap;
127  std::map<CEGUI::String, CEGUI::Window*> d_widgetsMap;
128  std::map<CEGUI::String, EventHandlerObject*> d_eventHandlerObjectsMap;
129  std::map<const CEGUI::Window*, WidgetPropertiesObject> d_widgetPropertiesMap;
130 };
131 
132 #endif
Definition: WidgetDemo.cpp:54
Definition: cegui/include/CEGUI/GUIContext.h:68
Base class for the Combobox widget.
Definition: cegui/include/CEGUI/widgets/Combobox.h:50
Base class used as the argument to all subscribers Event object.
Definition: cegui/include/CEGUI/EventArgs.h:49
Definition: WidgetDemo.cpp:64
Definition: WidgetDemo.h:45
Definition: EffectsDemo.h:172
ItemListbox window class.
Definition: cegui/include/CEGUI/widgets/ItemListbox.h:45
Base class for standard Listbox widget.
Definition: cegui/include/CEGUI/widgets/Listbox.h:81
Base class to provide the logic for Radio Button widgets.
Definition: cegui/include/CEGUI/widgets/RadioButton.h:40
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition: cegui/include/CEGUI/Window.h:149
Base class for menu bars.
Definition: cegui/include/CEGUI/widgets/Menubar.h:51
Base class for the multi column list widget.
Definition: cegui/include/CEGUI/widgets/MultiColumnList.h:96
String class used within the GUI system.
Definition: cegui/include/CEGUI/String.h:62
Definition: Sample.h:36