123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /*=========================================================================
- 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 <QDebug>
- #include <QMessageBox>
- #include <QKeyEvent>
- #include <QMouseEvent>
- #include <QRegExp>
- #include <QTimer>
- #include <QWidget>
- // CTK includes
- #include "ctkVTKRenderView.h"
- #include "ctkVTKRenderViewEventPlayer.h"
- ctkVTKRenderViewEventPlayer::ctkVTKRenderViewEventPlayer(const QByteArray& classname, QObject * p)
- : pqWidgetEventPlayer(p), mClassType(classname)
- {
- }
- bool ctkVTKRenderViewEventPlayer::playEvent(QObject* Object,
- const QString& Command,
- const QString& Arguments,
- bool& Error)
- {
- Q_UNUSED(Error);
- QWidget* widget = qobject_cast<QWidget*>(Object);
- if(widget && Object->inherits(mClassType.data()))
- {
- if (Command == "3DViewSize")
- {
- QRegExp mouseRegExp("\\(([^,]*),([^,]*),([^,]),([^,]),([^,]*)\\)");
- if (mouseRegExp.indexIn(Arguments)!= -1)
- {
- QVariant v = mouseRegExp.cap(1);
- int w = v.toInt();
- v = mouseRegExp.cap(2);
- int h = v.toInt();
- v = mouseRegExp.cap(3);
- // int app_w = v.toInt();
- v = mouseRegExp.cap(4);
- // int app_h = v.toInt();
- v = mouseRegExp.cap(5);
- bool rescale = v.toBool();
- if ( (w != widget->width() || h != widget->height()) && rescale == true)
- {
- QMessageBox::StandardButton answer = QMessageBox::warning(0, tr("Size issue ..."),
- tr("The Render view size is: width : %1 \t height : %2 \n"
- "But the size was width : %3 \t height : %4 \n"
- "during the record \n"
- "Do you want to replace it ?")
- .arg(widget->size().width())
- .arg(widget->size().height())
- .arg(w)
- .arg(h),
- QMessageBox::Yes | QMessageBox::No ,
- QMessageBox::Yes);
- if (answer == QMessageBox::Yes )
- {
- qDebug() << "Foo ****";
- // widget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
- widget->setMinimumSize(QSize(w,h));
- widget->setMaximumSize(QSize(w,h));
- widget->updateGeometry();
- widget->topLevelWidget()->topLevelWidget()->updateGeometry();
- }
- }
- }
- return true;
- }
- if (Command == "mousePress" || Command == "mouseRelease" ||
- Command == "mouseMove" || Command == "mouseWheel")
- {
- QRegExp mouseRegExp("\\(([^,]*),([^,]*),([^,]),([^,]),([^,]*)\\)");
- if (mouseRegExp.indexIn(Arguments)!= -1)
- {
- double x_center = widget->size().width() / 2.0;
- double y_center = widget->size().height() / 2.0;
- QVariant v = mouseRegExp.cap(1);
- double x = x_center - (v.toDouble() * x_center);
- x = static_cast<int>(x + 0.5);
- v = mouseRegExp.cap(2);
- double y = y_center - (v.toDouble() * y_center);
- y = static_cast<int>(y + 0.5);
- v = mouseRegExp.cap(4);
- Qt::MouseButtons buttons = static_cast<Qt::MouseButton>(v.toInt());
- v = mouseRegExp.cap(5);
- Qt::KeyboardModifiers keym = static_cast<Qt::KeyboardModifier>(v.toInt());
- v = mouseRegExp.cap(3);
- if (Command == "mouseWheel")
- {
- // QEvent::Type type = QEvent::Wheel;
- int delta = ( v.toInt() == 0 ) ? -1 : 1;
- QWheelEvent we(QPoint(x,y), delta, buttons, keym);
- QCoreApplication::sendEvent(Object, &we);
- return true;
- }
- Qt::MouseButton button = static_cast<Qt::MouseButton>(v.toInt());
- QEvent::Type type = (Command == "mousePress")? QEvent::MouseButtonPress :
- ((Command=="mouseMove")? QEvent::MouseMove : QEvent::MouseButtonRelease);
- QMouseEvent e(type, QPoint(x,y), button, buttons, keym);
- QCoreApplication::sendEvent(Object, &e);
- }
- return true;
- }
- }
- return false;
- }
|