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