Moved GUI stuff into components

This commit is contained in:
Nicolay Korslund 2010-07-08 22:34:35 +02:00
parent 29522f57d3
commit 9c839e220e
10 changed files with 114 additions and 74 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
build build
*~

View file

@ -136,6 +136,19 @@ set(OGRE_HEADER
${COMP_DIR}/engine/ogre/renderer.hpp) ${COMP_DIR}/engine/ogre/renderer.hpp)
source_group(components\\engine\\ogre FILES ${OGRE} ${OGRE_HEADER}) source_group(components\\engine\\ogre FILES ${OGRE} ${OGRE_HEADER})
# components/mw_gui
set(MWGUI_HEADER
${COMP_DIR}/mw_gui/mw_layouts.hpp)
source_group(components\\mw_gui FILES ${MWGUI_HEADER})
# components/engine/gui
set(EGUI
${COMP_DIR}/engine/gui/manager.cpp)
set(EGUI_HEADER
${COMP_DIR}/engine/gui/manager.hpp
${COMP_DIR}/engine/gui/layout.hpp)
source_group(components\\engine\\gui FILES ${EGUI} ${EGUI_HEADER})
set(INPUT set(INPUT
${COMP_DIR}/engine/input/oismanager.cpp) ${COMP_DIR}/engine/input/oismanager.cpp)
set(INPUT_HEADER set(INPUT_HEADER
@ -171,13 +184,14 @@ file(GLOB INTERPRETER ${COMP_DIR}/interpreter/*.cpp)
file(GLOB INTERPRETER_HEADER ${COMP_DIR}/interpreter/*.hpp) file(GLOB INTERPRETER_HEADER ${COMP_DIR}/interpreter/*.hpp)
source_group(components\\interpreter FILES ${INTERPRETER} ${INTERPRETER_HEADER}) source_group(components\\interpreter FILES ${INTERPRETER} ${INTERPRETER_HEADER})
set(COMPONENTS ${BSA} ${NIF} ${NIFOGRE} ${ESM_STORE} ${OGRE} ${INPUT} ${MISC} set(COMPONENTS ${BSA} ${NIF} ${NIFOGRE} ${ESM_STORE} ${OGRE} ${INPUT} ${MISC}
${EGUI}
${COMMANDSERVER} ${COMMANDSERVER}
${COMPILER} ${COMPILER}
${INTERPRETER}) ${INTERPRETER})
set(COMPONENTS_HEADER ${BSA_HEADER} ${NIF_HEADER} ${NIFOGRE_HEADER} ${ESM_STORE_HEADER} set(COMPONENTS_HEADER ${BSA_HEADER} ${NIF_HEADER} ${NIFOGRE_HEADER} ${ESM_STORE_HEADER}
${ESM_HEADER} ${OGRE_HEADER} ${INPUT_HEADER} ${MISC_HEADER} ${COMPILER_HEADER} ${ESM_HEADER} ${OGRE_HEADER} ${INPUT_HEADER} ${MISC_HEADER} ${COMPILER_HEADER}
${INTERPRETER_HEADER}) ${INTERPRETER_HEADER} ${EGUI_HEADER} ${MWGUI_HEADER})
# source directory: libs # source directory: libs

2
apps/mygui_dev/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
old
run.sh

View file

@ -2,6 +2,7 @@ add_executable(mygui_test
main.cpp main.cpp
${BSA} ${BSA_HEADER} ${BSA} ${BSA_HEADER}
${OGRE} ${OGRE_HEADER} ${OGRE} ${OGRE_HEADER}
${EGUI} ${EGUI_HEADER}
) )
target_link_libraries(mygui_test target_link_libraries(mygui_test
${OGRE_LIBRARIES} ${OGRE_LIBRARIES}

View file

@ -1,14 +1,12 @@
#include <iostream> #include <iostream>
#include <string>
#include <vector>
using namespace std; using namespace std;
#include "manager.hpp" #include <components/engine/gui/manager.hpp>
#include "layout.hpp" #include <components/mw_gui/mw_layouts.hpp>
#include "mw_layouts.hpp"
#include <components/engine/ogre/renderer.hpp> #include <components/engine/ogre/renderer.hpp>
#include <OgreResourceGroupManager.h> #include <OgreResourceGroupManager.h>
#include <OgreRenderWindow.h>
#include <components/bsa/bsa_archive.hpp> #include <components/bsa/bsa_archive.hpp>
@ -26,7 +24,7 @@ struct Listener : public Ogre::FrameListener
total += evt.timeSinceLastFrame; total += evt.timeSinceLastFrame;
// Countdown to exit // Countdown to exit
const int MAX = 5; const int MAX = 4;
if(total >= step) if(total >= step)
{ {
step++; step++;

View file

@ -1,58 +0,0 @@
#ifndef ENGINE_MYGUI_MANAGER_H
#define ENGINE_MYGUI_MANAGER_H
#include <assert.h>
#include <MyGUI.h>
#include <MyGUI_OgrePlatform.h>
namespace GUI
{
class MyGUIManager
{
MyGUI::OgrePlatform *mPlatform;
MyGUI::Gui *mGui;
public:
MyGUIManager() : mPlatform(NULL), mGui(NULL) {}
MyGUIManager(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool logging=false)
{ setup(wnd,mgr,logging); }
~MyGUIManager() { shutdown(); }
void setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool logging=false)
{
assert(wnd);
assert(mgr);
using namespace MyGUI;
// Enable/disable MyGUI logging to stdout. (Logging to MyGUI.log
// is still enabled.) In order to do this we have to initialize
// the log manager before the main gui system itself, otherwise
// the main object will get the chance to spit out a few messages
// before we can able to disable it.
LogManager::initialise();
LogManager::setSTDOutputEnabled(logging);
// Set up OGRE platform. We might make this more generic later.
mPlatform = new OgrePlatform();
mPlatform->initialise(wnd, mgr);
// Create GUI
mGui = new Gui();
mGui->initialise();
}
void shutdown()
{
if(mGui) delete mGui;
if(mPlatform)
{
mPlatform->shutdown();
delete mPlatform;
}
mGui = NULL;
mPlatform = NULL;
}
};
}
#endif

View file

@ -70,11 +70,6 @@ namespace GUI
void shutdown() void shutdown()
{ {
for (VectorBasePtr::iterator iter=mListBase.begin(); iter!=mListBase.end(); ++iter) {
delete (*iter);
}
mListBase.clear();
MyGUI::LayoutManager::getInstance().unloadLayout(mListWindowRoot); MyGUI::LayoutManager::getInstance().unloadLayout(mListWindowRoot);
mListWindowRoot.clear(); mListWindowRoot.clear();
} }
@ -118,8 +113,6 @@ namespace GUI
std::string mPrefix; std::string mPrefix;
std::string mLayoutName; std::string mLayoutName;
MyGUI::VectorWidgetPtr mListWindowRoot; MyGUI::VectorWidgetPtr mListWindowRoot;
typedef std::vector<Layout*> VectorBasePtr;
VectorBasePtr mListBase;
}; };
} }
#endif #endif

View file

@ -0,0 +1,43 @@
#include <MyGUI.h>
#include <MyGUI_OgrePlatform.h>
#include <assert.h>
#include "manager.hpp"
using namespace GUI;
void MyGUIManager::setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool logging)
{
assert(wnd);
assert(mgr);
using namespace MyGUI;
// Enable/disable MyGUI logging to stdout. (Logging to MyGUI.log is
// still enabled.) In order to do this we have to initialize the log
// manager before the main gui system itself, otherwise the main
// object will get the chance to spit out a few messages before we
// can able to disable it.
LogManager::initialise();
LogManager::setSTDOutputEnabled(logging);
// Set up OGRE platform. We might make this more generic later.
mPlatform = new OgrePlatform();
mPlatform->initialise(wnd, mgr);
// Create GUI
mGui = new Gui();
mGui->initialise();
}
void MyGUIManager::shutdown()
{
if(mGui) delete mGui;
if(mPlatform)
{
mPlatform->shutdown();
delete mPlatform;
}
mGui = NULL;
mPlatform = NULL;
}

View file

@ -0,0 +1,33 @@
#ifndef ENGINE_MYGUI_MANAGER_H
#define ENGINE_MYGUI_MANAGER_H
namespace MyGUI
{
class OgrePlatform;
class Gui;
}
namespace Ogre
{
class RenderWindow;
class SceneManager;
}
namespace GUI
{
class MyGUIManager
{
MyGUI::OgrePlatform *mPlatform;
MyGUI::Gui *mGui;
public:
MyGUIManager() : mPlatform(NULL), mGui(NULL) {}
MyGUIManager(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool logging=false)
{ setup(wnd,mgr,logging); }
~MyGUIManager() { shutdown(); }
void setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool logging=false);
void shutdown();
};
}
#endif

View file

@ -1,7 +1,20 @@
#ifndef MWGUI_LAYOUTS_H #ifndef MWGUI_LAYOUTS_H
#define MWGUI_LAYOUTS_H #define MWGUI_LAYOUTS_H
#include "layout.hpp" #include <components/engine/gui/layout.hpp>
/*
This file contains classes corresponding to all the window layouts
defined in resources/mygui/ *.xml.
Each class inherites GUI::Layout and loads the XML file, and
provides some helper functions to manipulate the elements of the
window.
The windows are never created or destroyed (except at startup and
shutdown), they are only hid. You can control visibility with
setVisible().
*/
namespace MWGUI namespace MWGUI
{ {