1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#include "imodule.h"
#include "itextstream.h"
#include "ieclass.h"
#include "iscenegraph.h"
#include "icommandsystem.h"
#include "ui/imenumanager.h"
#include "iregistry.h"
#include "iselection.h"
#include "iradiant.h"
#include "iundo.h"
#include "i18n.h"
#include "selectionlib.h"
#include "StimResponseEditor.h"
#include "ResponseEffectTypes.h"
/**
* Module to register the menu commands for the Stim/Response Editor class.
*/
class StimResponseModule :
public RegisterableModule
{
public:
// RegisterableModule implementation
virtual const std::string& getName() const override
{
static std::string _name("StimResponseEditor");
return _name;
}
const StringSet& getDependencies() const override
{
static StringSet _dependencies
{
MODULE_MENUMANAGER,
MODULE_COMMANDSYSTEM
};
return _dependencies;
}
void initialiseModule(const IApplicationContext& ctx) override
{
// Add the callback event
GlobalCommandSystem().addWithCheck("StimResponseEditor",
cmd::noArgs(ui::StimResponseEditor::ShowDialog),
[] { return selection::pred::haveEntitiesExact(1); });
// Add the menu item
GlobalMenuManager().add("main/entity", // menu location path
"StimResponse", // name
ui::menu::ItemType::Item, // type
_("Stim/Response..."), // caption
"stimresponse.png", // icon
"StimResponseEditor"); // event name
}
void shutdownModule() override
{
// Free any resources, the effect types map holds eclass pointers
ResponseEffectTypes::Clear();
}
};
typedef std::shared_ptr<StimResponseModule> StimResponseModulePtr;
extern "C" void DARKRADIANT_DLLEXPORT RegisterModule(IModuleRegistry& registry)
{
module::performDefaultInitialisation(registry);
registry.registerModule(StimResponseModulePtr(new StimResponseModule));
}
|