From 56b7bbf2d5de88875625eb02df53c0eca66732d4 Mon Sep 17 00:00:00 2001
From: destinyk <destiny.kuehn@student.nmt.edu>
Date: Mon, 4 Dec 2023 12:48:41 -0700
Subject: [PATCH] change QTextEdit to QTreeWidget

---
 ckMseed/ckMseed.py | 392 +++++++++++++++++++++++----------------------
 1 file changed, 199 insertions(+), 193 deletions(-)

diff --git a/ckMseed/ckMseed.py b/ckMseed/ckMseed.py
index 17a714a..635b45d 100644
--- a/ckMseed/ckMseed.py
+++ b/ckMseed/ckMseed.py
@@ -45,8 +45,8 @@ from PySide2.QtWidgets import (QApplication, QWidget, QTabWidget,
                                QCheckBox, QPushButton, QLineEdit,
                                QLabel, QRadioButton, QTextEdit,
                                QComboBox, QFileDialog, QMessageBox,
-                               QProgressDialog)
-# QTreeWidget, QTreeWidgetItem
+                               QProgressDialog, QTreeWidget,
+                               QTreeWidgetItem)
 from PySide2.QtCore import (Qt, QObject, QThread, Signal,
                             QEventLoop, QTimer)
 
@@ -210,14 +210,14 @@ class MainWindow(QWidget):
         self.radio_box = QGroupBox()
         self.radio_box.setCheckable(False)
 
-        self.scantext_box = QGroupBox()
-        self.scantext_box.setCheckable(False)
+        self.scan_box = QGroupBox()
+        self.scan_box.setCheckable(False)
 
         # layouts for groupboxes
         hbox_datadir = QHBoxLayout(self.datadir_box)
         hbox_stations = QHBoxLayout(self.stations_box)
         hbox_rbuttons = QHBoxLayout(self.radio_box)
-        vbox_scantext = QVBoxLayout(self.scantext_box)
+        vbox_scantext = QVBoxLayout(self.scan_box)
 
         # data dir widgets
         self.dd_label = QLabel("Data Directories:")
@@ -288,22 +288,36 @@ class MainWindow(QWidget):
         # scan text widgets
 
         # Stat:Chan:Loc:Net:Sps Found label
-        self.scantext_label = QLabel("Stat:Chan:Loc:Net:Sps Found")
-        self.scantext_label.setAlignment(Qt.AlignCenter)
+        self.scan_tree_label = QLabel("Stat:Chan:Loc:Net:Sps Found")
+        self.scan_tree_label.setAlignment(Qt.AlignCenter)
 
         # Stat:Chan:Loc:Net:Sps Found text box
-        self.scantext = QTextEdit()
-        self.scantext.setAcceptRichText(False)
+        self.scan_tree = QTreeWidget()
+        self.scan_tree.setRootIsDecorated(False)
+        self.scan_tree.setColumnCount(5)
+        self.scan_tree.setColumnWidth(0, 150)
+        self.scan_tree.setColumnWidth(3, 150)
+
+        # tree column labels
+        scan_header = QTreeWidgetItem()
+        scan_header.setText(0, 'Stat:Chan:Loc:Net:Sps')
+        scan_header.setText(1, 'Big')
+        scan_header.setText(2, 'Little')
+        scan_header.setText(3, 'Start Time')
+        scan_header.setText(4, 'End Time')
+        for i in range(5):
+            scan_header.setBackgroundColor(i, Qt.yellow)
+        self.scan_tree.setHeaderItem(scan_header)
 
         # add widgets to layout
-        vbox_scantext.addWidget(self.scantext_label)
-        vbox_scantext.addWidget(self.scantext)
+        vbox_scantext.addWidget(self.scan_tree_label)
+        vbox_scantext.addWidget(self.scan_tree)
 
         # add groupboxes to tab layout
         self.scan_layout.addWidget(self.datadir_box)
         self.scan_layout.addWidget(self.stations_box)
         self.scan_layout.addWidget(self.radio_box)
