display number of basepairs copied
[mussa.git] / qui / seqbrowser / SequenceBrowser.hpp
1 #ifndef _PATHSCENE_H_
2 #define _PATHSCENE_H_
3
4 #include <QAction>
5 #include <QGLWidget>
6 #include <QMenu>
7 #include <QRectF>
8 #include <QPoint>
9
10 #include <vector>
11 #include <set>
12
13 #include <boost/shared_ptr.hpp>
14
15 #include "alg/mussa.hpp"
16 #include "alg/glsequence.hpp"
17 #include "alg/glseqbrowser.hpp"
18
19 class QMouseEvent;
20 class QRubberBand;
21
22 /*! \brief Render mussa sequences and paths 
23  */
24 class SequenceBrowser: public QGLWidget, public GlSeqBrowser
25 {
26   Q_OBJECT
27
28 public: 
29   SequenceBrowser(QWidget *parent=0);
30   SequenceBrowser(const SequenceBrowser&, QWidget *parent=0);
31
32   QSize sizeHint() const;
33   void clear();
34   void push_sequence(boost::shared_ptr<Sequence> s);
35   void push_sequence(boost::shared_ptr<GlSequence>);
36
37   //! return the popup menu for the glcanvas (reference stored internally)
38   QMenu *getPopupMenu();
39   //! return our copy actioy (reference stored internally)
40   QAction *getCopySelectedSequenceAsFastaAction();
41
42 public slots:
43   void copySelectedSequenceAsFasta();
44   void displayContextMenu(const QPoint &p);
45   void setClipPlane(int z);
46   //! set the center of the current viewport
47   void setViewportCenter(float x);
48   //! set our magnification level
49   void setZoom(double);
50
51 signals:
52   //! emited when someone adds to our list of tracks
53   void tracksChanged();
54   void viewportChanged();
55   //! emit when someone copies basepairs
56   void basepairsCopied(size_t);
57
58 protected:
59   void initializeGL();
60   void resizeGL(int height, int width);
61   void paintGL();
62
63   //! \defgroup Selection
64   /* \@{ */
65   QRubberBand *rubberBand;
66   QPoint bandOrigin;
67   QRect selectedDisplayRegion;
68   QRect selectedCanvasRegion;
69   void mousePressEvent(QMouseEvent *);
70   void mouseMoveEvent(QMouseEvent *);
71   void mouseReleaseEvent(QMouseEvent *);
72
73   void startSelecting(QMouseEvent *);
74   void stopSelecting(QMouseEvent *);
75   /* \@} */
76
77   QMenu *popupMenu;
78   QAction *copySelectedSequenceAsFastaAction;
79 };
80 #endif