diff --git a/modules/gui/src/sequence/row.cc b/modules/gui/src/sequence/row.cc index 8846f1913224d5bd42b7be4ce47f2ac88f65512a..a109fe98c9c5f8466177c7024635d2b93ab436a2 100644 --- a/modules/gui/src/sequence/row.cc +++ b/modules/gui/src/sequence/row.cc @@ -67,4 +67,9 @@ bool Row::IsPosValid(int pos) return false; } +const PainterList& Row::GetPainters() const +{ + return painter_; +} + }} diff --git a/modules/gui/src/sequence/row.hh b/modules/gui/src/sequence/row.hh index 161e251a601c81810f9e53b504bf25be3c57547d..794a48db9818855a307a88bd09c017b4e6c1b600 100644 --- a/modules/gui/src/sequence/row.hh +++ b/modules/gui/src/sequence/row.hh @@ -44,6 +44,8 @@ public: Painter* GetPainter(int pos); int GetPainterCount(); + const PainterList& GetPainters() const; + private: bool IsPosValid(int pos); PainterList painter_; diff --git a/modules/gui/src/sequence/sequence_delegate.cc b/modules/gui/src/sequence/sequence_delegate.cc index a152298e7e375ce61afa867a74156d2d9fd44112..827aef65f793416f556e76df9abb6d71b267bff9 100644 --- a/modules/gui/src/sequence/sequence_delegate.cc +++ b/modules/gui/src/sequence/sequence_delegate.cc @@ -29,22 +29,15 @@ namespace ost { namespace gui { SequenceDelegate::SequenceDelegate(SequenceModel* seq_model, QObject *parent) : QItemDelegate(parent), seq_model_(seq_model) -{ - QFontMetrics metrics = QFontMetrics(QFont("Courier",10)); - default_size = QSize(metrics.width(QString("_"))+2,metrics.height()+2); -} +{} void SequenceDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { -/* Row* row = seq_model_->GetRow(index); - for(int i=0; i < row->GetPainterCount(); i++){ - row->GetPainter(i)->Paint(painter, option, index); - }*/ -} - -QSize& SequenceDelegate::GetDefaultSize(){ - return default_size; + const PainterList& painters = seq_model_->GetPainters(index); + for(int i=0; i < painters.size(); i++){ + painters[i]->Paint(painter, option, index); + } } }} diff --git a/modules/gui/src/sequence/sequence_delegate.hh b/modules/gui/src/sequence/sequence_delegate.hh index 5629a355bf6809c4641d5550db7a6c9dbffff1c6..3c74fcf54abd4f7604c10b41dde9427fa0e7d54f 100644 --- a/modules/gui/src/sequence/sequence_delegate.hh +++ b/modules/gui/src/sequence/sequence_delegate.hh @@ -26,7 +26,6 @@ #include <QItemDelegate> #include <QModelIndex> -#include "sequence_table_view.hh" #include "sequence_model.hh" namespace ost { namespace gui { diff --git a/modules/gui/src/sequence/sequence_model.cc b/modules/gui/src/sequence/sequence_model.cc index 1fdf5730d654532d47dab48d64764c1dd791a6e5..06199fbf40b428d8e1a41f5324dd1f40bfb0db40 100644 --- a/modules/gui/src/sequence/sequence_model.cc +++ b/modules/gui/src/sequence/sequence_model.cc @@ -35,7 +35,7 @@ SequenceModel::SequenceModel(QObject *parent) void SequenceModel::InsertSequence(QString& name, seq::SequenceHandle& seq){ int cols = this->columnCount(); - int new_cols = cols + seq.GetLength(); + int new_cols = seq.GetLength(); this->beginInsertRows(QModelIndex(),this->rowCount(),this->rowCount()); objects_.append(new ViewObject(seq, name, this)); if(new_cols > cols){ @@ -70,6 +70,11 @@ ViewObject* SequenceModel::GetObject(QString& name){ return NULL; } +const PainterList& SequenceModel::GetPainters(const QModelIndex& index) const{ + QPair<int, ViewObject*> pair = this->GetItem(index); + return pair.second->GetRow(pair.first)->GetPainters(); +} + QPair<int, ViewObject*> SequenceModel::GetItem(const QModelIndex& index) const{ if(!objects_.isEmpty()){ int ind_row = index.row(); diff --git a/modules/gui/src/sequence/sequence_model.hh b/modules/gui/src/sequence/sequence_model.hh index e025b0ddadabd1f5d8af286c9baed1435b5abd0a..234cebc7bbddd70155d2783f06a9d1fbfaa0f3d1 100644 --- a/modules/gui/src/sequence/sequence_model.hh +++ b/modules/gui/src/sequence/sequence_model.hh @@ -45,6 +45,7 @@ public: void RemoveSequence(QString& name); ViewObject* GetObject(QString& name); + const PainterList& GetPainters(const QModelIndex& index) const; QPair<int, ViewObject*> GetItem(const QModelIndex& index) const; diff --git a/modules/gui/src/sequence/sequence_table_view.cc b/modules/gui/src/sequence/sequence_table_view.cc index 10e16a597a7faa19dfec664d1c86ba6b4d21caef..e9e4ab84c39db65190cc5a39d46108c8a5226290 100644 --- a/modules/gui/src/sequence/sequence_table_view.cc +++ b/modules/gui/src/sequence/sequence_table_view.cc @@ -27,6 +27,7 @@ #include <iostream> #include "sequence_table_view.hh" +#include "sequence_model.hh" namespace ost { namespace gui { @@ -112,6 +113,8 @@ SequenceTableView::SequenceTableView(QAbstractItemModel * model) connect(column_not_move_->verticalScrollBar(), SIGNAL(valueChanged(int)), this->verticalScrollBar(), SLOT(setValue(int))); connect(verticalScrollBar(), SIGNAL(valueChanged(int)), column_not_move_->verticalScrollBar(), SLOT(setValue(int))); + + delegate_ = new SequenceDelegate(qobject_cast<SequenceModel*>(this->model()),this); } void SequenceTableView::ResizeWidth(int index, int, int size) @@ -163,8 +166,9 @@ void SequenceTableView::updateNotMoveColumn() void SequenceTableView::columnCountChanged(const QModelIndex& index, int old_count, int new_count){ if(old_count >= 0 && old_count <= new_count){ if(old_count == 0)old_count = 1; - for(int col=old_count; col<new_count; col++){ + for(int col=old_count; col<=new_count; col++){ column_not_move_->setColumnHidden(col, true); + this->setItemDelegateForColumn(col, delegate_); } } } diff --git a/modules/gui/src/sequence/sequence_table_view.hh b/modules/gui/src/sequence/sequence_table_view.hh index 9b873c40a64b5eaf98de1d08b8eb1e0aec4743c2..b846982fa6b1f1f51f2f326684dde9d055aa7056 100644 --- a/modules/gui/src/sequence/sequence_table_view.hh +++ b/modules/gui/src/sequence/sequence_table_view.hh @@ -27,6 +27,8 @@ #include <ost/gui/module_config.hh> +#include "sequence_delegate.hh" + namespace ost { namespace gui { /// \brief QTableView with first column not moving @@ -50,7 +52,8 @@ private slots: void ResizeHeight(int index, int, int size); private: - QTableView *column_not_move_; + QTableView* column_not_move_; + SequenceDelegate* delegate_; void updateNotMoveColumn(); }; diff --git a/modules/gui/src/sequence/sequence_viewer.cc b/modules/gui/src/sequence/sequence_viewer.cc index 378c6f1813cdd7b0390cd1a8e46584b037d0a48a..4fa20eac3b4054cf4374210d0ec924a8bc368246 100644 --- a/modules/gui/src/sequence/sequence_viewer.cc +++ b/modules/gui/src/sequence/sequence_viewer.cc @@ -54,10 +54,9 @@ SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent) layout->addWidget(seq_table_view_); this->setLayout(layout); connect(model_,SIGNAL(columnsInserted(const QModelIndex&, int, int)),seq_table_view_,SLOT(columnCountChanged(const QModelIndex&, int, int))); - /* + seq_table_view_->horizontalHeader()->setMinimumSectionSize(2); seq_table_view_->verticalHeader()->setMinimumSectionSize(2); - */ } void SequenceViewerV2::NodeAdded(const gfx::GfxNodeP& n) diff --git a/modules/gui/src/sequence/view_object.cc b/modules/gui/src/sequence/view_object.cc index bff516edc4491396ee060905af35bfa6559aae58..c3bd14e0ccaf1be3595ba674b83dcedbb0ee06a1 100644 --- a/modules/gui/src/sequence/view_object.cc +++ b/modules/gui/src/sequence/view_object.cc @@ -37,11 +37,20 @@ ViewObject::ViewObject(seq::SequenceList& sequences, const QString& name, QObjec seq::SequenceHandle seq = sequences[i]; this->AddSequence(seq); } + this->Init(); } ViewObject::ViewObject(seq::SequenceHandle& sequence, const QString& name, QObject *parent): QObject(parent), name_(name) { this->AddSequence(sequence); + this->Init(); +} + +void ViewObject::Init() +{ + font_ = QFont("Courier",10); + QFontMetrics metrics = QFontMetrics(font_); + default_size_ = QSize(metrics.width(QString("_"))+2,metrics.height()+2); } void ViewObject::InsertRow(int pos, Row* row) @@ -103,6 +112,12 @@ QVariant ViewObject::GetData(int row, int column, int role) if (role==Qt::DisplayRole) { return QVariant(QString(rows_[row].second.GetOneLetterCode(column - 1))); } + if (role==Qt::FontRole){ + return QVariant(font_); + } + if (role==Qt::SizeHintRole){ + return QVariant(default_size_); + } } return QVariant(); } diff --git a/modules/gui/src/sequence/view_object.hh b/modules/gui/src/sequence/view_object.hh index e3d4dcc5a887772ab30c3d50b4a2cb897a8b3219..d8ae32802d4556d09cad701811cbb95f6ef10fed 100644 --- a/modules/gui/src/sequence/view_object.hh +++ b/modules/gui/src/sequence/view_object.hh @@ -26,6 +26,8 @@ #include <QObject> #include <QPair> #include <QList> +#include <QFont> +#include <QSize> #include <ost/seq/sequence_list.hh> @@ -62,8 +64,11 @@ public: private: + void Init(); QString name_; QList<QPair<Row*, seq::SequenceHandle> > rows_; + QFont font_; + QSize default_size_; };