void EditStaff::updateInstrument() { setInterval(instrument.transpose()); QList<StaffNameDoc>& nl = instrument.shortNames(); QTextDocumentFragment df = nl.isEmpty() ? QTextDocumentFragment() : nl[0].name; shortName->setHtml(df.toHtml()); nl = instrument.longNames(); df = nl.isEmpty() ? QTextDocumentFragment() : nl[0].name; longName->setHtml(df.toHtml()); if (partName->text() == instrumentName->text()) // Updates part name is no custom name has been set before partName->setText(instrument.trackName()); instrumentName->setText(instrument.trackName()); _minPitchA = instrument.minPitchA(); _maxPitchA = instrument.maxPitchA(); _minPitchP = instrument.minPitchP(); _maxPitchP = instrument.maxPitchP(); minPitchA->setText(midiCodeToStr(_minPitchA)); maxPitchA->setText(midiCodeToStr(_maxPitchA)); minPitchP->setText(midiCodeToStr(_minPitchP)); maxPitchP->setText(midiCodeToStr(_maxPitchP)); int numStr = instrument.stringData() ? instrument.stringData()->strings() : 0; numOfStrings->setText(QString::number(numStr)); }
void EditStaff::apply() { Score* score = staff->score(); Part* part = staff->part(); int intervalIdx = iList->currentIndex(); bool upFlag = up->isChecked(); Interval interval = intervalList[intervalIdx]; interval.diatonic += octave->value() * 7; interval.chromatic += octave->value() * 12; if (!upFlag) interval.flip(); instrument.setTranspose(interval); instrument.setMinPitchA(_minPitchA); instrument.setMaxPitchA(_maxPitchA); instrument.setMinPitchP(_minPitchP); instrument.setMaxPitchP(_maxPitchP); instrument.setShortName(QTextDocumentFragment(shortName->document())); instrument.setLongName(QTextDocumentFragment(longName->document())); bool s = small->isChecked(); bool inv = invisible->isChecked(); qreal userDist = spinExtraDistance->value(); QColor col = color->color(); int staffIdx = staffType->itemData(staffType->currentIndex()).toInt(); StaffType* st = score->staffType(staffIdx); // before changing instrument, check if notes need to be updated // true if changing into or away from TAB or from one TAB type to another StaffGroup ng = st->group(); // new staff group StaffGroup og = staff->staffType()->group(); // old staff group bool updateNeeded = (ng == TAB_STAFF_GROUP && og != TAB_STAFF_GROUP) || (ng != TAB_STAFF_GROUP && og == TAB_STAFF_GROUP) || (ng == TAB_STAFF_GROUP && og == TAB_STAFF_GROUP && instrument.stringData() != part->instr()->stringData()); if (!(instrument == *part->instr()) || part->partName() != partName->text()) { score->undo(new ChangePart(part, instrument, partName->text())); emit instrumentChanged(); } if (s != staff->small() || inv != staff->invisible() || userDist != staff->userDist() || st != staff->staffType() || col != staff->color()) score->undo(new ChangeStaff(staff, s, inv, userDist * score->spatium(), col, st)); if (updateNeeded) score->cmdUpdateNotes(); score->setLayoutAll(true); score->update(); }
QTextDocumentFragment Text::getFragment() const { if (styled()) return QTextDocumentFragment::fromPlainText(getText()); else return QTextDocumentFragment(_doc); }
void QTextEditMimeData::setup() const { QTextEditMimeData *that = const_cast<QTextEditMimeData *>(this); that->setData(QLatin1String("text/html"), fragment.toHtml("utf-8").toUtf8()); that->setText(fragment.toPlainText()); fragment = QTextDocumentFragment(); }
QTextDocumentFragment StrainPipeData::contents() { if (!valid()) return QTextDocumentFragment(); if (isEmpty()) populate(); QTextCursor cursor(this); cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor); cursor.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); return cursor.selection(); }
bool KoInlineNote::loadOdf(const KoXmlElement & element, KoShapeLoadingContext &context, KoStyleManager *styleManager, KoChangeTracker *changeTracker) { QTextDocument *document = new QTextDocument(); QTextCursor cursor(document); KoTextDocument textDocument(document); textDocument.setStyleManager(styleManager); d->styleManager = styleManager; textDocument.setChangeTracker(changeTracker); KoTextLoader loader(context); if (element.namespaceURI() == KoXmlNS::text && element.localName() == "note") { QString className = element.attributeNS(KoXmlNS::text, "note-class"); if (className == "footnote") { d->type = Footnote; } else if (className == "endnote") { d->type = Endnote; } else { delete document; return false; } d->id = element.attributeNS(KoXmlNS::text, "id"); for (KoXmlNode node = element.firstChild(); !node.isNull(); node = node.nextSibling()) { setAutoNumbering(false); KoXmlElement ts = node.toElement(); if (ts.namespaceURI() != KoXmlNS::text) continue; if (ts.localName() == "note-body") { loader.loadBody(ts, cursor); } else if (ts.localName() == "note-citation") { d->label = ts.attributeNS(KoXmlNS::text, "label"); if (d->label.isEmpty()) { setAutoNumbering(true); d->label = ts.text(); } } } } else if (element.namespaceURI() == KoXmlNS::office && element.localName() == "annotation") { d->author = element.attributeNS(KoXmlNS::text, "dc-creator"); d->date = QDateTime::fromString(element.attributeNS(KoXmlNS::text, "dc-date"), Qt::ISODate); loader.loadBody(element, cursor); // would skip author and date, and do just the <text-p> and <text-list> elements } else { delete document; return false; } d->text = QTextDocumentFragment(document); delete document; return true; }
static QTextDocumentFragment parseInstrName(const QString& name) { if (name.isEmpty()) return QTextDocumentFragment(); QTextDocument doc; QTextCursor cursor(&doc); QTextCharFormat f = cursor.charFormat(); QTextCharFormat sf(f); QFont font("MScore1"); sf.setFont(font); QDomDocument dom; int line, column; QString err; if (!dom.setContent(name, false, &err, &line, &column)) { QString col, ln; col.setNum(column); ln.setNum(line); QString error = err + "\n at line " + ln + " column " + col; qDebug("parse instrument name: %s\n", qPrintable(error)); qDebug(" data:<%s>\n", qPrintable(name)); return QTextDocumentFragment(); } for (QDomNode e = dom.documentElement(); !e.isNull(); e = e.nextSibling()) { for (QDomNode ee = e.firstChild(); !ee.isNull(); ee = ee.nextSibling()) { QDomElement de1 = ee.toElement(); QString tag(de1.tagName()); if (tag == "symbol") { QString name = de1.attribute(QString("name")); if (name == "flat") cursor.insertText(QString(0xe10d), sf); else if (name == "sharp") cursor.insertText(QString(0xe10c), sf); } QDomText t = ee.toText(); if (!t.isNull()) cursor.insertText(t.data(), f); } } return QTextDocumentFragment(&doc); }
QTextDocumentFragment SimpleMessageStyle::textFragmentAt(QWidget *AWidget, const QPoint &APosition) const { StyleViewer *view = qobject_cast<StyleViewer *>(AWidget); if (view) { QTextCursor cursor = view->cursorForPosition(APosition); for (QTextBlock::iterator it = cursor.block().begin(); !it.atEnd(); ++it) { if (it.fragment().contains(cursor.position())) { cursor.setPosition(it.fragment().position()); cursor.movePosition(QTextCursor::NextCharacter,QTextCursor::KeepAnchor,it.fragment().length()); return cursor.selection(); } } } return QTextDocumentFragment(); }
TextDocument* TextDocument::clone() { if (d.dirty > 0) flush(); TextDocument* doc = new TextDocument(d.buffer); doc->setDefaultStyleSheet(defaultStyleSheet()); QTextCursor(doc).insertFragment(QTextDocumentFragment(this)); doc->rootFrame()->setFrameFormat(rootFrame()->frameFormat()); // TODO: doc->d.uc = d.uc; doc->d.css = d.css; doc->d.lowlight = d.lowlight; doc->d.buffer = d.buffer; doc->d.highlights = d.highlights; doc->d.timeStampFormat = d.timeStampFormat; doc->d.clone = true; return doc; }
void Dialog::appendToHistory(const QString& name, const QDateTime& sendTime, QTextDocument *document, InsertingMode mode) { QListWidgetItem *item = new QListWidgetItem(); QTextEdit *te = new QTextEdit(); lwHistory->addItem(item); te->setReadOnly(true); reloadResource(te); lwHistory->setItemWidget(item, te); QString color; if (name == "You") color = "blue"; else color = "red"; te->append(QString("<font color = \"%1\"> <b>" + name + "</b> (" + sendTime.toString("dd-MM-yyyy hh:mm:ss") + "):</font>").arg(color)); te->moveCursor(QTextCursor::End); te->textCursor().insertBlock(); te->textCursor().insertFragment(QTextDocumentFragment(document)); int heig = 17, widthTe = parentWidget()->width(); int curLine = 0; int mx = 0; for (QTextBlock bl = te->document()->begin(); bl != te->document()->end(); bl = bl.next()) if (bl.isValid()) { if (bl.begin().atEnd()) { heig += 17 + mx;//&&& curLine = mx = 0; continue; } for (QTextBlock::iterator it = bl.begin(); !it.atEnd(); ++it) { QTextFragment fragm = it.fragment(); int curw, curh; if (fragm.isValid() && fragm.charFormat().isImageFormat()) { curw = smiles->width() / W_CNT; curh = smiles->height() / H_CNT; processCalc(heig, mx, curLine, curw, curh); } else if (fragm.isValid()) { QString s = fragm.text(); QFontMetrics me(fragm.charFormat().font()); curh = me.lineSpacing(); for (int j = 0; j < s.size(); ++j) { curw = me.width(s[j]); processCalc(heig, mx, curLine, curw, curh); } } } heig += mx; mx = curLine = 0; } te->setStyleSheet(QString("QFrame {" "border: 2px solid #f3f2f1;" "border-radius: 4px;" "padding: 2px;}")); item->setSizeHint(QSize(0, heig + 18)); te->resize(QSize(widthTe, heig)); lwHistory->scrollToBottom(); if (mode == ReceivedMessage && !dgReadByUser) { setUnreadMessage(unreadMessage + 1); queUnreadWrote.push_back(te); te->setStyleSheet("QTextEdit { background-color: #FFFCCC; }"); } else if (mode == LoadHistory) { if (unreadMessage != 0) { queUnreadWrote.push_back(te); te->setStyleSheet("QTextEdit { background-color: #FFFCCC; }"); if (queUnreadWrote.size() > unreadMessage) { queUnreadWrote.front()->setStyleSheet("QTextEdit { background-color: #FFFFFF; }"); queUnreadWrote.pop_front(); } } if (wroteMessage != 0) { queUnreadWrote.push_back(te); te->setStyleSheet("QTextEdit { background-color: #DFFFCC; }"); if (queUnreadWrote.size() > wroteMessage) { queUnreadWrote.front()->setStyleSheet("QTextEdit { background-color: #FFFFFF; }"); queUnreadWrote.pop_front(); } } } else if (mode == SendMessage) { teMessage->setFocus(); te->setStyleSheet("QTextEdit { background-color: #DFFFCC; }"); wroteMessage++; queUnreadWrote.push_back(te); } }
QTextDocumentFragment SimpleMessageStyle::selection(QWidget *AWidget) const { StyleViewer *view = qobject_cast<StyleViewer *>(AWidget); return view!=NULL ? view->textCursor().selection() : QTextDocumentFragment(); }
void InstrumentWizard::createInstruments(Score* cs) { // // process modified partitur list // QTreeWidget* pl = partiturList; Part* part = 0; int staffIdx = 0; QTreeWidgetItem* item = 0; for (int idx = 0; (item = pl->topLevelItem(idx)); ++idx) { PartListItem* pli = (PartListItem*)item; if (pli->op != ITEM_ADD) { qDebug("bad op\n"); continue; } const InstrumentTemplate* t = ((PartListItem*)item)->it; part = new Part(cs); part->initFromInstrTemplate(t); pli->part = part; QTreeWidgetItem* ci = 0; int rstaff = 0; for (int cidx = 0; (ci = pli->child(cidx)); ++cidx) { StaffListItem* sli = (StaffListItem*)ci; Staff* staff = new Staff(cs, part, rstaff); sli->staff = staff; staff->setRstaff(rstaff); ++rstaff; staff->init(t, cidx); staff->setInitialClef(sli->clef()); if (sli->linked() && !part->staves()->isEmpty()) { Staff* linkedStaff = part->staves()->back(); linkedStaff->linkTo(staff); } part->staves()->push_back(staff); cs->staves().insert(staffIdx + rstaff, staff); } // if a staff was removed from instrument: if (part->staves()->at(0)->barLineSpan() > rstaff) part->staves()->at(0)->setBarLineSpan(rstaff); // insert part cs->insertPart(part, staffIdx); int sidx = cs->staffIdx(part); int eidx = sidx + part->nstaves(); for (Measure* m = cs->firstMeasure(); m; m = m->nextMeasure()) m->cmdAddStaves(sidx, eidx, true); staffIdx += rstaff; } // // sort staves // QList<Staff*> dst; for (int idx = 0; (item = pl->topLevelItem(idx)); ++idx) { PartListItem* pli = (PartListItem*)item; if (pli->op == ITEM_DELETE) continue; QTreeWidgetItem* ci = 0; for (int cidx = 0; (ci = item->child(cidx)); ++cidx) { StaffListItem* sli = (StaffListItem*) ci; if (sli->op == ITEM_DELETE) continue; dst.push_back(sli->staff); } } // // check for bar lines // for (int staffIdx = 0; staffIdx < cs->nstaves();) { Staff* staff = cs->staff(staffIdx); int barLineSpan = staff->barLineSpan(); if (barLineSpan == 0) staff->setBarLineSpan(1); int nstaffIdx = staffIdx + barLineSpan; for (int idx = staffIdx+1; idx < nstaffIdx; ++idx) { Staff* tStaff = cs->staff(idx); if (tStaff) tStaff->setBarLineSpan(0); } staffIdx = nstaffIdx; } // // remove instrument names if only one part // if (cs->parts().size() == 1) { Part* part = cs->parts().front(); if (part->instrList()->size() == 1) { Instrument& instrument = part->instrList()->instrument(0); instrument.setShortName(QTextDocumentFragment()); instrument.setLongName(QTextDocumentFragment()); } } cs->setLayoutAll(true); }