Skip to content

Commit f8787c3

Browse files
committed
Add event command factory collaborator
1 parent 2338829 commit f8787c3

File tree

13 files changed

+76
-39
lines changed

13 files changed

+76
-39
lines changed

src/Core/Application/Application.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ NetworkEditorControllerHandle Application::controller()
168168
ExecutionStrategyFactoryHandle exe(new DesktopExecutionStrategyFactory(parameters()->threadMode()));
169169
AlgorithmFactoryHandle algoFactory(new HardCodedAlgorithmFactory);
170170
ReexecuteStrategyFactoryHandle reexFactory(new DynamicReexecutionStrategyFactory(parameters()->reexecuteMode()));
171-
private_->controller_.reset(new NetworkEditorController(moduleFactory, sf, exe, algoFactory, reexFactory, private_->cmdFactory_));
171+
NetworkEventCommandFactoryHandle eventCmdFactory(new NullCommandFactory);
172+
private_->controller_.reset(new NetworkEditorController(moduleFactory, sf, exe, algoFactory, reexFactory, private_->cmdFactory_, eventCmdFactory));
172173

173174
/// @todo: sloppy way to initialize this but similar to v4, oh well
174175
IEPluginManager::Initialize();

src/Core/Command/Command.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,18 @@ namespace SCIRun
9393
QuitCommand
9494
};
9595

96+
enum class NetworkEventCommands
97+
{
98+
PostModuleAdd
99+
//TODO: add more based on user request
100+
};
101+
102+
class SCISHARE NullCommand : public ParameterizedCommand
103+
{
104+
public:
105+
virtual bool execute() override { return true; }
106+
};
107+
96108
SCISHARE std::string mostRecentFileCode();
97109
}
98110
}

src/Core/Command/CommandFactory.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,9 @@
2828

2929
#include <Core/Command/CommandFactory.h>
3030

31-
//using namespace SCIRun::Core::Commands;
31+
using namespace SCIRun::Core::Commands;
32+
33+
CommandHandle NullCommandFactory::create(NetworkEventCommands) const
34+
{
35+
return boost::make_shared<NullCommand>();
36+
}

src/Core/Command/CommandFactory.h

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,30 @@ namespace SCIRun
3939
{
4040
namespace Commands
4141
{
42-
class SCISHARE GlobalCommandFactory : boost::noncopyable
42+
template <typename CommandTypeEnum>
43+
class CommandFactory : boost::noncopyable
4344
{
4445
public:
45-
virtual ~GlobalCommandFactory() {}
46-
virtual CommandHandle create(GlobalCommands type) const = 0;
46+
virtual ~CommandFactory() {}
47+
virtual CommandHandle create(CommandTypeEnum type) const = 0;
48+
};
49+
50+
class SCISHARE GlobalCommandFactory : public CommandFactory<GlobalCommands>
51+
{
52+
};
53+
54+
class SCISHARE NetworkEventCommandFactory : public CommandFactory<NetworkEventCommands>
55+
{
56+
};
57+
58+
class SCISHARE NullCommandFactory : public NetworkEventCommandFactory
59+
{
60+
public:
61+
virtual CommandHandle create(NetworkEventCommands) const override;
4762
};
4863

4964
typedef boost::shared_ptr<GlobalCommandFactory> GlobalCommandFactoryHandle;
65+
typedef boost::shared_ptr<NetworkEventCommandFactory> NetworkEventCommandFactoryHandle;
5066
}
5167
}
5268
}

src/Dataflow/Engine/Controller/NetworkEditorController.cc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,16 @@ using namespace SCIRun::Core::Commands;
6464
using namespace SCIRun::Core::Thread;
6565

