add copy sequence as string option
authorDiane Trout <diane@caltech.edu>
Thu, 26 Oct 2006 22:30:31 +0000 (22:30 +0000)
committerDiane Trout <diane@caltech.edu>
Thu, 26 Oct 2006 22:30:31 +0000 (22:30 +0000)
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...

alg/glseqbrowser.cpp
qui/MussaAlignedWindow.cpp
qui/MussaWindow.cpp
qui/seqbrowser/SequenceBrowser.cpp
qui/seqbrowser/SequenceBrowser.hpp
qui/seqbrowser/SequenceBrowserWidget.cpp
qui/seqbrowser/SequenceBrowserWidget.hpp

index 396d06884898db35bed5d9c7cd14c1e1d477b4fd..7238f15701f5e478370d20ac1785320acd38de3c 100644 (file)
@@ -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();
     }
   };
index 5498344a0bdf00ebd5da8da69168587b80ac17c4..085a8b67e2bc4788602a2b231ad0e03bab0d4dd9 100644 (file)
@@ -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);
   
index b1b883a2297359e26d3724b8c5b2cf81976c15ff..df892af4d4461fc568607af45b91ef262a77d151 100644 (file)
@@ -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);
  
index 7a8cd8fb754a4a41257b93321046410815dff5c5..a74ee78a88e3f0a62b08dd9f599b4f3084283ec4 100644 (file)
@@ -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()
 {
index 93589c404353d1ed53641077ede6d32c7eb751a2..1251dd2261c58559471bd7f0cfdd052c533b0d9c 100644 (file)
@@ -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
index 35ce28e2c9d1df0f089677833abc8c4d8194c92a..ddc2d5c57fc200bcc50792803a441b72e4efa3ac 100644 (file)
@@ -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();
index de2fe67eada22db59e475355c77dd32059e48acb..48bb0894e194ec0b298fc79960554bd03205b45f 100644 (file)
@@ -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<SequenceLocation>& );