From af15fc44e83cc9f9a82ec1db5c1ae2fe845a9049 Mon Sep 17 00:00:00 2001 From: Jacob Kanev Date: Sat, 3 Feb 2024 22:45:24 +0100 Subject: [PATCH] Implemented new data field type "longtext" New data field type to display larger text areas in the GUI. A "longtext" field now spans 25 lines, a text field 10 lines, a string field 1 line. --- data/Work-Plan.trt | 12 ++++++------ treetime/item.py | 2 +- treetime/treetime.py | 10 ++++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/data/Work-Plan.trt b/data/Work-Plan.trt index 93bd416..346dfce 100644 --- a/data/Work-Plan.trt +++ b/data/Work-Plan.trt @@ -101,6 +101,12 @@ tree "Projects" child-fields ["Spent Hours"] sibling-fields [] parent-fields [] + field "Team" + field-type "set" + own-fields ["Person"] + child-fields ["Team"] + sibling-fields [] + parent-fields [] field "Planned Hours" field-type "sum-time" own-fields ["hours planned"] @@ -131,12 +137,6 @@ tree "Projects" child-fields [] sibling-fields [] parent-fields [4] - field "Communication" - field-type "node-name" - own-fields [] - child-fields [] - sibling-fields [] - parent-fields [5] tree "Status" field "Planning" diff --git a/treetime/item.py b/treetime/item.py index 103506d..7e1de68 100644 --- a/treetime/item.py +++ b/treetime/item.py @@ -160,7 +160,7 @@ def changeFieldContent(self, fieldName, fieldContent): if fieldContent: # changing the content of a string field - read the string plainly - if type in ("string", "text", "url"): + if type in ("string", "longtext", "text", "url"): field["content"] = fieldContent # changing the content of a number - read the string into a value diff --git a/treetime/treetime.py b/treetime/treetime.py index e1504cf..8ed923f 100644 --- a/treetime/treetime.py +++ b/treetime/treetime.py @@ -170,7 +170,7 @@ class TextEdit(QtWidgets.QPlainTextEdit): Special custom widget class for URL fields """ - def __init__(self, text, callback, parent=None): + def __init__(self, text, callback, height, parent=None): """ Initialise """ @@ -180,6 +180,7 @@ def __init__(self, text, callback, parent=None): self.callback = callback self.has_changed = False self.textChanged.connect(self.notifyChange) + self.setFixedHeight(height * int(self.height()/25)) def notifyChange(self): self.has_changed = True @@ -1310,10 +1311,11 @@ def showContentInDataView(self, treeIndex): name = QtWidgets.QTableWidgetItem(key) name.setFlags(nonEditFlags) name.setTextAlignment(0x82) - if self.currentItem.fields[key]['type'] == 'text': + if self.currentItem.fields[key]['type'] in ('text', 'longtext'): text = self.currentItem.fields[key]["content"] text = text and str(text) or "" # display "None" values as empty string - widget = TextEdit(text, lambda row=n: self.tableWidgetCellChanged(row, 3)) + height = self.currentItem.fields[key]['type'] == 'text' and 10 or 25 + widget = TextEdit(text, lambda row=n: self.tableWidgetCellChanged(row, 3), height) self.tableWidget.setCellWidget(n, 3, widget) elif self.currentItem.fields[key]['type'] == 'url': value = self.currentItem.fields[key]["content"] @@ -1557,7 +1559,7 @@ def tableWidgetCellChanged(self, row, column): else: fieldName = self.tableWidget.item(row, 1).text() fieldType = self.currentItem.fields[fieldName]['type'] - if fieldType in ('text', 'url'): + if fieldType in ('longtext', 'text', 'url'): newValue = self.tableWidget.cellWidget(row, 3).toPlainText() elif fieldType == 'timer': newValue = (self.tableWidget.cellWidget(row, 3).toPlainText(),