~ubuntu-branches/ubuntu/vivid/mygui/vivid

« back to all changes in this revision

Viewing changes to Tools/LayoutEditor/PropertiesPanelView.cpp

  • Committer: Package Import Robot
  • Author(s): Scott Howard, Bret Curtis, Scott Howard
  • Date: 2014-09-18 17:57:48 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20140918175748-dd8va78mvpw1jbes
Tags: 3.2.1-1
[ Bret Curtis ]
* Updated license for majority of files from LGPL to Expat (MIT)

[ Scott Howard ]
* New upstream release
* Updated patch to add build option for system GLEW libraries
* All patches accepted upstream except shared_libraries.patch
* Bumped SONAME due to dropped symbols, updated *.symbols and package
  names
* Updated license of debian/* to Expat with permission of all authors
* Don't install Doxygen autogenerated md5 and map files (thanks
  lintian)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*!
2
 
        @file
3
 
        @author         Georgiy Evmenov
4
 
        @date           09/2008
5
 
*/
6
 
 
7
 
#include "Precompiled.h"
8
 
#include "PropertiesPanelView.h"
9
 
#include "EditorWidgets.h"
10
 
#include "CommandManager.h"
11
 
#include "WidgetSelectorManager.h"
12
 
 
13
 
namespace tools
14
 