-        self.scan_layout.addWidget(self.scantext_box)
+        self.scan_layout.addWidget(self.scan_box)
 
     def build_other_tabs(self):
         """
@@ -336,15 +350,29 @@ class MainWindow(QWidget):
         self.big_e_dropmenu = QComboBox()
         self.big_e_dropmenu.activated.connect(self.big_e_dropmenu_selections)
 
-        self.big_e_text = QTextEdit()
-        self.big_e_text.setAcceptRichText(False)
+        self.big_e_tree = QTreeWidget()
+        self.big_e_tree.setColumnCount(5)
+        self.big_e_tree.setColumnWidth(1, 160)
+        self.big_e_tree.setColumnWidth(2, 150)
+        self.big_e_tree.setColumnWidth(3, 150)
+
+        # tree column labels
+        big_e_header = QTreeWidgetItem()
+        big_e_header.setText(0, '')
+        big_e_header.setText(1, 'Trace Name')
+        big_e_header.setText(2, 'Start Time')
+        big_e_header.setText(3, 'End Time')
+        big_e_header.setText(4, 'Blockettes')
+        for i in range(5):
+            big_e_header.setBackgroundColor(i, Qt.yellow)
+        self.big_e_tree.setHeaderItem(big_e_header)
 
         self.big_traces_layout.addWidget(self.display_traces_matching)
         self.big_traces_layout.addWidget(self.big_e_dropmenu)
         self.big_traces_layout.setAlignment(Qt.AlignCenter)
 
         self.big_endian_layout.addLayout(self.big_traces_layout)
-        self.big_endian_layout.addWidget(self.big_e_text)
+        self.big_endian_layout.addWidget(self.big_e_tree)
 
     def build_little_endian(self):
         """
@@ -362,16 +390,30 @@ class MainWindow(QWidget):
         self.little_e_dropmenu = QComboBox()
         self.little_e_dropmenu.activated.connect(self.little_e_dropmenu_selections)
 
-        # Little Endian Textbox
-        self.little_e_text = QTextEdit()
-        self.little_e_text.setAcceptRichText(False)
+        # Little Endian tree
+        self.little_e_tree = QTreeWidget()
+        self.little_e_tree.setColumnCount(5)
+        self.little_e_tree.setColumnWidth(1, 160)
+        self.little_e_tree.setColumnWidth(2, 150)
+        self.little_e_tree.setColumnWidth(3, 150)
+
+        # tree column labels
+        little_e_header = QTreeWidgetItem()
+        little_e_header.setText(0, '')
+        little_e_header.setText(1, 'Trace Name')
+        little_e_header.setText(2, 'Start Time')
+        little_e_header.setText(3, 'End Time')
+        little_e_header.setText(4, 'Blockettes')
+        for i in range(5):
+            little_e_header.setBackgroundColor(i, Qt.yellow)
+        self.little_e_tree.setHeaderItem(little_e_header)
 
         self.little_traces_layout.addWidget(self.display_traces_matching2)
         self.little_traces_layout.addWidget(self.little_e_dropmenu)
         self.little_traces_layout.setAlignment(Qt.AlignCenter)
 
         self.little_endian_layout.addLayout(self.little_traces_layout)
-        self.little_endian_layout.addWidget(self.little_e_text)
+        self.little_endian_layout.addWidget(self.little_e_tree)
 
     def build_errors(self):
         """
@@ -426,12 +468,12 @@ class MainWindow(QWidget):
         self.error_rbtns_layout.addWidget(self.non_u_rbtn)
         self.error_rbtns_layout.addStretch(1)
 
-        # Errors Textbox
-        self.error_text = QTextEdit()
-        self.error_text.setAcceptRichText(False)
+        # Errors tree
+        self.error_tree = QTreeWidget()
+        self.error_tree.setRootIsDecorated(False)
 
         self.errors_layout.addWidget(self.error_rbtns_box)
-        self.errors_layout.addWidget(self.error_text)
+        self.errors_layout.addWidget(self.error_tree)
 
     def data_init(self, batchfile, dataloc, runflag):
         """
@@ -469,7 +511,7 @@ class MainWindow(QWidget):
 
         # Dictionaries
         self.big_endian_dict = {}
-        self.big_little_dict = {}
+        self.little_endian_dict = {}
         self.error_dict = {}
         self.stat_chan_loc_dict = {}
 
@@ -675,10 +717,10 @@ class MainWindow(QWidget):
         self.num_errors = 0
 
         # Text fields
-        self.scantext.clear()
-        self.big_e_text.clear()
-        self.little_e_text.clear()
-        self.error_text.clear()
+        self.scan_tree.clear()
+        self.big_e_tree.clear()
+        self.little_e_tree.clear()
+        self.error_tree.clear()
         self.big_e_dropmenu.clear()
         self.little_e_dropmenu.clear()
 
@@ -695,7 +737,7 @@ class MainWindow(QWidget):
 
         # Dicts
         self.big_endian_dict.clear()
