예제 #1
0
class SystemWindow(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_SystemWindow()
        self.ui.setupUi(self)

        self._model = SystemInfo()
        self._initInfoUi()

    def _initInfoUi(self):
        # fetch Distro information
        distroLabel = QtGui.QLabel()
        distroLabel.setText(self._model.getDistro())

        kernelLabel = QtGui.QLabel()
        kernelLabel.setText("Kernel: " + self._model.getKernel())
        
        sysInfoVbox = QtGui.QVBoxLayout()
        sysInfoVbox.addWidget(distroLabel)
        sysInfoVbox.addWidget(kernelLabel)
        sysInfoVbox.addStretch(1)

        sysInfoGroupBox = QtGui.QGroupBox("System information:")
        sysInfoGroupBox.setLayout(sysInfoVbox)


        # hardware info
        memoryLabel = QtGui.QLabel("Memory:")
        memoryLabelValue = QtGui.QLabel(self._model.getTotalMemory())

        hardwareLayout = QtGui.QGridLayout()
        hardwareLayout.addWidget(memoryLabel, 0, 0)
        hardwareLayout.addWidget(memoryLabelValue, 0, 1)

        cpus = self._model.getCpu()
        for i, cpu in enumerate(cpus):
            procName = 'Processor #%s:' % (i)

            hardwareLayout.addWidget(QtGui.QLabel(procName), i + 1, 0)
            hardwareLayout.addWidget(QtGui.QLabel(cpu), i + 1, 1)

        hardwareGroupBox = QtGui.QGroupBox("Hardware information:")
        hardwareGroupBox.setLayout(hardwareLayout)


        # lay out groupboxes vertically
        groupBoxLayout = QtGui.QVBoxLayout()
        groupBoxLayout.addWidget(sysInfoGroupBox)
        groupBoxLayout.addWidget(hardwareGroupBox)
        groupBoxLayout.addStretch(1)

        self.ui.infoWidget.setLayout(groupBoxLayout)
예제 #2
0
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)

        self.ui = Ui_SystemWindow()
        self.ui.setupUi(self)

        self._model = SystemInfo()
        self._initInfoUi()
예제 #3
0
   def onSessionOpen(self):
      """
      When connection is established, we create our
      model instances and register them for RPC if needed.
      """

      # create system info model and register methods for RPC
      self.infoModel = SystemInfo()
      self.registerMethodForRpc(self.uri + '/sysInfo.getTotalMemory', self.infoModel, lambda i: self.infoModel.getTotalMemory())
      self.registerMethodForRpc(self.uri + '/sysInfo.getCpu', self.infoModel, lambda i: self.infoModel.getCpu())
      self.registerMethodForRpc(self.uri + '/sysInfo.getKernel', self.infoModel, lambda i: self.infoModel.getKernel())
      self.registerMethodForRpc(self.uri + '/sysInfo.getDistro', self.infoModel, lambda i: self.infoModel.getDistro())
예제 #4
0
class SystemInfoServerProtocol(WampServerProtocol):
   """
   This is simple system info server protocol.

   As with other server classes, model is created, when new connection
   is established, and deleted when client closes websocket connection
   """

   uri = "http://system-monitor.com"

   def onSessionOpen(self):
      """
      When connection is established, we create our
      model instances and register them for RPC if needed.
      """

      # create system info model and register methods for RPC
      self.infoModel = SystemInfo()
      self.registerMethodForRpc(self.uri + '/sysInfo.getTotalMemory', self.infoModel, lambda i: self.infoModel.getTotalMemory())
      self.registerMethodForRpc(self.uri + '/sysInfo.getCpu', self.infoModel, lambda i: self.infoModel.getCpu())
      self.registerMethodForRpc(self.uri + '/sysInfo.getKernel', self.infoModel, lambda i: self.infoModel.getKernel())
      self.registerMethodForRpc(self.uri + '/sysInfo.getDistro', self.infoModel, lambda i: self.infoModel.getDistro())



   def connectionLost(self, reason):
      """
      When connection is gone (i.e. client close window, navigated
      away from the page), stop the model timer, which holds last
      reference to model, and delete the model
      """
      WampServerProtocol.connectionLost(self, reason)
      self.infoModel = None