From 4de9600a98d027fd794a875163d9e82d0b6bebc7 Mon Sep 17 00:00:00 2001 From: Leonardo Zide Date: Wed, 21 Jun 2017 21:40:26 -0700 Subject: [PATCH] Disable parts list icon mode if FBOs are not supported. --- common/lc_partselectionwidget.cpp | 68 ++++++++++++++++++------------- common/lc_partselectionwidget.h | 3 +- qt/lc_qglwidget.cpp | 4 ++ 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/common/lc_partselectionwidget.cpp b/common/lc_partselectionwidget.cpp index c360dd17..51f8d4ad 100644 --- a/common/lc_partselectionwidget.cpp +++ b/common/lc_partselectionwidget.cpp @@ -8,6 +8,7 @@ #include "project.h" #include "pieceinf.h" #include "view.h" +#include "lc_glextensions.h" Q_DECLARE_METATYPE(QList) @@ -424,34 +425,37 @@ void lcPartSelectionListView::CustomContextMenuRequested(QPoint Pos) { QMenu* Menu = new QMenu(this); - QActionGroup* IconGroup = new QActionGroup(Menu); + if (gSupportsFramebufferObjectARB || gSupportsFramebufferObjectEXT) + { + QActionGroup* IconGroup = new QActionGroup(Menu); - QAction* NoIcons = Menu->addAction(tr("No Icons"), this, SLOT(SetNoIcons())); - NoIcons->setCheckable(true); - NoIcons->setChecked(mListModel->GetIconSize() == 0); - IconGroup->addAction(NoIcons); + QAction* NoIcons = Menu->addAction(tr("No Icons"), this, SLOT(SetNoIcons())); + NoIcons->setCheckable(true); + NoIcons->setChecked(mListModel->GetIconSize() == 0); + IconGroup->addAction(NoIcons); - QAction* SmallIcons = Menu->addAction(tr("Small Icons"), this, SLOT(SetSmallIcons())); - SmallIcons->setCheckable(true); - SmallIcons->setChecked(mListModel->GetIconSize() == 32); - IconGroup->addAction(SmallIcons); + QAction* SmallIcons = Menu->addAction(tr("Small Icons"), this, SLOT(SetSmallIcons())); + SmallIcons->setCheckable(true); + SmallIcons->setChecked(mListModel->GetIconSize() == 32); + IconGroup->addAction(SmallIcons); - QAction* MediumIcons = Menu->addAction(tr("Medium Icons"), this, SLOT(SetMediumIcons())); - MediumIcons->setCheckable(true); - MediumIcons->setChecked(mListModel->GetIconSize() == 64); - IconGroup->addAction(MediumIcons); + QAction* MediumIcons = Menu->addAction(tr("Medium Icons"), this, SLOT(SetMediumIcons())); + MediumIcons->setCheckable(true); + MediumIcons->setChecked(mListModel->GetIconSize() == 64); + IconGroup->addAction(MediumIcons); - QAction* LargeIcons = Menu->addAction(tr("Large Icons"), this, SLOT(SetLargeIcons())); - LargeIcons->setCheckable(true); - LargeIcons->setChecked(mListModel->GetIconSize() == 96); - IconGroup->addAction(LargeIcons); + QAction* LargeIcons = Menu->addAction(tr("Large Icons"), this, SLOT(SetLargeIcons())); + LargeIcons->setCheckable(true); + LargeIcons->setChecked(mListModel->GetIconSize() == 96); + IconGroup->addAction(LargeIcons); - QAction* ExtraLargeIcons = Menu->addAction(tr("Extra Large Icons"), this, SLOT(SetExtraLargeIcons())); - ExtraLargeIcons->setCheckable(true); - ExtraLargeIcons->setChecked(mListModel->GetIconSize() == 192); - IconGroup->addAction(ExtraLargeIcons); + QAction* ExtraLargeIcons = Menu->addAction(tr("Extra Large Icons"), this, SLOT(SetExtraLargeIcons())); + ExtraLargeIcons->setCheckable(true); + ExtraLargeIcons->setChecked(mListModel->GetIconSize() == 192); + IconGroup->addAction(ExtraLargeIcons); - Menu->addSeparator(); + Menu->addSeparator(); + } if (mListModel->GetIconSize() != 0 && !mListModel->IsListMode()) { @@ -464,13 +468,16 @@ void lcPartSelectionListView::CustomContextMenuRequested(QPoint Pos) DecoratedParts->setCheckable(true); DecoratedParts->setChecked(mFilterModel->GetShowDecoratedParts()); - QAction* ListMode = Menu->addAction(tr("List Mode"), this, SLOT(ToggleListMode())); - ListMode->setCheckable(true); - ListMode->setChecked(mListModel->IsListMode()); + if (mListModel->GetIconSize() != 0) + { + QAction* ListMode = Menu->addAction(tr("List Mode"), this, SLOT(ToggleListMode())); + ListMode->setCheckable(true); + ListMode->setChecked(mListModel->IsListMode()); - QAction* FixedColor = Menu->addAction(tr("Lock Preview Color"), this, SLOT(ToggleFixedColor())); - FixedColor->setCheckable(true); - FixedColor->setChecked(mListModel->IsColorLocked()); + QAction* FixedColor = Menu->addAction(tr("Lock Preview Color"), this, SLOT(ToggleFixedColor())); + FixedColor->setCheckable(true); + FixedColor->setChecked(mListModel->IsColorLocked()); + } Menu->popup(viewport()->mapToGlobal(Pos)); } @@ -655,6 +662,11 @@ void lcPartSelectionWidget::SaveState(QSettings& Settings) Settings.setValue("PartSelectionSplitter", QVariant::fromValue(Sizes)); } +void lcPartSelectionWidget::DisableIconMode() +{ + mPartsWidget->SetNoIcons(); +} + void lcPartSelectionWidget::DockLocationChanged(Qt::DockWidgetArea Area) { if (Area == Qt::LeftDockWidgetArea || Area == Qt::RightDockWidgetArea) diff --git a/common/lc_partselectionwidget.h b/common/lc_partselectionwidget.h index a1053415..6c873dff 100644 --- a/common/lc_partselectionwidget.h +++ b/common/lc_partselectionwidget.h @@ -141,7 +141,7 @@ public: void UpdateViewMode(); -protected slots: +public slots: void CustomContextMenuRequested(QPoint Pos); void SetNoIcons(); void SetSmallIcons(); @@ -173,6 +173,7 @@ public: void UpdateCategories(); void LoadState(QSettings& Settings); void SaveState(QSettings& Settings); + void DisableIconMode(); void SetColorIndex(int ColorIndex) { diff --git a/qt/lc_qglwidget.cpp b/qt/lc_qglwidget.cpp index f48cb726..eae5ab8b 100644 --- a/qt/lc_qglwidget.cpp +++ b/qt/lc_qglwidget.cpp @@ -6,6 +6,7 @@ #include "lc_library.h" #include "lc_application.h" #include "lc_mainwindow.h" +#include "lc_partselectionwidget.h" #include "lc_context.h" #include "view.h" #include "texfont.h" @@ -100,6 +101,9 @@ lcQGLWidget::lcQGLWidget(QWidget *parent, lcGLWidget *owner, bool view) if (!gSupportsShaderObjects) lcGetPreferences().mLightingMode = LC_LIGHTING_UNLIT; + if (!gSupportsFramebufferObjectARB && !gSupportsFramebufferObjectEXT) + gMainWindow->GetPartSelectionWidget()->DisableIconMode(); + gPlaceholderMesh = new lcMesh; gPlaceholderMesh->CreateBox(); }