コード例 #1
0
ファイル: ivymon.py プロジェクト: yannickj/ivymonqt
 def __init__(self, bus, busaddr, name):
     """a builder"""
     QtWidgets.QFrame.__init__(self)
     self.bus = bus
     self.agents = []
     self.about_window = None
     self.ui = Ui_Main()
     self.ui.setupUi(self)
     self.ui.busLabel.setText(busaddr)
     self.ui.nameLabel.setText(name)
     self.ui.removeButton.clicked.connect(self.unbind)
     self.ui.addButton.clicked.connect(self.bind)
     self.ui.newBinding.activated.connect(self.bind)
     self.ui.killButton.clicked.connect(self.kill)
     self.ui.inspectButton.clicked.connect(self.inspect)
     self.ui.sendButton.clicked.connect(self.send)
     self.ui.msg.activated.connect(self.send)
     self.new_message.connect(self.slot_message)
     self.ui.actionCredits.triggered.connect(self.about)
     self.ui.actionQuit.triggered.connect(self.bus.sigstop)
     self.ui.actionSending.toggled.connect(self.ui.idDock.setVisible)
     self.ui.actionBindings.toggled.connect(self.ui.bindDock.setVisible)
     self.ui.agentList.itemDoubleClicked.connect(self.inspect)
     self.show()
コード例 #2
0
ファイル: ivymon.py プロジェクト: yannickj/ivymonqt
class IvyMonView(QtWidgets.QMainWindow):
    """
    the graphical view of IvyMon
    it's based on ui_main.py generated by pyuic5
    """

    new_message = QtCore.pyqtSignal(int, str)

    def __init__(self, bus, busaddr, name):
        """a builder"""
        QtWidgets.QFrame.__init__(self)
        self.bus = bus
        self.agents = []
        self.about_window = None
        self.ui = Ui_Main()
        self.ui.setupUi(self)
        self.ui.busLabel.setText(busaddr)
        self.ui.nameLabel.setText(name)
        self.ui.removeButton.clicked.connect(self.unbind)
        self.ui.addButton.clicked.connect(self.bind)
        self.ui.newBinding.activated.connect(self.bind)
        self.ui.killButton.clicked.connect(self.kill)
        self.ui.inspectButton.clicked.connect(self.inspect)
        self.ui.sendButton.clicked.connect(self.send)
        self.ui.msg.activated.connect(self.send)
        self.new_message.connect(self.slot_message)
        self.ui.actionCredits.triggered.connect(self.about)
        self.ui.actionQuit.triggered.connect(self.bus.sigstop)
        self.ui.actionSending.toggled.connect(self.ui.idDock.setVisible)
        self.ui.actionBindings.toggled.connect(self.ui.bindDock.setVisible)
        self.ui.agentList.itemDoubleClicked.connect(self.inspect)
        self.show()

    def about(self):
        if self.about_window is not None:
            self.about_window.show()
            return
        self.about_window = QtWidgets.QDialog()
        ui = Ui_About()
        ui.setupUi(self.about_window)
        self.about_window.show()

    def add_binding(self, regexp):
        self.ui.bindList.addItem(QtWidgets.QListWidgetItem(regexp))

    def add_agent(self, agent):
        # adds an agent in the list by ivy agent
        a = Agent(agent)
        self.agents.append(a)
        self.ui.agentList.addItem(a.item)

    def remove_agent(self, agent):
        # removes an agent from the list by ivy agent
        for a in [x for x in self.agents if x.agent is agent]:
            self.ui.agentList.takeItem(self.ui.agentList.row(a.item))
            self.add_message(1, [a.item.text() + " left"])
        self.agents = [x for x in self.agents if x.agent is not agent]

    def inspect(self):
        for item in self.ui.agentList.selectedItems():
            for a in [x for x in self.agents if x.item is item]:
                a.doshow()

    def kill(self):
        for item in self.ui.agentList.selectedItems():
            self.add_message(1, ["killed " + item.text()])
            self.ui.agentList.takeItem(self.ui.agentList.row(item))
            for a in [x for x in self.agents if x.item is item]:
                a.agent.send_die_message()
            self.agents = [x for x in self.agents if x.item is not item]

    def unbind(self):
        for item in self.ui.bindList.selectedItems():
            re = item.text()
            self.bus.unbind_msg(self.bus.bound[re])
            self.ui.bindList.takeItem(self.ui.bindList.row(item))
            self.add_message(1, ["unbound to " + re])

    def bind(self):
        new = self.ui.newBinding.currentText()
        if len(new) is 0:
            return
        self.bus.add_binding(new)
        self.add_message(1, ["bound to " + new])

    def add_message(self, i, args):
        self.new_message.emit(i ,datetime.now().strftime("%H:%M:%S") +
                              ' - ' + ":".join(args))

    def slot_message(self, i, msg):
        if i is 0:
            scroll = self.ui.messages.verticalScrollBar()
            pos = scroll.value()
            self.ui.messages.append(msg)
            if self.ui.autoScroll.isChecked():
                scroll.setValue(scroll.maximum())
            else:
                scroll.setValue(pos)
        elif i is 1:
            self.ui.events.append(msg)
            scroll = self.ui.events.verticalScrollBar()
            scroll.setValue(scroll.maximum())

    def my_regexp_change(self, agent, event, num_id, regexp):
        self.add_message(1, ["regexp change ", agent.agent_name, str(event),
                          str(num_id), regexp])
        for a in [x for x in self.agents if x.agent is agent]:
            a.update_regex()

    def send(self):
        text = self.ui.msg.currentText()
        self.add_message(1, ["sending ", text])
        self.bus.send_msg(text)