diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/files.cmake b/Plugins/org.mitk.gui.qt.moviemaker2/files.cmake index cde7fca7f3..ed9cd876c2 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/files.cmake +++ b/Plugins/org.mitk.gui.qt.moviemaker2/files.cmake @@ -1,42 +1,47 @@ set(SRC_CPP_FILES ) set(INTERNAL_CPP_FILES org_mitk_gui_qt_moviemaker2_Activator.cpp QmitkAnimationItem.cpp QmitkAnimationItemDelegate.cpp QmitkMovieMaker2View.cpp + QmitkOrbitAnimationItem.cpp + QmitkOrbitAnimationWidget.cpp + QmitkSliceAnimationItem.cpp QmitkSliceAnimationWidget.cpp ) set(UI_FILES src/internal/QmitkMovieMaker2View.ui + src/internal/QmitkOrbitAnimationWidget.ui src/internal/QmitkSliceAnimationWidget.ui ) set(MOC_H_FILES src/internal/org_mitk_gui_qt_moviemaker2_Activator.h src/internal/QmitkAnimationItemDelegate.h src/internal/QmitkMovieMaker2View.h + src/internal/QmitkOrbitAnimationWidget.h src/internal/QmitkSliceAnimationWidget.h ) set(CACHED_RESOURCE_FILES resources/camera-video.png plugin.xml ) set(QRC_FILES resources/org_mitk_gui_qt_moviemaker2.qrc ) set(CPP_FILES ) foreach(file ${SRC_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/${file}) endforeach() foreach(file ${INTERNAL_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/internal/${file}) endforeach() diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItem.h b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItem.h index 697dbd8dbb..b2500c69f5 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItem.h +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItem.h @@ -1,49 +1,53 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef QmitkAnimationItem_h #define QmitkAnimationItem_h #include class QmitkAnimationItem : public QStandardItem { public: enum AnimationItemDataRole { WidgetKeyRole = Qt::UserRole + 2, DurationRole, DelayRole, - StartWithPreviousRole + StartWithPreviousRole, + FromRole, + ToRole, + ReverseRole, + AngleRole }; - QmitkAnimationItem(const QString& widgetKey, double duration, double delay = 0.0, bool startWithPrevious = false); - ~QmitkAnimationItem(); + explicit QmitkAnimationItem(const QString& widgetKey, double duration = 2.0, double delay = 0.0, bool startWithPrevious = false); + virtual ~QmitkAnimationItem(); QString GetWidgetKey() const; void SetWidgetKey(const QString& widgetKey); double GetDuration() const; void SetDuration(double duration); double GetDelay() const; void SetDelay(double delay); bool GetStartWithPrevious() const; void SetStartWithPrevious(bool startWithPrevious); }; #endif diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItemDelegate.cpp b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItemDelegate.cpp index ba7b22dd1d..c05ed2ee7b 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItemDelegate.cpp +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkAnimationItemDelegate.cpp @@ -1,99 +1,99 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "QmitkAnimationItem.h" #include "QmitkAnimationItemDelegate.h" #include #include #include QmitkAnimationItemDelegate::QmitkAnimationItemDelegate(QObject* parent) : QStyledItemDelegate(parent) { } QmitkAnimationItemDelegate::~QmitkAnimationItemDelegate() { } void QmitkAnimationItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { const QStandardItemModel* model = dynamic_cast(index.model()); const QmitkAnimationItem* thisItem = dynamic_cast(model->item(index.row(), 1)); QList items; const int rowCount = model->rowCount(); for (int i = 0; i < rowCount; ++i) items << dynamic_cast(model->item(i, 1)); double totalDuration = 0.0; double previousStart = 0.0; double thisStart = 0.0; Q_FOREACH(const QmitkAnimationItem* item, items) { if (item->GetStartWithPrevious()) { totalDuration = std::max(totalDuration, previousStart + item->GetDelay() + item->GetDuration()); } else { previousStart = totalDuration; totalDuration += item->GetDelay() + item->GetDuration(); } if (item == thisItem) thisStart = previousStart; } - QColor color("DarkKhaki"); + QColor color("CornflowerBlue"); painter->setBrush(color); painter->setPen(Qt::NoPen); const QRect& rect = option.rect; const double widthPerSecond = rect.width() / totalDuration; painter->drawRect( rect.x() + static_cast(widthPerSecond * (thisStart + thisItem->GetDelay())), rect.y() + 1, static_cast(widthPerSecond * thisItem->GetDuration()), rect.height() - 2); if (thisItem->GetDelay() > std::numeric_limits::min()) { QPen pen(color); painter->setPen(pen); painter->drawLine( rect.x() + static_cast(widthPerSecond * thisStart), rect.y() + 1, rect.x() + static_cast(widthPerSecond * thisStart), rect.y() + rect.height() - 2); pen.setStyle(Qt::DashLine); painter->setPen(pen); painter->drawLine( rect.x() + static_cast(widthPerSecond * thisStart), rect.y() + rect.height() / 2, rect.x() + static_cast(widthPerSecond * (thisStart + thisItem->GetDelay())) - 1, rect.y() + rect.height() / 2); } QStyledItemDelegate::paint(painter, option, index); } diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.cpp b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.cpp index 45672d0136..01f8f46c07 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.cpp +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.cpp @@ -1,328 +1,421 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ -#include "QmitkAnimationItem.h" #include "QmitkAnimationItemDelegate.h" #include "QmitkMovieMaker2View.h" +#include "QmitkOrbitAnimationItem.h" +#include "QmitkOrbitAnimationWidget.h" +#include "QmitkSliceAnimationItem.h" #include "QmitkSliceAnimationWidget.h" #include #include +#include #include +#include + +static QmitkOrbitAnimationItem* CreateDefaultOrbitAnimation() +{ + return new QmitkOrbitAnimationItem(360.0, false); +} + +static QmitkSliceAnimationItem* CreateDefaultSliceAnimation() +{ + return new QmitkSliceAnimationItem(0, 0, false); +} + +static QmitkAnimationItem* CreateDefaultAnimation(const QString& widgetKey) +{ + if (widgetKey == "Orbit") + return CreateDefaultOrbitAnimation(); + + if (widgetKey == "Slice") + return CreateDefaultSliceAnimation(); + + return NULL; +} + +static QString GetPrettyRenderWindowName(const QString& name) +{ + QMap map; + map["stdmulti.widget1"] = "Axial"; + map["stdmulti.widget2"] = "Sagittal"; + map["stdmulti.widget3"] = "Coronal"; + map["stdmulti.widget4"] = "3D"; + + return map.contains(name) + ? map[name] + : name; +} const std::string QmitkMovieMaker2View::VIEW_ID = "org.mitk.views.moviemaker2"; QmitkMovieMaker2View::QmitkMovieMaker2View() : m_Ui(new Ui::QmitkMovieMaker2View), m_AnimationModel(NULL), - m_AddAnimationMenu(NULL) + m_AddAnimationMenu(NULL), + m_RecordMenu(NULL) { } QmitkMovieMaker2View::~QmitkMovieMaker2View() { } void QmitkMovieMaker2View::CreateQtPartControl(QWidget* parent) { m_Ui->setupUi(parent); this->InitializeAnimationWidgets(); this->InitializeAnimationTreeViewWidgets(); + this->InitializePlaybackAndRecordWidgets(); m_Ui->animationWidgetGroupBox->setVisible(false); } void QmitkMovieMaker2View::InitializeAnimationWidgets() { - m_AnimationWidgets["Orbit"] = NULL; + m_AnimationWidgets["Orbit"] = new QmitkOrbitAnimationWidget; m_AnimationWidgets["Slice"] = new QmitkSliceAnimationWidget; Q_FOREACH(QWidget* widget, m_AnimationWidgets.values()) { if (widget != NULL) { widget->setVisible(false); m_Ui->animationWidgetGroupBoxLayout->addWidget(widget); } } this->ConnectAnimationWidgets(); } void QmitkMovieMaker2View::InitializeAnimationTreeViewWidgets() { this->InitializeAnimationModel(); this->InitializeAddAnimationMenu(); this->ConnectAnimationTreeViewWidgets(); } +void QmitkMovieMaker2View::InitializePlaybackAndRecordWidgets() +{ + this->ConnectPlaybackAndRecordWidgets(); +} + void QmitkMovieMaker2View::InitializeAnimationModel() { m_AnimationModel = new QStandardItemModel(m_Ui->animationTreeView); m_AnimationModel->setHorizontalHeaderLabels(QStringList() << "Animation" << "Timeline"); m_Ui->animationTreeView->setModel(m_AnimationModel); m_Ui->animationTreeView->setItemDelegateForColumn(1, new QmitkAnimationItemDelegate(m_Ui->animationTreeView)); } void QmitkMovieMaker2View::InitializeAddAnimationMenu() { m_AddAnimationMenu = new QMenu(m_Ui->addAnimationButton); Q_FOREACH(const QString& key, m_AnimationWidgets.keys()) { m_AddAnimationMenu->addAction(key); } } +void QmitkMovieMaker2View::InitializeRecordMenu() +{ + if (m_RecordMenu == NULL) + { + m_RecordMenu = new QMenu(m_Ui->recordButton); + } + else + { + m_RecordMenu->clear(); + } + + const mitk::RenderingManager::RenderWindowVector& renderWindows + = mitk::RenderingManager::GetInstance()->GetAllRegisteredRenderWindows(); + + Q_FOREACH(const mitk::RenderingManager::RenderWindowVector::value_type renderWindow, renderWindows) + { + QString name = mitk::BaseRenderer::GetInstance(renderWindow)->GetName(); + m_RecordMenu->addAction(GetPrettyRenderWindowName(name)); + } +} + void QmitkMovieMaker2View::ConnectAnimationTreeViewWidgets() { this->connect(m_AnimationModel, SIGNAL(rowsInserted(const QModelIndex&, int, int)), this, SLOT(OnAnimationTreeViewRowsInserted(const QModelIndex&, int, int))); this->connect(m_AnimationModel, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), this, SLOT(OnAnimationTreeViewRowsRemoved(const QModelIndex&, int, int))); this->connect(m_Ui->animationTreeView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(OnAnimationTreeViewSelectionChanged(const QItemSelection&, const QItemSelection&))); this->connect(m_Ui->moveAnimationUpButton, SIGNAL(clicked()), this, SLOT(OnMoveAnimationUpButtonClicked())); this->connect(m_Ui->moveAnimationDownButton, SIGNAL(clicked()), this, SLOT(OnMoveAnimationDownButtonClicked())); this->connect(m_Ui->addAnimationButton, SIGNAL(clicked()), this, SLOT(OnAddAnimationButtonClicked())); this->connect(m_Ui->removeAnimationButton, SIGNAL(clicked()), this, SLOT(OnRemoveAnimationButtonClicked())); } void QmitkMovieMaker2View::ConnectAnimationWidgets() { this->connect(m_Ui->startComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(OnStartComboBoxCurrentIndexChanged(int))); this->connect(m_Ui->durationSpinBox, SIGNAL(valueChanged(double)), this, SLOT(OnDurationSpinBoxValueChanged(double))); this->connect(m_Ui->delaySpinBox, SIGNAL(valueChanged(double)), this, SLOT(OnDelaySpinBoxValueChanged(double))); } +void QmitkMovieMaker2View::ConnectPlaybackAndRecordWidgets() +{ + this->connect(m_Ui->recordButton, SIGNAL(clicked()), + this, SLOT(OnRecordButtonClicked())); +} + void QmitkMovieMaker2View::SetFocus() { m_Ui->addAnimationButton->setFocus(); } void QmitkMovieMaker2View::OnMoveAnimationUpButtonClicked() { const QItemSelection selection = m_Ui->animationTreeView->selectionModel()->selection(); if (!selection.isEmpty()) { const int selectedRow = selection[0].top(); if (selectedRow > 0) m_AnimationModel->insertRow(selectedRow - 1, m_AnimationModel->takeRow(selectedRow)); } } void QmitkMovieMaker2View::OnMoveAnimationDownButtonClicked() { const QItemSelection selection = m_Ui->animationTreeView->selectionModel()->selection(); if (!selection.isEmpty()) { const int rowCount = m_AnimationModel->rowCount(); const int selectedRow = selection[0].top(); if (selectedRow < rowCount - 1) m_AnimationModel->insertRow(selectedRow + 1, m_AnimationModel->takeRow(selectedRow)); } } void QmitkMovieMaker2View::OnAddAnimationButtonClicked() { QAction* action = m_AddAnimationMenu->exec(QCursor::pos()); if (action != NULL) { const QString widgetKey = action->text(); m_AnimationModel->appendRow(QList() << new QStandardItem(widgetKey) - << new QmitkAnimationItem(widgetKey, 2.0)); + << CreateDefaultAnimation(widgetKey)); + + m_Ui->playbackAndRecordingGroupBox->setEnabled(true); + } +} + +void QmitkMovieMaker2View::OnRecordButtonClicked() +{ + this->InitializeRecordMenu(); + + if (m_RecordMenu->isEmpty()) + QMessageBox::warning(NULL, QString::fromStdString(this->GetPartName()), "Could not find any render window."); + + QAction* action = m_RecordMenu->exec(QCursor::pos()); + + if (action != NULL) + { + // TODO } } void QmitkMovieMaker2View::OnRemoveAnimationButtonClicked() { const QItemSelection selection = m_Ui->animationTreeView->selectionModel()->selection(); if (!selection.isEmpty()) + { m_AnimationModel->removeRow(selection[0].top()); + } + else + { + m_Ui->playbackAndRecordingGroupBox->setEnabled(false); + } } void QmitkMovieMaker2View::OnAnimationTreeViewRowsInserted(const QModelIndex& parent, int start, int) { m_Ui->animationTreeView->selectionModel()->select( m_AnimationModel->index(start, 0, parent), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); } void QmitkMovieMaker2View::OnAnimationTreeViewRowsRemoved(const QModelIndex&, int, int) { this->UpdateWidgets(); } void QmitkMovieMaker2View::OnAnimationTreeViewSelectionChanged(const QItemSelection&, const QItemSelection&) { this->UpdateWidgets(); } void QmitkMovieMaker2View::OnStartComboBoxCurrentIndexChanged(int index) { QmitkAnimationItem* item = this->GetSelectedAnimationItem(); if (item != NULL) { item->SetStartWithPrevious(index); this->RedrawTimeline(); } } void QmitkMovieMaker2View::OnDurationSpinBoxValueChanged(double value) { QmitkAnimationItem* item = this->GetSelectedAnimationItem(); if (item != NULL) { item->SetDuration(value); this->RedrawTimeline(); } } void QmitkMovieMaker2View::OnDelaySpinBoxValueChanged(double value) { QmitkAnimationItem* item = this->GetSelectedAnimationItem(); if (item != NULL) { item->SetDelay(value); this->RedrawTimeline(); } } void QmitkMovieMaker2View::UpdateWidgets() { const QItemSelection selection = m_Ui->animationTreeView->selectionModel()->selection(); if (selection.isEmpty()) { m_Ui->moveAnimationUpButton->setEnabled(false); m_Ui->moveAnimationDownButton->setEnabled(false); m_Ui->removeAnimationButton->setEnabled(false); this->HideCurrentAnimationWidget(); } else { const int rowCount = m_AnimationModel->rowCount(); const int selectedRow = selection[0].top(); m_Ui->moveAnimationUpButton->setEnabled(rowCount > 1 && selectedRow != 0); m_Ui->moveAnimationDownButton->setEnabled(rowCount > 1 && selectedRow < rowCount - 1); m_Ui->removeAnimationButton->setEnabled(true); this->ShowAnimationWidget(m_AnimationModel->item(selectedRow, 1)->data(QmitkAnimationItem::WidgetKeyRole).toString()); } this->UpdateAnimationWidgets(); } void QmitkMovieMaker2View::UpdateAnimationWidgets() { QmitkAnimationItem* item = this->GetSelectedAnimationItem(); if (item != NULL) { m_Ui->startComboBox->setCurrentIndex(item->GetStartWithPrevious()); m_Ui->durationSpinBox->setValue(item->GetDuration()); m_Ui->delaySpinBox->setValue(item->GetDelay()); m_Ui->animationGroupBox->setEnabled(true); } else { m_Ui->animationGroupBox->setEnabled(false); } } void QmitkMovieMaker2View::HideCurrentAnimationWidget() { if (m_Ui->animationWidgetGroupBox->isVisible()) { m_Ui->animationWidgetGroupBox->setVisible(false); - if (m_Ui->animationWidgetGroupBoxLayout->count() > 0) - m_Ui->animationWidgetGroupBoxLayout->itemAt(0)->widget()->setVisible(false); + int numWidgets = m_Ui->animationWidgetGroupBoxLayout->count(); + + for (int i = 0; i < numWidgets; ++i) + m_Ui->animationWidgetGroupBoxLayout->itemAt(i)->widget()->setVisible(false); } } void QmitkMovieMaker2View::ShowAnimationWidget(const QString& key) { - if (m_Ui->animationWidgetGroupBox->isVisible()) - { - if (m_Ui->animationWidgetGroupBoxLayout->count() > 0) - m_Ui->animationWidgetGroupBoxLayout->itemAt(0)->widget()->setVisible(false); - } + this->HideCurrentAnimationWidget(); QWidget* widget = NULL; if (m_AnimationWidgets.contains(key)) { widget = m_AnimationWidgets[key]; if (widget != NULL) { m_Ui->animationWidgetGroupBox->setTitle(key); widget->setVisible(true); } } m_Ui->animationWidgetGroupBox->setVisible(widget != NULL); } void QmitkMovieMaker2View::RedrawTimeline() { if (m_AnimationModel->rowCount() > 1) { m_Ui->animationTreeView->dataChanged( m_AnimationModel->index(0, 1), m_AnimationModel->index(m_AnimationModel->rowCount() - 1, 1)); } } QmitkAnimationItem* QmitkMovieMaker2View::GetSelectedAnimationItem() const { const QItemSelection selection = m_Ui->animationTreeView->selectionModel()->selection(); return !selection.isEmpty() ? dynamic_cast(m_AnimationModel->item(selection[0].top(), 1)) : NULL; } diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.h b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.h index be66d262af..1daf25dcf9 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.h +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.h @@ -1,76 +1,81 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef QmitkMovieMaker2View_h #define QmitkMovieMaker2View_h #include class QmitkAnimationItem; class QMenu; class QStandardItemModel; namespace Ui { class QmitkMovieMaker2View; } class QmitkMovieMaker2View : public QmitkAbstractView { Q_OBJECT public: static const std::string VIEW_ID; QmitkMovieMaker2View(); ~QmitkMovieMaker2View(); void CreateQtPartControl(QWidget* parent); void SetFocus(); private slots: void OnMoveAnimationUpButtonClicked(); void OnMoveAnimationDownButtonClicked(); void OnAddAnimationButtonClicked(); void OnRemoveAnimationButtonClicked(); void OnAnimationTreeViewRowsInserted(const QModelIndex& parent, int start, int end); void OnAnimationTreeViewRowsRemoved(const QModelIndex& parent, int start, int end); void OnAnimationTreeViewSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected); void OnStartComboBoxCurrentIndexChanged(int index); void OnDurationSpinBoxValueChanged(double value); void OnDelaySpinBoxValueChanged(double value); + void OnRecordButtonClicked(); private: void InitializeAnimationWidgets(); void InitializeAnimationTreeViewWidgets(); void InitializeAnimationModel(); void InitializeAddAnimationMenu(); + void InitializePlaybackAndRecordWidgets(); + void InitializeRecordMenu(); void ConnectAnimationTreeViewWidgets(); void ConnectAnimationWidgets(); + void ConnectPlaybackAndRecordWidgets(); void UpdateWidgets(); void UpdateAnimationWidgets(); void HideCurrentAnimationWidget(); void ShowAnimationWidget(const QString& key); void RedrawTimeline(); QmitkAnimationItem* GetSelectedAnimationItem() const; Ui::QmitkMovieMaker2View* m_Ui; QStandardItemModel* m_AnimationModel; QMap m_AnimationWidgets; QMenu* m_AddAnimationMenu; + QMenu* m_RecordMenu; }; #endif diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.ui b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.ui index 07f61421aa..34e0eb573c 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.ui +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkMovieMaker2View.ui @@ -1,495 +1,507 @@ QmitkMovieMaker2View true 0 0 320 640 Movie Maker 2 false Move animation up :/org_mitk_icons/icons/tango/scalable/actions/go-up.svg:/org_mitk_icons/icons/tango/scalable/actions/go-up.svg 24 24 true false Move animation down :/org_mitk_icons/icons/tango/scalable/actions/go-down.svg:/org_mitk_icons/icons/tango/scalable/actions/go-down.svg 24 24 true Add animation :/org_mitk_icons/icons/tango/scalable/actions/list-add.svg:/org_mitk_icons/icons/tango/scalable/actions/list-add.svg 24 24 true false Remove animation :/org_mitk_icons/icons/tango/scalable/actions/list-remove.svg:/org_mitk_icons/icons/tango/scalable/actions/list-remove.svg 24 24 true 0 0 0 100 16777215 100 false true 80 false Animation 0 0 24 24 24 24 :/org_mitk_icons/icons/tango/scalable/actions/media-playback-start.svg true 0 0 Start: startComboBox 0 0 After previous With previous 0 0 24 24 24 24 :/org_gui_qt_moviemaker2/duration.svg true 0 0 Duration: durationSpinBox 0 0 s + + 100.000000000000000 + + + 0.500000000000000 + 2.000000000000000 0 0 24 24 24 24 :/org_gui_qt_moviemaker2/delay.svg true 0 0 Delay: delaySpinBox 0 0 s + + 100.000000000000000 + + + 0.500000000000000 + false Playback && Recording Play :/org_mitk_icons/icons/tango/scalable/actions/media-playback-start.svg:/org_mitk_icons/icons/tango/scalable/actions/media-playback-start.svg 24 24 true true false Stop :/org_mitk_icons/icons/tango/scalable/actions/media-playback-stop.svg:/org_mitk_icons/icons/tango/scalable/actions/media-playback-stop.svg 24 24 true Qt::Horizontal 40 20 Record :/org_mitk_icons/icons/tango/scalable/actions/media-record.svg:/org_mitk_icons/icons/tango/scalable/actions/media-record.svg 24 24 true Frames per second FPS 1 120 30 Qt::Vertical 20 227 animationTreeView moveAnimationUpButton moveAnimationDownButton addAnimationButton removeAnimationButton startComboBox durationSpinBox delaySpinBox playButton stopButton recordButton fpsSpinBox diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.cpp b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.cpp new file mode 100644 index 0000000000..f7482d5b31 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.cpp @@ -0,0 +1,48 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#include "QmitkOrbitAnimationItem.h" + +QmitkOrbitAnimationItem::QmitkOrbitAnimationItem(double angle, bool reverse, double duration, double delay, bool startWithPrevious) + : QmitkAnimationItem("Orbit", duration, delay, startWithPrevious) +{ + this->SetAngle(angle); + this->SetReverse(reverse); +} + +QmitkOrbitAnimationItem::~QmitkOrbitAnimationItem() +{ +} + +double QmitkOrbitAnimationItem::GetAngle() const +{ + return this->data(AngleRole).toDouble(); +} + +void QmitkOrbitAnimationItem::SetAngle(double angle) +{ + this->setData(angle, AngleRole); +} + +bool QmitkOrbitAnimationItem::GetReverse() const +{ + return this->data(ReverseRole).toBool(); +} + +void QmitkOrbitAnimationItem::SetReverse(bool reverse) +{ + this->setData(reverse, ReverseRole); +} diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.h b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.h new file mode 100644 index 0000000000..9097a8d104 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationItem.h @@ -0,0 +1,35 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#ifndef QmitkOrbitAnimationItem_h +#define QmitkOrbitAnimationItem_h + +#include "QmitkAnimationItem.h" + +class QmitkOrbitAnimationItem : public QmitkAnimationItem +{ +public: + QmitkOrbitAnimationItem(double angle, bool reverse, double duration = 2.0, double delay = 0.0, bool startWithPrevious = false); + virtual ~QmitkOrbitAnimationItem(); + + double GetAngle() const; + void SetAngle(double angle); + + bool GetReverse() const; + void SetReverse(bool reverse); +}; + +#endif diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.cpp b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.cpp new file mode 100644 index 0000000000..c0c33a9975 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.cpp @@ -0,0 +1,29 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#include "QmitkOrbitAnimationWidget.h" +#include + +QmitkOrbitAnimationWidget::QmitkOrbitAnimationWidget(QWidget* parent) + : QWidget(parent), + m_Ui(new Ui::QmitkOrbitAnimationWidget) +{ + m_Ui->setupUi(this); +} + +QmitkOrbitAnimationWidget::~QmitkOrbitAnimationWidget() +{ +} diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.h b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.h new file mode 100644 index 0000000000..bd8781e2f6 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.h @@ -0,0 +1,39 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#ifndef QmitkOrbitAnimationWidget_h +#define QmitkOrbitAnimationWidget_h + +#include + +namespace Ui +{ + class QmitkOrbitAnimationWidget; +} + +class QmitkOrbitAnimationWidget : public QWidget +{ + Q_OBJECT + +public: + explicit QmitkOrbitAnimationWidget(QWidget* parent = NULL); + ~QmitkOrbitAnimationWidget(); + +private: + Ui::QmitkOrbitAnimationWidget* m_Ui; +}; + +#endif diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.ui similarity index 73% copy from Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui copy to Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.ui index bd349299ef..892cc21cc3 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkOrbitAnimationWidget.ui @@ -1,97 +1,97 @@ - QmitkSliceAnimationWidget - + QmitkOrbitAnimationWidget + 0 0 304 96 - Form + QmitkOrbitAnimationWidget - + 0 0 Window: - comboBox + windowComboBox - + 0 0 - + 0 0 - Slice range: + Angle: - - - 0 + + + 360.000000000000000 - 999.000000000000000 + 360.000000000000000 - - 999.000000000000000 + + Qt::Horizontal 0 0 Reverse - ctkRangeWidget + ctkDoubleSlider QWidget -
ctkRangeWidget.h
+
ctkDoubleSlider.h
- comboBox + windowComboBox reverseCheckBox
diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.cpp b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.cpp new file mode 100644 index 0000000000..81aa6506a6 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.cpp @@ -0,0 +1,59 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#include "QmitkSliceAnimationItem.h" + +QmitkSliceAnimationItem::QmitkSliceAnimationItem(int from, int to, bool reverse, double duration, double delay, bool startWithPrevious) + : QmitkAnimationItem("Slice", duration, delay, startWithPrevious) +{ + this->SetFrom(from); + this->SetTo(to); + this->SetReverse(reverse); +} + +QmitkSliceAnimationItem::~QmitkSliceAnimationItem() +{ +} + +int QmitkSliceAnimationItem::GetFrom() const +{ + return this->data(FromRole).toInt(); +} + +void QmitkSliceAnimationItem::SetFrom(int from) +{ + this->setData(from, FromRole); +} + +int QmitkSliceAnimationItem::GetTo() const +{ + return this->data(ToRole).toInt(); +} + +void QmitkSliceAnimationItem::SetTo(int to) +{ + this->setData(to, ToRole); +} + +bool QmitkSliceAnimationItem::GetReverse() const +{ + return this->data(ReverseRole).toBool(); +} + +void QmitkSliceAnimationItem::SetReverse(bool reverse) +{ + this->setData(reverse, ReverseRole); +} diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.h b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.h new file mode 100644 index 0000000000..6a17edd93e --- /dev/null +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationItem.h @@ -0,0 +1,38 @@ +/*=================================================================== + +The Medical Imaging Interaction Toolkit (MITK) + +Copyright (c) German Cancer Research Center, +Division of Medical and Biological Informatics. +All rights reserved. + +This software is distributed WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR +A PARTICULAR PURPOSE. + +See LICENSE.txt or http://www.mitk.org for details. + +===================================================================*/ + +#ifndef QmitkSliceAnimationItem_h +#define QmitkSliceAnimationItem_h + +#include "QmitkAnimationItem.h" + +class QmitkSliceAnimationItem : public QmitkAnimationItem +{ +public: + QmitkSliceAnimationItem(int from, int to, bool reverse, double duration = 2.0, double delay = 0.0, bool startWithPrevious = false); + virtual ~QmitkSliceAnimationItem(); + + int GetFrom() const; + void SetFrom(int from); + + int GetTo() const; + void SetTo(int to); + + bool GetReverse() const; + void SetReverse(bool reverse); +}; + +#endif diff --git a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui index bd349299ef..02546bfb14 100644 --- a/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui +++ b/Plugins/org.mitk.gui.qt.moviemaker2/src/internal/QmitkSliceAnimationWidget.ui @@ -1,97 +1,97 @@ QmitkSliceAnimationWidget 0 0 304 96 - Form + QmitkSliceAnimationWidget - + 0 0 Window: - comboBox + windowComboBox - + 0 0 - + 0 0 Slice range: - + 0 999.000000000000000 999.000000000000000 0 0 Reverse ctkRangeWidget QWidget
ctkRangeWidget.h
- comboBox + windowComboBox reverseCheckBox