Skip to content
Snippets Groups Projects
Commit b535ba7e authored by stefan's avatar stefan
Browse files

styles simplistic sequence viewer

Loading sequences (observes scene)

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2157 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent ec4358c7
No related branches found
No related tags found
No related merge requests found
......@@ -23,6 +23,7 @@ sequence_search_bar.hh
set(OST_GUI_SEQUENCE_VIEW_HEADERS
sequence_table_view.hh
sequence_viewer.hh
sequence_delegate.hh
)
set(OST_GUI_TOOLS_HEADERS
......@@ -200,6 +201,7 @@ sequence_viewer/sequence_scene.cc
sequence_viewer/sequence_search_bar.cc
sequence/sequence_table_view.cc
sequence/sequence_viewer.cc
sequence/sequence_delegate.cc
gosty_app.cc
change_process_name.cc
main_area.cc
......@@ -318,6 +320,7 @@ sequence_viewer/sequence_scene.hh
sequence_viewer/sequence_search_bar.hh
sequence/sequence_table_view.hh
sequence/sequence_viewer.hh
sequence/sequence_delegate.hh
plot_viewer/plot_axis_base.hh
plot_viewer/plot_data_graphics_item_base.hh
plot_viewer/plot_function_info.hh
......
......@@ -23,7 +23,9 @@
#include <QHeaderView>
#include <QScrollBar>
#include <QTableWidgetItem>
#include <iostream>
#include "sequence_table_view.hh"
namespace ost { namespace gui {
......@@ -42,19 +44,59 @@ SequenceTableView::SequenceTableView(QAbstractItemModel * model)
this->viewport()->stackUnder(column_not_move_);
column_not_move_->setSelectionModel(this->selectionModel());
for(int col=1; col<this->model()->columnCount(); col++)
for(int col=1; col<this->model()->columnCount(); col++){
column_not_move_->setColumnHidden(col, true);
}
column_not_move_->setColumnWidth(0, this->columnWidth(0) );
column_not_move_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
column_not_move_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
column_not_move_->show();
column_not_move_->setStyleSheet("QTableView { border: 0px;"
"background-color: #8EDE21;"
"selection-background-color: #999}"
"QTableView::item{ border: none;"
"padding: 0px; border-width: 0px; margin: 0px;}");
column_not_move_->setShowGrid(false);
column_not_move_->horizontalHeader()->setStyleSheet(
"QHeaderView::section {"
"padding-bottom: 0px;"
"padding-top: 0px;"
"padding-left: 0px;"
"padding-right: 0px;"
"margin: 0px;"
"}"
);
this->setStyleSheet("QTableView {"
"show-decoration-selected: 1;"
"}"
"QTableView::item {"
"border: 1px solid #d9d9d9;"
"border-left-color: transparent;"
"border-right-color: transparent;"
"}"
"QTableView::item:hover {"
"background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1);"
"border: 1px solid #bfcde4;"
"}"
"QTableView::item:selected {"
"border: 1px solid #567dbc;"
"}"
"QTableView::item:selected:active{"
"background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6ea1f1, stop: 1 #567dbc);"
"}"
"QTableView::item:selected:!active {"
"background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #6b9be8, stop: 1 #577fbf);"
"}");
this->setShowGrid(false);
this->updateNotMoveColumn();
setHorizontalScrollMode(ScrollPerPixel);
setVerticalScrollMode(ScrollPerPixel);
this->setHorizontalScrollMode(ScrollPerPixel);
this->setVerticalScrollMode(ScrollPerPixel);
column_not_move_->setVerticalScrollMode(ScrollPerPixel);
connect(this->horizontalHeader(),SIGNAL(sectionResized(int,int,int)), this, SLOT(ResizeWidth(int,int,int)));
......@@ -110,6 +152,20 @@ void SequenceTableView::updateNotMoveColumn()
column_not_move_->setGeometry(x,y,w,h);
}
void SequenceTableView::columnCountChanged(const QModelIndex& index, int old_count, int new_count){
if(old_count > 1 && old_count <= new_count){
for(int col=old_count-1; col<this->model()->columnCount(); col++){
column_not_move_->setColumnHidden(col, true);
}
}
}
void SequenceTableView::resizeColumnsToContents(){
QTableView::resizeColumnsToContents();
column_not_move_->setColumnWidth(0,this->columnWidth(0));
updateNotMoveColumn();
}
SequenceTableView::~SequenceTableView(){}
}}
......@@ -36,6 +36,10 @@ public:
SequenceTableView(QAbstractItemModel * model);
~SequenceTableView();
public slots:
void columnCountChanged(const QModelIndex& index, int old_count, int new_count);
void resizeColumnsToContents();
protected:
virtual void resizeEvent(QResizeEvent *event);
virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers);
......
......@@ -20,34 +20,112 @@
/*
Author: Stefan Scheuber
*/
#include <boost/pointer_cast.hpp>
#include <QStandardItem>
#include <QVBoxLayout>
#include <QPushButton>
#include <QHeaderView>
#include <ost/mol/chain_view.hh>
#include <ost/mol/entity_view.hh>
#include <ost/seq/sequence_handle.hh>
#include <ost/gfx/entity.hh>
#include <ost/gfx/entity_fw.hh>
#include "sequence_viewer.hh"
#include "sequence_table_view.hh"
#include "sequence_delegate.hh"
namespace ost { namespace gui {
SequenceViewerV2::SequenceViewerV2(QWidget* parent): Widget(NULL,parent)
{
gfx::Scene::Instance().AttachObserver(this);
QStandardItemModel* model=new QStandardItemModel();
QStandardItem* item = new QStandardItem("Best protein the world has ever seen");
model->setItem(0, 0, item);
item = new QStandardItem("slakdjjjjjjjjjjjjjjjjjjjjjjjjlakskdjaksdjaksldjalsdjaklsdjalskdjaskdjaksdjaksdjkasjdkasjdklasdjladjkdjfhjksgb,myxcnaiosjh3iklrjakslfjka");
model->setItem(0, 1, item);
item = new QStandardItem("Worst protein the world has ever seen");
model->setItem(1, 0, item);
item = new QStandardItem("slakdjjjjjjjjjjjjjjjjjjjjjjjjlakskdjaksdjaksldjalsdjaklsdjalskdjaskdjaksdjaksdjkasjdkasjdklasdjladjkdjfhjksgb,myxcnaiosjh3iklrjakslfjkb");
model->setItem(1, 1, item);
QVBoxLayout* layout = new QVBoxLayout(this);
seq_table_view_ = new SequenceTableView(model);
layout->addWidget(seq_table_view_);
//seq_table_view_->setItemDelegateForColumn(2,new SequenceDelegate(seq_table_view_));
this->setLayout(layout);
connect(model,SIGNAL(columnsInserted(const QModelIndex&, int, int)),seq_table_view_,SLOT(columnCountChanged(const QModelIndex&, int, int)));
//QPushButton* pb = new QPushButton("BLABLA");
//seq_table_view_->setIndexWidget(model->index(0,2),pb);
seq_table_view_->verticalHeader()->hide();
seq_table_view_->horizontalHeader()->setStyleSheet(
"QHeaderView::section {"
"padding-bottom: 0px;"
"padding-top: 0px;"
"padding-left: 0px;"
"padding-right: 0px;"
"margin: 0px;"
"}"
);
}
void SequenceViewerV2::NodeAdded(const gfx::GfxNodeP& n)
{
if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(n)) {
// extract all chains
mol::EntityView v=o->GetView();
for (mol::ChainViewList::const_iterator c=v.GetChainList().begin(),
e1=v.GetChainList().end(); c!=e1; ++c) {
mol::ChainView chain=*c;
String seq_str;
seq_str.reserve(chain.GetResidueCount());
for (mol::ResidueViewList::const_iterator r=chain.GetResidueList().begin(),
e2=chain.GetResidueList().end(); r!=e2; ++r) {
mol::ResidueView res=*r;
seq_str.append(1, res.GetOneLetterCode());
}
if (seq_str.empty()) {
continue;
}
String name=o->GetName();
if (chain.GetName()!="" && chain.GetName()!=" ") {
name+=" ("+chain.GetName()+")";
}
seq::SequenceHandle seq=seq::CreateSequence(name, seq_str);
mol::EntityView v_one_chain=v.GetHandle().CreateEmptyView();
v_one_chain.AddChain(chain, mol::ViewAddFlag::INCLUDE_ALL);
seq.AttachView(v_one_chain);
//SequenceItem* item=new SequenceItem(seq);
//connect(item, SIGNAL(SelectionChanged(SequenceItem*)),
// this, SLOT(ItemSelectionChanged(SequenceItem*)));
//this->AddSequence(item);
//obj_map_.insert(std::make_pair(item, o));
QStandardItem* item = new QStandardItem(name.c_str());
QStandardItemModel* model = qobject_cast<QStandardItemModel*>(seq_table_view_->model());
if(model){
int row = model->rowCount();
model->setHeaderData(0, Qt::Horizontal, QObject::tr("") );
model->setHeaderData(row, Qt::Vertical, QObject::tr("") );
model->setItem(row, 0, item);
for(int i = 0; i< seq.GetLength(); i++){
item = new QStandardItem(QString(seq.GetOneLetterCode(i)));
item->setTextAlignment(Qt::AlignCenter);
item->setFont(QFont("Courier",10));
model->setItem(row, i+1, item);
model->setHeaderData(i+1, Qt::Horizontal, QObject::tr("") );
}
}
}
seq_table_view_->resizeColumnsToContents();
std::cout << seq_table_view_->styleSheet().toStdString() << std::endl;
}
}
void SequenceViewerV2::NodeRemoved(const gfx::GfxNodeP& node)
{
if (gfx::EntityP o=boost::dynamic_pointer_cast<gfx::Entity>(node)) {
}
}
SequenceViewerV2::~SequenceViewerV2(){}
......
......@@ -24,26 +24,33 @@
*/
#include <QWidget>
#include <QTableView>
#include <ost/gfx/scene.hh>
#include <ost/gfx/gfx_object.hh>
#include <ost/gui/widget.hh>
#include <ost/gui/module_config.hh>
#include "sequence_table_view.hh"
namespace ost { namespace gui {
/// \brief QTableView with first column not moving
class DLLEXPORT_OST_GUI SequenceViewerV2 : public Widget {
class DLLEXPORT_OST_GUI SequenceViewerV2 : public Widget, public gfx::SceneObserver {
Q_OBJECT
public:
SequenceViewerV2(QWidget* parent=NULL);
~SequenceViewerV2();
virtual void NodeAdded(const gfx::GfxNodeP& node);
virtual void NodeRemoved(const gfx::GfxNodeP& node);
virtual bool Restore(const QString&){return true;};
virtual bool Save(const QString&){return true;};
private:
QTableView* seq_table_view_;
SequenceTableView* seq_table_view_;
};
}}
......
......@@ -207,7 +207,7 @@ SequenceViewerBase::Style SequenceViewerBase::GetDisplayStyle() const
void SequenceViewerBase::AddSequence(SequenceItem* seq)
{
seq->SetShowSecStructure(style_==LOOSE);
seq->SetShowSecStructure(style_==LOOSE);
scene_->AddSequence(seq);
QRectF rect=scene_->itemsBoundingRect();
view_->setSceneRect(QRectF(0, 0, +rect.left()+rect.width(),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment