| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 | 
							- /*=========================================================================
 
-   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 <QAction>
 
- #include <QApplication>
 
- #include <QComboBox>
 
- #include <QDebug>
 
- #include <QMenu>
 
- #include <QPushButton>
 
- #include <QSignalSpy>
 
- #include <QStandardItemModel>
 
- #include <QTimer>
 
- #include <QToolButton>
 
- #include <QTreeView>
 
- #include <QVBoxLayout>
 
- // CTK includes
 
- #include "ctkCallback.h"
 
- #include "ctkCollapsibleButton.h"
 
- #include "ctkConfig.h"
 
- #include "ctkPopupWidget.h"
 
- #include "ctkPopupWidgetEventPlayer.h"
 
- #include "ctkPopupWidgetEventTranslator.h"
 
- #include "ctkEventTranslatorPlayerWidget.h"
 
- // QtTesting includes
 
- #include "pqTestUtility.h"
 
- // STD includes
 
- #include <cstdlib>
 
- #include <iostream>
 
- QWidget* createPanelTest(const QString& title, QList<ctkPopupWidget*>& popups);
 
- namespace
 
- {
 
- QSignalSpy *Spy1;
 
- QSignalSpy *Spy2;
 
- QSignalSpy *Spy3;
 
- QSignalSpy *Spy4;
 
- //-----------------------------------------------------------------------------
 
- void checkFinalWidgetState(void* data)
 
-   {
 
-   QWidget* parentWidget = reinterpret_cast<QWidget*>(data);
 
-   QList<ctkPopupWidget*> widget = parentWidget->findChildren<ctkPopupWidget*>();
 
-   QList<QComboBox*> widget2 = parentWidget->findChildren<QComboBox*>();
 
-   if(widget.count())
 
-     {
 
-     CTKCOMPARE(Spy1->count(), 1);
 
-     CTKCOMPARE(Spy2->count(), 1);
 
-     CTKCOMPARE(Spy3->count(), 1);
 
-     CTKCOMPARE(Spy4->count(), 1);
 
-     }
 
-   else if(widget2.count())
 
-     {
 
-     CTKCOMPARE(widget2[0]->currentIndex(), 2);
 
-     }
 
-   else
 
-     {
 
-     QApplication::exit(EXIT_FAILURE);
 
-     }
 
-   }
 
- }
 
- //-----------------------------------------------------------------------------
 
- int ctkPopupWidgetEventTranslatorPlayerTest1(int argc, char * argv [] )
 
- {
 
-   QApplication app(argc, argv);
 
-   QString xmlDirectory = CTK_SOURCE_DIR "/Libs/Widgets/Testing/Cpp/";
 
-   // ------------------------
 
-   ctkEventTranslatorPlayerWidget etpWidget;
 
-   pqTestUtility* testUtility = new pqTestUtility(&etpWidget);
 
-   etpWidget.setTestUtility(testUtility);
 
-   etpWidget.addWidgetEventTranslator(new ctkPopupWidgetEventTranslator);
 
-   etpWidget.addWidgetEventPlayer(new ctkPopupWidgetEventPlayer);
 
-   // Test case 1
 
-   QList<ctkPopupWidget*> popups;
 
-   QWidget* widget = createPanelTest("Window opacity", popups);
 
-   foreach(ctkPopupWidget* popup, popups)
 
-     {
 
-     popup->setAnimationEffect(ctkPopupWidget::WindowOpacityFadeEffect);
 
-     }
 
-   QSignalSpy spy1(popups[0], SIGNAL(popupOpened(bool)));
 
-   QSignalSpy spy2(popups[1], SIGNAL(popupOpened(bool)));
 
-   QSignalSpy spy3(popups[2], SIGNAL(popupOpened(bool)));
 
-   QSignalSpy spy4(popups[3], SIGNAL(popupOpened(bool)));
 
-   Spy1 = &spy1;
 
-   Spy2 = &spy2;
 
-   Spy3 = &spy3;
 
-   Spy4 = &spy4;
 
-   etpWidget.addTestCase(widget,
 
-                         xmlDirectory + "ctkPopupWidgetEventTranslatorPlayerTest1.xml",
 
-                         &checkFinalWidgetState);
 
-   // ------------------------
 
-   if (!app.arguments().contains("-I"))
 
-     {
 
-     QTimer::singleShot(0, &etpWidget, SLOT(play()));
 
-     }
 
-   etpWidget.show();
 
-   return app.exec();
 
- }
 
- //-----------------------------------------------------------------------------
 
- QWidget* createPanelTest(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;
 
- }
 
 
  |