#ifndef _PATHSCENE_H_
#define _PATHSCENE_H_
+#include <QAction>
#include <QGLWidget>
+#include <QMenu>
#include <QRectF>
#include <QPoint>
-#include <vector>
-#include <GL/gl.h>
+#include <vector>
#include <set>
+#include <boost/shared_ptr.hpp>
+
#include "alg/mussa.hpp"
#include "alg/glsequence.hpp"
#include "alg/glseqbrowser.hpp"
+#include "qui/seqbrowser/seqproperties/PropertiesWindow.hpp"
class QMouseEvent;
+class QWheelEvent;
class QRubberBand;
/*! \brief Render mussa sequences and paths
public:
SequenceBrowser(QWidget *parent=0);
+ SequenceBrowser(const SequenceBrowser&, QWidget *parent=0);
QSize sizeHint() const;
-
void clear();
- void push_sequence(const Sequence &s);
- void push_sequence(GlSequence &);
-
+ void push_sequence(boost::shared_ptr<Sequence> s);
+ void push_sequence(boost::shared_ptr<GlSequence>);
+
+ //! return the popup menu for the glcanvas (reference stored internally)
+ QMenu *getPopupMenu();
+ //! return our copy action (reference stored internally)
+ QAction *getCopySelectedSequenceAsFastaAction();
+ //! return copy sequence action
+ QAction *getCopySelectedSequenceAsStringAction();
+ //! return view sequence properties action
+ QAction *getEditSequencePropertiesAction();
+
public slots:
+ void copySelectedSequenceAsFasta();
+ void copySelectedSequenceAsString();
+ void displayContextMenu(const QPoint &p);
+ void editSequenceProperties();
void setClipPlane(int z);
//! set the center of the current viewport
void setViewportCenter(float x);
//! set our magnification level
- void setZoom(int);
+ void setZoom(double);
+ // actually declared in base class
+ void clearSelection();
signals:
//! emited when someone adds to our list of tracks
void tracksChanged();
void viewportChanged();
+ //! emit when someone copies basepairs
+ void basepairsCopied(size_t);
+ void mouseWheelZoom(double);
-private:
+protected:
void initializeGL();
void resizeGL(int height, int width);
void paintGL();
//! \defgroup Selection
+ /* \@{ */
QRubberBand *rubberBand;
QPoint bandOrigin;
- bool drawingBand;
+ QRect selectedDisplayRegion;
+ QRect selectedCanvasRegion;
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
+ void wheelEvent(QWheelEvent *);
+
+ void startSelecting(QMouseEvent *);
+ void stopSelecting(QMouseEvent *);
+ /* \@} */
+
+ QMenu *popupMenu;
+ QAction *copySelectedSequenceAsFastaAction;
+ QAction *copySelectedSequenceAsStringAction;
+ QAction *editSequencePropertiesAction;
+ QAction *clearSelectionAction;
+ PropertiesWindowRef properties;
};
#endif