8#include <QMdiSubWindow>
15#include "MdiCubeViewport.h"
16#include "MainWindow.h"
39 QString text =
"<b>Function: </b> Resize all linked viewports to the same \
40 size as the active viewport.";
64 icon.addPixmap(
toolIconDir() +
"/linked.png", QIcon::Normal, QIcon::On);
65 icon.addPixmap(
toolIconDir() +
"/unlinked.png", QIcon::Normal, QIcon::Off);
71 "<b>Function:</b> Used to link viewports. Some tools apply their \
72 functions to all linked viewports. For example, when the zoom tool \
73 is used on a linked viewport then all other linked viewports will zoom \
75 <p><b>Shortcut:</b> Ctrl+L</p> \
76 <p><b>Hint:</b> The icons <img src=\"" +
77 toolIconDir() +
"/linked.png\" width=22 height=22> and <img src=\"" +
78 toolIconDir() +
"/unlinked.png\" width=22 height=22> at the left edge \
79 of each viewport titlebar indicate the current link state</p> \
80 <p><b>Tools using Link:</b> Zoom, Pan, Blink, and Advanced Tracking </p>";
90 together. <p><b>Shortcut: </b> Ctrl+Shift+L");
99 <p><b>Shortcut: </b> Ctrl+Shift+U");
106 p_changeCursor->setWhatsThis(
"<b>Function: </b> Toggles the cursor shape between \
107 and arrow and crosshair cursor when cursor is over the \
125 connect(
p_cascadeWindows, SIGNAL(triggered()), ws->mdiArea(), SLOT(cascadeSubWindows()));
127 connect(
p_prevWindow, SIGNAL(triggered()), ws->mdiArea(), SLOT(activatePreviousSubWindow()));
128 connect(
p_nextWindow, SIGNAL(triggered()), ws->mdiArea(), SLOT(activateNextSubWindow()));
129 connect(
p_closeWindow, SIGNAL(triggered()), ws->mdiArea(), SLOT(closeActiveSubWindow()));
130 connect(
p_closeAllWindows, SIGNAL(triggered()), ws->mdiArea(), SLOT(closeAllSubWindows()));
144 int numViewports =
p_mdiArea->subWindowList().size();
149 double px = ceil(sqrt(numViewports*mdiWidth/mdiHeight));
151 if (floor(px*mdiHeight/mdiWidth)*px < numViewports) {
152 sx = mdiHeight/ceil(px*mdiHeight/mdiWidth);
158 double py = ceil(sqrt(numViewports * mdiHeight / mdiWidth));
159 if (floor(py*mdiWidth/mdiHeight)*py < numViewports) {
160 sy = mdiWidth/ceil(mdiWidth*py/mdiHeight);
166 return std::max(sx,sy);
178 QPoint position(0, 0);
180 QList<QMdiSubWindow *> windowList =
p_mdiArea->subWindowList();
182 for (
int i = windowList.size() - 1; i >= 0; i--) {
184 window->showNormal();
185 QRect rect(0, 0, vpSize, vpSize);
186 window->setGeometry(rect);
187 window->move(position);
189 position.setX(position.x() + window->width());
190 if (position.x() + window->width() >
p_mdiArea->width()) {
192 position.setY(position.y() + window->height());
221 menu->addSeparator();
224 menu->addSeparator();
230 menu->addSeparator();
247 connect(cvp, SIGNAL(linkChanging(
bool)),
p_linkWindow, SLOT(setChecked(
bool)));
260 disconnect(cvp, SIGNAL(linkChanging(
bool)),
p_linkWindow, SLOT(setChecked(
bool)));
312 cvp->viewport()->cursor().shape() != Qt::ArrowCursor) {
313 cvp->viewport()->setCursor(Qt::ArrowCursor);
316 cvp->viewport()->cursor().shape() != Qt::CrossCursor) {
317 cvp->viewport()->setCursor(Qt::CrossCursor);
333 if(d->
isLinked()) d->parentWidget()->parentWidget()->resize(size);
Cube display widget for certain Isis MDI applications.
void setLinked(bool b)
Change the linked state of the viewport.
bool isLinked() const
Is the viewport linked with other viewports.
This is free and unencumbered software released into the public domain.