{
15
 
 
16
 
        PropertiesPanelView::PropertiesPanelView(MyGUI::Widget* _parent) :
17
 
                BaseLayout("PropertiesPanelView.layout", _parent),
18
 
                mPanelView(nullptr),
19
 
                mPanelMainProperties(nullptr),
20
 
                mPanelItems(nullptr),
21
 
                mPanelUserData(nullptr),
22
 
                mPanelControllers(nullptr),
23
 
                mPanelTemplateProperties(nullptr),
24
 
                mPanelExtensionProperties(nullptr),
25
 
                mCurrentWidget(nullptr)
26
 
        {
27
 
                assignBase(mPanelView, "scroll_View");
28
 
 
29
 
                MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>(false);
30
 
                if (window != nullptr)
31
 
                {
32
 
                        window->eventWindowChangeCoord += MyGUI::newDelegate(this, &PropertiesPanelView::notifyWindowChangeCoord);
33
 
                        mOldSize = window->getSize();
34
 
                }
35
 
 
36
 
                mPanelMainProperties = new PanelMainProperties();
37
 
                mPanelView->addItem(mPanelMainProperties);
38
 
 
39
 
                mPanelTemplateProperties = new PanelTemplateProperties();
40
 
                mPanelView->addItem(mPanelTemplateProperties);
41
 
 
42
 
                mPanelExtensionProperties = new PanelExtensionProperties();
43
 
                mPanelView->addItem(mPanelExtensionProperties);
44
 
 
45
 
                mPanelItems = new PanelItems();
46
 
                mPanelView->addItem(mPanelItems);
47
 
 
48
 
                mPanelUserData = new PanelUserData();
49
 
                mPanelView->addItem(mPanelUserData);
50
 
 
51
 
                mPanelControllers = new PanelControllers();
52
 
                mPanelView->addItem(mPanelControllers);
53
 
 
54
 
                WidgetSelectorManager::getInstance().eventChangeSelectedWidget += MyGUI::newDelegate(this, &PropertiesPanelView::notifyChangeSelectedWidget);
55
 
 
56
 
                notifyChangeSelectedWidget(nullptr);
57
 
        }
58
 
 
59
 
        PropertiesPanelView::~PropertiesPanelView()
60
 
        {
61
 
                WidgetSelectorManager::getInstance().eventChangeSelectedWidget -= MyGUI::newDelegate(this, &PropertiesPanelView::notifyChangeSelectedWidget);
62
 
 
63
 
                mPanelView->removeAllItems();
64
 
                delete mPanelMainProperties;
65
 
                delete mPanelItems;
66
 
                delete mPanelUserData;
67
 
                delete mPanelControllers;
68
 
                delete mPanelTemplateProperties;
69
 
                delete mPanelExtensionProperties;
70
 
 
71
 
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
72
 
                        delete (*item).second;
73
 
                mMapPropertyWindow.clear();
74
 
        }
75
 
 
76
 
        void PropertiesPanelView::notifyWindowChangeCoord(MyGUI::Window* _sender)
77
 
        {
78
 
                const MyGUI::IntSize& size = _sender->getSize();
79
 
                if (size != mOldSize)
80
 
                {
81
 
                        mOldSize = size;
82
 
                        mPanelView->setNeedUpdate();
83
 
                }
84
 
        }
85
 
 
86
 
        void PropertiesPanelView::notifyChangeSelectedWidget(MyGUI::Widget* _currentWidget)
87
 
        {
88
 
                mCurrentWidget = _currentWidget;
89
 
 
90
 
                if (nullptr != mCurrentWidget)
91
 
                {
92
 
                        MyGUI::LayerManager::getInstance().upLayerItem(mCurrentWidget);
93
 
                        MyGUI::Widget* parent = mCurrentWidget;
94
 
 
95
 
                        // if we select TabItem, it's chuld or subchild then show TabItem
96
 
                        while (nullptr != parent && !parent->isType<MyGUI::TabItem>())
97
 
                                parent = parent->getParent();
98
 
                        if (nullptr != parent)
99
 
                        {
100
 
                                MyGUI::TabControl* tab = parent->getParent()->castType<MyGUI::TabControl>();
101
 
                                MyGUI::TabItem* sheet = parent->castType<MyGUI::TabItem>();
102
 
                                tab->setItemSelected(sheet);
103
 
                        }
104
 
 
105
 
                        EditorWidgets::getInstance().onSetWidgetCoord(mCurrentWidget, mCurrentWidget->getAbsoluteCoord(), "PropertiesPanelView");
106
 
                }
107
 
 
108
 
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
109
 
                {
110
 
                        (*item).second->setVisible(false);
111
 
                        (*item).second->update(nullptr, nullptr);
112
 
                }
113
 
 
114
 
                if (nullptr == mCurrentWidget)
115
 
                {
116
 
                        mPanelMainProperties->setVisible(false);
117
 
                        mPanelMainProperties->update(nullptr);
118
 
 
119
 
                        mPanelItems->setVisible(false);
120
 
                        mPanelItems->update(nullptr);
121
 
 
122
 
                        mPanelUserData->setVisible(false);
123
 
                        mPanelUserData->update(nullptr);
124
 
 
125
 
                        mPanelControllers->setVisible(false);
126
 
                        mPanelControllers->update(nullptr);
127
 
 
128
 
                        mPanelTemplateProperties->setVisible(false);
129
 
                        mPanelTemplateProperties->update(nullptr, nullptr);
130
 
 
131
 
                        mPanelExtensionProperties->setVisible(false);
132
 
                        mPanelExtensionProperties->update(nullptr);
133
 
                }
134
 
                else
135
 
                {
136
 
                        mPanelMainProperties->setVisible(true);
137
 
                        mPanelMainProperties->update(mCurrentWidget);
138
 
 
139
 
                        mPanelItems->setVisible(true);
140
 
                        mPanelItems->update(mCurrentWidget);
141
 
 
142
 
                        mPanelUserData->setVisible(true);
143
 
                        mPanelUserData->update(mCurrentWidget);
144
 
 
145
 
                        mPanelControllers->setVisible(true);
146
 
                        mPanelControllers->update(mCurrentWidget);
147
 
 
148
 
                        mPanelExtensionProperties->setVisible(true);
149
 
                        mPanelExtensionProperties->update(mCurrentWidget);
150
 
 
151
 
                        std::string widgetTypeName = mCurrentWidget->getTypeName();
152
 
 
153
 
                        bool templateName = false;
154
 
                        WidgetContainer* container = EditorWidgets::getInstance().find(mCurrentWidget);
155
 
                        if (container->existUserData("LE_TargetWidgetType"))
156
 
                        {
157
 
                                widgetTypeName = container->getUserData("LE_TargetWidgetType");
158
 
                                templateName = true;
159
 
                        }
160
 
 
161
 
                        WidgetStyle* widgetType = WidgetTypes::getInstance().findWidgetStyle(widgetTypeName);
162
 
 
163
 
                        mPanelTemplateProperties->setVisible(true);
164
 
                        mPanelTemplateProperties->update(mCurrentWidget, templateName ? widgetType : nullptr);
165
 
 
166
 
                        while (widgetType != nullptr)
167
 
                        {
168
 
                                PanelProperties* panel = getPropertyWindow(widgetType, widgetType->deep);
169
 
                                panel->setVisible(true);
170
 
                                panel->update(mCurrentWidget, widgetType);
171
 
 
172
 
                                if (widgetType->name == "Widget")
173
 
                                        break;
174
 
 
175
 
                                widgetType = WidgetTypes::getInstance().findWidgetStyle(widgetType->base);
176
 
                        }
177
 
                }
178
 
        }
179
 
 
180
 
        PanelProperties* PropertiesPanelView::getPropertyWindow(WidgetStyle* _style, size_t _deep)
181
 
        {
182
 
                MapPropertyWindow::iterator item = mMapPropertyWindow.find(_style);
183
 
                if (item == mMapPropertyWindow.end())
184
 
                {
185
 
                        PanelProperties* result = new PanelProperties();
186
 
                        result->setDeep(_deep);
187
 
 
188
 
                        mPanelView->insertItem(getIndexByDeep(_deep), result);
189
 
 
190
 
                        mMapPropertyWindow[_style] = result;
191
 
                        return result;
192
 
                }
193
 
 
194
 
                return (*item).second;
195
 
        }
196
 
 
197
 
        size_t PropertiesPanelView::getIndexByDeep(size_t _deep)
198
 
        {
199
 
                size_t result = 1;
200
 
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
201
 
                {
202
 
                        if ((*item).second->getDeep() < _deep)
203
 
                        {
204
 
                                size_t index = getIndexPanel((*item).second);
205
 
                                if (index >= result)
206
 
                                        result = index + 1;
207
 
                        }
208
 
                }
209
 
                return result;
210
 
        }
211
 
 
212
 
        size_t PropertiesPanelView::getIndexPanel(PanelProperties* _panel)
213
 
        {
214
 
                for (size_t index = 0; index < mPanelView->getItemCount(); ++ index)
215
 
                {
216
 
                        if (mPanelView->getItem(index) == _panel)
217
 
                                return index;
218
 
                }
219
 
                return MyGUI::ITEM_NONE;
220
 
        }
221
 
 
222
 
} // namespace tools
 
