Exemple #1
0
Window::Window(MainWindow *mw)
    :mainWindow(mw)
{

    glWidget = new GLWidget;
    debugText = new QTextEdit;

    gameobjectList = new QListWidget;

      xSlider = createSlider();
      ySlider = createSlider();
      zSlider = createSlider();

      connect(xSlider, SIGNAL(valueChanged(int)), glWidget, SLOT(setXRotation(int)));
      connect(glWidget, SIGNAL(xRotationChanged(int)), xSlider, SLOT(setValue(int)));
      connect(ySlider, SIGNAL(valueChanged(int)), glWidget, SLOT(setYRotation(int)));
      connect(glWidget, SIGNAL(yRotationChanged(int)), ySlider, SLOT(setValue(int)));
      connect(zSlider, SIGNAL(valueChanged(int)), glWidget, SLOT(setZRotation(int)));
      connect(glWidget, SIGNAL(zRotationChanged(int)), zSlider, SLOT(setValue(int)));

      QVBoxLayout *mainLayout = new QVBoxLayout;
       QHBoxLayout *container = new QHBoxLayout;
       container->addWidget(glWidget);
       container->addWidget(xSlider);
       container->addWidget(ySlider);
       container->addWidget(zSlider);

       QWidget *w = new QWidget;
       w->setLayout(container);
       mainLayout->addWidget(w);
       dockBtn = new QPushButton(tr("Undock"), this);
       connect(dockBtn, SIGNAL(clicked()), this, SLOT(dockUndock()));
       addPlaneBtn = new QPushButton(tr("Add Plane"));
       connect(addPlaneBtn, SIGNAL(clicked()), glWidget, SLOT(addObject()));


       mainLayout->addWidget(dockBtn);
       mainLayout->addWidget(addPlaneBtn);

       mainLayout->addWidget(debugText);

       container->addWidget(gameobjectList);

       setLayout(mainLayout);

       xSlider->setValue(15 * 16);
       ySlider->setValue(345 * 16);
       zSlider->setValue(0 * 16);

       setWindowTitle(tr("Hello GL"));

       QtDebugConsole * dbgConsole = new QtDebugConsole();
       Hodhr::Debug::setInstance(dbgConsole);

       // Debug::setLogBuffer(*debugText);

}
    OutputItemHeaderWidget::OutputItemHeaderWidget(
            OutputItemContentWidget *outputItemContentWidget, bool multipleResults, 
            bool tabbedResults, bool firstItem, bool lastItem, QWidget *parent) :
        QFrame(parent),
        _maxButton(nullptr), _dockUndockButton(nullptr), _maximized(false), 
        _multipleResults(multipleResults), 
        _firstItem(firstItem), _lastItem(lastItem), _orientation(Qt::Vertical)
    {
        setContentsMargins(5, 0, 0, 0);

        auto const* outputWidget = qobject_cast<OutputWidget*>(outputItemContentWidget->parentWidget());
        _orientation = outputWidget->getOrientation();

        // Text mode button
        _textButton = new QPushButton(this);
        _textButton->setIcon(GuiRegistry::instance().textIcon());
        _textButton->setToolTip("View results in text mode");
        _textButton->setFixedSize(24, 24);
        _textButton->setFlat(true);
        _textButton->setCheckable(true);

        // Tree mode button
        _treeButton = new QPushButton(this);
        _treeButton->hide();
        _treeButton->setIcon(GuiRegistry::instance().treeIcon());
        _treeButton->setToolTip("View results in tree mode");
        _treeButton->setFixedSize(24, 24);
        _treeButton->setFlat(true);
        _treeButton->setCheckable(true);
        _treeButton->setChecked(true);     

        // Table mode button
        _tableButton = new QPushButton(this);
        _tableButton->hide();
        _tableButton->setIcon(GuiRegistry::instance().tableIcon());
        _tableButton->setToolTip("View results in table mode");
        _tableButton->setFixedSize(24, 24);
        _tableButton->setFlat(true);
        _tableButton->setCheckable(true);
        _tableButton->setChecked(true);       

        // Custom mode button
        _customButton = new QPushButton(this);
        _customButton->hide();
        _customButton->setIcon(GuiRegistry::instance().customIcon());
        _customButton->setToolTip("View results in custom UI");
        _customButton->setFixedSize(24, 24);
        _customButton->setFlat(true);
        _customButton->setCheckable(true);

        // Create maximize button only if there are multiple results
        if (_multipleResults && !tabbedResults) {
            _maxButton = new QPushButton;
            _maxButton->setIcon(GuiRegistry::instance().maximizeIcon());
            _maxButton->setToolTip("Maximize this output result (double-click on result's header)");
            _maxButton->setFixedSize(18, 18);
            _maxButton->setFlat(true);
            VERIFY(connect(_maxButton, SIGNAL(clicked()), this, SLOT(maximizeMinimizePart())));
        }

        auto dockWidget = qobject_cast<QueryWidget::CustomDockWidget*>(outputItemContentWidget->parentWidget()->parentWidget());
        auto queryWidget = dockWidget->getParentQueryWidget();
        
        _dockUndockButton = new QPushButton;
        _dockUndockButton->setFixedSize(18, 18);
        _dockUndockButton->setFlat(true);
        _dockUndockButton->setHidden(true);
        applyDockUndockSettings(!dockWidget->isFloating());
        VERIFY(connect(_dockUndockButton, SIGNAL(clicked()), queryWidget, SLOT(dockUndock())));

        VERIFY(connect(_textButton, SIGNAL(clicked()), outputItemContentWidget, SLOT(showText())));
        VERIFY(connect(_treeButton, SIGNAL(clicked()), outputItemContentWidget, SLOT(showTree())));
        VERIFY(connect(_tableButton, SIGNAL(clicked()), outputItemContentWidget, SLOT(showTable())));
        VERIFY(connect(_customButton, SIGNAL(clicked()), outputItemContentWidget, SLOT(showCustom())));

        _collectionIndicator = new Indicator(GuiRegistry::instance().collectionIcon());
        _timeIndicator = new Indicator(GuiRegistry::instance().timeIcon());
        _paging = new PagingWidget();

        _collectionIndicator->hide();
        _timeIndicator->hide();
        _paging->hide();

        QHBoxLayout *layout = new QHBoxLayout();
#ifdef __APPLE__
        layout->setContentsMargins(2, 8, 5, 1);
#else  
        layout->setContentsMargins(2, 0, 5, 1);
#endif
        layout->setSpacing(0);
        layout->addWidget(_collectionIndicator);
        layout->addWidget(_timeIndicator);
        QSpacerItem *hSpacer = new QSpacerItem(2000, 24, QSizePolicy::Preferred, QSizePolicy::Minimum);
        layout->addSpacerItem(hSpacer);
        layout->addWidget(_paging);
        layout->addWidget(createVerticalLine());
        layout->addSpacing(2);

        if (outputItemContentWidget->isCustomModeSupported()) {
            layout->addWidget(_customButton, 0, Qt::AlignRight);
            _customButton->show();
        }

        if (outputItemContentWidget->isTreeModeSupported()) {
            layout->addWidget(_treeButton, 0, Qt::AlignRight);
            _treeButton->show();
        }

        if (outputItemContentWidget->isTableModeSupported()) {
            layout->addWidget(_tableButton, 0, Qt::AlignRight);
            _tableButton->show();
        }

        if (outputItemContentWidget->isTextModeSupported())
            layout->addWidget(_textButton, 0, Qt::AlignRight);

        if (_multipleResults)
            layout->addWidget(_maxButton, 0, Qt::AlignRight);

        layout->addSpacing(3);
        _verticalLine = createVerticalLine();
        _verticalLine->setHidden(true);
        layout->addWidget(_verticalLine);
        layout->addWidget(_dockUndockButton);

        setLayout(layout);

        // Update dock/undock button visibility
        if (_multipleResults)
            updateDockButtonOnToggleOrientation();
        else {
            _verticalLine->setVisible(true);
            _dockUndockButton->setVisible(true);
        }
      
        if(tabbedResults)
            setStyleSheet("background-color: white");
    }