def __append_element_to_item(self, parent_item, debug_data): """ Append an elements debug_data to a QStandardItem. :type parent_item: python_qt_binding.QtGui.QStandardItem :type debug_data: dict or list or int or float or str or bool :rtype: python_qt_binding.QtGui.QStandardItem """ if type(debug_data) is list: for i, data in enumerate(debug_data): child_item = QStandardItem() child_item.setText(str(i) + ": ") child_item.setEditable(False) self.__append_element_to_item(child_item, data) parent_item.appendRow(child_item) elif type(debug_data) is dict: for label, data in debug_data.items(): child_item = QStandardItem() child_item.setText(str(label) + ": ") child_item.setEditable(False) self.__append_element_to_item(child_item, data) parent_item.appendRow(child_item) elif type(debug_data) is str or type(debug_data) is int \ or type(debug_data) is float or type(debug_data) is bool\ or type(debug_data) is unicode: parent_item.setText(parent_item.text() + str(debug_data))
def to_QItemModel(self): """ Represent the DSDs debug data as QITemModel """ # Return cached result if available if self.__cached_item_model is not None: return self.__cached_item_model # Return empty model when no dsd data was received yet if self.__cached_msg is None: return self.__empty_item_model() # Construct a new item-model model = QStandardItemModel() for i in range(len(self.stack)): elem, _ = self.stack[i] elem_item = QStandardItem() elem_item.setEditable(False) if isinstance(elem, SequenceTreeElement): elem_item.setText('Sequence: ' + ', '.join( str(e) for e in elem.action_elements)) sequence = True else: elem_item.setText(str(elem)) sequence = False self.__append_element_to_item(elem_item, elem.debug_data) model.invisibleRootItem().appendRow(elem_item) # Add a spacer if this is not the last item if elem != self.stack[-1][0]: spacer = QStandardItem() spacer.setEditable(False) model.invisibleRootItem().appendRow(spacer) if sequence: break self.__cached_item_model = model return self.__cached_item_model
def _add_log(self, data): timestamp = QStandardItem( QDateTime.currentDateTime().toString('d.M.yyyy hh:mm:ss.zzz')) timestamp.setTextAlignment(Qt.AlignRight) timestamp.setEditable(False) message = QStandardItem(data) message.setEditable(False) row = [] row.append(timestamp) row.append(message) self._message_count = self._message_count + 1 self.model.insertRow(0, row) if self._message_count > self._message_limit: self.model.removeRow(self.model.rowCount() - 1) self._message_count = self._message_count - 1
def _append_element_to_item(self, parent_item, debug_data): """ Append an elements debug_data to a QStandardItem. :type parent_item: python_qt_binding.QtGui.QStandardItem :type debug_data: dict or list or int or float or str or bool :rtype: python_qt_binding.QtGui.QStandardItem """ if isinstance(debug_data, list): for i, data in enumerate(debug_data): child_item = QStandardItem() child_item.setText(str(i) + ": ") child_item.setEditable(False) self._append_element_to_item(child_item, data) parent_item.appendRow(child_item) elif isinstance(debug_data, dict): for label, data in debug_data.items(): child_item = QStandardItem() child_item.setText(str(label) + ": ") child_item.setEditable(False) self._append_element_to_item(child_item, data) parent_item.appendRow(child_item) elif isinstance(debug_data, (bool, float, int, str, bytes)): parent_item.setText(parent_item.text() + str(debug_data))