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

New SequenceViewer, export some convenience methods

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2315 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 16ddbc3d
No related branches found
No related tags found
No related merge requests found
...@@ -16,7 +16,10 @@ ...@@ -16,7 +16,10 @@
// along with this library; if not, write to the Free Software Foundation, Inc., // along with this library; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#include <vector>
#include <boost/python.hpp> #include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
#include <ost/gui/sequence/sequence_viewer.hh> #include <ost/gui/sequence/sequence_viewer.hh>
...@@ -43,6 +46,51 @@ void change_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHan ...@@ -43,6 +46,51 @@ void change_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHan
seq_viewer->ChangeDisplayMode(alignment, mode); seq_viewer->ChangeDisplayMode(alignment, mode);
} }
void get_current_display_mode_a(SequenceViewerV2* seq_viewer)
{
seq_viewer->GetCurrentDisplayMode();
}
void get_current_display_mode_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity)
{
seq_viewer->GetCurrentDisplayMode(entity);
}
void get_current_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment)
{
seq_viewer->GetCurrentDisplayMode(alignment);
}
std::vector<QString> get_display_modes_a(SequenceViewerV2* seq_viewer)
{
std::vector<QString> modes;
const QStringList& list = seq_viewer->GetDisplayModes();
for (int i=0; i<list.size(); i++){
modes.push_back(list.at(i));
}
return modes;
}
std::vector<QString> get_display_modes_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity)
{
std::vector<QString> modes;
const QStringList& list = seq_viewer->GetDisplayModes(entity);
for (int i=0; i<list.size(); i++){
modes.push_back(list.at(i));
}
return modes;
}
std::vector<QString> get_display_modes_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment)
{
std::vector<QString> modes;
const QStringList& list = seq_viewer->GetDisplayModes(alignment);
for (int i=0; i<list.size(); i++){
modes.push_back(list.at(i));
}
return modes;
}
} }
...@@ -53,11 +101,21 @@ void export_SequenceViewerV2() ...@@ -53,11 +101,21 @@ void export_SequenceViewerV2()
.def("Hide", &SequenceViewerV2::hide) .def("Hide", &SequenceViewerV2::hide)
.def("AddAlignment", &SequenceViewerV2::AddAlignment) .def("AddAlignment", &SequenceViewerV2::AddAlignment)
.def("RemoveAlignment", &SequenceViewerV2::RemoveAlignment) .def("RemoveAlignment", &SequenceViewerV2::RemoveAlignment)
.def("GetDisplayModes", &get_display_modes_a)
.def("GetDisplayModes", &get_display_modes_b)
.def("GetDisplayModes", &get_display_modes_c)
.def("GetCurrentDisplayMode", &get_current_display_mode_a)
.def("GetCurrentDisplayMode", &get_current_display_mode_b)
.def("GetCurrentDisplayMode", &get_current_display_mode_c)
.def("ChangeDisplayMode",&change_display_mode_a) .def("ChangeDisplayMode",&change_display_mode_a)
.def("ChangeDisplayMode",&change_display_mode_b) .def("ChangeDisplayMode",&change_display_mode_b)
.def("ChangeDisplayMode",&change_display_mode_c) .def("ChangeDisplayMode",&change_display_mode_c)
.def("GetQObject",&get_py_qobject<SequenceViewerV2>) .def("GetQObject",&get_py_qobject<SequenceViewerV2>)
.add_property("qobject", &get_py_qobject<SequenceViewerV2>) .add_property("qobject", &get_py_qobject<SequenceViewerV2>)
; ;
class_<std::vector<QString> >("QStringList", init<>())
.def(vector_indexing_suite<std::vector<QString>, true >())
;
} }
...@@ -294,7 +294,29 @@ void SequenceModel::DoubleClicked(const QModelIndex& index) ...@@ -294,7 +294,29 @@ void SequenceModel::DoubleClicked(const QModelIndex& index)
} }
} }
const QStringList& SequenceModel::GetDisplayModes(gfx::EntityP& entity) const QStringList& SequenceModel::GetDisplayModes()
{
display_modes_.clear();
bool removed = false;
for (int i = 0; i<objects_.size(); i++){
const QStringList& list = objects_[i]->GetDisplayModes();
for(int j=0; j<list.size(); j++){
if(i = 0){
display_modes_.append(list.at(i));
}
else if (!display_modes_.contains(list.at(i))){
display_modes_.removeAll(list.at(i));
removed = true;
}
}
}
if(removed){
display_modes_.insert(0," ");
}
return display_modes_;
}
const QStringList& SequenceModel::GetDisplayModes(const gfx::EntityP& entity)
{ {
BaseViewObject* item = this->GetItem(entity); BaseViewObject* item = this->GetItem(entity);
if(item){ if(item){
...@@ -316,7 +338,23 @@ const QStringList& SequenceModel::GetDisplayModes(const seq::AlignmentHandle& al ...@@ -316,7 +338,23 @@ const QStringList& SequenceModel::GetDisplayModes(const seq::AlignmentHandle& al
} }
} }
const QString& SequenceModel::GetCurrentDisplayMode(gfx::EntityP& entity) const QString& SequenceModel::GetCurrentDisplayMode()
{
current_display_mode_.clear();
for (int i = 0; i<objects_.size(); i++){
const QString& mode = objects_[i]->GetCurrentDisplayMode();
if(current_display_mode_.isEmpty()){
current_display_mode_ = mode;
}
else if(current_display_mode_ != mode){
current_display_mode_ = " ";
break;
}
}
return current_display_mode_;
}
const QString& SequenceModel::GetCurrentDisplayMode(const gfx::EntityP& entity)
{ {
BaseViewObject* item = this->GetItem(entity); BaseViewObject* item = this->GetItem(entity);
if(item){ if(item){
......
...@@ -61,9 +61,11 @@ public: ...@@ -61,9 +61,11 @@ public:
int GetGlobalRow(BaseViewObject* obj, int row) const; int GetGlobalRow(BaseViewObject* obj, int row) const;
const QStringList& GetDisplayModes(gfx::EntityP& entity); const QStringList& GetDisplayModes();
const QStringList& GetDisplayModes(const gfx::EntityP& entity);
const QStringList& GetDisplayModes(const seq::AlignmentHandle& alignment); const QStringList& GetDisplayModes(const seq::AlignmentHandle& alignment);
const QString& GetCurrentDisplayMode(gfx::EntityP& entity); const QString& GetCurrentDisplayMode();
const QString& GetCurrentDisplayMode(const gfx::EntityP& entity);
const QString& GetCurrentDisplayMode(const seq::AlignmentHandle& alignment); const QString& GetCurrentDisplayMode(const seq::AlignmentHandle& alignment);
void SetDisplayMode(const QString& mode); void SetDisplayMode(const QString& mode);
void SetDisplayMode(const gfx::EntityP& entity, const QString& mode); void SetDisplayMode(const gfx::EntityP& entity, const QString& mode);
...@@ -101,6 +103,8 @@ private: ...@@ -101,6 +103,8 @@ private:
PainterList empty_painter_list_; PainterList empty_painter_list_;
QString empty_string_; QString empty_string_;
QStringList empty_string_list_; QStringList empty_string_list_;
QStringList display_modes_;
QString current_display_mode_;
}; };
......
...@@ -284,6 +284,32 @@ void SequenceViewerV2::SelectList(const QModelIndexList& list) ...@@ -284,6 +284,32 @@ void SequenceViewerV2::SelectList(const QModelIndexList& list)
} }
} }
const QStringList& SequenceViewerV2::GetDisplayModes()
{
return model_->GetDisplayModes();
}
const QStringList& SequenceViewerV2::GetDisplayModes(const seq::AlignmentHandle& alignment)
{
return model_->GetDisplayModes(alignment);
}
const QStringList& SequenceViewerV2::GetDisplayModes(const gfx::EntityP& entity)
{
return model_->GetDisplayModes(entity);
}
const QString& SequenceViewerV2::GetCurrentDisplayMode()
{
return model_->GetCurrentDisplayMode();
}
const QString& SequenceViewerV2::GetCurrentDisplayMode(const seq::AlignmentHandle& alignment)
{
return model_->GetCurrentDisplayMode(alignment);
}
const QString& SequenceViewerV2::GetCurrentDisplayMode(const gfx::EntityP& entity)
{
return model_->GetCurrentDisplayMode(entity);
}
void SequenceViewerV2::ChangeDisplayMode(const QString& string) void SequenceViewerV2::ChangeDisplayMode(const QString& string)
{ {
model_->SetDisplayMode(string); model_->SetDisplayMode(string);
......
...@@ -57,6 +57,14 @@ public: ...@@ -57,6 +57,14 @@ public:
virtual bool Restore(const QString&){return true;}; virtual bool Restore(const QString&){return true;};
virtual bool Save(const QString&){return true;}; virtual bool Save(const QString&){return true;};
virtual const QStringList& GetDisplayModes();
virtual const QStringList& GetDisplayModes(const seq::AlignmentHandle& alignment);
virtual const QStringList& GetDisplayModes(const gfx::EntityP& entity);
virtual const QString& GetCurrentDisplayMode();
virtual const QString& GetCurrentDisplayMode(const seq::AlignmentHandle& alignment);
virtual const QString& GetCurrentDisplayMode(const gfx::EntityP& entity);
public slots: public slots:
void ChangeDisplayMode(const QString&); void ChangeDisplayMode(const QString&);
void ChangeDisplayMode(const seq::AlignmentHandle&, const QString&); void ChangeDisplayMode(const seq::AlignmentHandle&, const QString&);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment