1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-19 22:23:51 +00:00

handling down a reference to Data and the undo stack to the creators

This commit is contained in:
Marc Zinnschlag 2013-07-27 13:28:12 +02:00
parent fee748d4b5
commit f93af52486
7 changed files with 29 additions and 13 deletions

View file

@ -6,7 +6,8 @@ CSVWorld::Creator:: ~Creator() {}
CSVWorld::CreatorFactoryBase::~CreatorFactoryBase() {}
CSVWorld::Creator *CSVWorld::NullCreatorFactory::makeCreator() const
CSVWorld::Creator *CSVWorld::NullCreatorFactory::makeCreator (CSMWorld::Data& data,
QUndoStack& undoStack) const
{
return 0;
}

View file

@ -3,6 +3,13 @@
#include <QWidget>
class QUndoStack;
namespace CSMWorld
{
class Data;
}
namespace CSVWorld
{
/// \brief Record creator UI base class
@ -28,7 +35,7 @@ namespace CSVWorld
virtual ~CreatorFactoryBase();
virtual Creator *makeCreator() const = 0;
virtual Creator *makeCreator (CSMWorld::Data& data, QUndoStack& undoStack) const = 0;
///< The ownership of the returned Creator is transferred to the caller.
///
/// \note The function can return a 0-pointer, which means no UI for creating/deleting
@ -40,7 +47,7 @@ namespace CSVWorld
{
public:
virtual Creator *makeCreator() const;
virtual Creator *makeCreator (CSMWorld::Data& data, QUndoStack& undoStack) const;
///< The ownership of the returned Creator is transferred to the caller.
///
/// \note The function always returns 0.
@ -51,7 +58,7 @@ namespace CSVWorld
{
public:
virtual Creator *makeCreator() const;
virtual Creator *makeCreator (CSMWorld::Data& data, QUndoStack& undoStac) const;
///< The ownership of the returned Creator is transferred to the caller.
///
/// \note The function can return a 0-pointer, which means no UI for creating/deleting
@ -59,9 +66,9 @@ namespace CSVWorld
};
template<class CreatorT>
Creator *CreatorFactory<CreatorT>::makeCreator() const
Creator *CreatorFactory<CreatorT>::makeCreator (CSMWorld::Data& data, QUndoStack& undoStack) const
{
return new CreatorT;
return new CreatorT (data, undoStack);
}
}

View file

@ -5,7 +5,7 @@
#include <QPushButton>
#include <QLineEdit>
CSVWorld::GenericCreator::GenericCreator()
CSVWorld::GenericCreator::GenericCreator (CSMWorld::Data& data, QUndoStack& undoStack)
{
QHBoxLayout *layout = new QHBoxLayout;

View file

@ -11,7 +11,7 @@ namespace CSVWorld
public:
GenericCreator();
GenericCreator (CSMWorld::Data& data, QUndoStack& undoStack);
virtual void reset();
};

View file

@ -39,7 +39,8 @@ void CSVWorld::TableBottomBox::updateStatus()
}
}
CSVWorld::TableBottomBox::TableBottomBox (const CreatorFactoryBase& creatorFactory, QWidget *parent)
CSVWorld::TableBottomBox::TableBottomBox (const CreatorFactoryBase& creatorFactory,
CSMWorld::Data& data, QUndoStack& undoStack, QWidget *parent)
: QWidget (parent), mShowStatusBar (false), mCreating (false)
{
for (int i=0; i<4; ++i)
@ -59,7 +60,7 @@ CSVWorld::TableBottomBox::TableBottomBox (const CreatorFactoryBase& creatorFacto
setLayout (mLayout);
mCreator = creatorFactory.makeCreator();
mCreator = creatorFactory.makeCreator (data, undoStack);
mLayout->addWidget (mCreator);

View file

@ -6,6 +6,12 @@
class QLabel;
class QStackedLayout;
class QStatusBar;
class QUndoStack;
namespace CSMWorld
{
class Data;
}
namespace CSVWorld
{
@ -34,7 +40,8 @@ namespace CSVWorld
public:
TableBottomBox (const CreatorFactoryBase& creatorFactory, QWidget *parent = 0);
TableBottomBox (const CreatorFactoryBase& creatorFactory, CSMWorld::Data& data,
QUndoStack& undoStack, QWidget *parent = 0);
virtual ~TableBottomBox();

View file

@ -13,12 +13,12 @@ CSVWorld::TableSubView::TableSubView (const CSMWorld::UniversalId& id, CSMDoc::D
const CreatorFactoryBase& creatorFactory)
: SubView (id)
{
QVBoxLayout *layout = new QVBoxLayout;
layout->setContentsMargins (QMargins (0, 0, 0, 0));
layout->addWidget (mBottom = new TableBottomBox (creatorFactory, this), 0);
layout->addWidget (mBottom =
new TableBottomBox (creatorFactory, document.getData(), document.getUndoStack(), this), 0);
layout->insertWidget (0, mTable =
new Table (id, document.getData(), document.getUndoStack(), mBottom->canCreateAndDelete()), 2);