void medViewContainerSplitter::insertViewContainer(int index, medViewContainer *container) { connect(container, SIGNAL(hSplitRequest()), this, SLOT(splitHorizontally())); connect(container, SIGNAL(vSplitRequest()), this, SLOT(splitVertically())); connect(container, SIGNAL(splitRequest(medDataIndex, Qt::AlignmentFlag)), this, SLOT(split(medDataIndex, Qt::AlignmentFlag))); connect(container, SIGNAL(destroyed()), this, SLOT(checkIfStillDeserveToLiveSpliter())); container->setContainerParent(this); emit newContainer(container->uuid()); this->insertWidget(index, container); this->setCollapsible(index, false); }
medViewContainer::medViewContainer(medViewContainerSplitter *parent): QFrame(parent), d(new medViewContainerPrivate) { d->parent = parent; d->uuid = QUuid::createUuid(); medViewContainerManager::instance()->registerNewContainer(this); d->view = NULL; d->viewToolbar = NULL; d->defaultWidget = new QWidget; d->defaultWidget->setObjectName("defaultWidget"); QLabel *defaultLabel = new QLabel(tr("Drag'n drop series here from the left panel or")); QPushButton *openButton= new QPushButton(tr("open a file from your system")); QVBoxLayout *defaultLayout = new QVBoxLayout(d->defaultWidget); defaultLayout->addWidget(defaultLabel); defaultLayout->addWidget(openButton); connect(openButton, SIGNAL(clicked()), this, SLOT(openFromSystem())); d->menuButton = new QPushButton(this); d->menuButton->setIcon(QIcon(":/pixmaps/tools.png")); d->menuButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); d->menuButton->setToolTip(tr("Tools")); d->toolBarMenu = new QMenu(this); connect(d->menuButton, SIGNAL(clicked()), this, SLOT(popupMenu())); d->openAction = new QAction(tr("Open"), d->toolBarMenu); d->openAction->setIcon(QIcon(":/pixmaps/open.png")); d->openAction->setToolTip(tr("Open a file from your system")); d->openAction->setIconVisibleInMenu(true); connect(d->openAction, SIGNAL(triggered()), this, SLOT(openFromSystem())); d->closeContainerButton = new QPushButton(this); d->closeContainerButton->setIcon(QIcon(":/pixmaps/closebutton.png")); d->closeContainerButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); d->closeContainerButton->setToolTip(tr("Close")); d->closeContainerButton->setFocusPolicy(Qt::NoFocus); d->vSplitAction = new QAction(tr("V split"), d->toolBarMenu); d->vSplitAction->setIcon(QIcon(":/pixmaps/splitbutton_vertical.png")); d->vSplitAction->setToolTip(tr("Split vertically")); d->vSplitAction->setIconVisibleInMenu(true); connect(d->vSplitAction, SIGNAL(triggered()), this, SIGNAL(vSplitRequest())); d->hSplitAction = new QAction(tr("H split"), d->toolBarMenu); d->hSplitAction->setIcon(QIcon(":/pixmaps/splitbutton_horizontal.png")); d->hSplitAction->setToolTip(tr("Split horizontally")); d->hSplitAction->setIconVisibleInMenu(true); connect(d->hSplitAction, SIGNAL(triggered()), this, SIGNAL(hSplitRequest())); // make it a parameter to get synch between state of the container and the maximized button. d->maximizedAction = new QAction(tr("Maximized"), d->toolBarMenu); d->maximizedAction->setToolTip("Toggle maximized / unmaximized"); d->maximizedAction->setCheckable(true); QIcon maximizedIcon(":/icons/maximize.svg"); maximizedIcon.addFile(":/icons/un_maximize.svg", QSize(16,16), QIcon::Normal, QIcon::On); d->maximizedAction->setIcon(maximizedIcon); d->maximizedAction->setIconVisibleInMenu(true); d->maximized = false; connect(d->maximizedAction, SIGNAL(triggered()), this, SLOT(toggleMaximized())); d->maximizedAction->setEnabled(false); d->toolBarMenu = new QMenu(this); d->toolBarMenu->addActions(QList<QAction*>() << d->openAction); d->toolBarMenu->addSeparator(); d->toolBarMenu->addActions(QList<QAction*>() << d->vSplitAction << d->hSplitAction); d->toolBarMenu->addSeparator(); d->toolBarMenu->addActions(QList<QAction*>() << d->maximizedAction); d->poolIndicator = new medPoolIndicator; QWidget* toolBar = new QWidget(this); toolBar->setObjectName("containerToolBar"); toolBar->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed); d->toolBarLayout = new QHBoxLayout(toolBar); d->toolBarLayout->setContentsMargins(0, 0, 0, 0); d->toolBarLayout->setSpacing(2); QWidget *viewToolbarContainer = new QWidget(this); viewToolbarContainer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed); d->viewToolbarContainerLayout = new QHBoxLayout(viewToolbarContainer); d->viewToolbarContainerLayout->setContentsMargins(2, 0, 2, 0); d->viewToolbarContainerLayout->setSpacing(2); QWidget *containerToolbar = new QWidget(this); containerToolbar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); QHBoxLayout *containerToolbarLayout = new QHBoxLayout(containerToolbar); containerToolbarLayout->setContentsMargins(2, 0, 2, 0); containerToolbarLayout->setSpacing(2); containerToolbarLayout->addWidget(d->poolIndicator); containerToolbarLayout->addWidget(d->menuButton); containerToolbarLayout->addWidget(d->closeContainerButton); d->toolBarLayout->addWidget(viewToolbarContainer); d->toolBarLayout->addWidget(containerToolbar,0,Qt::AlignRight); d->mainLayout = new QGridLayout(this); d->mainLayout->setContentsMargins(0, 0, 0, 0); d->mainLayout->setSpacing(0); d->mainLayout->addWidget(toolBar, 0, 0, Qt::AlignTop); d->mainLayout->addWidget(d->defaultWidget, 0, 0, 0, 0, Qt::AlignCenter); this->setAcceptDrops(true); this->setUserSplittable(true); this->setClosingMode(medViewContainer::CLOSE_CONTAINER); this->setMultiLayered(true); this->setFocusPolicy(Qt::ClickFocus); this->setMouseTracking(true); this->setUserOpenable(true); d->selected = false; this->setSelected(false); d->defaultStyleSheet = this->styleSheet(); }