1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-06-20 04:41:32 +00:00

hid JournalWindow behind IJournalWindow interface, and put its entire

implementation, class definition and all, into journalwindow.cpp
This commit is contained in:
Nathan Jeffords 2013-01-13 13:03:11 -08:00
parent 6dbb53493b
commit 8dad04eef1
4 changed files with 137 additions and 126 deletions

View file

@ -5,6 +5,16 @@
#include "../mwbase/journal.hpp" #include "../mwbase/journal.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
#include <sstream>
#include <set>
#include <string>
#include <utility>
#include "windowbase.hpp"
#include "imagebutton.hpp"
using namespace MWGui;
namespace namespace
{ {
struct book struct book
@ -77,116 +87,135 @@ book formatText(std::string text,book mBook,int maxLine, int lineSize)
//std::string //std::string
} }
namespace
MWGui::JournalWindow::JournalWindow ()
: WindowBase("openmw_journal.layout")
, mPageNumber(0)
{ {
mMainWidget->setVisible(false); struct JournalWindow : WindowBase, IJournalWindow
//setCoord(0,0,498, 342);
center();
getWidget(mLeftTextWidget, "LeftText");
getWidget(mRightTextWidget, "RightText");
getWidget(mPrevBtn, "PrevPageBTN");
mPrevBtn->eventMouseButtonClick += MyGUI::newDelegate(this,&MWGui::JournalWindow::notifyPrevPage);
getWidget(mNextBtn, "NextPageBTN");
mNextBtn->eventMouseButtonClick += MyGUI::newDelegate(this,&MWGui::JournalWindow::notifyNextPage);
//MyGUI::ItemBox* list = new MyGUI::ItemBox();
//list->addItem("qaq","aqzazaz");
//mScrollerWidget->addChildItem(list);
//mScrollerWidget->addItem("dserzt",MyGUI::UString("fedgdfg"));
//mEditWidget->addText("ljblsxdvdsfvgedfvdfvdkjfghldfjgn sdv,nhsxl;vvn lklksbvlksb lbsdflkbdSLKJGBLskdhbvl<kbvlqksbgkqsjhdvb");
//mEditWidget->show();
//mEditWidget->setEditStatic(true);
mLeftTextWidget->addText("left texxxt ");
mLeftTextWidget->setEditReadOnly(true);
mRightTextWidget->setEditReadOnly(true);
mRightTextWidget->setEditStatic(true);
mLeftTextWidget->setEditStatic(true);
mRightTextWidget->addText("Right texxt ");
//std::list<std::string> list = formatText("OpenMW rgh dsfg sqef srg ZT uzql n ZLIEHRF LQSJH GLOIjf qjfmj hslkdgn jlkdjhg qlr isgli shli uhs fiuh qksf cg ksjnf lkqsnbf ksbf sbfkl zbf kuyzflkj sbgdfkj zlfh ozhjfmo hzmfh lizuf rty qzt ezy tkyEZT RYYJ DG fgh is an open-source implementation of the game engine found in the game Morrowind. This is a dumb test text msodjbg smojg smoig fiiinnn");
//std::list<std::string> list = formatText();
//displayLeftText(list.front());
}
void MWGui::JournalWindow::open()
{
mPageNumber = 0;
if(MWBase::Environment::get().getJournal()->begin()!=MWBase::Environment::get().getJournal()->end())
{ {
book journal; MyGUI::EditPtr mLeftTextWidget;
journal.endLine = 0; MyGUI::EditPtr mRightTextWidget;
MWGui::ImageButton* mPrevBtn;
MWGui::ImageButton* mNextBtn;
std::vector<std::string> mLeftPages;
std::vector<std::string> mRightPages;
int mPageNumber; //store the number of the current left page
for(std::deque<MWDialogue::StampedJournalEntry>::const_iterator it = MWBase::Environment::get().getJournal()->begin();it!=MWBase::Environment::get().getJournal()->end();++it) JournalWindow ()
: WindowBase("openmw_journal.layout")
, mPageNumber(0)
{ {
std::string a = it->getText(MWBase::Environment::get().getWorld()->getStore()); mMainWidget->setVisible(false);
journal = formatText(a,journal,10,17); //setCoord(0,0,498, 342);
journal.endLine = journal.endLine +1; center();
journal.pages.back() = journal.pages.back() + std::string("\n");
getWidget(mLeftTextWidget, "LeftText");
getWidget(mRightTextWidget, "RightText");
getWidget(mPrevBtn, "PrevPageBTN");
mPrevBtn->eventMouseButtonClick += MyGUI::newDelegate(this,&JournalWindow::notifyPrevPage);
getWidget(mNextBtn, "NextPageBTN");
mNextBtn->eventMouseButtonClick += MyGUI::newDelegate(this,&JournalWindow::notifyNextPage);
mLeftTextWidget->setEditReadOnly(true);
mRightTextWidget->setEditReadOnly(true);
mRightTextWidget->setEditStatic(true);
mLeftTextWidget->setEditStatic(true);
} }
//std::string a = MWBase::Environment::get().getJournal()->begin()->getText(MWBase::Environment::get().getWorld()->getStore());
//std::list<std::string> journal = formatText(a,10,20,1); void close()
bool left = true;
for(std::list<std::string>::iterator it = journal.pages.begin(); it != journal.pages.end();++it)
{ {
if(left) MWBase::Environment::get().getSoundManager()->playSound ("book close", 1.0, 1.0);
}
void open()
{
mPageNumber = 0;
MWBase::Environment::get().getSoundManager()->playSound ("book open", 1.0, 1.0);
if(MWBase::Environment::get().getJournal()->begin()!=MWBase::Environment::get().getJournal()->end())
{ {
mLeftPages.push_back(*it); book journal;
journal.endLine = 0;
for(std::deque<MWDialogue::StampedJournalEntry>::const_iterator it = MWBase::Environment::get().getJournal()->begin();it!=MWBase::Environment::get().getJournal()->end();++it)
{
std::string a = it->getText(MWBase::Environment::get().getWorld()->getStore());
journal = formatText(a,journal,10,17);
journal.endLine = journal.endLine +1;
journal.pages.back() = journal.pages.back() + std::string("\n");
}
//std::string a = MWBase::Environment::get().getJournal()->begin()->getText(MWBase::Environment::get().getWorld()->getStore());
//std::list<std::string> journal = formatText(a,10,20,1);
bool left = true;
for(std::list<std::string>::iterator it = journal.pages.begin(); it != journal.pages.end();++it)
{
if(left)
{
mLeftPages.push_back(*it);
}
else
{
mRightPages.push_back(*it);
}
left = !left;
}
if(!left) mRightPages.push_back("");
mPageNumber = mLeftPages.size()-1;
displayLeftText(mLeftPages[mPageNumber]);
displayRightText(mRightPages[mPageNumber]);
} }
else else
{ {
mRightPages.push_back(*it); //std::cout << MWBase::Environment::get().getJournal()->begin()->getText(MWBase::Environment::get().getWorld()->getStore());
} }
left = !left;
} }
if(!left) mRightPages.push_back("");
mPageNumber = mLeftPages.size()-1; void setVisible (bool newValue)
displayLeftText(mLeftPages[mPageNumber]); {
displayRightText(mRightPages[mPageNumber]); WindowBase::setVisible (newValue);
}
}
else void displayLeftText(std::string text)
{ {
//std::cout << MWBase::Environment::get().getJournal()->begin()->getText(MWBase::Environment::get().getWorld()->getStore()); mLeftTextWidget->eraseText(0,mLeftTextWidget->getTextLength());
} mLeftTextWidget->addText(text);
}
void displayRightText(std::string text)
{
mRightTextWidget->eraseText(0,mRightTextWidget->getTextLength());
mRightTextWidget->addText(text);
}
void notifyNextPage(MyGUI::Widget* _sender)
{
if(mPageNumber < int(mLeftPages.size())-1)
{
std::string nextSound = "book page2";
MWBase::Environment::get().getSoundManager()->playSound (nextSound, 1.0, 1.0);
mPageNumber = mPageNumber + 1;
displayLeftText(mLeftPages[mPageNumber]);
displayRightText(mRightPages[mPageNumber]);
}
}
void notifyPrevPage(MyGUI::Widget* _sender)
{
if(mPageNumber > 0)
{
std::string prevSound = "book page";
MWBase::Environment::get().getSoundManager()->playSound (prevSound, 1.0, 1.0);
mPageNumber = mPageNumber - 1;
displayLeftText(mLeftPages[mPageNumber]);
displayRightText(mRightPages[mPageNumber]);
}
}
};
} }
void MWGui::JournalWindow::displayLeftText(std::string text) // glue the implementation to the interface
{ IJournalWindow * MWGui::IJournalWindow::create () { return new JournalWindow (); }
mLeftTextWidget->eraseText(0,mLeftTextWidget->getTextLength());
mLeftTextWidget->addText(text);
}
void MWGui::JournalWindow::displayRightText(std::string text)
{
mRightTextWidget->eraseText(0,mRightTextWidget->getTextLength());
mRightTextWidget->addText(text);
}
void MWGui::JournalWindow::notifyNextPage(MyGUI::Widget* _sender)
{
if(mPageNumber < int(mLeftPages.size())-1)
{
std::string nextSound = "book page2";
MWBase::Environment::get().getSoundManager()->playSound (nextSound, 1.0, 1.0);
mPageNumber = mPageNumber + 1;
displayLeftText(mLeftPages[mPageNumber]);
displayRightText(mRightPages[mPageNumber]);
}
}
void MWGui::JournalWindow::notifyPrevPage(MyGUI::Widget* _sender)
{
if(mPageNumber > 0)
{
std::string prevSound = "book page";
MWBase::Environment::get().getSoundManager()->playSound (prevSound, 1.0, 1.0);
mPageNumber = mPageNumber - 1;
displayLeftText(mLeftPages[mPageNumber]);
displayRightText(mRightPages[mPageNumber]);
}
}

