Example #1
0
class Me(QMainWindow):
    @asyncio.coroutine
    def request_handler(msg):
        print("[Request on '{} {}']: {}".format(msg.subject, msg.reply,
                                                msg.data.decode()))
        yield from msg.nc.publish(msg.reply, b'OK')

    @asyncio.coroutine
    def master(self):
        yield from self.nc.subscribe("help",
                                     "workers",
                                     cb=self.request_handler)

    def __init__(self):
        #self.nc = NATS()

        #self.nc.connect()
        '''
        try:
            yield from nc.connect()
        except:
            pass
        '''

        super().__init__()

        #self.nc = NATS()
        #self.nc.connect()
        #self.nc.subscribe("help", "workers", cb=self.request_handler)

        self.ui = loadUi('ms_main.ui', self)
        self.model = Model(self)
        self.ui.lv_news.setModel(self.model)
        #self.setCentralWidget(ui)

        self.ui.lv_news.setItemsExpandable(False)
        self.ui.lv_news.setIndentation(0)
        self.ui.lv_news.setSelectionMode(QAbstractItemView.ExtendedSelection)

        toolBar = QToolBar()
        self.addToolBar(toolBar)

        delButton = QPushButton('削除')
        delButton.clicked.connect(self.removeItems)
        toolBar.addWidget(delButton)

        addButton = QPushButton('追加')
        addButton.clicked.connect(self.rcv_nats)
        toolBar.addWidget(addButton)

        addButton = QPushButton('publish')
        addButton.clicked.connect(self.nats_pub)
        toolBar.addWidget(addButton)

        self.addToolBar(toolBar)

        #loop = asyncio.get_event_loop()
        #component = Component(nc, loop)
        #thr = Thread(target=another_thread, args=(component,))
        #thr.start()

        #loop.run_forever()

        self.c = Listener(["nats://localhost:4222"])
        tt = TestThread(ccc=self.c)
        tt.start()

    def nats_pub(self):
        print('publishing')
        #self.c.publish('discover', 'hello nats')
        self.c.sync_publish("some message ")

    def request_handler(msg):
        print("[Request on '{} {}']: {}".format(msg.subject, msg.reply,
                                                msg.data.decode()))
        msg.self.nc.publish(msg.reply, b'OK')

    def rcv_nats(self):
        print('nats')
        #response = yield from self.nc.timed_request("foo", b'help me', 0.050)
        print('Hi')
        #print(response)
        #print("Received response: {message}".format(message=response.data.decode()))
        self.model.addRow('999', 'added item', '0.1', '0.2', '0.3')
        #msg = self.nc.timed_request("help", b'help please', 0.500)
        #print("[Response]: {}".format(msg.data))
        #yield from self.nc.publish("help", b'hello')

    def selectedRows(self):
        rows = []
        for index in self.ui.lv_news.selectedIndexes():
            if index.column() == 0:
                rows.append(index.row())
        return rows

    def removeItems(self):
        self.model.removeRows(self.selectedRows())