123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- /*=========================================================================
- Library: CTK
- Copyright (c) Kitware Inc.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0.txt
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =========================================================================*/
- // Qt includes
- #include <QApplication>
- #include <QComboBox>
- #include <QHBoxLayout>
- #include <QMenu>
- #include <QPushButton>
- #include <QSlider>
- #include <QTimer>
- #include <QToolButton>
- #include <QVBoxLayout>
- // CTK includes
- #include "ctkCallback.h"
- #include "ctkCollapsibleButton.h"
- #include "ctkPopupWidget.h"
- // STD includes
- #include <cstdlib>
- #include <iostream>
- //-----------------------------------------------------------------------------
- QWidget* createPanel(const QString& title, QList<ctkPopupWidget*>& popups)
- {
- QWidget* topLevel = new QWidget(0);
- topLevel->setObjectName("topLevelWidget");
- topLevel->setWindowTitle(title);
- ctkCollapsibleButton* button = new ctkCollapsibleButton;
-
- QComboBox* focusComboBox = new QComboBox;
- focusComboBox->setObjectName("focusComboBox");
- focusComboBox->addItem("Focus popup");
- focusComboBox->addItem("Focus popup");
- focusComboBox->addItem("Focus popup");
- focusComboBox->addItem("Focus popup");
- QPushButton* openButton = new QPushButton("Open popup");
- openButton->setObjectName("openButton");
- QPushButton* toggleButton = new QPushButton("Toggle popup");
- toggleButton->setObjectName("toggleButton");
- toggleButton->setCheckable(true);
- QToolButton* pinButton = new QToolButton(0);
- pinButton->setCheckable(true);
- QVBoxLayout* collapsibleLayout = new QVBoxLayout;
- collapsibleLayout->addWidget(focusComboBox);
- button->setLayout(collapsibleLayout);
- QVBoxLayout* vlayout = new QVBoxLayout;
- vlayout->addWidget(button);
- vlayout->addWidget(openButton);
- vlayout->addWidget(toggleButton);
- vlayout->addWidget(pinButton);
- topLevel->setLayout(vlayout);
- ctkPopupWidget* focusPopup = new ctkPopupWidget(focusComboBox);
- focusPopup->setObjectName("focusPopup");
- focusPopup->setAutoShow(true);
- focusPopup->setAutoHide(true);
- QPushButton* focusPopupContent = new QPushButton("button");
- focusPopupContent->setObjectName("focusPopupContent");
- QToolButton* popupToolButton = new QToolButton;
- popupToolButton->setObjectName("popupToolButton");
- QMenu* menu = new QMenu(popupToolButton);
- menu->setObjectName("menu");
- menu->addAction("first menu item");
- menu->addAction("second menu item");
- menu->addAction("third menu item");
- menu->addAction("fourth menu item");
- popupToolButton->setPopupMode(QToolButton::InstantPopup);
- popupToolButton->setMenu(menu);
- QHBoxLayout* focusLayout = new QHBoxLayout;
- focusLayout->addWidget(focusPopupContent);
- focusLayout->addWidget(popupToolButton);
- focusPopup->setLayout(focusLayout);
- focusLayout->setContentsMargins(0,0,0,0);
- QPalette palette = focusPopup->palette();
- QLinearGradient linearGradient(QPointF(0.f, 0.f), QPointF(0.f, 0.666f));
- linearGradient.setSpread(QGradient::PadSpread);
- linearGradient.setCoordinateMode(QGradient::StretchToDeviceMode);
- linearGradient.setColorAt(0, palette.color(QPalette::Window));
- linearGradient.setColorAt(1, palette.color(QPalette::Dark));
- palette.setBrush(QPalette::Window, linearGradient);
- focusPopup->setPalette(palette);
- ctkPopupWidget* openPopup = new ctkPopupWidget(openButton);
- openPopup->setObjectName("openPopup");
- openPopup->setFrameStyle(QFrame::Box);
- openPopup->setLineWidth(1);
- openPopup->setAutoShow(false);
- openPopup->setAutoHide(false);
- openPopup->setWindowOpacity(0.7);
- QPushButton* openPopupContent = new QPushButton("Close popup");
- openPopupContent->setObjectName("openPopupContent");
- QVBoxLayout* openLayout = new QVBoxLayout;
- openLayout->addWidget(openPopupContent);
- openPopup->setLayout(openLayout);
- QObject::connect(openButton, SIGNAL(clicked()),
- openPopup, SLOT(showPopup()));
- QObject::connect(openPopupContent, SIGNAL(clicked()),
- openPopup, SLOT(hidePopup()));
-
- ctkPopupWidget* togglePopup = new ctkPopupWidget(toggleButton);
- togglePopup->setObjectName("togglePopup");
- togglePopup->setAutoShow(false);
- togglePopup->setAutoHide(false);
- QPushButton* togglePopupContent = new QPushButton("tooltip button");
- togglePopupContent->setObjectName("togglePopupContent");
- togglePopupContent->setToolTip("tooltip");
- QVBoxLayout* toggleLayout = new QVBoxLayout;
- toggleLayout->addWidget(togglePopupContent);
- togglePopup->setLayout(toggleLayout);
- QObject::connect(toggleButton, SIGNAL(toggled(bool)),
- togglePopup, SLOT(showPopup(bool)));
- togglePopup->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-
- ctkPopupWidget* pinPopup = new ctkPopupWidget(pinButton);
- pinPopup->setObjectName("pinPopup");
- QPushButton* pinPopupContent = new QPushButton("pin button");
- pinPopupContent->setCheckable(true);
- QObject::connect(pinPopupContent, SIGNAL(toggled(bool)),
- pinButton, SLOT(setChecked(bool)));
- QObject::connect(pinButton, SIGNAL(toggled(bool)),
- pinPopupContent, SLOT(setChecked(bool)));
- pinPopupContent->setObjectName("pinPopupContent");
- QVBoxLayout* pinLayout = new QVBoxLayout;
- pinLayout->addWidget(pinPopupContent);
- pinPopup->setLayout(pinLayout);
- QObject::connect(pinButton, SIGNAL(toggled(bool)),
- pinPopup, SLOT(pinPopup(bool)));
-
- popups << focusPopup << openPopup << togglePopup << pinPopup;
- return topLevel;
- }
- //-----------------------------------------------------------------------------
- int ctkPopupWidgetTest1(int argc, char * argv [] )
- {
- QApplication app(argc, argv);
- QPushButton base("Top level push button");
-
- ctkPopupWidget popup(&base);
- QPushButton popupContent("popup");
- QVBoxLayout* layout = new QVBoxLayout;
- layout->addWidget(&popupContent);
- popup.setLayout(layout);
- popup.setAlignment(Qt::AlignVCenter | Qt::AlignRight);
- popup.setHorizontalDirection(Qt::RightToLeft);
- popup.setOrientation(Qt::Horizontal);
- base.show();
-
- QList<ctkPopupWidget*> popups;
- createPanel("Hidden", popups); //create a panel that is hidden (never shown)
- QWidget* scrollPanel = createPanel("Scroll", popups);
- foreach(ctkPopupWidget* popup, popups)
- {
- popup->setVerticalDirection(ctkPopupWidget::TopToBottom);
- popup->setHorizontalDirection(Qt::LeftToRight);
- popup->setAlignment( Qt::AlignBottom | Qt::AlignJustify);
- popup->setEasingCurve(QEasingCurve::OutElastic);
- QPalette p = popup->palette();
- p.setColor(QPalette::Window, QColor(255, 0, 0, 128));
- popup->setPalette(p);
- popup->setAttribute(Qt::WA_TranslucentBackground);
- }
- popups.clear();
- QWidget* fadePanel = createPanel("Window opacity", popups);
- foreach(ctkPopupWidget* popup, popups)
- {
- popup->setAnimationEffect(ctkPopupWidget::WindowOpacityFadeEffect);
- }
- scrollPanel->show();
- fadePanel->show();
- ctkPopupWidget screenPopup;
- screenPopup.setAutoHide(false);
- screenPopup.setOrientation(Qt::Horizontal | Qt::Vertical);
- QFrame screenPopupContents;
- screenPopupContents.setFixedSize(200, 200);
- QVBoxLayout* screenLayout = new QVBoxLayout;
- screenLayout->addWidget(&screenPopupContents);
- screenPopup.setLayout(screenLayout);
- screenPopup.move(0,0);
- QTimer::singleShot(200, &screenPopup, SLOT(showPopup()));
- if (argc < 2 || QString(argv[1]) != "-I" )
- {
- QTimer::singleShot(200, &app, SLOT(quit()));
- }
- return app.exec();
- }
|