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)
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)
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
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)
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)
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()