diff --git a/modules/gui/src/sequence/base_row.cc b/modules/gui/src/sequence/base_row.cc index 661d8f565e1bc269e7a47c9cc49d4a995bdcd9bc..e2a57450bba50b67f65f9c8c32d5eed2706d0a8f 100644 --- a/modules/gui/src/sequence/base_row.cc +++ b/modules/gui/src/sequence/base_row.cc @@ -130,4 +130,24 @@ Qt::ItemFlags BaseRow::Flags(int column) const void BaseRow::DoubleClicked(int column) { } +void BaseRow::ZoomIn() +{ + QFont font = this->GetFont(); + int pointsize = font.pointSize(); + if(pointsize < 30){ + font.setPointSize(++pointsize); + } + this->SetFont(font); +} + +void BaseRow::ZoomOut() +{ + QFont font = this->GetFont(); + int pointsize = font.pointSize(); + if(pointsize > 5){ + font.setPointSize(--pointsize); + } + this->SetFont(font); +} + }} diff --git a/modules/gui/src/sequence/base_row.hh b/modules/gui/src/sequence/base_row.hh index 5d749c5d29015744dbfc2936bab2f226edfe0908..3a69ca0e6b62fb0f1b7678ce9eab10e57f2cf47a 100644 --- a/modules/gui/src/sequence/base_row.hh +++ b/modules/gui/src/sequence/base_row.hh @@ -60,6 +60,9 @@ public: virtual Qt::ItemFlags Flags(int column) const; virtual void DoubleClicked(int column); + virtual void ZoomIn(); + virtual void ZoomOut(); + private: bool IsPainterPosValid(int pos); PainterList painter_; diff --git a/modules/gui/src/sequence/sequence_model.cc b/modules/gui/src/sequence/sequence_model.cc index 75d05f4aaf3f72d59dd869540afc6187246fa99c..7721e66aeb844b82b228ac9597e5ddcde8f44033 100644 --- a/modules/gui/src/sequence/sequence_model.cc +++ b/modules/gui/src/sequence/sequence_model.cc @@ -250,4 +250,18 @@ Qt::ItemFlags SequenceModel::flags(const QModelIndex& index) const return QAbstractItemModel::flags(index); } +void SequenceModel::ZoomIn() +{ + for (int i = 0; i<objects_.size(); i++){ + objects_[i]->ZoomIn(); + } +} + +void SequenceModel::ZoomOut() +{ + for (int i = 0; i<objects_.size(); i++){ + objects_[i]->ZoomOut(); + } +} + }} diff --git a/modules/gui/src/sequence/sequence_model.hh b/modules/gui/src/sequence/sequence_model.hh index 6adb96909df95cd99955139cda2477249dcee0e1..50618db9c0a8bc6054dc5ac3ff3d015b5b011c1b 100644 --- a/modules/gui/src/sequence/sequence_model.hh +++ b/modules/gui/src/sequence/sequence_model.hh @@ -68,6 +68,8 @@ public: virtual Qt::ItemFlags flags(const QModelIndex& index=QModelIndex()) const; public slots: + void ZoomIn(); + void ZoomOut(); void DoubleClicked(const QModelIndex& index); void SelectionChanged(const QItemSelection& sel, const QItemSelection& desel); diff --git a/modules/gui/src/sequence/sequence_row.cc b/modules/gui/src/sequence/sequence_row.cc index 43725e205f74d1fec52b4517f06de26b82b2b66f..fef08d793532d37cd0875a5fe2ce0dd9012ae23c 100644 --- a/modules/gui/src/sequence/sequence_row.cc +++ b/modules/gui/src/sequence/sequence_row.cc @@ -34,7 +34,7 @@ namespace ost { namespace gui { -SequenceRow::SequenceRow(const QString& name, seq::SequenceHandle& sequence, ViewObject* parent) : BaseRow(QFont("Courier",11),parent), name_(name), sequence_(sequence) +SequenceRow::SequenceRow(const QString& name, seq::SequenceHandle& sequence, ViewObject* parent) : BaseRow(QFont("Courier",11),parent), name_(name), name_font_(QFont("Courier",11)), sequence_(sequence) { } SequenceRow::SequenceRow(const QString& name, ViewObject* parent) : BaseRow(QFont("Courier",11),parent), name_(name) @@ -74,7 +74,7 @@ QVariant SequenceRow::GetData(int column, int role) const return QVariant(this->name_); } if (role == Qt::FontRole){ - return QVariant(this->GetFont()); + return QVariant(name_font_); } } else if(column > 0) { diff --git a/modules/gui/src/sequence/sequence_row.hh b/modules/gui/src/sequence/sequence_row.hh index f7727d5e2aaa9338d83a31dbd2798d97209ac9fa..58c0a2dad280d19e36f2f00808998646677a613a 100644 --- a/modules/gui/src/sequence/sequence_row.hh +++ b/modules/gui/src/sequence/sequence_row.hh @@ -57,6 +57,7 @@ public: private: QString name_; + QFont name_font_; seq::SequenceHandle sequence_; }; diff --git a/modules/gui/src/sequence/sequence_table_view.cc b/modules/gui/src/sequence/sequence_table_view.cc index d606b18ef1555c10dcb355c68d910c92774e4ab9..2152c1a6bb6b129e27b579d54ffc0560b036ee5f 100644 --- a/modules/gui/src/sequence/sequence_table_view.cc +++ b/modules/gui/src/sequence/sequence_table_view.cc @@ -342,6 +342,16 @@ void SequenceTableView::mouseReleaseEvent(QMouseEvent* event) QAbstractItemView::mouseReleaseEvent(event); } +void SequenceTableView::wheelEvent(QWheelEvent* event) +{ + if(event->modifiers() & Qt::ControlModifier){ + emit MouseWheelEvent(event); + } + else{ + QTableView::wheelEvent(event); + } +} + SequenceTableView::~SequenceTableView(){} }} diff --git a/modules/gui/src/sequence/sequence_table_view.hh b/modules/gui/src/sequence/sequence_table_view.hh index 3d55cd8612cb950790154bfa568a6d60ff21fe0e..f8c07ee813d21cdf6a45fa9e6091bf54705e8502 100644 --- a/modules/gui/src/sequence/sequence_table_view.hh +++ b/modules/gui/src/sequence/sequence_table_view.hh @@ -24,6 +24,7 @@ */ #include <QTableView> +#include <QWheelEvent> #include <ost/gui/module_config.hh> @@ -41,6 +42,9 @@ public: QTableView* GetStaticField(); ~SequenceTableView(); +signals: + void MouseWheelEvent(QWheelEvent* event); + public slots: void columnCountChanged(const QModelIndex& index, int old_count, int new_count); void rowCountChanged(const QModelIndex& index, int old_count, int new_count); @@ -50,7 +54,8 @@ public slots: protected: virtual void mouseDoubleClickEvent(QMouseEvent* event); virtual void mouseReleaseEvent(QMouseEvent* event); - virtual void resizeEvent(QResizeEvent *event); + virtual void resizeEvent(QResizeEvent* event); + virtual void wheelEvent (QWheelEvent* event); virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); void scrollTo (const QModelIndex & index, ScrollHint hint = EnsureVisible); diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc index 16ab6993d9a41dd87ecb55d06fcbd0ddff49f2ff..269590dfce8414f258093787f9b44992dec085d7 100644 --- a/modules/gui/src/sequence/sequence_viewer.cc +++ b/modules/gui/src/sequence/sequence_viewer.cc @@ -73,6 +73,7 @@ SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent) connect(seq_table_view_,SIGNAL(doubleClicked(const QModelIndex&)),model_,SLOT(DoubleClicked(const QModelIndex&))); connect(seq_table_view_->GetStaticColumn(),SIGNAL(doubleClicked(const QModelIndex&)),this,SLOT(DoubleClicked(const QModelIndex&))); connect(seq_table_view_->GetStaticRow(),SIGNAL(doubleClicked(const QModelIndex&)),this,SLOT(DoubleClicked(const QModelIndex&))); + connect(seq_table_view_,SIGNAL(MouseWheelEvent(QWheelEvent*)),this,SLOT(MouseWheelEvent(QWheelEvent*))); gfx::GfxNodeP root_node = gfx::Scene::Instance().GetRootNode(); GetNodesVisitor gnv; @@ -136,6 +137,26 @@ void SequenceViewerV2::DoubleClicked(const QModelIndex& index) connect(seq_table_view_->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(SelectionModelChanged(const QItemSelection&, const QItemSelection&))); } +void SequenceViewerV2::MouseWheelEvent(QWheelEvent* event) +{ + int delta = event->delta(); + if (event->orientation() == Qt::Vertical) { + if(delta>0){ + model_->ZoomIn(); + seq_table_view_->viewport()->update(); + seq_table_view_->resizeColumnsToContents(); + seq_table_view_->resizeRowsToContents(); + } + else if(delta<0){ + model_->ZoomOut(); + seq_table_view_->viewport()->update(); + seq_table_view_->resizeColumnsToContents(); + seq_table_view_->resizeRowsToContents(); + } + } + event->accept(); +} + SequenceViewerV2::~SequenceViewerV2(){ gfx::Scene::Instance().DetachObserver(this); } diff --git a/modules/gui/src/sequence/sequence_viewer.hh b/modules/gui/src/sequence/sequence_viewer.hh index bcedf4a970d3bab54654770302fc4095a60fcca9..3940c68fad19cfed610c9911242cb74cfccbcd98 100644 --- a/modules/gui/src/sequence/sequence_viewer.hh +++ b/modules/gui/src/sequence/sequence_viewer.hh @@ -58,6 +58,7 @@ private: private slots: void SelectionModelChanged(const QItemSelection&, const QItemSelection&); void DoubleClicked(const QModelIndex& index); + void MouseWheelEvent(QWheelEvent* event); }; diff --git a/modules/gui/src/sequence/view_object.cc b/modules/gui/src/sequence/view_object.cc index c30dabe5066a5ca9a98379b583232429742bb7a6..e422027e7105fa95277e89be52ce5f70aa110ddd 100644 --- a/modules/gui/src/sequence/view_object.cc +++ b/modules/gui/src/sequence/view_object.cc @@ -180,6 +180,20 @@ void ViewObject::DoubleClicked(int row, int column) } } +void ViewObject::ZoomIn() +{ + for(int i=0; i< rows_.size(); i++){ + rows_[i]->ZoomIn(); + } +} + +void ViewObject::ZoomOut() +{ + for(int i=0; i< rows_.size(); i++){ + rows_[i]->ZoomOut(); + } +} + QMap<int, QList<int> > ViewObject::GetIndexesForView(const mol::EntityView& view) { if(view.GetChainCount()==0){ diff --git a/modules/gui/src/sequence/view_object.hh b/modules/gui/src/sequence/view_object.hh index f623ab16ce1a55364ff5cf99e51e6e9227b5f43a..a6d99bc74c2a84d3c91f2d273c9855136e1ce502 100644 --- a/modules/gui/src/sequence/view_object.hh +++ b/modules/gui/src/sequence/view_object.hh @@ -74,6 +74,8 @@ public: Qt::ItemFlags Flags(int row, int column) const; void DoubleClicked(int row, int column); + void ZoomIn(); + void ZoomOut(); QMap<int, QList<int> > GetIndexesForView(const mol::EntityView& view);