void SequenceBrowserSidebar::clear()
{
- for (vector<SequenceDescription *>::iterator desc_i = descriptions.begin();
+ // remove our widgets
+ for (SequenceBrowserSidebar::iterator desc_i = descriptions.begin();
desc_i != descriptions.end();
++desc_i)
{
layout.removeWidget(*desc_i);
delete *desc_i;
}
+ // remove any crud that's left over (like spacers)
+ QLayoutItem *child;
+ while ((child = layout.takeAt(0)) != 0) {
+ layout.removeItem(child);
+ delete child;
+ }
descriptions.clear();
}
+SequenceBrowserSidebar::size_type SequenceBrowserSidebar::size() const
+{
+ return descriptions.size();
+}
+
void SequenceBrowserSidebar::setSequences(
vector<boost::shared_ptr<GlSequence> > sequences
)
track_i != sequences.end();
++track_i)
{
- SequenceDescription *desc = new SequenceDescription(this);
+ seq_description_type desc = new SequenceDescription(this);
desc->setGlSequence(*track_i);
descriptions.push_back(desc);
layout.addWidget(desc);
Q_OBJECT
public:
+ //! pointer to our sequence description widget
+ typedef SequenceDescription *seq_description_type;
+ //! an STL collection of our sequence description widget
+ typedef std::vector<seq_description_type> collection;
+ typedef collection::size_type size_type;
+ typedef collection::iterator iterator;
enum SidebarSide { Left, Right };
SequenceBrowserSidebar(QWidget *parent = 0);
//! clear our list of descriptions
void clear();
+ //! how many items are we storing
+ size_t size() const;
+ //! set the glsequences we're going to be displaying
void setSequences(std::vector<boost::shared_ptr<GlSequence> > );
- std::vector<SequenceDescription *> descriptions;
+ collection descriptions;
public slots:
//! update the reported sequence position for each of our sequences
/*! for example when the right side is at position 3000 call
{
converted_sequences.clear();
scrollable_browser.browser().clear();
+
+ SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+ SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
+ for(size_t i = 0; i != left_sidebar.size(); ++i)
+ {
+ disconnect(left[i], SIGNAL(nameChanged(const QString &)),
+ right[i], SLOT(setName(const QString &)));
+ disconnect(right[i], SIGNAL(nameChanged(const QString &)),
+ left[i], SLOT(setName(const QString &)));
+ }
left_sidebar.clear();
right_sidebar.clear();
}
right_sidebar.setSequences(converted_sequences);
// connect the text change signals to each other
- vector<SequenceDescription *> left = left_sidebar.descriptions;
- vector<SequenceDescription *> right = right_sidebar.descriptions;
+ SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+ SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
for(size_t i = 0; i != sequences.size() and i != right.size(); ++i)
{
connect(left[i], SIGNAL(nameChanged(const QString &)),
{
const SequenceBrowser& browser = scrollable_browser.browser();
const vector<boost::shared_ptr<GlSequence> > &sequences = browser.sequences();
- vector<SequenceDescription *> left = left_sidebar.descriptions;
- vector<SequenceDescription *> right = right_sidebar.descriptions;
+ SequenceBrowserSidebar::collection left = left_sidebar.descriptions;
+ SequenceBrowserSidebar::collection right = right_sidebar.descriptions;
for(size_t i = 0; i != sequences.size() and i != right.size(); ++i)
{
left[i]->setPosition(sequences[i]->leftbase(browser.viewportLeft()));