#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 copy actioy (reference stored internally)
+ //! 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>& );
* as it draw and redraws the SequenceDescriptions in the various
* positions.
*/
- //void push_sequences(std::vector<Sequence>& sequences);
void setSequences(
const std::vector< boost::shared_ptr<Sequence> >& sequences,
boost::shared_ptr<AnnotationColors> cm);
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<boost::shared_ptr<GlSequence> > converted_sequences;
+ std::vector<GlSequenceRef > converted_sequences;
+
+ //! shared code for constructors
+ void init();
};
#endif