controls/LogViewer.py
changeset 1195 8f8d9859e9fc
parent 1176 f4b434672204
child 1441 826730e60407
equal deleted inserted replaced
1194:0cf48602ee24 1195:8f8d9859e9fc
   402     def SetLogCounters(self, log_count):
   402     def SetLogCounters(self, log_count):
   403         new_messages = []
   403         new_messages = []
   404         for level, count, prev in zip(xrange(LogLevelsCount), log_count, self.previous_log_count):
   404         for level, count, prev in zip(xrange(LogLevelsCount), log_count, self.previous_log_count):
   405             if count is not None and prev != count:
   405             if count is not None and prev != count:
   406                 if prev is None:
   406                 if prev is None:
   407                     dump_end = -1
   407                     dump_end = max(-1, count - 10)
       
   408                     oldest_message = (-1, None)
   408                 else:
   409                 else:
   409                     dump_end = prev - 1
   410                     dump_end = prev - 1
   410                 for msgidx in xrange(count-1, dump_end,-1):
   411                 for msgidx in xrange(count-1, dump_end,-1):
   411                     new_message = self.GetLogMessageFromSource(msgidx, level)
   412                     new_message = self.GetLogMessageFromSource(msgidx, level)
   412                     if new_message is None:
   413                     if new_message is None:
       
   414                         if prev is None:
       
   415                             oldest_message = (-1, None)
   413                         break
   416                         break
   414                     if prev is None:
   417                     if prev is None:
   415                         self.OldestMessages.append((msgidx, new_message))
   418                         oldest_message = (msgidx, new_message)
   416                         if len(new_messages) == 0:
   419                         if len(new_messages) == 0:
   417                             new_messages = [new_message]
   420                             new_messages = [new_message]
   418                         else:
   421                         else:
   419                             new_messages.insert(0, new_message)
   422                             new_messages.insert(0, new_message)
   420                     else:
   423                     else:
   421                         new_messages.insert(0, new_message)
   424                         new_messages.insert(0, new_message)
   422                 if prev is None and len(self.OldestMessages) <= level:
   425                 if prev is None and len(self.OldestMessages) <= level:
   423                     self.OldestMessages.append((-1, None))
   426                     self.OldestMessages.append(oldest_message)
   424                 self.previous_log_count[level] = count
   427                 self.previous_log_count[level] = count
   425         new_messages.sort()
   428         new_messages.sort()
   426         if len(new_messages) > 0:
   429         if len(new_messages) > 0:
   427             self.HasNewData = True
   430             self.HasNewData = True
   428             if self.CurrentMessage is not None:
   431             if self.CurrentMessage is not None:
   468             if self.FilterLogMessage(message, timestamp):
   471             if self.FilterLogMessage(message, timestamp):
   469                 return message, msgidx - 1
   472                 return message, msgidx - 1
   470             msgidx -= 1
   473             msgidx -= 1
   471         if len(self.LogMessages) > 0:
   474         if len(self.LogMessages) > 0:
   472             message = self.LogMessages[0]
   475             message = self.LogMessages[0]
       
   476             for idx, msg in self.OldestMessages:
       
   477                 if msg is not None and msg > message:
       
   478                     message = msg
   473             while message is not None:
   479             while message is not None:
   474                 level = message.Level
   480                 level = message.Level
   475                 oldest_msgidx, oldest_message = self.OldestMessages[level]
   481                 oldest_msgidx, oldest_message = self.OldestMessages[level]
   476                 if oldest_msgidx > 0:
   482                 if oldest_msgidx > 0:
   477                     old_message = self.GetLogMessageFromSource(oldest_msgidx - 1, level)
   483                     message = self.GetLogMessageFromSource(oldest_msgidx - 1, level)
   478                     if old_message is not None:
   484                     if message is not None:
   479                         self.OldestMessages[level] = (oldest_msgidx - 1, old_message)
   485                         self.OldestMessages[level] = (oldest_msgidx - 1, message)
   480                     else:
   486                     else:
   481                         self.OldestMessages[level] = (-1, None)
   487                         self.OldestMessages[level] = (-1, None)
   482                 else:
   488                 else:
       
   489                     message = None
   483                     self.OldestMessages[level] = (-1, None)
   490                     self.OldestMessages[level] = (-1, None)
   484                 message = None
   491                 if message is not None:
       
   492                     message_idx = 0
       
   493                     while (message_idx < len(self.LogMessages) and 
       
   494                            self.LogMessages[message_idx] < message):
       
   495                         message_idx += 1
       
   496                     if len(self.LogMessages) > 0:
       
   497                         current_message = self.LogMessages[self.CurrentMessage]
       
   498                     else:
       
   499                         current_message = message
       
   500                     self.LogMessages.insert(message_idx, message)
       
   501                     self.LogMessagesTimestamp = numpy.insert(
       
   502                             self.LogMessagesTimestamp, 
       
   503                             [message_idx], 
       
   504                             [message.Timestamp])
       
   505                     self.CurrentMessage = self.LogMessages.index(current_message)
       
   506                     if message_idx == 0 and self.FilterLogMessage(message, timestamp):
       
   507                         return message, 0
   485                 for idx, msg in self.OldestMessages:
   508                 for idx, msg in self.OldestMessages:
   486                     if msg is not None and (message is None or msg > message):
   509                     if msg is not None and (message is None or msg > message):
   487                         message = msg
   510                         message = msg
   488                 if message is not None:
       
   489                     self.LogMessages.insert(0, message)
       
   490                     self.LogMessagesTimestamp = numpy.insert(self.LogMessagesTimestamp, [0], [message.Timestamp])
       
   491                     if self.CurrentMessage is not None:
       
   492                         self.CurrentMessage += 1
       
   493                     else:
       
   494                         self.CurrentMessage = 0
       
   495                     if self.FilterLogMessage(message, timestamp):
       
   496                         return message, 0
       
   497         return None, None
   511         return None, None
   498     
   512     
   499     def RefreshNewData(self, *args, **kwargs):
   513     def RefreshNewData(self, *args, **kwargs):
   500         if self.HasNewData:
   514         if self.HasNewData:
   501             self.HasNewData = False
   515             self.HasNewData = False