share one instance of the copySelectedSequenceAsFastaAction
[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   //! return the popup menu for the glcanvas (reference stored internally)
35   QMenu &getPopupMenu();
36   //! return our copy actioy (reference stored internally)
37   QAction &getCopySelectedSequenceAsFastaAction();
38
39 public slots:
40   void copySelectedSequenceAsFasta();
41   void displayContextMenu(const QPoint &p);
42   void setClipPlane(int z);
43   //! set the center of the current viewport
44   void setViewportCenter(float x);
45   //! set our magnification level
46   void setZoom(double);
47
48 signals:
49   //! emited when someone adds to our list of tracks
50   void tracksChanged();
51   void viewportChanged();
52
53 protected:
54   void initializeGL();
55   void resizeGL(int height, int width);
56   void paintGL();
57
58   //! \defgroup Selection
59   /* \@{ */
60   QRubberBand *rubberBand;
61   QPoint bandOrigin;
62   QRect selectedDisplayRegion;
63   QRect selectedCanvasRegion;
64   void mousePressEvent(QMouseEvent *);
65   void mouseMoveEvent(QMouseEvent *);
66   void mouseReleaseEvent(QMouseEvent *);
67
68   void startSelecting(QMouseEvent *);
69   void stopSelecting(QMouseEvent *);
70   /* \@} */
71
72   QMenu popupMenu;
73   QAction copySelectedSequenceAsFastaAction;
74 };
75 #endif