From 1cfd9812451bcf8e9c2471197be25c3b5652b7e1 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 26 Feb 2022 15:48:18 +0100 Subject: [PATCH] Reduce text edit areas size of file, filter, source, transform segments --- CMakeLists.txt | 2 ++ src/headers/macro-action-file.hpp | 7 +++-- src/headers/macro-action-filter.hpp | 7 +++-- src/headers/macro-action-scene-transform.hpp | 4 +-- src/headers/macro-action-source.hpp | 4 +-- src/headers/macro-condition-file.hpp | 4 +-- src/headers/macro-condition-filter.hpp | 4 +-- .../macro-condition-scene-transform.hpp | 4 +-- src/headers/macro-condition-source.hpp | 4 +-- src/headers/resizing-text-edit.hpp | 17 ++++++++++ src/macro-action-file.cpp | 5 ++- src/macro-action-filter.cpp | 5 ++- src/macro-action-scene-transform.cpp | 5 ++- src/macro-action-source.cpp | 5 ++- src/macro-condition-file.cpp | 5 ++- src/macro-condition-filter.cpp | 5 ++- src/macro-condition-scene-transform.cpp | 5 ++- src/macro-condition-source.cpp | 5 ++- src/resizing-text-edit.cpp | 31 +++++++++++++++++++ 19 files changed, 102 insertions(+), 26 deletions(-) create mode 100644 src/headers/resizing-text-edit.hpp create mode 100644 src/resizing-text-edit.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bbb89f2d..0be4b545 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -262,6 +262,7 @@ set(advanced-scene-switcher_HEADERS src/headers/section.hpp src/headers/status-control.hpp src/headers/platform-funcs.hpp + src/headers/resizing-text-edit.hpp src/headers/utility.hpp src/headers/volume-control.hpp src/headers/version.h) @@ -359,6 +360,7 @@ set(advanced-scene-switcher_SOURCES src/screenshot-helper.cpp src/transition-selection.cpp src/name-dialog.cpp + src/resizing-text-edit.cpp src/duration-control.cpp src/status-control.cpp src/section.cpp diff --git a/src/headers/macro-action-file.hpp b/src/headers/macro-action-file.hpp index e8403049..32b1d3d6 100644 --- a/src/headers/macro-action-file.hpp +++ b/src/headers/macro-action-file.hpp @@ -1,8 +1,9 @@ #pragma once -#include -#include #include "macro-action-edit.hpp" #include "file-selection.hpp" +#include "resizing-text-edit.hpp" + +#include enum class FileAction { WRITE, @@ -57,7 +58,7 @@ signals: protected: FileSelection *_filePath; - QPlainTextEdit *_text; + ResizingPlainTextEdit *_text; QComboBox *_actions; std::shared_ptr _entryData; diff --git a/src/headers/macro-action-filter.hpp b/src/headers/macro-action-filter.hpp index 8d0d73c9..27e53e76 100644 --- a/src/headers/macro-action-filter.hpp +++ b/src/headers/macro-action-filter.hpp @@ -1,7 +1,8 @@ #pragma once -#include -#include #include "macro-action-edit.hpp" +#include "resizing-text-edit.hpp" + +#include enum class FilterAction { ENABLE, @@ -63,7 +64,7 @@ protected: QComboBox *_filters; QComboBox *_actions; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; std::shared_ptr _entryData; private: diff --git a/src/headers/macro-action-scene-transform.hpp b/src/headers/macro-action-scene-transform.hpp index 2c4481cf..f155e12c 100644 --- a/src/headers/macro-action-scene-transform.hpp +++ b/src/headers/macro-action-scene-transform.hpp @@ -2,9 +2,9 @@ #include "macro-action-edit.hpp" #include "scene-selection.hpp" #include "scene-item-selection.hpp" +#include "resizing-text-edit.hpp" #include -#include class MacroActionSceneTransform : public MacroAction { public: @@ -61,7 +61,7 @@ protected: SceneSelectionWidget *_scenes; SceneItemSelectionWidget *_sources; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; std::shared_ptr _entryData; private: diff --git a/src/headers/macro-action-source.hpp b/src/headers/macro-action-source.hpp index 7b169aad..70bb47f7 100644 --- a/src/headers/macro-action-source.hpp +++ b/src/headers/macro-action-source.hpp @@ -1,10 +1,10 @@ #pragma once #include "macro-action-edit.hpp" +#include "resizing-text-edit.hpp" #include #include #include -#include enum class SourceAction { ENABLE, @@ -63,7 +63,7 @@ protected: QComboBox *_sources; QComboBox *_actions; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; QLabel *_warning; std::shared_ptr _entryData; diff --git a/src/headers/macro-condition-file.hpp b/src/headers/macro-condition-file.hpp index 0e0dd07a..06d66c0b 100644 --- a/src/headers/macro-condition-file.hpp +++ b/src/headers/macro-condition-file.hpp @@ -1,13 +1,13 @@ #pragma once #include "macro.hpp" #include "file-selection.hpp" +#include "resizing-text-edit.hpp" #include #include #include #include #include -#include #include enum class FileType { @@ -75,7 +75,7 @@ signals: protected: QComboBox *_fileType; FileSelection *_filePath; - QPlainTextEdit *_matchText; + ResizingPlainTextEdit *_matchText; QCheckBox *_useRegex; QCheckBox *_checkModificationDate; QCheckBox *_checkFileContent; diff --git a/src/headers/macro-condition-filter.hpp b/src/headers/macro-condition-filter.hpp index 1bf59302..37f2fabe 100644 --- a/src/headers/macro-condition-filter.hpp +++ b/src/headers/macro-condition-filter.hpp @@ -1,9 +1,9 @@ #pragma once #include "macro.hpp" +#include "resizing-text-edit.hpp" #include #include -#include #include enum class FilterCondition { @@ -67,7 +67,7 @@ protected: QComboBox *_filters; QComboBox *_conditions; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; QCheckBox *_regex; std::shared_ptr _entryData; diff --git a/src/headers/macro-condition-scene-transform.hpp b/src/headers/macro-condition-scene-transform.hpp index 7f61fbee..25af66b8 100644 --- a/src/headers/macro-condition-scene-transform.hpp +++ b/src/headers/macro-condition-scene-transform.hpp @@ -2,9 +2,9 @@ #include "macro.hpp" #include "scene-selection.hpp" #include "scene-item-selection.hpp" +#include "resizing-text-edit.hpp" #include -#include #include class MacroConditionSceneTransform : public MacroCondition { @@ -61,7 +61,7 @@ protected: SceneSelectionWidget *_scenes; SceneItemSelectionWidget *_sources; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; QCheckBox *_regex; std::shared_ptr _entryData; diff --git a/src/headers/macro-condition-source.hpp b/src/headers/macro-condition-source.hpp index b2d226c1..b1b1f545 100644 --- a/src/headers/macro-condition-source.hpp +++ b/src/headers/macro-condition-source.hpp @@ -1,9 +1,9 @@ #pragma once #include "macro.hpp" +#include "resizing-text-edit.hpp" #include #include -#include #include enum class SourceCondition { @@ -64,7 +64,7 @@ protected: QComboBox *_sources; QComboBox *_conditions; QPushButton *_getSettings; - QPlainTextEdit *_settings; + ResizingPlainTextEdit *_settings; QCheckBox *_regex; std::shared_ptr _entryData; diff --git a/src/headers/resizing-text-edit.hpp b/src/headers/resizing-text-edit.hpp new file mode 100644 index 00000000..f68457ed --- /dev/null +++ b/src/headers/resizing-text-edit.hpp @@ -0,0 +1,17 @@ +#pragma once +#include + +class ResizingPlainTextEdit : public QPlainTextEdit { + Q_OBJECT +public: + ResizingPlainTextEdit(QWidget *parent, const int scrollAt = 10, + const int minLines = 3, + const int paddingLines = 2); +private slots: + void ResizeTexteditArea(); + +private: + const int _scrollAt; + const int _minLines; + const int _paddingLines; +}; diff --git a/src/macro-action-file.cpp b/src/macro-action-file.cpp index cf37027f..702804c4 100644 --- a/src/macro-action-file.cpp +++ b/src/macro-action-file.cpp @@ -87,7 +87,7 @@ MacroActionFileEdit::MacroActionFileEdit( : QWidget(parent) { _filePath = new FileSelection(FileSelection::Type::WRITE); - _text = new QPlainTextEdit(); + _text = new ResizingPlainTextEdit(this); _actions = new QComboBox(); populateActionSelection(_actions); @@ -150,6 +150,9 @@ void MacroActionFileEdit::TextChanged() std::lock_guard lock(switcher->m); _entryData->_text = _text->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroActionFileEdit::ActionChanged(int value) diff --git a/src/macro-action-filter.cpp b/src/macro-action-filter.cpp index d22e8fd6..2bec104c 100644 --- a/src/macro-action-filter.cpp +++ b/src/macro-action-filter.cpp @@ -98,7 +98,7 @@ MacroActionFilterEdit::MacroActionFilterEdit( _actions = new QComboBox(); _getSettings = new QPushButton( obs_module_text("AdvSceneSwitcher.action.filter.getSettings")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); populateActionSelection(_actions); populateSourcesWithFilterSelection(_sources); @@ -211,6 +211,9 @@ void MacroActionFilterEdit::SettingsChanged() std::lock_guard lock(switcher->m); _entryData->_settings = _settings->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroActionFilterEdit::SetWidgetVisibility(bool showSettings) diff --git a/src/macro-action-scene-transform.cpp b/src/macro-action-scene-transform.cpp index 79a24556..19e5301d 100644 --- a/src/macro-action-scene-transform.cpp +++ b/src/macro-action-scene-transform.cpp @@ -111,7 +111,7 @@ MacroActionSceneTransformEdit::MacroActionSceneTransformEdit( _sources = new SceneItemSelectionWidget(parent); _getSettings = new QPushButton(obs_module_text( "AdvSceneSwitcher.action.sceneTransform.getTransform")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); QWidget::connect(_scenes, SIGNAL(SceneChanged(const SceneSelection &)), this, SLOT(SceneChanged(const SceneSelection &))); @@ -212,4 +212,7 @@ void MacroActionSceneTransformEdit::SettingsChanged() std::lock_guard lock(switcher->m); auto json = _settings->toPlainText().toStdString(); _entryData->SetSettings(json); + + adjustSize(); + updateGeometry(); } diff --git a/src/macro-action-source.cpp b/src/macro-action-source.cpp index a2776827..376cc73f 100644 --- a/src/macro-action-source.cpp +++ b/src/macro-action-source.cpp @@ -90,7 +90,7 @@ MacroActionSourceEdit::MacroActionSourceEdit( _actions = new QComboBox(); _getSettings = new QPushButton( obs_module_text("AdvSceneSwitcher.action.source.getSettings")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); _warning = new QLabel( obs_module_text("AdvSceneSwitcher.action.source.warning")); @@ -184,6 +184,9 @@ void MacroActionSourceEdit::SettingsChanged() std::lock_guard lock(switcher->m); _entryData->_settings = _settings->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroActionSourceEdit::SetWidgetVisibility(bool showSettings) diff --git a/src/macro-condition-file.cpp b/src/macro-condition-file.cpp index 59ee0bf9..97623ea0 100644 --- a/src/macro-condition-file.cpp +++ b/src/macro-condition-file.cpp @@ -138,7 +138,7 @@ MacroConditionFileEdit::MacroConditionFileEdit( { _fileType = new QComboBox(); _filePath = new FileSelection(); - _matchText = new QPlainTextEdit(); + _matchText = new ResizingPlainTextEdit(this); _useRegex = new QCheckBox( obs_module_text("AdvSceneSwitcher.fileTab.useRegExp")); _checkModificationDate = new QCheckBox(obs_module_text( @@ -250,6 +250,9 @@ void MacroConditionFileEdit::MatchTextChanged() std::lock_guard lock(switcher->m); _entryData->_text = _matchText->toPlainText().toUtf8().constData(); + + adjustSize(); + updateGeometry(); } void MacroConditionFileEdit::UseRegexChanged(int state) diff --git a/src/macro-condition-filter.cpp b/src/macro-condition-filter.cpp index 2cbd8c30..7e6d0d6c 100644 --- a/src/macro-condition-filter.cpp +++ b/src/macro-condition-filter.cpp @@ -100,7 +100,7 @@ MacroConditionFilterEdit::MacroConditionFilterEdit( _conditions = new QComboBox(); _getSettings = new QPushButton(obs_module_text( "AdvSceneSwitcher.condition.filter.getSettings")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); _regex = new QCheckBox( obs_module_text("AdvSceneSwitcher.condition.filter.regex")); @@ -208,6 +208,9 @@ void MacroConditionFilterEdit::SettingsChanged() std::lock_guard lock(switcher->m); _entryData->_settings = _settings->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroConditionFilterEdit::RegexChanged(int state) diff --git a/src/macro-condition-scene-transform.cpp b/src/macro-condition-scene-transform.cpp index aac47752..767b69db 100644 --- a/src/macro-condition-scene-transform.cpp +++ b/src/macro-condition-scene-transform.cpp @@ -73,7 +73,7 @@ MacroConditionSceneTransformEdit::MacroConditionSceneTransformEdit( parent, true, SceneItemSelectionWidget::AllSelectionType::ANY); _getSettings = new QPushButton(obs_module_text( "AdvSceneSwitcher.condition.sceneTransform.getTransform")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); _regex = new QCheckBox(obs_module_text( "AdvSceneSwitcher.condition.sceneTransform.regex")); @@ -190,6 +190,9 @@ void MacroConditionSceneTransformEdit::SettingsChanged() std::lock_guard lock(switcher->m); _entryData->_settings = _settings->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroConditionSceneTransformEdit::RegexChanged(int state) diff --git a/src/macro-condition-source.cpp b/src/macro-condition-source.cpp index e9c06c4c..10be41dd 100644 --- a/src/macro-condition-source.cpp +++ b/src/macro-condition-source.cpp @@ -94,7 +94,7 @@ MacroConditionSourceEdit::MacroConditionSourceEdit( _conditions = new QComboBox(); _getSettings = new QPushButton(obs_module_text( "AdvSceneSwitcher.condition.source.getSettings")); - _settings = new QPlainTextEdit(); + _settings = new ResizingPlainTextEdit(this); _regex = new QCheckBox( obs_module_text("AdvSceneSwitcher.condition.source.regex")); @@ -185,6 +185,9 @@ void MacroConditionSourceEdit::SettingsChanged() std::lock_guard lock(switcher->m); _entryData->_settings = _settings->toPlainText().toStdString(); + + adjustSize(); + updateGeometry(); } void MacroConditionSourceEdit::RegexChanged(int state) diff --git a/src/resizing-text-edit.cpp b/src/resizing-text-edit.cpp new file mode 100644 index 00000000..2c8dc1ce --- /dev/null +++ b/src/resizing-text-edit.cpp @@ -0,0 +1,31 @@ +#include "headers/resizing-text-edit.hpp" + +ResizingPlainTextEdit::ResizingPlainTextEdit(QWidget *parent, + const int scrollAt, + const int minLines, + const int paddingLines) + : QPlainTextEdit(parent), + _scrollAt(scrollAt), + _minLines(minLines), + _paddingLines(paddingLines) +{ + QWidget::connect(this, SIGNAL(textChanged()), this, + SLOT(ResizeTexteditArea())); +} + +void ResizingPlainTextEdit::ResizeTexteditArea() +{ + QFontMetrics f(font()); + int rowHeight = f.lineSpacing(); + int numLines = document()->blockCount(); + if (numLines + _paddingLines < _minLines) { + setFixedHeight(_minLines * rowHeight); + } else if (numLines + _paddingLines < _scrollAt) { + setFixedHeight((numLines + _paddingLines) * rowHeight); + } else { + setFixedHeight(_scrollAt * rowHeight); + } + + adjustSize(); + updateGeometry(); +}