6666
NetworkEditorController::NetworkEditorController(ModuleFactoryHandle mf, ModuleStateFactoryHandle sf, ExecutionStrategyFactoryHandle executorFactory,
67-
AlgorithmFactoryHandle af, ReexecuteStrategyFactoryHandle reex, GlobalCommandFactoryHandle cmdFactory, NetworkEditorSerializationManager* nesm) :
67+
AlgorithmFactoryHandle af, ReexecuteStrategyFactoryHandle reex, GlobalCommandFactoryHandle cmdFactory,
68+
NetworkEventCommandFactoryHandle eventCmdFactory, NetworkEditorSerializationManager* nesm) :
6869
theNetwork_(new Network(mf, sf, af, reex)),
6970
moduleFactory_(mf),
7071
stateFactory_(sf),
7172
algoFactory_(af),
7273
reexFactory_(reex),
7374
executorFactory_(executorFactory),
7475
cmdFactory_(cmdFactory),
76+
eventCmdFactory_(eventCmdFactory ? eventCmdFactory : boost::make_shared<NullCommandFactory>()),
7577
serializationManager_(nesm),
7678
signalSwitch_(true)
7779
{
@@ -225,12 +227,15 @@ ModuleHandle NetworkEditorController::addModule(const ModuleLookupInfo& info)
225227
/*emit*/ moduleAdded_(info.module_name_, realModule, dummy);
226228
}
227229
printNetwork();
230+
231+
eventCmdFactory_->create(NetworkEventCommands::PostModuleAdd)->execute();
232+
228233
return realModule;
229234
}
230235

