Beispiel #1
0
    def __init__(self, show_buttons=True, log_level='DEBUG', log_prefix='.'):

        QWidget.__init__(self, parent=None)

        self.log_level = log_level  # cp.log_level
        self.log_fname = log_file_name(log_prefix)

        if log_level == 'DEBUG':
            print('%s.__init__ log_fname: %s' % (self._name, self.log_fname))

        if self.log_fname is not None:
            depth = 6 if self.log_fname[0] == '/' else 1
            gu.create_path(self.log_fname, depth, mode=0o0777)
            #print('Log file: %s' % log_fname)

        self.show_buttons = show_buttons
        #cp.qwloggerstd = self

        #logger.debug('logging.DEBUG: ', logging.DEBUG)
        logger.debug('logging._levelToName: ', logging._levelToName
                     )  # {0: 'NOTSET', 50: 'CRITICAL', 20: 'INFO',...
        logger.debug('logging._nameToLevel: ', logging._nameToLevel
                     )  # {'NOTSET': 0, 'ERROR': 40, 'WARNING': 30,...

        self.dict_level_to_name = logging._levelToName
        self.dict_name_to_level = logging._nameToLevel
        self.level_names = list(logging._levelToName.values())

        self.edi_txt = QTextEdit('Logger window')
        self.lab_level = QLabel('Log level:')
        self.but_close = QPushButton('&Close')
        self.but_save = QPushButton('&Save log-file')
        self.but_rand = QPushButton('&Random')
        self.cmb_level = QComboBox(self)
        self.cmb_level.addItems(self.level_names)
        self.cmb_level.setCurrentIndex(self.level_names.index(self.log_level))

        self.hboxM = QHBoxLayout()
        self.hboxM.addWidget(self.edi_txt)

        self.hboxB = QHBoxLayout()
        self.hboxB.addStretch(4)
        self.hboxB.addWidget(self.lab_level)
        self.hboxB.addWidget(self.cmb_level)
        self.hboxB.addWidget(self.but_rand)
        self.hboxB.addStretch(1)
        self.hboxB.addWidget(self.but_save)
        self.hboxB.addWidget(self.but_close)

        self.vbox = QVBoxLayout()
        self.vbox.addLayout(self.hboxM)
        self.vbox.addLayout(self.hboxB)
        self.setLayout(self.vbox)

        if self.show_buttons: self.connect_buttons()

        self.set_style()
        self.set_tool_tips()

        self.config_logger(self.log_fname)
Beispiel #2
0
    def set_but_ctrls(self):

        status = transition, state, cfgtype, recording =\
             (cp.s_transition, cp.s_state, cp.s_cfgtype, cp.s_recording)

        logger.debug('in set_but_ctrls current status %s' % str(status))

        #s = daq_control_get_status() if s_status is None else s_status
        #if s is None :
        #    logger.warning('set_but_ctrls: STATUS IS NOT AVAILABLE')
        #    return

        #state_zmq = str(s_state).lower() if s_state is not None else None
        #if (s_state is not None) and state_zmq != state :
        #    logger.debug('set_but_ctrls ZMQ msg state:%s inconsistent with current:%s'%\
        #                 (state_zmq,state))

        self.but_record.setIcon(
            icon.icon_record_stop if recording else icon.icon_record_start)
        self.set_but_record_enabled(state in ('reset', 'unallocated',
                                              'allocated', 'connected',
                                              'configured'))

        self.ts = gu.str_tstamp(fmt='%H:%M:%S',
                                time_sec=None)  # '%Y-%m-%dT%H:%M:%S%z'
        self.state = state
        #self.but_state.setText('%s since %s' % (s.upper(), self.ts))
        self.but_ctrls.setText(state.upper())

        wpart = cp.cgwmainpartition
        if wpart is not None:
            wpart.set_buts_enable(
                state.upper())  # enable/disable button plat in other widget

        self.set_transition(transition)
Beispiel #3
0
 def set_but_ctrls(self, s):
     self.ts = gu.str_tstamp(fmt='%H:%M:%S',
                             time_sec=None)  # '%Y-%m-%dT%H:%M:%S%z'
     self.state = s
     #self.but_state.setText('%s since %s' % (s.upper(), self.ts))
     self.but_ctrls.setText(s.upper())
     self.parent_ctrl.wpart.set_buts_enable(
         s.upper())  # enable/disable button plat in other widget
Beispiel #4
0
    def set_buts_enabled(self):

        status = transition, state, cfgtype, recording =\
             (cp.s_transition, cp.s_state, cp.s_cfgtype, cp.s_recording)

        logger.debug('in set_buts_enabled current status %s' % str(status))
        #print('in set_buts_enabled current status %s' % str(status))

        self.but_record.setIcon(
            icon.icon_record_stop if recording else icon.icon_record_start)
        self.set_but_record_enabled(state in ('reset', 'unallocated',
                                              'allocated', 'connected',
                                              'configured'))
        self.box_state.setEnabled(state not in ('reset', 'unallocated'))

        self.ts = gu.str_tstamp(fmt='%H:%M:%S',
                                time_sec=None)  # '%Y-%m-%dT%H:%M:%S%z'
        #self.but_state.setText('%s since %s' % (s.upper(), self.ts))
        self.but_ctrls.setText(state.upper() if state is not None else 'None')

        self.set_transition(transition)
