diff options
author | David Walter Seikel | 2016-03-28 22:28:34 +1000 |
---|---|---|
committer | David Walter Seikel | 2016-03-28 22:28:34 +1000 |
commit | 7028cbe09c688437910a25623098762bf0fa592d (patch) | |
tree | 10b5af58277d9880380c2251f109325542c4e6eb /src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h | |
parent | Move lemon to the src/others directory. (diff) | |
download | SledjHamr-7028cbe09c688437910a25623098762bf0fa592d.zip SledjHamr-7028cbe09c688437910a25623098762bf0fa592d.tar.gz SledjHamr-7028cbe09c688437910a25623098762bf0fa592d.tar.bz2 SledjHamr-7028cbe09c688437910a25623098762bf0fa592d.tar.xz |
Move Irrlicht to src/others.
Diffstat (limited to 'src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h')
-rw-r--r-- | src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h b/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h new file mode 100644 index 0000000..6a4fef2 --- /dev/null +++ b/src/others/irrlicht-1.8.1/tools/GUIEditor/CGUITextureAttribute.h | |||
@@ -0,0 +1,140 @@ | |||
1 | #ifndef __C_GUI_TEXTURE_ATTRIBUTE_H_INCLUDED__ | ||
2 | #define __C_GUI_TEXTURE_ATTRIBUTE_H_INCLUDED__ | ||
3 | |||
4 | #include "CGUIAttribute.h" | ||
5 | #include "IGUIEditBox.h" | ||
6 | #include "IGUIImage.h" | ||
7 | #include "IGUIButton.h" | ||
8 | #include "EGUIEditTypes.h" | ||
9 | |||
10 | namespace irr | ||
11 | { | ||
12 | namespace gui | ||
13 | { | ||
14 | |||
15 | class CGUITextureAttribute : public CGUIAttribute | ||
16 | { | ||
17 | public: | ||
18 | // | ||
19 | CGUITextureAttribute(IGUIEnvironment* environment, IGUIElement *parent, s32 myParentID) : | ||
20 | CGUIAttribute(environment, parent, myParentID), | ||
21 | AttribEditBox(0), AttribImage(0), AttribButton(0) | ||
22 | { | ||
23 | IGUISkin* skin = Environment->getSkin(); | ||
24 | |||
25 | core::rect<s32> r = getAbsolutePosition(); | ||
26 | s32 topy = skin->getFont()->getDimension(L"A").Height + 10; | ||
27 | s32 h = skin->getFont()->getDimension(L"A").Height + 5; | ||
28 | |||
29 | AttribImage = environment->addImage(0, core::position2di(0, topy), false, this); | ||
30 | AttribImage->setRelativePosition( core::rect<s32>(0,topy, r.getWidth() - 5, 100+topy)); | ||
31 | AttribImage->grab(); | ||
32 | AttribImage->setSubElement(true); | ||
33 | AttribImage->setScaleImage(true); | ||
34 | AttribImage->setAlignment(EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); | ||
35 | |||
36 | topy += 105; | ||
37 | |||
38 | core::rect<s32> r2(0, topy, r.getWidth() - 15 - skin->getSize(EGDS_CHECK_BOX_WIDTH), topy + h); | ||
39 | core::rect<s32> br(r.getWidth() - 10 - skin->getSize(EGDS_CHECK_BOX_WIDTH), topy, r.getWidth(), topy + h); | ||
40 | |||
41 | AttribEditBox = environment->addEditBox(0, r2, true, this, -1); | ||
42 | AttribEditBox->grab(); | ||
43 | AttribEditBox->setSubElement(true); | ||
44 | AttribEditBox->setAlignment(EGUIA_UPPERLEFT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); | ||
45 | |||
46 | AttribButton = environment->addButton(br, this, -1, L"..."); | ||
47 | AttribButton->grab(); | ||
48 | AttribButton->setSubElement(true); | ||
49 | AttribButton->setAlignment(EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT, EGUIA_UPPERLEFT, EGUIA_UPPERLEFT); | ||
50 | //AttribButton->setSpriteBank(skin->getSpriteBank()); | ||
51 | //AttribButton->setSprite(EGBS_BUTTON_UP, skin->getIcon(EGDI_FILE), skin->getColor(EGDC_WINDOW_SYMBOL)); | ||
52 | //AttribButton->setSprite(EGBS_BUTTON_DOWN, skin->getIcon(EGDI_FILE), skin->getColor(EGDC_WINDOW_SYMBOL), true); | ||
53 | } | ||
54 | |||
55 | virtual ~CGUITextureAttribute() | ||
56 | { | ||
57 | if (AttribEditBox) | ||
58 | AttribEditBox->drop(); | ||
59 | if (AttribImage) | ||
60 | AttribImage->drop(); | ||
61 | if (AttribButton) | ||
62 | AttribButton->drop(); | ||
63 | } | ||
64 | |||
65 | virtual bool OnEvent(const SEvent &e) | ||
66 | { | ||
67 | |||
68 | if (IsEnabled) | ||
69 | { | ||
70 | switch (e.EventType) | ||
71 | { | ||
72 | case EET_GUI_EVENT: | ||
73 | switch (e.GUIEvent.EventType) | ||
74 | { | ||
75 | case EGET_BUTTON_CLICKED: | ||
76 | // button click: open file dialog | ||
77 | if (e.GUIEvent.Caller == AttribButton) | ||
78 | { | ||
79 | //Environment->addGUIElement("textureBrowser", Environment->getRootGUIElement()); | ||
80 | return true; | ||
81 | } | ||
82 | break; | ||
83 | case EGET_FILE_SELECTED: | ||
84 | // file selected: change editbox value and set event | ||
85 | |||
86 | return true; | ||
87 | case EGET_FILE_CHOOSE_DIALOG_CANCELLED: | ||
88 | |||
89 | return true; | ||
90 | default: | ||
91 | break; | ||
92 | } | ||
93 | break; | ||
94 | case EET_KEY_INPUT_EVENT: | ||
95 | return true; | ||
96 | default: | ||
97 | break; | ||
98 | } | ||
99 | } | ||
100 | return CGUIAttribute::OnEvent(e); | ||
101 | } | ||
102 | |||
103 | virtual void setAttrib(io::IAttributes *attribs, u32 attribIndex) | ||
104 | { | ||
105 | AttribEditBox->setText(attribs->getAttributeAsStringW(attribIndex).c_str()); | ||
106 | AttribImage->setImage(attribs->getAttributeAsTexture(Index)); | ||
107 | |||
108 | CGUIAttribute::setAttrib(attribs, attribIndex); | ||
109 | } | ||
110 | |||
111 | //! save the attribute and possibly post the event to its parent | ||
112 | virtual bool updateAttrib(bool sendEvent=true) | ||
113 | { | ||
114 | if (!Attribs) | ||
115 | return true; | ||
116 | |||
117 | Attribs->setAttribute(Index, AttribEditBox->getText()); | ||
118 | core::stringw tmp = Attribs->getAttributeAsStringW(Index); | ||
119 | AttribEditBox->setText(Attribs->getAttributeAsStringW(Index).c_str()); | ||
120 | AttribImage->setImage(Attribs->getAttributeAsTexture(Index)); | ||
121 | |||
122 | return CGUIAttribute::updateAttrib(sendEvent); | ||
123 | } | ||
124 | |||
125 | //! Returns the type name of the gui element. | ||
126 | virtual const c8* getTypeName() const | ||
127 | { | ||
128 | return GUIEditElementTypeNames[EGUIEDIT_TEXTUREATTRIBUTE]; | ||
129 | } | ||
130 | |||
131 | private: | ||
132 | IGUIEditBox* AttribEditBox; | ||
133 | IGUIImage* AttribImage; | ||
134 | IGUIButton* AttribButton; | ||
135 | }; | ||
136 | |||
137 | } // namespace gui | ||
138 | } // namespace irr | ||
139 | |||
140 | #endif | ||