X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=qui%2Fseqbrowser%2FSequenceBrowserWidget.hpp;h=8f957c76a1d975198205103a71f67a60266ec5f8;hb=02fc4144044a430f8bee6617c0c9871d4ebe5e4d;hp=3460eaafbfad93aca0c44ba8c7f6a3046c444a75;hpb=df8334ae12ac6887b15fb26e4701abde47331a67;p=mussa.git diff --git a/qui/seqbrowser/SequenceBrowserWidget.hpp b/qui/seqbrowser/SequenceBrowserWidget.hpp index 3460eaa..8f957c7 100644 --- a/qui/seqbrowser/SequenceBrowserWidget.hpp +++ b/qui/seqbrowser/SequenceBrowserWidget.hpp @@ -1,9 +1,13 @@ #ifndef _PATH_WIDGET_H_ #define _PATH_WIDGET_H_ - #include -#include +#include + +#include +#include +#include +#include #include "alg/sequence.hpp" #include "alg/glsequence.hpp" @@ -11,15 +15,34 @@ #include "qui/seqbrowser/SequenceBrowserSidebar.hpp" //! the master widget that makes a useful Sequence Browser -class SequenceBrowserWidget : public QSplitter +class SequenceBrowserWidget : public QScrollArea { Q_OBJECT public: SequenceBrowserWidget(QWidget *parent=0); + SequenceBrowserWidget(const SequenceBrowserWidget &); + SequenceBrowserWidget(boost::shared_ptr, QWidget *parent=0); + + //! return our wrapped browser, so we can test it. + SequenceBrowser& browser() { return scrollable_browser->browser(); } + + //! return the popup menu for the glcanvas (reference stored internally) + QMenu *getPopupMenu(); + //! return our fasta copy action (reference stored internally) + QAction *getCopySelectedSequenceAsFastaAction(); + //! return our string copy action (reference stored internally) + QAction *getCopySelectedSequenceAsStringAction(); + //! return sequence properties edit action + QAction *getEditSequencePropertiesAction(); + + QSize sizeHint() const; + + //! copy selected track regions into a list of SequenceLocations + void copySelectedTracksAsSeqLocation(std::list& ); //! return current zoom size - int zoom(); + double zoom(); //! reset all of our stored data back to the empty state void clear(); @@ -29,10 +52,11 @@ public: * as it draw and redraws the SequenceDescriptions in the various * positions. */ - //void push_sequences(std::vector& sequences); - void setSequences(const std::vector& sequences, AnnotationColors& cm); - void setSequences(std::vector& sequences); - const std::vector& sequences() const; + void setSequences( + const std::vector< boost::shared_ptr >& sequences, + boost::shared_ptr cm); + void setSequences(std::vector >& sequences); + const std::vector >& sequences() const; //! reset just the links we're displaying void clear_links(); @@ -43,25 +67,42 @@ public: void centerOnPath(const std::vector& paths); public slots: + //! copy selected sequence + void copySelectedSequenceAsFasta(); + //! set the zoom level of our browser - void setZoom(int); + void setZoom(double); //! zoom to fit the whole scene on the screen - void zoomOut(); + double zoomOut(); //! zoom to sequence - void zoomToSequence(); + double zoomToSequence(); void updatePosition(); //! ask the user where to save an image of the current browser view void promptSaveBrowserPixmap(); + void update(); + +signals: + //! emit when someone copies basepairs + void basepairsCopied(size_t); + //! emit when sequence browser alerts this widget of mouse wheel zoom event + void mouseWheelZoom(double); + private: - ScrollableSequenceBrowser scrollable_browser; - SequenceBrowserSidebar left_sidebar; - SequenceBrowserSidebar right_sidebar; + boost::shared_ptr default_dir; + ScrollableSequenceBrowser *scrollable_browser; + SequenceBrowserSidebar *left_sidebar; + SequenceBrowserSidebar *right_sidebar; + QHBoxLayout *layout; + QWidget *layout_container; //! sequences created by a setSequences(vector) call /*! I need to save them so i can free them to avoid a memory leak */ - std::vector converted_sequences; + std::vector converted_sequences; + + //! shared code for constructors + void init(); }; #endif