View file

@ -1,39 +1,21 @@
#ifndef MWGUI_JOURNAL_H #ifndef MWGUI_JOURNAL_H
#define MWGUI_JOURNAL_H #define MWGUI_JOURNAL_H
#include <string> namespace MWBase { class WindowManager; }
#include "windowbase.hpp"
#include "imagebutton.hpp"
namespace MWGui namespace MWGui
{ {
class JournalWindow : public WindowBase struct IJournalWindow
{ {
public: /// construct a new instance of the one JournalWindow implementation
JournalWindow(); static IJournalWindow * create ();
virtual void open();
private: /// destroy this instance of the JournalWindow implementation
void displayLeftText(std::string text); virtual ~IJournalWindow () {};
void displayRightText(std::string text);
/// show/hide the journal window
/** virtual void setVisible (bool newValue) = 0;
*Called when next/prev button is used.
*/
void notifyNextPage(MyGUI::Widget* _sender);
void notifyPrevPage(MyGUI::Widget* _sender);
MyGUI::EditBox* mLeftTextWidget;
MyGUI::EditBox* mRightTextWidget;
MWGui::ImageButton* mPrevBtn;
MWGui::ImageButton* mNextBtn;
std::vector<std::string> mLeftPages;
std::vector<std::string> mRightPages;
int mPageNumber; //store the number of the current left page
}; };
} }
#endif #endif

