escape clears a sequence browser selection
[mussa.git] / qui / seqbrowser / SequenceBrowser.hpp
index f50558dc89851a07ff0f405600c0ae306da03dd4..65765198e415e1d7e82439e9674a38c20a4ceec6 100644 (file)
@@ -1,16 +1,21 @@
 #ifndef _PATHSCENE_H_
 #define _PATHSCENE_H_
 
+#include <QAction>
 #include <QGLWidget>
+#include <QMenu>
 #include <QRectF>
 #include <QPoint>
-#include <vector>
 
+#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 QRubberBand;
@@ -23,36 +28,66 @@ class SequenceBrowser: public QGLWidget, public GlSeqBrowser
 
 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(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);
 
-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 startSelecting(QMouseEvent *);
+  void stopSelecting(QMouseEvent *);
+  /* \@} */
+
+  QMenu *popupMenu;
+  QAction *copySelectedSequenceAsFastaAction;
+  QAction *copySelectedSequenceAsStringAction;
+  QAction *editSequencePropertiesAction;
+  QAction *clearSelectionAction;
+  PropertiesWindowRef properties;
 };
 #endif