skia2/debugger/QT/SkSettingsWidget.cpp
commit-bot@chromium.org 22d39332bd Convert debugger settings controls to combo boxes.
This reduces the height of the settings panel significantly compared to
radio buttons.

With some luck, the debugger may now fit on non-4K monitors :)

R=bungeman@google.com, robertphillips@google.com

Author: fmalita@chromium.org

Review URL: https://codereview.chromium.org/78843005

git-svn-id: http://skia.googlecode.com/svn/trunk@12342 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-11-21 15:37:29 +00:00

206 lines
7.1 KiB
C++

/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "SkSettingsWidget.h"
#include <iostream>
#include <math.h>
// TODO(chudy): See if the layout can't be attached to the frame post construction.
SkSettingsWidget::SkSettingsWidget() : QWidget()
, mainFrameLayout(this)
, fVerticalLayout(&mainFrame)
, fVisibleFrameLayout(&fVisibleFrame)
, fCommandLayout(&fCommandFrame)
, fCurrentCommandBox(&fCommandFrame)
, fCommandHitBox(&fCommandFrame)
, fCanvasLayout(&fCanvasFrame)
, fZoomLayout(&fZoomFrame)
, fZoomBox(&fZoomFrame)
{
// Sets up the container and it's alignment around the settings widget.
mainFrame.setFrameShape(QFrame::StyledPanel);
mainFrame.setFrameShadow(QFrame::Raised);
mainFrameLayout.setSpacing(6);
mainFrameLayout.setContentsMargins(0,0,0,0);
mainFrameLayout.addWidget(&mainFrame);
// Vertical Layout is the alignment inside of the main frame.
fVerticalLayout.setContentsMargins(11,11,11,11);
fVerticalLayout.setAlignment(Qt::AlignTop);
// Visible Toggle
fVisibleText.setText("Visibility Filter");
fVisibleFrame.setFrameShape(QFrame::StyledPanel);
fVisibleFrame.setFrameShadow(QFrame::Raised);
fVisibilityCombo.addItem("Off", QVariant(false));
fVisibilityCombo.addItem("On", QVariant(true));
fVisibleFrameLayout.setContentsMargins(11, 5, 11, 5);
fVisibleFrameLayout.addWidget(&fVisibilityCombo);
connect(&fVisibilityCombo, SIGNAL(activated(int)), this,
SIGNAL(visibilityFilterChanged()));
// Canvas
fCanvasToggle.setText("Render Targets");
fCanvasFrame.setFrameShape(QFrame::StyledPanel);
fCanvasFrame.setFrameShadow(QFrame::Raised);
fRasterLabel.setText("Raster: ");
fRasterLabel.setMinimumWidth(178);
fRasterLabel.setMaximumWidth(178);
fRasterCheckBox.setChecked(true);
fOverdrawVizLabel.setText(" Overdraw Viz: ");
fOverdrawVizLabel.setMinimumWidth(178);
fOverdrawVizLabel.setMaximumWidth(178);
#if SK_SUPPORT_GPU
fGLLabel.setText("OpenGL: ");
fGLLabel.setMinimumWidth(178);
fGLLabel.setMaximumWidth(178);
fGLMSAAButtonGroup.setTitle("MSAA");
fGLMSAAButtonGroup.setMinimumWidth(178);
fGLMSAAButtonGroup.setMaximumWidth(178);
fGLMSAAButtonGroup.setEnabled(fGLCheckBox.isChecked());
fGLMSAACombo.addItem("Off", QVariant(0));
fGLMSAACombo.addItem("4", QVariant(4));
fGLMSAACombo.addItem("16", QVariant(16));
fGLMSAALayout.addWidget(&fGLMSAACombo);
fGLMSAAButtonGroup.setLayout(&fGLMSAALayout);
connect(&fGLCheckBox, SIGNAL(toggled(bool)), &fGLMSAAButtonGroup,
SLOT(setEnabled(bool)));
connect(&fGLCheckBox, SIGNAL(toggled(bool)), this,
SIGNAL(glSettingsChanged()));
connect(&fGLMSAACombo, SIGNAL(activated(int)), this,
SIGNAL(glSettingsChanged()));
#endif
{
// set up filter buttons
fFilterButtonGroup.setTitle("Filtering");
fFilterButtonGroup.setMinimumWidth(178);
fFilterButtonGroup.setMaximumWidth(178);
fFilterCombo.addItem("As encoded", QVariant(SkPaint::kNone_FilterLevel));
fFilterCombo.addItem("None", QVariant(SkPaint::kNone_FilterLevel));
fFilterCombo.addItem("Low", QVariant(SkPaint::kLow_FilterLevel));
fFilterCombo.addItem("Medium", QVariant(SkPaint::kMedium_FilterLevel));
fFilterCombo.addItem("High", QVariant(SkPaint::kHigh_FilterLevel));
fFilterLayout.addWidget(&fFilterCombo);
fFilterButtonGroup.setLayout(&fFilterLayout);
connect(&fFilterCombo, SIGNAL(activated(int)), this,
SIGNAL(texFilterSettingsChanged()));
}
fRasterLayout.addWidget(&fRasterLabel);
fRasterLayout.addWidget(&fRasterCheckBox);
fOverdrawVizLayout.addWidget(&fOverdrawVizLabel);
fOverdrawVizLayout.addWidget(&fOverdrawVizCheckBox);
#if SK_SUPPORT_GPU
fGLLayout.addWidget(&fGLLabel);
fGLLayout.addWidget(&fGLCheckBox);
#endif
fCanvasLayout.setSpacing(6);
fCanvasLayout.setContentsMargins(11,11,11,11);
fCanvasLayout.addLayout(&fRasterLayout);
fCanvasLayout.addLayout(&fOverdrawVizLayout);
#if SK_SUPPORT_GPU
fCanvasLayout.addLayout(&fGLLayout);
fCanvasLayout.addWidget(&fGLMSAAButtonGroup);
#endif
fCanvasLayout.addWidget(&fFilterButtonGroup);
// Command Toggle
fCommandToggle.setText("Command Scrolling Preferences");
fCommandFrame.setFrameShape(QFrame::StyledPanel);
fCommandFrame.setFrameShadow(QFrame::Raised);
fCurrentCommandLabel.setText("Current Command: ");
fCurrentCommandLabel.setMinimumWidth(178);
fCurrentCommandLabel.setMaximumWidth(178);
fCurrentCommandBox.setText("0");
fCurrentCommandBox.setMinimumSize(QSize(50,25));
fCurrentCommandBox.setMaximumSize(QSize(50,25));
fCurrentCommandBox.setAlignment(Qt::AlignRight);
fCurrentCommandLayout.setSpacing(0);
fCurrentCommandLayout.setContentsMargins(0,0,0,0);
fCurrentCommandLayout.setAlignment(Qt::AlignLeft);
fCurrentCommandLayout.addWidget(&fCurrentCommandLabel);
fCurrentCommandLayout.addWidget(&fCurrentCommandBox);
fCommandHitLabel.setText("Command HitBox: ");
fCommandHitLabel.setMinimumWidth(178);
fCommandHitLabel.setMaximumWidth(178);
fCommandHitBox.setText("0");
fCommandHitBox.setMinimumSize(QSize(50,25));
fCommandHitBox.setMaximumSize(QSize(50,25));
fCommandHitBox.setAlignment(Qt::AlignRight);
fCommandHitLayout.setSpacing(0);
fCommandHitLayout.setContentsMargins(0,0,0,0);
fCommandHitLayout.setAlignment(Qt::AlignLeft);
fCommandHitLayout.addWidget(&fCommandHitLabel);
fCommandHitLayout.addWidget(&fCommandHitBox);
fCommandLayout.setSpacing(6);
fCommandLayout.setContentsMargins(11,11,11,11);
fCommandLayout.addLayout(&fCurrentCommandLayout);
fCommandLayout.addLayout(&fCommandHitLayout);
// Zoom Info
fZoomSetting.setText("Zoom Level: ");
fZoomSetting.setMinimumWidth(178);
fZoomSetting.setMaximumWidth(178);
fZoomFrame.setFrameShape(QFrame::StyledPanel);
fZoomFrame.setFrameShadow(QFrame::Raised);
fZoomBox.setText("100%");
fZoomBox.setMinimumSize(QSize(50,25));
fZoomBox.setMaximumSize(QSize(50,25));
fZoomBox.setAlignment(Qt::AlignRight);
fZoomLayout.setSpacing(6);
fZoomLayout.setContentsMargins(11,11,11,11);
fZoomLayout.addWidget(&fZoomSetting);
fZoomLayout.addWidget(&fZoomBox);
// Adds all widgets to settings container
fVerticalLayout.addWidget(&fVisibleText);
fVerticalLayout.addWidget(&fVisibleFrame);
fVerticalLayout.addWidget(&fCommandToggle);
fVerticalLayout.addWidget(&fCommandFrame);
fVerticalLayout.addWidget(&fCanvasToggle);
fVerticalLayout.addWidget(&fCanvasFrame);
fVerticalLayout.addWidget(&fZoomFrame);
this->setDisabled(true);
}
void SkSettingsWidget::updateCommand(int newCommand) {
fCurrentCommandBox.setText(QString::number(newCommand));
}
void SkSettingsWidget::updateHit(int newHit) {
fCommandHitBox.setText(QString::number(newHit));
}
void SkSettingsWidget::setZoomText(float scale) {
fZoomBox.setText(QString::number(scale*100, 'f', 0).append("%"));
}