-        self.big_little_dict.clear()
+        self.little_endian_dict.clear()
         self.error_dict.clear()
         self.stat_chan_loc_dict.clear()
 
@@ -721,7 +763,8 @@ class MainWindow(QWidget):
         """
 
         txt = words + str(cnt)
-        self.scantext.append(txt)
+        print(txt)
+        # self.scantext.append(txt)
 
     def write_error(self, info, error_type="", color="black"):
         """
@@ -732,7 +775,7 @@ class MainWindow(QWidget):
             if info:
                 print(info)
         else:
-            info = info + "\n"
+            # info = info + "\n"
             self.error_all.append((info, color))
 
             if error_type == "Read/Write":
@@ -961,7 +1004,7 @@ class MainWindow(QWidget):
                                                  directory, filelist)
                             elif msfile.byteorder == "little":
                                 self.num_little_files = self.num_little_files + 1
-                                self.add_to_dict(self.big_little_dict, fileid,
+                                self.add_to_dict(self.little_endian_dict, fileid,
                                                  directory, filelist)
                         msfile.close()
                     except Exception as e:
@@ -988,7 +1031,7 @@ class MainWindow(QWidget):
 
         self.little_e_dropmenu.insertItem(0, "All")
         self.little_e_dropmenu.setCurrentIndex(0)
-        for indexkey in list(self.big_little_dict):
+        for indexkey in list(self.little_endian_dict):
             self.little_e_dropmenu.addItem(indexkey)
 
     def write_scan(self):
@@ -996,15 +1039,9 @@ class MainWindow(QWidget):
         Add data found in file scan to Scan tab
         """
 
-        yellow = Qt.yellow
         white = Qt.white
         light_blue = Qt.cyan
 
-        scan_header = ("Stat:Chan:Loc:Net:Sps \t Big \t Little \t Start Time \t\t End Time")
-        self.scantext.setTextBackgroundColor(yellow)
-        self.scantext.setText(scan_header)
-        self.scantext.setTextBackgroundColor(white)
-
         if not self.stat_chan_loc_dict:
             return
 
@@ -1015,18 +1052,22 @@ class MainWindow(QWidget):
         if keylist:
             c = 0
             for key in keylist:
+                scan_info = []
+                scan_info.append(key)
                 num_big = 0
                 num_little = 0
 
                 if key in self.big_endian_dict:
                     for _dir in list(self.big_endian_dict[key].keys()):
                         num_big = num_big + len(self.big_endian_dict[key][_dir])
-                if key in self.big_little_dict:
-                    for _dir in list(self.big_little_dict[key].keys()):
+                if key in self.little_endian_dict:
+                    for _dir in list(self.little_endian_dict[key].keys()):
                         num_little = num_little + \
-                            len(self.big_little_dict[key][_dir])
+                            len(self.little_endian_dict[key][_dir])
+                scan_info.append(num_big)
+                scan_info.append(num_little)
 
-                text = key + "\t" + str(num_big) + "\t" + str(num_little)
+                # text = key + "\t" + str(num_big) + "\t" + str(num_little)
 
                 if not self.scan_type:
                     pass
@@ -1035,17 +1076,39 @@ class MainWindow(QWidget):
                         self.stat_chan_loc_dict[key][0][0]))
                     end = time.strftime('%Y:%j:%H:%M:%S', time.gmtime(
                         self.stat_chan_loc_dict[key][0][1]))
-                    templist = list(map(str, (start, end)))
-                    text = (text + "\t" +
-                            "\t".join(templist))  # python 3 compatible
+                    scan_info.append(start)
+                    scan_info.append(end)
+                    # templist = list(map(str, (start, end)))
+                    # text = (text + "\t" +
+                    #         "\t".join(templist))  # python 3 compatible
 
                 if c:
-                    self.scantext.setTextBackgroundColor(light_blue)
-                    self.scantext.append(text)
-                    self.scantext.setTextBackgroundColor(white)
+                    scan_item = QTreeWidgetItem()
+                    k = 0
+                    for i in range(len(scan_info)):
+                        scan_item.setText(i, str(scan_info[i]))
+                        scan_item.setBackgroundColor(i, light_blue)
+                        k = i
+                    # bring line to end of widget
+                    while k != 5:
+                        k += 1
+                        scan_item.setText(k, '')
+                        scan_item.setBackgroundColor(k, light_blue)
+                    self.scan_tree.addTopLevelItem(scan_item)
                     c = 0
                 else:
-                    self.scantext.append(text)
+                    scan_item = QTreeWidgetItem()
+                    k = 0
+                    for i in range(len(scan_info)):
+                        scan_item.setText(i, str(scan_info[i]))
+                        scan_item.setBackgroundColor(i, white)
+                        k = i
+                    # bring line to end of widget
+                    while k != 5:
+                        k += 1
+                        scan_item.setText(k, '')
+                        scan_item.setBackgroundColor(k, white)
+                    self.scan_tree.addTopLevelItem(scan_item)
                     c += 1
         return
 
@@ -1054,19 +1117,8 @@ class MainWindow(QWidget):
         Add data found in file scan to Big Endian tab
         """
 
-        yellow = Qt.yellow
-        white = Qt.white
-        light_blue = Qt.cyan
-        Green = Qt.darkGreen
-        Blue = Qt.blue
-        light_blue = Qt.cyan
-        Black = Qt.black
-
-        tab_header = ("Trace Name \t\t\t          \t\t\t            \t\t\t\n"
-                      "Start Time \t\t\t End Time \t\t\t Blockettes \t\t\t")
-        self.big_e_text.setTextBackgroundColor(yellow)
-        self.big_e_text.setText(tab_header)
-        self.big_e_text.setTextBackgroundColor(white)
+        green = Qt.darkGreen
+        blue = Qt.blue
 
         keylist = []
         keylist = list(self.big_endian_dict.keys())
@@ -1077,67 +1129,46 @@ class MainWindow(QWidget):
         c = 0
         if key == "All":
             for indexkey in list(self.big_endian_dict.keys()):
-                text = "<" + indexkey + ">"
-                self.big_e_text.setTextColor(Blue)
-                self.big_e_text.append(text)
+                index_item = QTreeWidgetItem()
+                index_item.setText(0, "<" + indexkey + ">")
+                index_item.setTextColor(0, blue)
+                self.big_e_tree.addTopLevelItem(index_item)
+                index_item.setFirstColumnSpanned(True)
                 for directory in list(self.big_endian_dict[indexkey].keys()):
-                    text2 = "  <" + directory + ">"
-                    self.big_e_text.setTextColor(Green)
-                    self.big_e_text.append(text2)
+                    directory_item = QTreeWidgetItem()
+                    directory_item.setText(0, "<" + directory + ">")
+                    directory_item.setTextColor(0, green)
+                    index_item.addChild(directory_item)
+                    directory_item.setFirstColumnSpanned(True)
                     for trace in self.big_endian_dict[indexkey][directory]:
-                        text = 4 * SPACE + str(trace[0])
+                        trace_item = QTreeWidgetItem()
+                        trace_item.setText(1, str(trace[0]))
+                        index_item.addChild(trace_item)
                         templist = list(map(str, (trace[1:])))
-                        # different amounts of \t to make background color go to end of line
-                        if self.scan_type == 0:
-                            text = text + "\t\t\t\t\t\t\t\n"
-                        elif self.scan_type == 1:
-                            text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                    "\t\t".join(templist) + "\t\t\t\t\t\n")
-                        else:
-                            text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                    "\t\t".join(templist) + "\t\t\t\n")
-                        self.big_e_text.setTextColor(Black)
-                        if c:
-                            self.big_e_text.setTextBackgroundColor(light_blue)
-                            self.big_e_text.append(text)
-                            self.big_e_text.setTextBackgroundColor(white)
-                            c = 0
-                        else:
-                            self.big_e_text.append(text)
-                            c = 1
+                        for i in range(len(templist)):
+                            trace_item.setText(i + 2, str(templist[i]))
         else:
             numtrace = 0
