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