escape clears a sequence browser selection
[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 #include "qui/seqbrowser/seqproperties/PropertiesWindow.hpp"
19
20 class QMouseEvent;
21 class QRubberBand;
22
23 /*! \brief Render mussa sequences and paths 
24  */
25 class SequenceBrowser: public QGLWidget, public GlSeqBrowser
26 {
27   Q_OBJECT
28
29 public: 
30   SequenceBrowser(QWidget *parent=0);
31   SequenceBrowser(const SequenceBrowser&, QWidget *parent=0);
32
33   QSize sizeHint() const;
34   void clear();
35   void push_sequence(boost::shared_ptr<Sequence> s);
36   void push_sequence(boost::shared_ptr<GlSequence>);
37
38   //! return the popup menu for the glcanvas (reference stored internally)
39   QMenu *getPopupMenu();
40   //! return our copy action (reference stored internally)
41   QAction *getCopySelectedSequenceAsFastaAction();
42   //! return copy sequence action
43   QAction *getCopySelectedSequenceAsStringAction();
44   //! return view sequence properties action
45   QAction *getEditSequencePropertiesAction();
46
47 public slots:
48   void copySelectedSequenceAsFasta();
49   void copySelectedSequenceAsString();
50   void displayContextMenu(const QPoint &p);
51   void editSequenceProperties();
52   void setClipPlane(int z);
53   //! set the center of the current viewport
54   void setViewportCenter(float x);
55   //! set our magnification level
56   void setZoom(double);
57   // actually declared in base class
58   void clearSelection();
59
60 signals:
61   //! emited when someone adds to our list of tracks
62   void tracksChanged();
63   void viewportChanged();
64   //! emit when someone copies basepairs
65   void basepairsCopied(size_t);
66
67 protected:
68   void initializeGL();
69   void resizeGL(int height, int width);
70   void paintGL();
71
72   //! \defgroup Selection
73   /* \@{ */
74   QRubberBand *rubberBand;
75   QPoint bandOrigin;
76   QRect selectedDisplayRegion;
77   QRect selectedCanvasRegion;
78   void mousePressEvent(QMouseEvent *);
79   void mouseMoveEvent(QMouseEvent *);
80   void mouseReleaseEvent(QMouseEvent *);
81
82   void startSelecting(QMouseEvent *);
83   void stopSelecting(QMouseEvent *);
84   /* \@} */
85
86   QMenu *popupMenu;
87   QAction *copySelectedSequenceAsFastaAction;
88   QAction *copySelectedSequenceAsStringAction;
89   QAction *editSequencePropertiesAction;
90   QAction *clearSelectionAction;
91   PropertiesWindowRef properties;
92 };
93 #endif