From 9baea9c9fdbb000280fca2250e8c92d990ca0f7e Mon Sep 17 00:00:00 2001 From: Debanjum Singh Solanky Date: Fri, 12 Aug 2022 18:19:44 +0300 Subject: [PATCH] Let Input Fields Wrap. Adjust Height based on Text in Field - Convert Input Fields into PlainTextEdit - Display Each Selected File on a Separate Line in Field - Set Height of FileBrowser Input Field based on Number of Lines/Files --- src/interface/desktop/configure_screen.py | 2 +- src/interface/desktop/file_browser.py | 17 +++++++++++------ src/interface/desktop/labelled_text_field.py | 4 +++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/interface/desktop/configure_screen.py b/src/interface/desktop/configure_screen.py index d556d947..98a9f3d4 100644 --- a/src/interface/desktop/configure_screen.py +++ b/src/interface/desktop/configure_screen.py @@ -173,7 +173,7 @@ class ConfigureScreen(QtWidgets.QDialog): self.new_config['processor'][child.processor_type.value] = merge_dicts(current_processor_config, default_processor_config) elif isinstance(child, LabelledTextField) and child.processor_type in self.new_config['processor']: if child.processor_type == ProcessorType.Conversation: - self.new_config['processor'][child.processor_type.value]['openai-api-key'] = child.input_field.text() if child.input_field.text() != '' else None + self.new_config['processor'][child.processor_type.value]['openai-api-key'] = child.input_field.toPlainText() if child.input_field.toPlainText() != '' else None def save_settings_to_file(self) -> bool: # Validate config before writing to file diff --git a/src/interface/desktop/file_browser.py b/src/interface/desktop/file_browser.py index 477deee0..0dd75f16 100644 --- a/src/interface/desktop/file_browser.py +++ b/src/interface/desktop/file_browser.py @@ -19,12 +19,14 @@ class FileBrowser(QtWidgets.QWidget): self.label = QtWidgets.QLabel() self.label.setText(title) self.label.setFixedWidth(95) + self.label.setWordWrap(True) layout.addWidget(self.label) - self.lineEdit = QtWidgets.QLineEdit(self) + self.lineEdit = QtWidgets.QPlainTextEdit(self) self.lineEdit.setFixedWidth(180) self.setFiles(default_files) - + self.lineEdit.setFixedHeight(min(7+20*len(self.lineEdit.toPlainText().split('\n')),90)) + self.lineEdit.textChanged.connect(self.updateFieldHeight) layout.addWidget(self.lineEdit) self.button = QtWidgets.QPushButton('Select') @@ -60,12 +62,15 @@ class FileBrowser(QtWidgets.QWidget): if not self.filepaths or len(self.filepaths) == 0: return elif len(self.filepaths) == 1: - self.lineEdit.setText(self.filepaths[0]) + self.lineEdit.setPlainText(self.filepaths[0]) else: - self.lineEdit.setText(",".join(self.filepaths)) + self.lineEdit.setPlainText("\n".join(self.filepaths)) def getPaths(self): - if self.lineEdit.text() == '': + if self.lineEdit.toPlainText() == '': return [] else: - return self.lineEdit.text().split(',') + return self.lineEdit.toPlainText().split('\n') + + def updateFieldHeight(self): + self.lineEdit.setFixedHeight(min(7+20*len(self.lineEdit.toPlainText().split('\n')),90)) diff --git a/src/interface/desktop/labelled_text_field.py b/src/interface/desktop/labelled_text_field.py index 9bc3b7c6..a4b01534 100644 --- a/src/interface/desktop/labelled_text_field.py +++ b/src/interface/desktop/labelled_text_field.py @@ -15,10 +15,12 @@ class LabelledTextField(QtWidgets.QWidget): self.label = QtWidgets.QLabel() self.label.setText(title) self.label.setFixedWidth(95) + self.label.setWordWrap(True) layout.addWidget(self.label) - self.input_field = QtWidgets.QLineEdit(self) + self.input_field = QtWidgets.QTextEdit(self) self.input_field.setFixedWidth(250) + self.input_field.setFixedHeight(27) self.input_field.setText(default_value) layout.addWidget(self.input_field)