Add LogLines class
authorRené Stadler <mail@renestadler.de>
Wed, 21 Nov 2007 08:47:40 +0000 (10:47 +0200)
committerStefan Sauer <ensonic@users.sf.net>
Thu, 11 Sep 2014 18:51:38 +0000 (20:51 +0200)
debug-viewer/GstDebugViewer/Data.py

index ba4c14912ae163f92feecf4b0f9808a4903375f7..fa12f564d218ab482cf353d2305ae06ba19fa92e 100644 (file)
@@ -300,6 +300,35 @@ class LogLine (list):
                                                          category, filename, line, function,
                                                          object_, message,)
 
+class LogLines (object):
+
+    def __init__ (self, fileobj, line_cache):
+
+        self.__fileobj = fileobj
+        self.__line_cache = line_cache
+
+    def __len__ (self):
+
+        return len (self.__line_cache.offsets)
+
+    def __getitem__ (self, line_index):
+
+        offset = self.__line_cache.offsets[line_index]
+        self.__fileobj.seek (offset)
+        line_string = self.__fileobj.readline ()
+        line = LogLine.parse_full (line_string)
+        msg = line_string[line[-1]:]
+        line[-1] = msg
+        return line
+
+    def __iter__ (self):
+
+        l = len (self)
+        i = 0
+        while i < l:
+            yield self[i]
+            i += 1
+
 class LogFile (Producer):
 
     def __init__ (self, filename, dispatcher):
@@ -338,6 +367,8 @@ class LogFile (Producer):
 
     def handle_load_finished (self):
 
+        self.lines = LogLines (self.fileobj, self.line_cache)
+
         # Chain up to our consumers:
         self.have_load_finished ()