#include <math.h>
using namespace std;
+SequenceBrowserWidget::SequenceBrowserWidget(
+ QWidget *parent)
+ : QScrollArea(parent),
+ left_sidebar(0),
+ scrollable_browser(0),
+ right_sidebar(0),
+ layout(0),
+ layout_container(0)
+{
+ boost::shared_ptr<QDir> empty_dir(new QDir);
+ default_dir = empty_dir;
+
+ init();
+}
+
SequenceBrowserWidget::SequenceBrowserWidget(
boost::shared_ptr<QDir> default_dir_,
QWidget *parent
)
- : QWidget(parent),
- default_dir(default_dir_),
- left_sidebar(new SequenceBrowserSidebar),
- scrollable_browser(new ScrollableSequenceBrowser),
- right_sidebar(new SequenceBrowserSidebar),
- layout(new QHBoxLayout)
+ : QScrollArea(parent),
+ left_sidebar(0),
+ scrollable_browser(0),
+ right_sidebar(0),
+ layout(0),
+ layout_container(0)
{
+ default_dir = default_dir_;
+
+ init();
+}
+
+void SequenceBrowserWidget::init()
+{
+ layout_container = new QWidget(this);
+ layout = new QHBoxLayout(layout_container);
+ left_sidebar = new SequenceBrowserSidebar(layout_container);
+ scrollable_browser = new ScrollableSequenceBrowser(layout_container);
+ right_sidebar = new SequenceBrowserSidebar(layout_container);
+
layout->addWidget(left_sidebar, 0);
layout->addWidget(scrollable_browser, 1);
layout->addWidget(right_sidebar, 0);
-
- setLayout(layout);
-
+
+ layout_container->setLayout(layout);
+ setWidget(layout_container);
+ setWidgetResizable(true);
+
// update position values when something in the SequenceBrowser changes
connect(&(scrollable_browser->browser()), SIGNAL(viewportChanged()),
this, SLOT(updatePosition()));
connect(&(scrollable_browser->browser()), SIGNAL(basepairsCopied(size_t)),
this, SIGNAL(basepairsCopied(size_t)));
+
+ // Send the signal mouseWheelZoom signal from seq browser upward.
+ connect(&(scrollable_browser->browser()), SIGNAL(mouseWheelZoom(double)),
+ this, SIGNAL(mouseWheelZoom(double)));
+}
+
+
+SequenceBrowserWidget::SequenceBrowserWidget(const SequenceBrowserWidget &o)
+ : QScrollArea(o.window()),
+ left_sidebar(o.left_sidebar),
+ scrollable_browser(o.scrollable_browser),
+ right_sidebar(o.right_sidebar),
+ layout(o.layout),
+ layout_container(o.layout_container)
+{
}
QSize SequenceBrowserWidget::sizeHint() const
return QSize(width, center.height());
}
-
void SequenceBrowserWidget::clear()
{
converted_sequences.clear();
return scrollable_browser->browser().getCopySelectedSequenceAsFastaAction();
}
+QAction *SequenceBrowserWidget::getEditSequencePropertiesAction()
+{
+ return scrollable_browser->browser().getEditSequencePropertiesAction();
+}
+
void SequenceBrowserWidget::copySelectedSequenceAsFasta()
{
scrollable_browser->browser().copySelectedSequenceAsFasta();
}
void SequenceBrowserWidget::setSequences(
- const std::vector<boost::shared_ptr<Sequence> >& sequences,
- boost::shared_ptr<AnnotationColors> cm)
+ const std::vector<SequenceRef >& new_sequences,
+ AnnotationColorsRef cm)
{
SequenceBrowser& browser = scrollable_browser->browser();
clear();
- for(Mussa::vector_sequence_type::const_iterator seq_i = sequences.begin();
- seq_i != sequences.end();
+ for(Mussa::vector_sequence_type::const_iterator seq_i = new_sequences.begin();
+ seq_i != new_sequences.end();
++seq_i)
{
+ // Blech *(*seq_i) is dereferencing the shared_ptr stored in the iterator.
boost::shared_ptr<GlSequence> gs(new GlSequence(*seq_i, cm));
converted_sequences.push_back(gs);
browser.push_sequence(gs);
// connect the text change signals to each other
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)
+ for(size_t i = 0; i != new_sequences.size() and i != right.size(); ++i)
{
connect(left[i], SIGNAL(nameChanged(const QString &)),
right[i], SLOT(setName(const QString &)));