From: Diane Trout Date: Thu, 26 Oct 2006 22:30:31 +0000 (+0000) Subject: add copy sequence as string option X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=dd53c863d1851458c91b626954e74dcc6bff7736 add copy sequence as string option ticket:215 it turned out that the reson I couldn't paste was all the invalid characters in the fasta representation of the sequence. This adds a copy sequence option which just copies the sequence as an undecorated string. (which does paste). Of course this is now confusing as there's two copy options... --- diff --git a/alg/glseqbrowser.cpp b/alg/glseqbrowser.cpp index 396d068..7238f15 100644 --- a/alg/glseqbrowser.cpp +++ b/alg/glseqbrowser.cpp @@ -544,7 +544,7 @@ size_t GlSeqBrowser::copySelectedTracksAsString(std::string& copy_buffer) int right) { stringstream s; - s << seq->subseq(left, right-left+1) << std::endl; + s << seq->subseq(left, right-left+1); return s.str(); } }; diff --git a/qui/MussaAlignedWindow.cpp b/qui/MussaAlignedWindow.cpp index 5498344..085a8b6 100644 --- a/qui/MussaAlignedWindow.cpp +++ b/qui/MussaAlignedWindow.cpp @@ -85,6 +85,7 @@ void MussaAlignedWindow::setupMenus() newMenu->addAction(saveBrowserPixmapAction); newMenu = menuBar()->addMenu(tr("&Edit")); + newMenu->addAction(browser.getCopySelectedSequenceAsStringAction()); newMenu->addAction(browser.getCopySelectedSequenceAsFastaAction()); newMenu->addAction(createSubAnalysisAction); diff --git a/qui/MussaWindow.cpp b/qui/MussaWindow.cpp index b1b883a..df892af 100644 --- a/qui/MussaWindow.cpp +++ b/qui/MussaWindow.cpp @@ -254,6 +254,7 @@ void MussaWindow::setupMainMenu() newMenu = menuBar()->addMenu(tr("&Edit")); newMenu->addAction(editMotifsAction); + newMenu->addAction(browser->getCopySelectedSequenceAsStringAction()); newMenu->addAction(browser->getCopySelectedSequenceAsFastaAction()); newMenu->addAction(createSubAnalysisAction); diff --git a/qui/seqbrowser/SequenceBrowser.cpp b/qui/seqbrowser/SequenceBrowser.cpp index 7a8cd8f..a74ee78 100644 --- a/qui/seqbrowser/SequenceBrowser.cpp +++ b/qui/seqbrowser/SequenceBrowser.cpp @@ -21,12 +21,16 @@ SequenceBrowser::SequenceBrowser(QWidget *parent) : QGLWidget(parent), rubberBand(0), popupMenu(new QMenu(this)), - copySelectedSequenceAsFastaAction(new QAction(tr("&Copy as Fasta"), this)) + copySelectedSequenceAsFastaAction(new QAction(tr("&Copy as Fasta"), this)), + copySelectedSequenceAsStringAction(new QAction(tr("&Copy Sequence"), this)) { connect(copySelectedSequenceAsFastaAction, SIGNAL(triggered()), this, SLOT(copySelectedSequenceAsFasta())); - copySelectedSequenceAsFastaAction->setShortcut(Qt::CTRL | Qt::Key_C); popupMenu->addAction(copySelectedSequenceAsFastaAction); + copySelectedSequenceAsStringAction->setShortcut(Qt::CTRL | Qt::Key_C); + connect(copySelectedSequenceAsStringAction, SIGNAL(triggered()), + this, SLOT(copySelectedSequenceAsString())); + popupMenu->addAction(copySelectedSequenceAsStringAction); } SequenceBrowser::SequenceBrowser(const SequenceBrowser& sb, QWidget *parent) @@ -51,6 +55,10 @@ QAction *SequenceBrowser::getCopySelectedSequenceAsFastaAction() return copySelectedSequenceAsFastaAction; } +QAction *SequenceBrowser::getCopySelectedSequenceAsStringAction() +{ + return copySelectedSequenceAsStringAction; +} QSize SequenceBrowser::sizeHint() const { @@ -109,6 +117,17 @@ void SequenceBrowser::copySelectedSequenceAsFasta() emit basepairsCopied(base_pairs_copied); } +void SequenceBrowser::copySelectedSequenceAsString() +{ + // get fasta data + std::string buffer; + size_t base_pairs_copied = copySelectedTracksAsString(buffer); + + // get reference to clipboard + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setText(buffer.c_str()); + emit basepairsCopied(base_pairs_copied); +} void SequenceBrowser::clear() { diff --git a/qui/seqbrowser/SequenceBrowser.hpp b/qui/seqbrowser/SequenceBrowser.hpp index 93589c4..1251dd2 100644 --- a/qui/seqbrowser/SequenceBrowser.hpp +++ b/qui/seqbrowser/SequenceBrowser.hpp @@ -36,11 +36,14 @@ public: //! return the popup menu for the glcanvas (reference stored internally) QMenu *getPopupMenu(); - //! return our copy actioy (reference stored internally) + //! return our copy action (reference stored internally) QAction *getCopySelectedSequenceAsFastaAction(); + //! return reference to copy sequence action + QAction *getCopySelectedSequenceAsStringAction(); public slots: void copySelectedSequenceAsFasta(); + void copySelectedSequenceAsString(); void displayContextMenu(const QPoint &p); void setClipPlane(int z); //! set the center of the current viewport @@ -76,5 +79,6 @@ protected: QMenu *popupMenu; QAction *copySelectedSequenceAsFastaAction; + QAction *copySelectedSequenceAsStringAction; }; #endif diff --git a/qui/seqbrowser/SequenceBrowserWidget.cpp b/qui/seqbrowser/SequenceBrowserWidget.cpp index 35ce28e..ddc2d5c 100644 --- a/qui/seqbrowser/SequenceBrowserWidget.cpp +++ b/qui/seqbrowser/SequenceBrowserWidget.cpp @@ -62,12 +62,16 @@ QMenu *SequenceBrowserWidget::getPopupMenu() return scrollable_browser.browser().getPopupMenu(); } +QAction *SequenceBrowserWidget::getCopySelectedSequenceAsStringAction() +{ + return scrollable_browser.browser().getCopySelectedSequenceAsStringAction(); +} + QAction *SequenceBrowserWidget::getCopySelectedSequenceAsFastaAction() { return scrollable_browser.browser().getCopySelectedSequenceAsFastaAction(); } - void SequenceBrowserWidget::copySelectedSequenceAsFasta() { scrollable_browser.browser().copySelectedSequenceAsFasta(); diff --git a/qui/seqbrowser/SequenceBrowserWidget.hpp b/qui/seqbrowser/SequenceBrowserWidget.hpp index de2fe67..48bb089 100644 --- a/qui/seqbrowser/SequenceBrowserWidget.hpp +++ b/qui/seqbrowser/SequenceBrowserWidget.hpp @@ -22,8 +22,10 @@ public: //! return the popup menu for the glcanvas (reference stored internally) QMenu *getPopupMenu(); - //! return our copy actioy (reference stored internally) + //! return our fasta copy action (reference stored internally) QAction *getCopySelectedSequenceAsFastaAction(); + //! return our string copy action (reference stored internally) + QAction *getCopySelectedSequenceAsStringAction(); //! copy selected track regions into a list of SequenceLocations void copySelectedTracksAsSeqLocation(std::list& );