diff --git a/force_bdss/core_plugins/dummy/dummy_plugin.py b/force_bdss/core_plugins/dummy/dummy_plugin.py index bc64438f227343a3a6363e7f53eb1d6d1209f38e..15bc6ef9808338d1b8d9d8c465a4ab2c92207f0e 100644 --- a/force_bdss/core_plugins/dummy/dummy_plugin.py +++ b/force_bdss/core_plugins/dummy/dummy_plugin.py @@ -2,6 +2,9 @@ from force_bdss.api import BaseExtensionPlugin, plugin_id from force_bdss.core_plugins.dummy.dummy_notification_listener\ .dummy_notification_listener_factory import \ DummyNotificationListenerFactory +from force_bdss.core_plugins.dummy.ui_notification.ui_notification_factory \ + import \ + UINotificationFactory from .csv_extractor.csv_extractor_factory import CSVExtractorFactory from .kpi_adder.kpi_adder_factory import KPIAdderFactory from .dummy_dakota.dakota_factory import DummyDakotaFactory @@ -26,4 +29,6 @@ class DummyPlugin(BaseExtensionPlugin): KPIAdderFactory(self)] def _notification_listener_factories_default(self): - return [DummyNotificationListenerFactory(self)] + return [DummyNotificationListenerFactory(self), + UINotificationFactory(self) + ] diff --git a/force_bdss/core_plugins/dummy/ui_notification/__init__.py b/force_bdss/core_plugins/dummy/ui_notification/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py new file mode 100644 index 0000000000000000000000000000000000000000..e12c646542301a895feb6c976c3ef03755e8433b --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification.py @@ -0,0 +1,17 @@ +from traits.api import Any + +from force_bdss.api import BaseNotificationListener +import zmq + + +class UINotification(BaseNotificationListener): + _zmq_context = Any() + _zmq_socket = Any() + + def deliver(self, model, message): + self._zmq_socket.send(("ACTION {}".format(message)).encode("utf-8")) + + def init_persistent_state(self, model): + self._zmq_context = zmq.Context() + self._zmq_socket = self._zmq_context.socket(zmq.PUB) + self._zmq_socket.bind("tcp://*:12345") diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py new file mode 100644 index 0000000000000000000000000000000000000000..2af65f8f32cc4e821d8b182ada46d6880bc496be --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_factory.py @@ -0,0 +1,23 @@ +from traits.api import String + +from force_bdss.ids import factory_id +from force_bdss.notification_listeners.base_notification_listener_factory \ + import \ + BaseNotificationListenerFactory +from .ui_notification import UINotification +from .ui_notification_model import UINotificationModel + + +class UINotificationFactory(BaseNotificationListenerFactory): + id = String(factory_id("enthought", "ui_notification")) + + name = String("UI Notification") + + def create_model(self, model_data=None): + if model_data is None: + model_data = {} + + return UINotificationModel(self, **model_data) + + def create_listener(self): + return UINotification(self) diff --git a/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py new file mode 100644 index 0000000000000000000000000000000000000000..c20ad099f71214632126eabc702810d99cf78229 --- /dev/null +++ b/force_bdss/core_plugins/dummy/ui_notification/ui_notification_model.py @@ -0,0 +1,7 @@ +from force_bdss.notification_listeners.base_notification_listener_model \ + import \ + BaseNotificationListenerModel + + +class UINotificationModel(BaseNotificationListenerModel): + pass diff --git a/requirements/requirements.txt b/requirements/requirements.txt index cfc27054ea4f3f6acf0be5267e8bf9a3809d9881..7f6b07c7b8c7244591f43a88cfedfd6c80dbda3c 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -2,3 +2,4 @@ envisage==4.6.0 click==6.7 six==1.10.0 stevedore==1.24.0 +pyzmq==16.0.2