Save to image fix (ticket:96)
[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
56 protected:
57   void initializeGL();
58   void resizeGL(int height, int width);
59   void paintGL();
60
61   //! \defgroup Selection
62   /* \@{ */
63   QRubberBand *rubberBand;
64   QPoint bandOrigin;
65   QRect selectedDisplayRegion;
66   QRect selectedCanvasRegion;
67   void mousePressEvent(QMouseEvent *);
68   void mouseMoveEvent(QMouseEvent *);
69   void mouseReleaseEvent(QMouseEvent *);
70
71   void startSelecting(QMouseEvent *);
72   void stopSelecting(QMouseEvent *);
73   /* \@} */
74
75   QMenu *popupMenu;
76   QAction *copySelectedSequenceAsFastaAction;
77 };
78 #endif