implement selection context menu
[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 "alg/mussa.hpp"
14 #include "alg/glsequence.hpp"
15 #include "alg/glseqbrowser.hpp"
16
17 class QMouseEvent;
18 class QRubberBand;
19
20 /*! \brief Render mussa sequences and paths 
21  */
22 class SequenceBrowser: public QGLWidget, public GlSeqBrowser
23 {
24   Q_OBJECT
25
26 public: 
27   SequenceBrowser(QWidget *parent=0);
28
29   QSize sizeHint() const;
30   void clear();
31   void push_sequence(const Sequence &s);
32   void push_sequence(GlSequence &);
33       
34 public slots:
35   void copySelectedSequenceAsFasta();
36   void displayContextMenu(const QPoint &p);
37   void setClipPlane(int z);
38   //! set the center of the current viewport
39   void setViewportCenter(float x);
40   //! set our magnification level
41   void setZoom(double);
42
43 signals:
44   //! emited when someone adds to our list of tracks
45   void tracksChanged();
46   void viewportChanged();
47
48 protected:
49   void initializeGL();
50   void resizeGL(int height, int width);
51   void paintGL();
52
53   //! \defgroup Selection
54   /* \@{ */
55   QRubberBand *rubberBand;
56   QPoint bandOrigin;
57   QRect selectedDisplayRegion;
58   QRect selectedCanvasRegion;
59   void mousePressEvent(QMouseEvent *);
60   void mouseMoveEvent(QMouseEvent *);
61   void mouseReleaseEvent(QMouseEvent *);
62
63   void startSelecting(QMouseEvent *);
64   void stopSelecting(QMouseEvent *);
65   /* \@} */
66
67   QMenu popupMenu;
68   QAction copySelectedSequenceAsFastaAction;
69 };
70 #endif