From 6b916af8238b81ab7b2a83735819a7e745ccc445 Mon Sep 17 00:00:00 2001 From: stefan <stefan@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Wed, 2 Jun 2010 11:51:58 +0000 Subject: [PATCH] New SequenceViewer, export fixes, GetDisplayModes reimplemented git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2316 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/gui/pymod/export_sequence_viewerV2.cc | 34 ++++++++----------- modules/gui/src/sequence/sequence_model.cc | 22 ++++++++---- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/modules/gui/pymod/export_sequence_viewerV2.cc b/modules/gui/pymod/export_sequence_viewerV2.cc index 67eebd8ee..f53d957c7 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 1191e7ac5..f4c8c65e1 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," "); } -- GitLab