-            text = "<" + str(key) + ">"
-            self.big_e_text.setTextColor(Blue)
-            self.big_e_text.append(text)
+            index_item = QTreeWidgetItem()
+            index_item.setText(0, "<" + key + ">")
+            index_item.setTextColor(0, blue)
+            self.big_e_tree.addTopLevelItem(index_item)
+            index_item.setFirstColumnSpanned(True)
             for directory in list(self.big_endian_dict[key].keys()):
-                text2 = "  <" + directory + ">"
-                self.big_e_text.setTextColor(Green)
-                self.big_e_text.append(text2)
+                directory_item = QTreeWidgetItem()
+                directory_item.setText(0, "<" + directory + ">")
+                directory_item.setTextColor(0, green)
+                index_item.addChild(directory_item)
+                directory_item.setFirstColumnSpanned(True)
                 for trace in self.big_endian_dict[key][directory]:
-                    text = 4 * SPACE + str(trace[0])
+                    trace_item = QTreeWidgetItem()
+                    trace_item.setText(1, str(trace[0]))
+                    index_item.addChild(trace_item)
                     templist = list(map(str, (trace[1:])))
-
-                    # different amounts of \t to make background color go to end of line
-                    if self.scan_type == 0:
-                        text = text + "\t\t\t\t\t\t\t\n"
-                    elif self.scan_type == 1:
-                        text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                "\t\t".join(templist) + "\t\t\t\t\t\n")
-                    else:
-                        text = text + ("\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                       "\t\t".join(templist) + "\t\t\t\n")
-                    self.big_e_text.setTextColor(Black)
-                    if c:
-                        self.big_e_text.setTextBackgroundColor(light_blue)
-                        self.big_e_text.append(text)
-                        self.big_e_text.setTextBackgroundColor(white)
-                        c = 0
-                    else:
-                        self.big_e_text.append(text)
-                        c = 1
+                    for i in range(len(templist)):
+                        trace_item.setText(i + 2, str(templist[i]))
                     numtrace += 1
-
+            index_item.setExpanded(True)
             if numtrace == 1:
                 text = "Displaying " + str(numtrace) + " trace."
             else:
@@ -1153,92 +1184,62 @@ class MainWindow(QWidget):
         Add data found in file scan to Little Endian tab
         """
 
-        yellow = Qt.yellow
-        white = Qt.white
-        light_blue = Qt.cyan
-        Green = Qt.darkGreen
-        Blue = Qt.blue
-        light_blue = Qt.cyan
-        Black = Qt.black
-
-        tab_header = ("Trace Name \t\t\t          \t\t\t            \t\t\t\n"
-                      "Start Time \t\t\t End Time \t\t\t Blockettes \t\t\t")
-
-        self.little_e_text.setTextBackgroundColor(yellow)
-        self.little_e_text.setText(tab_header)
-        self.little_e_text.setTextBackgroundColor(white)
+        green = Qt.darkGreen
+        blue = Qt.blue
 
         keylist = []
-        keylist = list(self.big_little_dict.keys())
+        keylist = list(self.little_endian_dict.keys())
         keylist.sort()
 
-        if not self.big_little_dict:
+        if not self.little_endian_dict:
             return
         c = 0
         if key == "All":
-            for indexkey in list(self.big_little_dict.keys()):
-                text = "<" + indexkey + ">"
-                self.little_e_text.setTextColor(Blue)
-                self.little_e_text.append(text)
-                for directory in list(self.big_little_dict[indexkey].keys()):
-                    text2 = "  <" + directory + ">"
-                    self.little_e_text.setTextColor(Green)
-                    self.little_e_text.append(text2)
-                    for trace in self.big_little_dict[indexkey][directory]:
-                        text = 4 * SPACE + str(trace[0])
+            for indexkey in list(self.little_endian_dict.keys()):
+                index_item = QTreeWidgetItem()
+                index_item.setText(0, "<" + indexkey + ">")
+                index_item.setTextColor(0, blue)
+                self.little_e_tree.addTopLevelItem(index_item)
+                index_item.setFirstColumnSpanned(True)
+                for directory in list(self.little_endian_dict[indexkey].keys()):
+                    directory_item = QTreeWidgetItem()
+                    directory_item.setText(0, "<" + directory + ">")
+                    directory_item.setTextColor(0, green)
+                    index_item.addChild(directory_item)
+                    directory_item.setFirstColumnSpanned(True)
+                    for trace in self.little_endian_dict[indexkey][directory]:
+                        trace_item = QTreeWidgetItem()
+                        trace_item.setText(1, str(trace[0]))
+                        index_item.addChild(trace_item)
                         templist = list(map(str, (trace[1:])))
-
-                        # different amounts of \t to make background color go to end of line
-                        if self.scan_type == 0:
-                            text = text + "\t\t\t\t\t\t\t\n"
-                        elif self.scan_type == 1:
-                            text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                    "\t\t".join(templist) + "\t\t\t\t\t\n")
-                        else:
-                            text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                    "\t\t".join(templist) + "\t\t\t\n")
-                        self.little_e_text.setTextColor(Black)
-                        if c:
-                            self.little_e_text.setTextBackgroundColor(light_blue)
-                            self.little_e_text.append(text)
-                            self.little_e_text.setTextBackgroundColor(white)
-                            c = 0
-                        else:
-                            self.little_e_text.append(text)
-                            c = 1
+                        for i in range(len(templist)):
+                            trace_item.setText(i + 2, str(templist[i]))
         else:
             numtrace = 0
-            text = "<" + key + ">"
-            self.little_e_text.setTextColor(Blue)
-            self.little_e_text.append(text)
-            for directory in list(self.big_little_dict[key].keys()):
-                text2 = "  <" + directory + ">"
-                self.little_e_text.setTextColor(Green)
-                self.little_e_text.append(text2)
-                for trace in self.big_little_dict[key][directory]:
-                    text = 4 * SPACE + str(trace[0])
+            index_item = QTreeWidgetItem()
+            index_item.setText(0, "<" + key + ">")
+            index_item.setTextColor(0, blue)
+            self.little_e_tree.addTopLevelItem(index_item)
+            index_item.setFirstColumnSpanned(True)
+            for directory in list(self.little_endian_dict[key].keys()):
+                directory_item = QTreeWidgetItem()
+                directory_item.setText(0, "<" + directory + ">")
+                directory_item.setTextColor(0, green)
+                index_item.addChild(directory_item)
+                directory_item.setFirstColumnSpanned(True)
+                for trace in self.little_endian_dict[key][directory]:
+                    trace_item = QTreeWidgetItem()
+                    trace_item.setText(1, str(trace[0]))
+                    index_item.addChild(trace_item)
                     templist = list(map(str, (trace[1:])))
-
-                    # different amounts of \t to make background color go to end of line
-                    if self.scan_type == 0:
-                        text = text + "\t\t\t\t\t\t\t\n"
-                    elif self.scan_type == 1:
-                        text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                "\t\t".join(templist) + "\t\t\t\t\t\n")
-                    else:
-                        text = (text + "\t\t\t\t\t\t\t\n" + 6 * SPACE +
-                                "\t\t".join(templist) + "\t\t\t\n")
-                    self.little_e_text.setTextColor(Black)
-                    if c:
-                        self.little_e_text.setTextBackgroundColor(light_blue)
-                        self.little_e_text.append(text)
-                        self.little_e_text.setTextBackgroundColor(white)
-                        c = 0
-                    else:
-                        self.little_e_text.append(text)
-                        c = 1
+                    for i in range(len(templist)):
+                        trace_item.setText(i + 2, str(templist[i]))
                     numtrace += 1
-            text = "Displaying " + str(numtrace) + " traces"
+            index_item.setExpanded(True)
+            if numtrace == 1:
+                text = "Displaying " + str(numtrace) + " trace."
+            else:
+                text = "Displaying " + str(numtrace) + " trace."
             self.infobar.setText(text)
             self.infobar.setStyleSheet(
                 "background-color:green;")
@@ -1250,7 +1251,7 @@ class MainWindow(QWidget):
         Filters Error entries
         """
 
-        self.error_text.clear()
+        self.error_tree.clear()
         if self.error_type == 0:
             textlist = self.error_all
         elif self.error_type == 1:
@@ -1262,8 +1263,12 @@ class MainWindow(QWidget):
         elif self.error_type == 4:
             textlist = self.error_unique
         for (textcmd, color) in textlist:
-            self.error_text.setTextColor(color)
-            self.error_text.append(textcmd)
+            error_item = QTreeWidgetItem()
+            error_item.setText(0, textcmd)
+            error_item.setTextColor(0, color)
+            self.error_tree.addTopLevelItem(error_item)
+            # self.error_text.setTextColor(color)
+            # self.error_text.append(textcmd)
 
     def update_infobar(self, numfiles, numerrors):
         """
@@ -1317,6 +1322,7 @@ class MainWindow(QWidget):
         """
 
         index = self.big_e_dropmenu.currentText()
+        self.big_e_tree.clear()
         if index == "All":
             self.write_big_endian("All")
         else:
@@ -1328,6 +1334,7 @@ class MainWindow(QWidget):
         """
 
         index = self.little_e_dropmenu.currentText()
+        self.little_e_tree.clear()
         if index == "All":
             self.write_little_endian("All")
         else:
@@ -1530,7 +1537,6 @@ class MainWindow(QWidget):
                     outfile.write("%s\n" % "All Errors")
                     outfile.write("%s\n" % divider)
                     if self.error_all:
-                        # for (text, color) in self.error_all:
                         for (text, color) in self.error_all:
                             outfile.write("%s" % text)
                     else:
-- 
GitLab