Bits *maskQuerySeq(struct dnaSeq *seq, boolean isProt, boolean maskQuery, boolean lcMask) /* Massage query sequence a bit, converting it to correct * case (upper for protein/lower for DNA) and optionally * returning upper/lower case info , and trimming poly A. */ { Bits *qMaskBits = NULL; verbose(2, "%s\n", seq->name); if (isProt) faToProtein(seq->dna, seq->size); else { if (maskQuery) { if (lcMask) toggleCase(seq->dna, seq->size); qMaskBits = maskFromUpperCaseSeq(seq); } faToDna(seq->dna, seq->size); } if (seq->size > qWarnSize) { warn("Query sequence %s has size %d, it might take a while.", seq->name, seq->size); } return qMaskBits; }
LetterButton::LetterButton(const QChar& letter, QWidget* parent) : QPushButton(QString(letter),parent) { setCheckable(true); setAutoDefault(false); connect(this,SIGNAL(clicked()),this,SLOT(toggleCase())); skip=true; }
/* * Upper case region. Zap all of the lower * case characters in the region to upper case. Use * the region code to set the limits. Scan the buffer, * doing the changes. Call "lineSetChanged" to ensure that * redisplay is done in all buffers. Bound to * "C-X C-U". */ int upperRegion(int f, int n) { meLine *line ; int loffs ; long lline ; register char c; register int s; meRegion region; if((s=getregion(®ion)) <= 0) return (s); if((s=bufferSetEdit()) <= 0) /* Check we can change the buffer */ return s ; line = frameCur->windowCur->dotLine ; loffs = frameCur->windowCur->dotOffset ; lline = frameCur->windowCur->dotLineNo ; frameCur->windowCur->dotLine = region.line ; frameCur->windowCur->dotOffset = region.offset ; frameCur->windowCur->dotLineNo = region.lineNo ; while (region.size--) { if((c = meLineGetChar(frameCur->windowCur->dotLine, frameCur->windowCur->dotOffset)) == '\0') { frameCur->windowCur->dotLine = meLineGetNext(frameCur->windowCur->dotLine); frameCur->windowCur->dotOffset = 0; frameCur->windowCur->dotLineNo++ ; } else { if(isLower(c)) { lineSetChanged(WFMAIN); #if MEOPT_UNDO meUndoAddRepChar() ; #endif c = toggleCase(c) ; meLineSetChar(frameCur->windowCur->dotLine, frameCur->windowCur->dotOffset, c); } (frameCur->windowCur->dotOffset)++ ; } } frameCur->windowCur->dotLine = line ; frameCur->windowCur->dotOffset = loffs ; frameCur->windowCur->dotLineNo = lline ; return meTRUE ; }
void Changecase::process() { emit startMacro(i18n("Change case")); if (m_sentenceCaseRadio->isChecked()) sentenceCase(); else if (m_lowerCaseRadio->isChecked()) lowerCase(); else if (m_upperCaseRadio->isChecked()) upperCase(); else if (m_initialCapsRadio->isChecked()) initialCaps(); else if (m_toggleCaseRadio->isChecked()) toggleCase(); emit stopMacro(); }
void bigBlat(struct dnaSeq *untransList, int queryCount, char *queryFiles[], char *outFile, boolean transQuery, boolean qIsDna, FILE *out, boolean showStatus) /* Run query against translated DNA database (3 frames on each strand). */ { int frame, i; struct dnaSeq *seq, trimmedSeq; struct genoFind *gfs[3]; aaSeq *dbSeqLists[3]; struct trans3 *t3List = NULL; int isRc; struct lineFile *lf = NULL; struct hash *t3Hash = NULL; boolean forceUpper = FALSE; boolean forceLower = FALSE; boolean toggle = FALSE; boolean maskUpper = FALSE; ZeroVar(&trimmedSeq); if (showStatus) printf("Blatx %d sequences in database, %d files in query\n", slCount(untransList), queryCount); /* Figure out how to manage query case. Proteins want to be in * upper case, generally, nucleotides in lower case. But there * may be repeatMasking based on case as well. */ if (transQuery) { if (qMask == NULL) forceLower = TRUE; else { maskUpper = TRUE; toggle = !sameString(qMask, "upper"); } } else { forceUpper = TRUE; } if (gvo->fileHead != NULL) gvo->fileHead(gvo, out); for (isRc = FALSE; isRc <= 1; ++isRc) { /* Initialize local pointer arrays to NULL to prevent surprises. */ for (frame = 0; frame < 3; ++frame) { gfs[frame] = NULL; dbSeqLists[frame] = NULL; } t3List = seqListToTrans3List(untransList, dbSeqLists, &t3Hash); for (frame = 0; frame < 3; ++frame) { gfs[frame] = gfIndexSeq(dbSeqLists[frame], minMatch, maxGap, tileSize, repMatch, ooc, TRUE, oneOff, FALSE, stepSize); } for (i=0; i<queryCount; ++i) { aaSeq qSeq; lf = lineFileOpen(queryFiles[i], TRUE); while (faMixedSpeedReadNext(lf, &qSeq.dna, &qSeq.size, &qSeq.name)) { dotOut(); /* Put it into right case and optionally mask on case. */ if (forceLower) toLowerN(qSeq.dna, qSeq.size); else if (forceUpper) toUpperN(qSeq.dna, qSeq.size); else if (maskUpper) { if (toggle) toggleCase(qSeq.dna, qSeq.size); upperToN(qSeq.dna, qSeq.size); } if (qSeq.size > qWarnSize) { warn("Query sequence %s has size %d, it might take a while.", qSeq.name, qSeq.size); } trimSeq(&qSeq, &trimmedSeq); if (transQuery) transTripleSearch(&trimmedSeq, gfs, t3Hash, isRc, qIsDna, out); else tripleSearch(&trimmedSeq, gfs, t3Hash, isRc, out); gfOutputQuery(gvo, out); } lineFileClose(&lf); } /* Clean up time. */ trans3FreeList(&t3List); freeHash(&t3Hash); for (frame = 0; frame < 3; ++frame) { genoFindFree(&gfs[frame]); } for (seq = untransList; seq != NULL; seq = seq->next) { reverseComplement(seq->dna, seq->size); } } carefulClose(&out); }
void QsciEditor::setupActions() { cutAct = new QAction( QIcon::fromTheme( "edit-cut" ), "Cu&t", this ); cutAct->setStatusTip( "Cut the selected text" ); cutAct->setShortcut( tr( "Ctrl+X" ) ); copyAct = new QAction( QIcon::fromTheme( "edit-copy" ), "&Copy", this ); copyAct->setStatusTip( "Copy the selected text" ); copyAct->setShortcut( tr( "Ctrl+C" ) ); pasteAct = new QAction( QIcon::fromTheme( "edit-paste" ), "&Paste", this ); pasteAct->setStatusTip( "Paste the text on the clipboard" ); pasteAct->setShortcut( tr( "Ctrl+V" ) ); deleteAct = new QAction( QIcon::fromTheme( "edit-delete" ), "&Delete", this ); deleteAct->setStatusTip( "Delete the selected Text" ); deleteAct->setShortcut( tr( "Delete" ) ); selectAct = new QAction( QIcon::fromTheme( "edit-select-all" ), "Select &All", this ); selectAct->setStatusTip( "Select all the text" ); selectAct->setShortcut( tr( "Ctrl+A" ) ); deselectAct = new QAction( QIcon(), "Deselect &All", this ); deselectAct->setStatusTip( "Deselect all the text" ); deselectAct->setShortcut( tr( "Ctrl+Shift+A" ) ); undoAct = new QAction( QIcon::fromTheme( "edit-undo" ), "&Undo", this ); undoAct->setStatusTip( "Undo the last change" ); undoAct->setShortcut( tr( "Ctrl+Z" ) ); redoAct = new QAction( QIcon::fromTheme( "edit-redo" ), "&Redo", this ); redoAct->setStatusTip( "Redo the undone change" ); redoAct->setShortcut( tr( "Ctrl+Y" ) ); searchAct = new QAction( QIcon::fromTheme( "edit-find" ), "&Search", this ); searchAct->setStatusTip( "Search the document" ); searchAct->setShortcut( tr( "Ctrl+F" ) ); replaceAct = new QAction( QIcon::fromTheme( "edit-find-replace" ), "&Replace", this ); replaceAct->setStatusTip( "Replace text in the document" ); replaceAct->setShortcut( tr( "Ctrl+R" ) ); changeFontAct = new QAction( QIcon::fromTheme( "preferences-desktop-font" ), "Change &Font", this ); changeFontAct->setStatusTip( "Change the font of the document" ); changeFontAct->setShortcut( tr( "Ctrl+Shift+F" ) ); toggleCaseAct = new QAction( "T&oggle Case of Selection", this ); toggleCaseAct->setStatusTip( "Toggle the case of the selected text" ); toggleCaseAct->setShortcut( tr( "Ctrl+Alt+U" ) ); connect( this, SIGNAL( customContextMenuRequested( const QPoint& ) ), this, SLOT( showCustomMenu( const QPoint& ) ) ); connect( cutAct, SIGNAL( triggered() ), this, SLOT( cutAction() ) ); connect( copyAct, SIGNAL( triggered() ), this, SLOT( copyAction() ) ); connect( pasteAct, SIGNAL( triggered() ), this, SLOT( pasteAction() ) ); connect( deleteAct, SIGNAL( triggered() ), this, SLOT( deleteAction() ) ); connect( undoAct, SIGNAL( triggered() ), this, SLOT( undoAction() ) ); connect( redoAct, SIGNAL( triggered() ), this, SLOT( redoAction() ) ); connect( selectAct, SIGNAL( triggered() ), this, SLOT( selectAction() ) ); connect( deselectAct, SIGNAL( triggered() ), this, SLOT( deselectAction() ) ); connect( changeFontAct, SIGNAL( triggered() ), this, SLOT( changeFont() ) ); connect( toggleCaseAct, SIGNAL( triggered() ), this, SLOT( toggleCase() ) ); connect( searchAct, SIGNAL( triggered() ), this, SLOT( showSearch() ) ); connect( this, SIGNAL( linesChanged() ), this, SLOT( resizeMargins() ) ); addAction( cutAct ); addAction( copyAct ); addAction( pasteAct ); addAction( deleteAct ); addAction( selectAct ); addAction( deselectAct ); addAction( undoAct ); addAction( redoAct ); addAction( searchAct ); addAction( replaceAct ); addAction( changeFontAct ); addAction( toggleCaseAct ); /* Change keyBindings */ SendScintilla( SCI_ASSIGNCMDKEY, SCK_DOWN + ( SCMOD_CTRL << 16 ), SCI_PARADOWN ); SendScintilla( SCI_ASSIGNCMDKEY, SCK_UP + ( SCMOD_CTRL << 16 ), SCI_PARAUP ); SendScintilla( SCI_ASSIGNCMDKEY, SCK_DOWN + ( SCMOD_ALT << 16 ), SCI_LINESCROLLDOWN ); SendScintilla( SCI_ASSIGNCMDKEY, SCK_UP + ( SCMOD_ALT << 16 ), SCI_LINESCROLLUP ); /* Remove Ctrl+D as duplicate line */ SendScintilla( SCI_CLEARCMDKEY, 68 + ( SCMOD_CTRL << 16 ) ); };