add copy sequence as string option
[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 action (reference stored internally)
40   QAction *getCopySelectedSequenceAsFastaAction();
41   //! return reference to copy sequence action
42   QAction *getCopySelectedSequenceAsStringAction();
43
44 public slots:
45   void copySelectedSequenceAsFasta();
46   void copySelectedSequenceAsString();
47   void displayContextMenu(const QPoint &p);
48   void setClipPlane(int z);
49   //! set the center of the current viewport
50   void setViewportCenter(float x);
51   //! set our magnification level
52   void setZoom(double);
53
54 signals:
55   //! emited when someone adds to our list of tracks
56   void tracksChanged();
57   void viewportChanged();
58   //! emit when someone copies basepairs
59   void basepairsCopied(size_t);
60
61 protected:
62   void initializeGL();
63   void resizeGL(int height, int width);
64   void paintGL();
65
66   //! \defgroup Selection
67   /* \@{ */
68   QRubberBand *rubberBand;
69   QPoint bandOrigin;
70   QRect selectedDisplayRegion;
71   QRect selectedCanvasRegion;
72   void mousePressEvent(QMouseEvent *);
73   void mouseMoveEvent(QMouseEvent *);
74   void mouseReleaseEvent(QMouseEvent *);
75
76   void startSelecting(QMouseEvent *);
77   void stopSelecting(QMouseEvent *);
78   /* \@} */
79
80   QMenu *popupMenu;
81   QAction *copySelectedSequenceAsFastaAction;
82   QAction *copySelectedSequenceAsStringAction;
83 };
84 #endif