mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-30 07:36:46 +00:00
Add Topic/Journal Id completion to InfoCreator
This commit is contained in:
parent
a6734a0ea4
commit
581ba55db9
4 changed files with 36 additions and 6 deletions
|
@ -24,6 +24,7 @@ namespace
|
||||||
types[CSMWorld::ColumnBase::Display_Faction ] = CSMWorld::UniversalId::Type_Faction;
|
types[CSMWorld::ColumnBase::Display_Faction ] = CSMWorld::UniversalId::Type_Faction;
|
||||||
types[CSMWorld::ColumnBase::Display_GlobalVariable ] = CSMWorld::UniversalId::Type_Global;
|
types[CSMWorld::ColumnBase::Display_GlobalVariable ] = CSMWorld::UniversalId::Type_Global;
|
||||||
types[CSMWorld::ColumnBase::Display_Icon ] = CSMWorld::UniversalId::Type_Icon;
|
types[CSMWorld::ColumnBase::Display_Icon ] = CSMWorld::UniversalId::Type_Icon;
|
||||||
|
types[CSMWorld::ColumnBase::Display_Journal ] = CSMWorld::UniversalId::Type_Journal;
|
||||||
types[CSMWorld::ColumnBase::Display_Mesh ] = CSMWorld::UniversalId::Type_Mesh;
|
types[CSMWorld::ColumnBase::Display_Mesh ] = CSMWorld::UniversalId::Type_Mesh;
|
||||||
types[CSMWorld::ColumnBase::Display_Miscellaneous ] = CSMWorld::UniversalId::Type_Referenceable;
|
types[CSMWorld::ColumnBase::Display_Miscellaneous ] = CSMWorld::UniversalId::Type_Referenceable;
|
||||||
types[CSMWorld::ColumnBase::Display_Npc ] = CSMWorld::UniversalId::Type_Referenceable;
|
types[CSMWorld::ColumnBase::Display_Npc ] = CSMWorld::UniversalId::Type_Referenceable;
|
||||||
|
@ -37,6 +38,7 @@ namespace
|
||||||
types[CSMWorld::ColumnBase::Display_Spell ] = CSMWorld::UniversalId::Type_Spell;
|
types[CSMWorld::ColumnBase::Display_Spell ] = CSMWorld::UniversalId::Type_Spell;
|
||||||
types[CSMWorld::ColumnBase::Display_Static ] = CSMWorld::UniversalId::Type_Referenceable;
|
types[CSMWorld::ColumnBase::Display_Static ] = CSMWorld::UniversalId::Type_Referenceable;
|
||||||
types[CSMWorld::ColumnBase::Display_Texture ] = CSMWorld::UniversalId::Type_Texture;
|
types[CSMWorld::ColumnBase::Display_Texture ] = CSMWorld::UniversalId::Type_Texture;
|
||||||
|
types[CSMWorld::ColumnBase::Display_Topic ] = CSMWorld::UniversalId::Type_Topic;
|
||||||
types[CSMWorld::ColumnBase::Display_Weapon ] = CSMWorld::UniversalId::Type_Referenceable;
|
types[CSMWorld::ColumnBase::Display_Weapon ] = CSMWorld::UniversalId::Type_Referenceable;
|
||||||
|
|
||||||
return types;
|
return types;
|
||||||
|
|
|
@ -9,10 +9,13 @@
|
||||||
|
|
||||||
#include <components/misc/stringops.hpp>
|
#include <components/misc/stringops.hpp>
|
||||||
|
|
||||||
|
#include "../../model/doc/document.hpp"
|
||||||
|
|
||||||
#include "../../model/world/data.hpp"
|
#include "../../model/world/data.hpp"
|
||||||
#include "../../model/world/commands.hpp"
|
#include "../../model/world/commands.hpp"
|
||||||
#include "../../model/world/columns.hpp"
|
#include "../../model/world/columns.hpp"
|
||||||
#include "../../model/world/idtable.hpp"
|
#include "../../model/world/idtable.hpp"
|
||||||
|
#include "../../model/world/idcompletionmanager.hpp"
|
||||||
|
|
||||||
std::string CSVWorld::InfoCreator::getId() const
|
std::string CSVWorld::InfoCreator::getId() const
|
||||||
{
|
{
|
||||||
|
@ -39,13 +42,20 @@ void CSVWorld::InfoCreator::configureCreateCommand (CSMWorld::CreateCommand& com
|
||||||
}
|
}
|
||||||
|
|
||||||
CSVWorld::InfoCreator::InfoCreator (CSMWorld::Data& data, QUndoStack& undoStack,
|
CSVWorld::InfoCreator::InfoCreator (CSMWorld::Data& data, QUndoStack& undoStack,
|
||||||
const CSMWorld::UniversalId& id)
|
const CSMWorld::UniversalId& id, CSMWorld::IdCompletionManager& completionManager)
|
||||||
: GenericCreator (data, undoStack, id)
|
: GenericCreator (data, undoStack, id)
|
||||||
{
|
{
|
||||||
QLabel *label = new QLabel ("Topic", this);
|
QLabel *label = new QLabel ("Topic", this);
|
||||||
insertBeforeButtons (label, false);
|
insertBeforeButtons (label, false);
|
||||||
|
|
||||||
mTopic = new QLineEdit (this);
|
mTopic = new QLineEdit (this);
|
||||||
|
CSMWorld::ColumnBase::Display displayType = CSMWorld::ColumnBase::Display_Topic;
|
||||||
|
if (id.getType() == CSMWorld::UniversalId::Type_JournalInfo || // For Dialogue SubView
|
||||||
|
id.getType() == CSMWorld::UniversalId::Type_JournalInfos) // For Table SubView
|
||||||
|
{
|
||||||
|
displayType = CSMWorld::ColumnBase::Display_Journal;
|
||||||
|
}
|
||||||
|
mTopic->setCompleter(completionManager.getCompleter(displayType).get());
|
||||||
insertBeforeButtons (mTopic, true);
|
insertBeforeButtons (mTopic, true);
|
||||||
|
|
||||||
setManualEditing (false);
|
setManualEditing (false);
|
||||||
|
@ -100,3 +110,12 @@ void CSVWorld::InfoCreator::topicChanged()
|
||||||
{
|
{
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CSVWorld::Creator *CSVWorld::InfoCreatorFactory::makeCreator(CSMDoc::Document& document,
|
||||||
|
const CSMWorld::UniversalId& id) const
|
||||||
|
{
|
||||||
|
return new InfoCreator(document.getData(),
|
||||||
|
document.getUndoStack(),
|
||||||
|
id,
|
||||||
|
document.getIdCompletionManager());
|
||||||
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ class QLineEdit;
|
||||||
namespace CSMWorld
|
namespace CSMWorld
|
||||||
{
|
{
|
||||||
class InfoCollection;
|
class InfoCollection;
|
||||||
|
class IdCompletionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace CSVWorld
|
namespace CSVWorld
|
||||||
|
@ -25,7 +26,7 @@ namespace CSVWorld
|
||||||
public:
|
public:
|
||||||
|
|
||||||
InfoCreator (CSMWorld::Data& data, QUndoStack& undoStack,
|
InfoCreator (CSMWorld::Data& data, QUndoStack& undoStack,
|
||||||
const CSMWorld::UniversalId& id);
|
const CSMWorld::UniversalId& id, CSMWorld::IdCompletionManager& completionManager);
|
||||||
|
|
||||||
virtual void cloneMode (const std::string& originId,
|
virtual void cloneMode (const std::string& originId,
|
||||||
const CSMWorld::UniversalId::Type type);
|
const CSMWorld::UniversalId::Type type);
|
||||||
|
@ -43,6 +44,14 @@ namespace CSVWorld
|
||||||
|
|
||||||
void topicChanged();
|
void topicChanged();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class InfoCreatorFactory : public CreatorFactoryBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
virtual Creator *makeCreator (CSMDoc::Document& document, const CSMWorld::UniversalId& id) const;
|
||||||
|
///< The ownership of the returned Creator is transferred to the caller.
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -68,10 +68,10 @@ void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
||||||
new CSVDoc::SubViewFactoryWithCreator<TableSubView, JournalCreatorFactory>);
|
new CSVDoc::SubViewFactoryWithCreator<TableSubView, JournalCreatorFactory>);
|
||||||
|
|
||||||
manager.add (CSMWorld::UniversalId::Type_TopicInfos,
|
manager.add (CSMWorld::UniversalId::Type_TopicInfos,
|
||||||
new CSVDoc::SubViewFactoryWithCreator<TableSubView, CreatorFactory<InfoCreator> >);
|
new CSVDoc::SubViewFactoryWithCreator<TableSubView, InfoCreatorFactory>);
|
||||||
|
|
||||||
manager.add (CSMWorld::UniversalId::Type_JournalInfos,
|
manager.add (CSMWorld::UniversalId::Type_JournalInfos,
|
||||||
new CSVDoc::SubViewFactoryWithCreator<TableSubView, CreatorFactory<InfoCreator> >);
|
new CSVDoc::SubViewFactoryWithCreator<TableSubView, InfoCreatorFactory>);
|
||||||
|
|
||||||
// Subviews for resources tables
|
// Subviews for resources tables
|
||||||
manager.add (CSMWorld::UniversalId::Type_Meshes,
|
manager.add (CSMWorld::UniversalId::Type_Meshes,
|
||||||
|
@ -153,10 +153,10 @@ void CSVWorld::addSubViewFactories (CSVDoc::SubViewFactoryManager& manager)
|
||||||
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, CreatorFactory<CellCreator> > (false));
|
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, CreatorFactory<CellCreator> > (false));
|
||||||
|
|
||||||
manager.add (CSMWorld::UniversalId::Type_JournalInfo,
|
manager.add (CSMWorld::UniversalId::Type_JournalInfo,
|
||||||
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, CreatorFactory<InfoCreator> > (false));
|
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, InfoCreatorFactory> (false));
|
||||||
|
|
||||||
manager.add (CSMWorld::UniversalId::Type_TopicInfo,
|
manager.add (CSMWorld::UniversalId::Type_TopicInfo,
|
||||||
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, CreatorFactory<InfoCreator> >(false));
|
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, InfoCreatorFactory>(false));
|
||||||
|
|
||||||
manager.add (CSMWorld::UniversalId::Type_Topic,
|
manager.add (CSMWorld::UniversalId::Type_Topic,
|
||||||
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, TopicCreatorFactory> (false));
|
new CSVDoc::SubViewFactoryWithCreator<DialogueSubView, TopicCreatorFactory> (false));
|
||||||
|
|
Loading…
Reference in a new issue