1
/*!
 
2
        @file
 
3
        @author         Georgiy Evmenov
 
4
        @date           09/2008
 
5
*/
 
6
 
 
7
#include "Precompiled.h"
 
8
#include "PropertiesPanelView.h"
 
9
#include "EditorWidgets.h"
 
10
#include "CommandManager.h"
 
11
#include "WidgetSelectorManager.h"
 
12
 
 
13
namespace tools
 
14
{
 
15
 
 
16
        PropertiesPanelView::PropertiesPanelView(MyGUI::Widget* _parent) :
 
17
                BaseLayout("PropertiesPanelView.layout", _parent),
 
18
                mPanelView(nullptr),
 
19
                mPanelMainProperties(nullptr),
 
20
                mPanelItems(nullptr),
 
21
                mPanelUserData(nullptr),
 
22
                mPanelControllers(nullptr),
 
23
                mPanelTemplateProperties(nullptr),
 
24
                mPanelExtensionProperties(nullptr),
 
25
                mCurrentWidget(nullptr)
 
26
        {
 
27
                assignBase(mPanelView, "scroll_View");
 
28
 
 
29
                MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>(false);
 
30
                if (window != nullptr)
 
31
                {
 
32
                        window->eventWindowChangeCoord += MyGUI::newDelegate(this, &PropertiesPanelView::notifyWindowChangeCoord);
 
33
                        mOldSize = window->getSize();
 
34
                }
 
35
 
 
36
                mPanelMainProperties = new PanelMainProperties();
 
37
                mPanelView->addItem(mPanelMainProperties);
 
38
 
 
39
                mPanelTemplateProperties = new PanelTemplateProperties();
 
40
                mPanelView->addItem(mPanelTemplateProperties);
 
41
 
 
42
                mPanelExtensionProperties = new PanelExtensionProperties();
 
43
                mPanelView->addItem(mPanelExtensionProperties);
 
44
 
 
45
                mPanelItems = new PanelItems();
 
46
                mPanelView->addItem(mPanelItems);
 
47
 
 
48
                mPanelUserData = new PanelUserData();
 
49
                mPanelView->addItem(mPanelUserData);
 
50
 
 
51
                mPanelControllers = new PanelControllers();
 
52
                mPanelView->addItem(mPanelControllers);
 
53
 
 
54
                WidgetSelectorManager::getInstance().eventChangeSelectedWidget += MyGUI::newDelegate(this, &PropertiesPanelView::notifyChangeSelectedWidget);
 
55
 
 
56
                notifyChangeSelectedWidget(nullptr);
 
57
        }
 
58
 
 
59
        PropertiesPanelView::~PropertiesPanelView()
 
60
        {
 
61
                WidgetSelectorManager::getInstance().eventChangeSelectedWidget -= MyGUI::newDelegate(this, &PropertiesPanelView::notifyChangeSelectedWidget);
 
62
 
 
63
                mPanelView->removeAllItems();
 
64
                delete mPanelMainProperties;
 
65
                delete mPanelItems;
 
66
                delete mPanelUserData;
 
67
                delete mPanelControllers;
 
68
                delete mPanelTemplateProperties;
 
69
                delete mPanelExtensionProperties;
 
70
 
 
71
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
 
72
                        delete (*item).second;
 
73
                mMapPropertyWindow.clear();
 
74
        }
 
75
 
 
76
        void PropertiesPanelView::notifyWindowChangeCoord(MyGUI::Window* _sender)
 
77
        {
 
78
                const MyGUI::IntSize& size = _sender->getSize();
 
79
                if (size != mOldSize)
 
80
                {
 
81
                        mOldSize = size;
 
82
                        mPanelView->setNeedUpdate();
 
83
                }
 
84
        }
 
85
 
 
86
        void PropertiesPanelView::notifyChangeSelectedWidget(MyGUI::Widget* _currentWidget)
 
87
        {
 
88
                mCurrentWidget = _currentWidget;
 
89
 
 
90
                if (nullptr != mCurrentWidget)
 
91
                {
 
92
                        MyGUI::LayerManager::getInstance().upLayerItem(mCurrentWidget);
 
93
                        MyGUI::Widget* parent = mCurrentWidget;
 
94
 
 
95
                        // if we select TabItem, it's chuld or subchild then show TabItem
 
96
                        while (nullptr != parent && !parent->isType<MyGUI::TabItem>())
 
97
                                parent = parent->getParent();
 
98
                        if (nullptr != parent)
 
99
                        {
 
100
                                MyGUI::TabControl* tab = parent->getParent()->castType<MyGUI::TabControl>();
 
101
                                MyGUI::TabItem* sheet = parent->castType<MyGUI::TabItem>();
 
102
                                tab->setItemSelected(sheet);
 
103
                        }
 
104
 
 
105
                        EditorWidgets::getInstance().onSetWidgetCoord(mCurrentWidget, mCurrentWidget->getAbsoluteCoord(), "PropertiesPanelView");
 
106
                }
 
107
 
 
108
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
 
109
                {
 
110
                        (*item).second->setVisible(false);
 
111
                        (*item).second->update(nullptr, nullptr);
 
112
                }
 
113
 
 
114
                if (nullptr == mCurrentWidget)
 
115
                {
 
116
                        mPanelMainProperties->setVisible(false);
 
117
                        mPanelMainProperties->update(nullptr);
 
118
 
 
119
                        mPanelItems->setVisible(false);
 
120
                        mPanelItems->update(nullptr);
 
121
 
 
122
                        mPanelUserData->setVisible(false);
 
123
                        mPanelUserData->update(nullptr);
 
124
 
 
125
                        mPanelControllers->setVisible(false);
 
126
                        mPanelControllers->update(nullptr);
 
127
 
 
128
                        mPanelTemplateProperties->setVisible(false);
 
129
                        mPanelTemplateProperties->update(nullptr, nullptr);
 
130
 
 
131
                        mPanelExtensionProperties->setVisible(false);
 
132
                        mPanelExtensionProperties->update(nullptr);
 
133
                }
 
134
                else
 
135
                {
 
136
                        mPanelMainProperties->setVisible(true);
 
137
                        mPanelMainProperties->update(mCurrentWidget);
 
138
 
 
139
                        mPanelItems->setVisible(true);
 
140
                        mPanelItems->update(mCurrentWidget);
 
141
 
 
142
                        mPanelUserData->setVisible(true);
 
143
                        mPanelUserData->update(mCurrentWidget);
 
144
 
 
145
                        mPanelControllers->setVisible(true);
 
146
                        mPanelControllers->update(mCurrentWidget);
 
147
 
 
148
                        mPanelExtensionProperties->setVisible(true);
 
149
                        mPanelExtensionProperties->update(mCurrentWidget);
 
150
 
 
151
                        std::string widgetTypeName = mCurrentWidget->getTypeName();
 
152
 
 
153
                        bool templateName = false;
 
154
                        WidgetContainer* container = EditorWidgets::getInstance().find(mCurrentWidget);
 
155
                        if (container->existUserData("LE_TargetWidgetType"))
 
156
                        {
 
157
                                widgetTypeName = container->getUserData("LE_TargetWidgetType");
 
158
                                templateName = true;
 
159
                        }
 
160
 
 
161
                        WidgetStyle* widgetType = WidgetTypes::getInstance().findWidgetStyle(widgetTypeName);
 
162
 
 
163
                        mPanelTemplateProperties->setVisible(true);
 
164
                        mPanelTemplateProperties->update(mCurrentWidget, templateName ? widgetType : nullptr);
 
165
 
 
166
                        while (widgetType != nullptr)
 
167
                        {
 
168
                                PanelProperties* panel = getPropertyWindow(widgetType, widgetType->depth);
 
169
                                panel->setVisible(true);
 
170
                                panel->update(mCurrentWidget, widgetType);
 
171
 
 
172
                                if (widgetType->name == "Widget")
 
173
                                        break;
 
174
 
 
175
                                widgetType = WidgetTypes::getInstance().findWidgetStyle(widgetType->base);
 
176
                        }
 
177
                }
 
178
        }
 
179
 
 
180
        PanelProperties* PropertiesPanelView::getPropertyWindow(WidgetStyle* _style, size_t _depth)
 
181
        {
 
182
                MapPropertyWindow::iterator item = mMapPropertyWindow.find(_style);
 
183
                if (item == mMapPropertyWindow.end())
 
184
                {
 
185
                        PanelProperties* result = new PanelProperties();
 
186
                        result->setDepth(_depth);
 
187
 
 
188
                        mPanelView->insertItem(getIndexByDepth(_depth), result);
 
189
 
 
190
                        mMapPropertyWindow[_style] = result;
 
191
                        return result;
 
192
                }
 
193
 
 
194
                return (*item).second;
 
195
        }
 
196
 
 
197
        size_t PropertiesPanelView::getIndexByDepth(size_t _depth)
 
198
        {
 
199
                size_t result = 1;
 
200
                for (MapPropertyWindow::iterator item = mMapPropertyWindow.begin(); item != mMapPropertyWindow.end(); ++ item)
 
201
                {
 
202
                        if ((*item).second->getDepth() < _depth)
 
203
                        {
 
204
                                size_t index = getIndexPanel((*item).second);
 
205
                                if (index >= result)
 
206
                                        result = index + 1;
 
207
                        }
 
208
                }
 
209
                return result;
 
210
        }
 
211
 
 
212
        size_t PropertiesPanelView::getIndexPanel(PanelProperties* _panel)
 
213
        {
 
214
                for (size_t index = 0; index < mPanelView->getItemCount(); ++ index)
 
215
                {
 
216
                        if (mPanelView->getItem(index) == _panel)
 
217
                                return index;
 
218
                }
 
219
                return MyGUI::ITEM_NONE;
 
220
        }
 
221
 
 
222
}