Beispiel #5
0
    def config_logger_v0(self, log_fname='control_gui.txt'):

        self.append_qwlogger('Start logger\nLog file: %s' % log_fname)

        levname = self.log_level
        level = self.dict_name_to_level.get(levname, logging.DEBUG) # e.g. logging.DEBUG

        #print('YYYYY config_logger levname:', levname, ' level:', level, ' logging.DEBUG:', logging.DEBUG)

        tsfmt='%Y-%m-%dT%H:%M:%S'
        fmt = '%(levelname)s %(name)s: %(message)s' if level==logging.DEBUG else\
              '%(asctime)s %(levelname)s: %(message)s'
              #'%(asctime)s %(levelname)s %(name)s: %(message)s'

        #sys.stdout = sys.stderr = open('/dev/null', 'w')

        self.formatter = logging.Formatter(fmt, datefmt=tsfmt)
        #logger.addFilter(QWFilter(self)) # register self for callback from filter
        # TRICK: add filter to handler to intercept ALL messages

        fname = log_fname if log_fname is not None else '/var/tmp/control_gui_%s.log' % gu.get_login()
        do_save_log_file = (log_fname is not None) or (level==logging.DEBUG)

        self.handler = logging.FileHandler(fname, 'w') if do_save_log_file else\
                       logging.StreamHandler()
        #self.handler = logging.FileHandler(fname, 'w')
        #self.handler = logging.StreamHandler()

        self._myfilter = QWFilter(self)
        self.handler.addFilter(self._myfilter)
        #self.handler.setLevel(logging.NOTSET) # level
        self.handler.setFormatter(self.formatter)
        logger.addHandler(self.handler)
        self.set_level(levname) # pass level name
        print('logging.FileHandler file: %s' % fname)
Beispiel #6
0
    def __init__(self, **kwargs):

        QWidget.__init__(self, parent=None)

        self.log_level    = kwargs.get('log_level', 'DEBUG')
        self.show_buttons = kwargs.get('show_buttons', True)
        self.instrument   = kwargs.get('instrument', 'NonDefined')
        self.log_fname    = log_file_name(kwargs.get('log_prefix', '.'))

        if self.instrument is None: self.instrument='None'

        if self.log_level=='DEBUG':
            print('%s.__init__ log_fname: %s' % (self._name, self.log_fname))

        if self.log_fname is not None:
            #depth = 6 if self.log_fname[0]=='/' else 1
            gu.create_path(self.log_fname, mode=0o0777)
            #print('Log file: %s' % log_fname)

        #cp.qwloggerstd = self

        #logger.debug('logging.DEBUG: ', logging.DEBUG)
        logger.debug('logging._levelToName: ', logging._levelToName) # {0: 'NOTSET', 50: 'CRITICAL', 20: 'INFO',...
        logger.debug('logging._nameToLevel: ', logging._nameToLevel) # {'NOTSET': 0, 'ERROR': 40, 'WARNING': 30,...

        self.dict_level_to_name = logging._levelToName
        self.dict_name_to_level = logging._nameToLevel
        self.level_names = list(logging._levelToName.values())
        
        self.edi_txt   = QTextEdit('ALL messages')
        #self.edi_err   = QTextEdit('Error messages')
        self.edi_err   = QWLoggerError()
        self.lab_level = QLabel('Log level:')
        self.but_close = QPushButton('&Close') 
        self.but_save  = QPushButton('&Save log-file') 
        self.but_rand  = QPushButton('&Random') 
        self.cmb_level = QComboBox(self) 
        self.cmb_level.addItems(self.level_names)
        self.cmb_level.setCurrentIndex(self.level_names.index(self.log_level))
        
        self.hboxB = QHBoxLayout()
        self.hboxB.addStretch(4)     
        self.hboxB.addWidget(self.lab_level)
        self.hboxB.addWidget(self.cmb_level)
        self.hboxB.addWidget(self.but_rand)
        self.hboxB.addStretch(1)     
        self.hboxB.addWidget(self.but_save)
        self.hboxB.addWidget(self.but_close)

        self.vspl = QSplitter(Qt.Vertical)
        self.vspl.addWidget(self.edi_txt)
        self.vspl.addWidget(self.edi_err)

        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.vspl)
        self.vbox.addLayout(self.hboxB)
        self.setLayout(self.vbox)

        if self.show_buttons: self.connect_buttons()

        self.set_style()
        self.set_tool_tips()

        self.config_logger()