231236
ModuleHandle NetworkEditorController::addModuleImpl(const ModuleLookupInfo& info)
232237
{
233-
ModuleHandle realModule = theNetwork_->add_module(info);
238+
auto realModule = theNetwork_->add_module(info);
234239
if (realModule) /// @todo: mock network throws here due to null, need to have it return a mock module.
235240
{
236241
realModule->addPortConnection(connectPortAdded(boost::bind(&ModuleInterface::portAddedSlot, realModule.get(), _1, _2)));
@@ -258,7 +263,7 @@ void NetworkEditorController::interruptModule(const ModuleId& id)
258263
ModuleHandle NetworkEditorController::duplicateModule(const ModuleHandle& module)
259264
{
260265
ENSURE_NOT_NULL(module, "Cannot duplicate null module");
261-
ModuleId id(module->get_id());
266+
auto id(module->get_id());
262267
auto newModule = addModuleImpl(module->get_info());
263268
newModule->set_state(module->get_state()->clone());
264269
static ModuleCounter dummy;
@@ -446,7 +451,7 @@ void NetworkEditorController::loadNetwork(const NetworkFileHandle& xml)
446451
ModuleCounter modulesDone;
447452
for (size_t i = 0; i < theNetwork_->nmodules(); ++i)
448453
{
449-
ModuleHandle module = theNetwork_->module(i);
454+
auto module = theNetwork_->module(i);
450455
moduleAdded_(module->get_module_name(), module, modulesDone);
451456
networkDoneLoading_(static_cast<int>(i));
452457
}
@@ -457,7 +462,7 @@ void NetworkEditorController::loadNetwork(const NetworkFileHandle& xml)
457462
//They need to be signaled again after the modules are signaled to alert the GUI. Hence the disabling of DPM
458463
for (const ConnectionDescription& cd : theNetwork_->connections())
459464
{
460-
ConnectionId id = ConnectionId::create(cd);
465+
auto id = ConnectionId::create(cd);
461466
connectionAdded_(cd);
462467
}
463468
}

src/Dataflow/Engine/Controller/NetworkEditorController.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ namespace Engine {
9191
Core::Algorithms::AlgorithmFactoryHandle algoFactory,
9292
Networks::ReexecuteStrategyFactoryHandle reexFactory,
9393
Core::Commands::GlobalCommandFactoryHandle cmdFactory,
94+
Core::Commands::NetworkEventCommandFactoryHandle eventCmdFactory,
9495
Networks::NetworkEditorSerializationManager* nesm = nullptr);
9596
NetworkEditorController(Networks::NetworkHandle network, ExecutionStrategyFactoryHandle executorFactory, Networks::NetworkEditorSerializationManager* nesm = nullptr);
9697
~NetworkEditorController();
@@ -174,6 +175,7 @@ namespace Engine {
174175
ExecutionStrategyHandle currentExecutor_;
175176
ExecutionStrategyFactoryHandle executorFactory_;
176177
Core::Commands::GlobalCommandFactoryHandle cmdFactory_;
178+
Core::Commands::NetworkEventCommandFactoryHandle eventCmdFactory_;
177179
Networks::NetworkEditorSerializationManager* serializationManager_;
178180

179181
ExecutionQueueManager executionManager_;

src/Dataflow/Engine/Python/Tests/NetworkEditorPythonAPITests.cc

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class PythonControllerFunctionalTests : public ModuleTest
5959
TEST_F(PythonControllerFunctionalTests, CanAddModule)
6060
{
6161
ModuleFactoryHandle mf(new HardCodedModuleFactory);
62-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
62+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
6363
initModuleParameters(false);
6464

6565
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -75,7 +75,7 @@ TEST_F(PythonControllerFunctionalTests, CanAddModule)
7575
TEST_F(PythonControllerFunctionalTests, CanAddMultipleModule)
7676
{
7777
ModuleFactoryHandle mf(new HardCodedModuleFactory);
78-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
78+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
7979
initModuleParameters(false);
8080

8181
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -91,7 +91,7 @@ TEST_F(PythonControllerFunctionalTests, CanChangeModuleState)
9191
{
9292
ModuleFactoryHandle mf(new HardCodedModuleFactory);
9393
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
94-
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr);
94+
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr, nullptr);
9595
initModuleParameters(false);
9696

9797
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -111,7 +111,7 @@ TEST_F(PythonControllerFunctionalTests, CanChangeModuleState)
111111
TEST_F(PythonControllerFunctionalTests, CanConnectModules)
112112
{
113113
ModuleFactoryHandle mf(new HardCodedModuleFactory);
114-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
114+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
115115
initModuleParameters(false);
116116

117117
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -133,7 +133,7 @@ TEST_F(PythonControllerFunctionalTests, DISABLED_CanExecuteNetwork)
133133
ModuleFactoryHandle mf(new HardCodedModuleFactory);
134134
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
135135
ExecutionStrategyFactoryHandle exe(new DesktopExecutionStrategyFactory(boost::none));
136-
NetworkEditorController controller(mf, sf, exe, nullptr, nullptr, nullptr);
136+
NetworkEditorController controller(mf, sf, exe, nullptr, nullptr, nullptr, nullptr);
137137
initModuleParameters(false);
138138

139139
PythonInterpreter::Instance().run_string("m1 = scirun_add_module(\"CreateLatVol\")");
@@ -149,7 +149,7 @@ TEST_F(PythonControllerFunctionalTests, DISABLED_CanExecuteNetwork)
149149
TEST_F(PythonControllerFunctionalTests, CanAddModuleWithStaticFunction)
150150
{
151151
ModuleFactoryHandle mf(new HardCodedModuleFactory);
152-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
152+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
153153
initModuleParameters(false);
154154

155155
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -165,7 +165,7 @@ TEST_F(PythonControllerFunctionalTests, CanAddModuleWithStaticFunction)
165165
TEST_F(PythonControllerFunctionalTests, CanAddMultipleModulesWithStaticFunction)
166166
{
167167
ModuleFactoryHandle mf(new HardCodedModuleFactory);
168-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
168+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
169169
initModuleParameters(false);
170170

171171
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -181,7 +181,7 @@ TEST_F(PythonControllerFunctionalTests, CanGetModuleStateWithStaticFunction)
181181
{
182182
ModuleFactoryHandle mf(new HardCodedModuleFactory);
183183
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
184-
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr);
184+
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr, nullptr);
185185
initModuleParameters(false);
186186

187187
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -203,7 +203,7 @@ TEST_F(PythonControllerFunctionalTests, CanChangeModuleStateWithStaticFunction)
203203
{
204204
ModuleFactoryHandle mf(new HardCodedModuleFactory);
205205
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
206-
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr);
206+
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr, nullptr);
207207
initModuleParameters(false);
208208

209209
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -224,7 +224,7 @@ TEST_F(PythonControllerFunctionalTests, CanChangeModuleStateWithStaticFunction)
224224
TEST_F(PythonControllerFunctionalTests, CanConnectModulesWithStaticFunction)
225225
{
226226
ModuleFactoryHandle mf(new HardCodedModuleFactory);
227-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
227+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
228228
initModuleParameters(false);
229229

230230
ASSERT_EQ(0, controller.getNetwork()->nmodules());
@@ -243,7 +243,7 @@ TEST_F(PythonControllerFunctionalTests, CanConnectModulesWithStaticFunction)
243243
TEST_F(PythonControllerFunctionalTests, CanDisconnectModulesWithStaticFunction)
244244
{
245245
ModuleFactoryHandle mf(new HardCodedModuleFactory);
246-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
246+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
247247
initModuleParameters(false);
248248

249249
ASSERT_EQ(0, controller.getNetwork()->nmodules());

src/Dataflow/Serialization/Network/Tests/NetworkSerializationTests.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ TEST(SerializeNetworkTest, RoundTripObject)
165165
serializer.save_xml(networkXML, ostr1);
166166

167167
ModuleFactoryHandle mf(new HardCodedModuleFactory);
168-
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr);
168+
NetworkEditorController controller(mf, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr);
169169
NetworkXMLConverter converter(mf, nullptr, nullptr, nullptr, &controller);
170170
NetworkHandle network = converter.from_xml_data(networkXML);
171171
ASSERT_TRUE(network.get() != nullptr);
@@ -185,7 +185,7 @@ TEST(SerializeNetworkTest, FullTestWithModuleState)
185185
ModuleFactoryHandle mf(new HardCodedModuleFactory);
186186
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
187187
ExecutionStrategyFactoryHandle exe(new DesktopExecutionStrategyFactory(boost::optional<std::string>()));
188-
NetworkEditorController controller(mf, sf, exe, nullptr, nullptr, nullptr);
188+
NetworkEditorController controller(mf, sf, exe, nullptr, nullptr, nullptr, nullptr);
189189

190190
ModuleHandle matrix1Send = controller.addModule("SendTestMatrix");
191191
ModuleHandle matrix2Send = controller.addModule("SendTestMatrix");
@@ -231,7 +231,7 @@ TEST(SerializeNetworkTest, FullTestWithModuleState)
231231
XMLSerializer::save_xml(*xml, ostr, "network");
232232
std::cout << ostr.str() << std::endl;
233233

234-
NetworkEditorController controller2(mf, sf, exe, nullptr, nullptr, nullptr);
234+
NetworkEditorController controller2(mf, sf, exe, nullptr, nullptr, nullptr, nullptr);
235235
controller2.loadNetwork(xml);
236236

237237
NetworkHandle deserialized = controller2.getNetwork();
@@ -251,7 +251,7 @@ TEST(SerializeNetworkTest, FullTestWithDynamicPorts)
251251
{
252252
ModuleFactoryHandle mf(new HardCodedModuleFactory);
253253
ModuleStateFactoryHandle sf(new SimpleMapModuleStateFactory);
254-
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr);
254+
NetworkEditorController controller(mf, sf, nullptr, nullptr, nullptr, nullptr, nullptr);
255255

256256
std::vector<ModuleHandle> showFields;
257257
showFields.push_back(controller.addModule("ShowField"));
@@ -281,7 +281,7 @@ TEST(SerializeNetworkTest, FullTestWithDynamicPorts)
281281
std::ostringstream ostr;
282282
XMLSerializer::save_xml(*xml, ostr, "network");
283283

284-
NetworkEditorController controller2(mf, sf, nullptr, nullptr, nullptr, nullptr);
284+
NetworkEditorController controller2(mf, sf, nullptr, nullptr, nullptr, nullptr, nullptr);
285285
controller2.loadNetwork(xml);
286286

287287
NetworkHandle deserialized = controller2.getNetwork();

src/Interface/Application/TriggeredEventsWindow.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ void TriggeredEventsWindow::setScripts(const QMap<QString, QString>& scripts)
5050
{
5151
scripts_ = scripts;
5252

53+
//TODO: hardcode the only enabled entry
5354
eventListWidget_->setCurrentItem(eventListWidget_->item(1));
5455
scriptPlainTextEdit_->setPlainText(scripts_[eventListWidget_->currentItem()->text()]);
5556
}

src/Interface/Application/TriggeredEventsWindow.ui

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,6 @@
9494
<set>ItemIsSelectable|ItemIsDragEnabled|ItemIsUserCheckable</set>
9595
</property>
9696
</item>
97-
<item>
98-
<property name="text">
99-
<string>Dummy</string>
100-
</property>
101-
</item>
10297
</widget>
10398
</item>
10499
</layout>

0 commit comments

Comments
 (0)