View file

@ -145,7 +145,7 @@ namespace MWGui
mMap = new MapWindow(cacheDir); mMap = new MapWindow(cacheDir);
mStatsWindow = new StatsWindow(); mStatsWindow = new StatsWindow();
mConsole = new Console(w,h, consoleOnlyScripts); mConsole = new Console(w,h, consoleOnlyScripts);
mJournal = new JournalWindow(); mJournal = IJournalWindow::create();
mMessageBoxManager = new MessageBoxManager(); mMessageBoxManager = new MessageBoxManager();
mInventoryWindow = new InventoryWindow(mDragAndDrop); mInventoryWindow = new InventoryWindow(mDragAndDrop);
mTradeWindow = new TradeWindow(); mTradeWindow = new TradeWindow();

View file

@ -51,7 +51,7 @@ namespace MWGui
class MainMenu; class MainMenu;
class StatsWindow; class StatsWindow;
class InventoryWindow; class InventoryWindow;
class JournalWindow; class IJournalWindow;
class CharacterCreation; class CharacterCreation;
class DragAndDrop; class DragAndDrop;
class ToolTips; class ToolTips;
@ -253,7 +253,7 @@ namespace MWGui
StatsWindow *mStatsWindow; StatsWindow *mStatsWindow;
MessageBoxManager *mMessageBoxManager; MessageBoxManager *mMessageBoxManager;
Console *mConsole; Console *mConsole;
JournalWindow* mJournal; IJournalWindow* mJournal;
DialogueWindow *mDialogueWindow; DialogueWindow *mDialogueWindow;
ContainerWindow *mContainerWindow; ContainerWindow *mContainerWindow;
DragAndDrop* mDragAndDrop; DragAndDrop* mDragAndDrop;