diff --git a/modules/gui/pymod/export_sequence_viewerV2.cc b/modules/gui/pymod/export_sequence_viewerV2.cc index 67eebd8eee27a43bc923b2c4440078f40fb84a4d..f53d957c70fd543ee8056b695f9bded835c1503b 100644 --- a/modules/gui/pymod/export_sequence_viewerV2.cc +++ b/modules/gui/pymod/export_sequence_viewerV2.cc @@ -46,47 +46,47 @@ void change_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHan seq_viewer->ChangeDisplayMode(alignment, mode); } -void get_current_display_mode_a(SequenceViewerV2* seq_viewer) +String get_current_display_mode_a(SequenceViewerV2* seq_viewer) { - seq_viewer->GetCurrentDisplayMode(); + return seq_viewer->GetCurrentDisplayMode().toStdString(); } -void get_current_display_mode_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity) +String get_current_display_mode_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity) { - seq_viewer->GetCurrentDisplayMode(entity); + return seq_viewer->GetCurrentDisplayMode(entity).toStdString(); } -void get_current_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment) +String get_current_display_mode_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment) { - seq_viewer->GetCurrentDisplayMode(alignment); + return seq_viewer->GetCurrentDisplayMode(alignment).toStdString(); } -std::vector<QString> get_display_modes_a(SequenceViewerV2* seq_viewer) +std::vector<String> get_display_modes_a(SequenceViewerV2* seq_viewer) { - std::vector<QString> modes; + std::vector<String> modes; const QStringList& list = seq_viewer->GetDisplayModes(); for (int i=0; i<list.size(); i++){ - modes.push_back(list.at(i)); + modes.push_back(list.at(i).toStdString()); } return modes; } -std::vector<QString> get_display_modes_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity) +std::vector<String> get_display_modes_b(SequenceViewerV2* seq_viewer, const gfx::EntityP& entity) { - std::vector<QString> modes; + std::vector<String> modes; const QStringList& list = seq_viewer->GetDisplayModes(entity); for (int i=0; i<list.size(); i++){ - modes.push_back(list.at(i)); + modes.push_back(list.at(i).toStdString()); } return modes; } -std::vector<QString> get_display_modes_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment) +std::vector<String> get_display_modes_c(SequenceViewerV2* seq_viewer, const seq::AlignmentHandle& alignment) { - std::vector<QString> modes; + std::vector<String> modes; const QStringList& list = seq_viewer->GetDisplayModes(alignment); for (int i=0; i<list.size(); i++){ - modes.push_back(list.at(i)); + modes.push_back(list.at(i).toStdString()); } return modes; } @@ -113,9 +113,5 @@ void export_SequenceViewerV2() .def("GetQObject",&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 >()) - ; } diff --git a/modules/gui/src/sequence/sequence_model.cc b/modules/gui/src/sequence/sequence_model.cc index 1191e7ac5e9e478b08059700bd538a6e85a8516c..f4c8c65e117b0ab6e68d533df3a5e1dfdb164629 100644 --- a/modules/gui/src/sequence/sequence_model.cc +++ b/modules/gui/src/sequence/sequence_model.cc @@ -297,19 +297,29 @@ void SequenceModel::DoubleClicked(const QModelIndex& index) const QStringList& SequenceModel::GetDisplayModes() { display_modes_.clear(); - bool removed = false; + QMap<QString,int> string_map; 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)); + if(!string_map.contains(list.at(j))){ + string_map.insert(list.at(j),1); } - else if (!display_modes_.contains(list.at(i))){ - display_modes_.removeAll(list.at(i)); - removed = true; + else { + string_map[list.at(j)] = string_map[list.at(j)] + 1; } } } + bool removed = false; + QMapIterator<QString, int> i(string_map); + while (i.hasNext()) { + i.next(); + if(objects_.size()-1 <= i.value()){ + display_modes_.append(i.key()); + } + else{ + removed = true; + } + } if(removed){ display_modes_.insert(0," "); }