#ifndef _PATH_WIDGET_H_
#define _PATH_WIDGET_H_
-
#include <vector>
+#include <boost/shared_ptr.hpp>
+
+#include <QDir>
+#include <QScrollArea>
+#include <QSize>
#include <QWidget>
#include "alg/sequence.hpp"
#include "qui/seqbrowser/SequenceBrowserSidebar.hpp"
//! the master widget that makes a useful Sequence Browser
-class SequenceBrowserWidget : public QWidget
+class SequenceBrowserWidget : public QScrollArea
{
Q_OBJECT
public:
SequenceBrowserWidget(QWidget *parent=0);
+ SequenceBrowserWidget(const SequenceBrowserWidget &);
+ SequenceBrowserWidget(boost::shared_ptr<QDir>, QWidget *parent=0);
+
+ //! return our wrapped browser, so we can test it.
+ SequenceBrowser& browser() { return scrollable_browser->browser(); }
+
+ //! return the popup menu for the glcanvas (reference stored internally)
+ QMenu *getPopupMenu();
+ //! return our fasta copy action (reference stored internally)
+ QAction *getCopySelectedSequenceAsFastaAction();
+ //! return our string copy action (reference stored internally)
+ QAction *getCopySelectedSequenceAsStringAction();
+ //! return sequence properties edit action
+ QAction *getEditSequencePropertiesAction();
+
+ QSize sizeHint() const;
+
+ //! copy selected track regions into a list of SequenceLocations
+ void copySelectedTracksAsSeqLocation(std::list<SequenceLocation>& );
//! return current zoom size
double zoom();
* as it draw and redraws the SequenceDescriptions in the various
* positions.
*/
- //void push_sequences(std::vector<Sequence>& sequences);
- void setSequences(const std::vector<Sequence>& sequences, AnnotationColors& cm);
- void setSequences(std::vector<GlSequence>& sequences);
- const std::vector<GlSequence>& sequences() const;
+ void setSequences(
+ const std::vector< boost::shared_ptr<Sequence> >& sequences,
+ boost::shared_ptr<AnnotationColors> cm);
+ void setSequences(std::vector<boost::shared_ptr<GlSequence> >& sequences);
+ const std::vector<boost::shared_ptr<GlSequence> >& sequences() const;
//! reset just the links we're displaying
void clear_links();
void promptSaveBrowserPixmap();
void update();
-
+
+signals:
+ //! emit when someone copies basepairs
+ void basepairsCopied(size_t);
+ //! emit when sequence browser alerts this widget of mouse wheel zoom event
+ void mouseWheelZoom(double);
+
private:
- ScrollableSequenceBrowser scrollable_browser;
- SequenceBrowserSidebar left_sidebar;
- SequenceBrowserSidebar right_sidebar;
+ boost::shared_ptr<QDir> default_dir;
+ ScrollableSequenceBrowser *scrollable_browser;
+ SequenceBrowserSidebar *left_sidebar;
+ SequenceBrowserSidebar *right_sidebar;
+ QHBoxLayout *layout;
+ QWidget *layout_container;
//! sequences created by a setSequences(vector<Sequences>) call
/*! I need to save them so i can free them to avoid a memory leak
*/
- std::vector<GlSequence> converted_sequences;
+ std::vector<GlSequenceRef > converted_sequences;
+
+ //! shared code for constructors
+ void init();
};
#endif