00001
00002
00003
00004
00005 #ifndef __I_GUI_ENVIRONMENT_H_INCLUDED__
00006 #define __I_GUI_ENVIRONMENT_H_INCLUDED__
00007
00008 #include "IReferenceCounted.h"
00009 #include "IGUISkin.h"
00010 #include "rect.h"
00011 #include "EMessageBoxFlags.h"
00012 #include "IEventReceiver.h"
00013 #include "IXMLReader.h"
00014 #include "path.h"
00015
00016 namespace irr
00017 {
00018 class IOSOperator;
00019 class IEventReceiver;
00020
00021 namespace io
00022 {
00023 class IXMLWriter;
00024 class IReadFile;
00025 class IWriteFile;
00026 class IFileSystem;
00027 }
00028 namespace video
00029 {
00030 class IVideoDriver;
00031 class ITexture;
00032 }
00033
00034 namespace gui
00035 {
00036
00037 class IGUIElement;
00038 class IGUIFont;
00039 class IGUISpriteBank;
00040 class IGUIScrollBar;
00041 class IGUIImage;
00042 class IGUIMeshViewer;
00043 class IGUICheckBox;
00044 class IGUIListBox;
00045 class IGUITreeView;
00046 class IGUIImageList;
00047 class IGUIFileOpenDialog;
00048 class IGUIColorSelectDialog;
00049 class IGUIInOutFader;
00050 class IGUIStaticText;
00051 class IGUIEditBox;
00052 class IGUISpinBox;
00053 class IGUITabControl;
00054 class IGUITab;
00055 class IGUITable;
00056 class IGUIContextMenu;
00057 class IGUIComboBox;
00058 class IGUIToolBar;
00059 class IGUIButton;
00060 class IGUIWindow;
00061 class IGUIElementFactory;
00062
00064
00070 class IGUIEnvironment : public virtual IReferenceCounted
00071 {
00072 public:
00073
00075 virtual void drawAll() = 0;
00076
00078
00083 virtual bool setFocus(IGUIElement* element) = 0;
00084
00086
00087 virtual IGUIElement* getFocus() const = 0;
00088
00090
00095 virtual IGUIElement* getHovered() const = 0;
00096
00098
00102 virtual bool removeFocus(IGUIElement* element) = 0;
00103
00105
00107 virtual bool hasFocus(IGUIElement* element) const = 0;
00108
00110
00111 virtual video::IVideoDriver* getVideoDriver() const = 0;
00112
00114
00115 virtual io::IFileSystem* getFileSystem() const = 0;
00116
00118
00119 virtual IOSOperator* getOSOperator() const = 0;
00120
00122 virtual void clear() = 0;
00123
00125
00129 virtual bool postEventFromUser(const SEvent& event) = 0;
00130
00132
00135 virtual void setUserEventReceiver(IEventReceiver* evr) = 0;
00136
00138
00139 virtual IGUISkin* getSkin() const = 0;
00140
00142
00154 virtual void setSkin(IGUISkin* skin) = 0;
00155
00157
00162 virtual IGUISkin* createSkin(EGUI_SKIN_TYPE type) = 0;
00163
00164
00166
00172 virtual IGUIImageList* createImageList( video::ITexture* texture,
00173 core::dimension2d<s32> imageSize,
00174 bool useAlphaChannel ) = 0;
00175
00177
00182 virtual IGUIFont* getFont(const io::path& filename) = 0;
00183
00185
00190 virtual IGUIFont* addFont(const io::path& name, IGUIFont* font) = 0;
00191
00193 virtual void removeFont(IGUIFont* font) = 0;
00194
00196
00199 virtual IGUIFont* getBuiltInFont() const = 0;
00200
00202
00206 virtual IGUISpriteBank* getSpriteBank(const io::path& filename) = 0;
00207
00209
00212 virtual IGUISpriteBank* addEmptySpriteBank(const io::path& name) = 0;
00213
00215
00221 virtual IGUIElement* getRootGUIElement() = 0;
00222
00224
00232 virtual IGUIButton* addButton(const core::rect<s32>& rectangle,
00233 IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, const wchar_t* tooltiptext = 0) = 0;
00234
00236
00246 virtual IGUIWindow* addWindow(const core::rect<s32>& rectangle, bool modal = false,
00247 const wchar_t* text=0, IGUIElement* parent=0, s32 id=-1) = 0;
00248
00250
00256 virtual IGUIElement* addModalScreen(IGUIElement* parent) = 0;
00257
00259
00273 virtual IGUIWindow* addMessageBox(const wchar_t* caption, const wchar_t* text=0,
00274 bool modal = true, s32 flags = EMBF_OK, IGUIElement* parent=0, s32 id=-1, video::ITexture* image=0) = 0;
00275
00277
00285 virtual IGUIScrollBar* addScrollBar(bool horizontal, const core::rect<s32>& rectangle,
00286 IGUIElement* parent=0, s32 id=-1) = 0;
00287
00289
00300 virtual IGUIImage* addImage(video::ITexture* image, core::position2d<s32> pos,
00301 bool useAlphaChannel=true, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
00302
00304
00314 virtual IGUIImage* addImage(const core::rect<s32>& rectangle,
00315 IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, bool useAlphaChannel=true) = 0;
00316
00318
00326 virtual IGUICheckBox* addCheckBox(bool checked, const core::rect<s32>& rectangle,
00327 IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
00328
00330
00337 virtual IGUIListBox* addListBox(const core::rect<s32>& rectangle,
00338 IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) = 0;
00339
00341
00350 virtual IGUITreeView* addTreeView(const core::rect<s32>& rectangle,
00351 IGUIElement* parent=0, s32 id=-1, bool drawBackground=false,
00352 bool scrollBarVertical = true, bool scrollBarHorizontal = false) = 0;
00353
00355
00362 virtual IGUIMeshViewer* addMeshViewer(const core::rect<s32>& rectangle,
00363 IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
00364
00366
00379 virtual IGUIFileOpenDialog* addFileOpenDialog(const wchar_t* title=0,
00380 bool modal=true, IGUIElement* parent=0, s32 id=-1,
00381 bool restoreCWD=false, io::path::char_type* startDir=0) = 0;
00382
00384
00393 virtual IGUIColorSelectDialog* addColorSelectDialog(const wchar_t* title = 0,
00394 bool modal=true, IGUIElement* parent=0, s32 id=-1) = 0;
00395
00397
00408 virtual IGUIStaticText* addStaticText(const wchar_t* text, const core::rect<s32>& rectangle,
00409 bool border=false, bool wordWrap=true, IGUIElement* parent=0, s32 id=-1,
00410 bool fillBackground = false) = 0;
00411
00413
00427 virtual IGUIEditBox* addEditBox(const wchar_t* text, const core::rect<s32>& rectangle,
00428 bool border=true, IGUIElement* parent=0, s32 id=-1) = 0;
00429
00431
00441 virtual IGUISpinBox* addSpinBox(const wchar_t* text, const core::rect<s32>& rectangle,
00442 bool border=true,IGUIElement* parent=0, s32 id=-1) = 0;
00443
00445
00452 virtual IGUIInOutFader* addInOutFader(const core::rect<s32>* rectangle=0, IGUIElement* parent=0, s32 id=-1) = 0;
00453
00455
00467 virtual IGUITabControl* addTabControl(const core::rect<s32>& rectangle,
00468 IGUIElement* parent=0, bool fillbackground=false,
00469 bool border=true, s32 id=-1) = 0;
00470
00472
00482 virtual IGUITab* addTab(const core::rect<s32>& rectangle,
00483 IGUIElement* parent=0, s32 id=-1) = 0;
00484
00486
00494 virtual IGUIContextMenu* addContextMenu(const core::rect<s32>& rectangle,
00495 IGUIElement* parent=0, s32 id=-1) = 0;
00496
00498
00506 virtual IGUIContextMenu* addMenu(IGUIElement* parent=0, s32 id=-1) = 0;
00507
00509
00517 virtual IGUIToolBar* addToolBar(IGUIElement* parent=0, s32 id=-1) = 0;
00518
00520
00527 virtual IGUIComboBox* addComboBox(const core::rect<s32>& rectangle,
00528 IGUIElement* parent=0, s32 id=-1) = 0;
00529
00531
00539 virtual IGUITable* addTable(const core::rect<s32>& rectangle,
00540 IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) =0;
00541
00543
00546 virtual IGUIElementFactory* getDefaultGUIElementFactory() const = 0;
00547
00549
00553 virtual void registerGUIElementFactory(IGUIElementFactory* factoryToAdd) = 0;
00554
00556
00557 virtual u32 getRegisteredGUIElementFactoryCount() const = 0;
00558
00560
00562 virtual IGUIElementFactory* getGUIElementFactory(u32 index) const = 0;
00563
00565
00570 virtual IGUIElement* addGUIElement(const c8* elementName, IGUIElement* parent=0) = 0;
00571
00573
00576 virtual bool saveGUI(const io::path& filename, IGUIElement* start=0) = 0;
00577
00579
00582 virtual bool saveGUI(io::IWriteFile* file, IGUIElement* start=0) = 0;
00583
00585
00591 virtual bool loadGUI(const io::path& filename, IGUIElement* parent=0) = 0;
00592
00594
00600 virtual bool loadGUI(io::IReadFile* file, IGUIElement* parent=0) = 0;
00601
00603 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const =0;
00604
00606 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0)=0;
00607
00609 virtual void writeGUIElement(io::IXMLWriter* writer, IGUIElement* node) =0;
00610
00612 virtual void readGUIElement(io::IXMLReader* reader, IGUIElement* node) =0;
00613 };
00614
00615
00616 }
00617 }
00618
00619 #endif
00620