From 085ebeb9deaad0cbd3a96373b0e53d27e7d0f8b8 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 23 Apr 2024 23:53:52 +0200 Subject: [PATCH] Start: replace QGridLayout with FlowLayout --- src/Mod/Start/Gui/StartView.cpp | 37 +++++++++++++-------------------- src/Mod/Start/Gui/StartView.h | 2 +- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/Mod/Start/Gui/StartView.cpp b/src/Mod/Start/Gui/StartView.cpp index bc43fed03f..b9bdd744be 100644 --- a/src/Mod/Start/Gui/StartView.cpp +++ b/src/Mod/Start/Gui/StartView.cpp @@ -37,6 +37,7 @@ #include "StartView.h" #include "FileCardDelegate.h" #include "FileCardView.h" +#include "FlowLayout.h" #include "Gui/Workbench.h" #include #include @@ -64,8 +65,9 @@ gsl::owner createNewButton(const NewButton& newButton) { auto hGrp = App::GetApplication().GetParameterGroupByPath( "User parameter:BaseApp/Preferences/Mod/Start"); - const auto cardSpacing = static_cast(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT - const auto newFileIconSize = static_cast(hGrp->GetInt("NewFileIconSize", 48)); // NOLINT + const auto cardSpacing = static_cast(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT + const auto newFileIconSize = static_cast(hGrp->GetInt("NewFileIconSize", 48)); // NOLINT + const auto cardLabelWith = static_cast(hGrp->GetInt("FileCardLabelWith", 180)); // NOLINT auto button = gsl::owner(new QPushButton()); auto mainLayout = gsl::owner(new QHBoxLayout(button)); @@ -88,6 +90,7 @@ gsl::owner createNewButton(const NewButton& newButton) mainLayout->addStretch(); button->setMinimumHeight(newFileIconSize + cardSpacing); + button->setMinimumWidth(newFileIconSize + cardLabelWith); return button; } @@ -137,9 +140,9 @@ StartView::StartView(Gui::Document* pcDocument, QWidget* parent) auto newFileLabel = gsl::owner(new QLabel(h1Start + tr("New File") + h1End)); layout->addWidget(newFileLabel); - auto gridLayout = gsl::owner(new QGridLayout); - layout->addLayout(gridLayout); - configureNewFileButtons(gridLayout); + auto flowLayout = gsl::owner(new FlowLayout); + layout->addLayout(flowLayout); + configureNewFileButtons(flowLayout); auto recentFilesLabel = gsl::owner(new QLabel(h1Start + tr("Recent Files") + h1End)); layout->addWidget(recentFilesLabel); @@ -165,7 +168,7 @@ StartView::StartView(Gui::Document* pcDocument, QWidget* parent) configureRecentFilesListWidget(recentFilesListWidget, recentFilesLabel); } -void StartView::configureNewFileButtons(QGridLayout* layout) const +void StartView::configureNewFileButtons(QLayout* layout) const { auto newEmptyFile = createNewButton({tr("Empty file"), tr("Create a new empty FreeCAD file"), @@ -200,22 +203,12 @@ void StartView::configureNewFileButtons(QGridLayout* layout) const // TODO: Ensure all of the required WBs are actually available // TODO: Make this layout more flexible (e.g. use a single line if possible) - if (!hGrp->GetBool("FileCardSingleLine", true)) { - layout->addWidget(partDesign, 0, 0); - layout->addWidget(assembly, 0, 1); - layout->addWidget(draft, 0, 2); - layout->addWidget(arch, 1, 0); - layout->addWidget(newEmptyFile, 1, 1); - layout->addWidget(openFile, 1, 2); - } - else { - layout->addWidget(partDesign, 0, 0); - layout->addWidget(assembly, 0, 1); - layout->addWidget(draft, 0, 2); - layout->addWidget(arch, 0, 3); - layout->addWidget(newEmptyFile, 0, 4); - layout->addWidget(openFile, 0, 5); - } + layout->addWidget(partDesign); + layout->addWidget(assembly); + layout->addWidget(draft); + layout->addWidget(arch); + layout->addWidget(newEmptyFile); + layout->addWidget(openFile); connect(newEmptyFile, &QPushButton::clicked, this, &StartView::newEmptyFile); connect(openFile, &QPushButton::clicked, this, &StartView::openExistingFile); diff --git a/src/Mod/Start/Gui/StartView.h b/src/Mod/Start/Gui/StartView.h index 602b8892d1..8f9439c2ad 100644 --- a/src/Mod/Start/Gui/StartView.h +++ b/src/Mod/Start/Gui/StartView.h @@ -75,7 +75,7 @@ public: }; protected: - void configureNewFileButtons(QGridLayout* layout) const; + void configureNewFileButtons(QLayout* layout) const; static void configureFileCardWidget(QListView* fileCardWidget); void configureRecentFilesListWidget(QListView* recentFilesListWidget, QLabel* recentFilesLabel); void configureExamplesListWidget(QListView* examplesListWidget);