bool GraphicalUriArray::setValue(const QVariant & value) { QStringList list; bool success = false; if(value.type() == QVariant::String) { list = value.toString().split(m_separator); list.removeAll(QString()); m_originalValue = list; m_model->setStringList(list); success = true; } else if(value.type() == QVariant::StringList) { QStringList values = value.toStringList(); QStringList::iterator it = values.begin(); success = true; for( ; it != values.end() ; it++) { if( !it->isEmpty() ) list << *it; } m_originalValue = values; list.removeDuplicates(); m_model->setStringList(list); } return success; }
/** @short Take the initial text and mark it as a quotation */ QStringList quoteText(QStringList inputLines) { QStringList quote; for (QStringList::iterator line = inputLines.begin(); line != inputLines.end(); ++line) { if (UiUtils::signatureSeparator().match(*line).hasMatch()) { // This is the signature separator, we should not include anything below that in the quote break; } // rewrap - we need to keep the quotes at < 79 chars, yet the grow with every level if (line->length() < 79-2) { // this line is short enough, prepend quote mark and continue if (line->isEmpty() || line->at(0) == QLatin1Char('>')) line->prepend(QLatin1Char('>')); else line->prepend(QLatin1String("> ")); quote << *line; continue; } // long line -> needs to be wrapped // 1st, detect the quote depth and eventually stript the quotes from the line int quoteLevel = 0; int contentStart = 0; if (line->at(0) == QLatin1Char('>')) { quoteLevel = 1; while (quoteLevel < line->length() && line->at(quoteLevel) == QLatin1Char('>')) ++quoteLevel; contentStart = quoteLevel; if (quoteLevel < line->length() && line->at(quoteLevel) == QLatin1Char(' ')) ++contentStart; } // 2nd, build a quote string QString quotemarks; for (int i = 0; i < quoteLevel; ++i) quotemarks += QLatin1Char('>'); quotemarks += QLatin1String("> "); // 3rd, wrap the line, prepend the quotemarks to each line and add it to the quote text int space(contentStart), lastSpace(contentStart), pos(contentStart), length(0); while (pos < line->length()) { if (line->at(pos) == QLatin1Char(' ')) space = pos+1; ++length; if (length > 65-quotemarks.length() && space != lastSpace) { // wrap quote << quotemarks + line->mid(lastSpace, space - lastSpace); lastSpace = space; length = pos - space; } ++pos; } quote << quotemarks + line->mid(lastSpace); } return quote; }
QString CallTipsList::stripWhiteSpace(const QString& str) const { QString stripped = str; QStringList lines = str.split(QLatin1String("\n")); int minspace=INT_MAX; int line=0; for (QStringList::iterator it = lines.begin(); it != lines.end(); ++it, ++line) { if (it->count() > 0 && line > 0) { int space = 0; for (int i=0; i<it->count(); i++) { if ((*it)[i] == QLatin1Char('\t')) space++; else break; } if (it->count() > space) minspace = std::min<int>(minspace, space); } } // remove all leading tabs from each line if (minspace > 0 && minspace < INT_MAX) { int line=0; QStringList strippedlines; for (QStringList::iterator it = lines.begin(); it != lines.end(); ++it, ++line) { if (line == 0 && !it->isEmpty()) { strippedlines << *it; } else if (it->count() > 0 && line > 0) { strippedlines << it->mid(minspace); } } stripped = strippedlines.join(QLatin1String("\n")); } return stripped; }
QString MessageView::quoteText() const { if (const AbstractPartWidget *w = dynamic_cast<const AbstractPartWidget *>(viewer)) { QStringList quote; QStringList lines = w->quoteMe().split('\n'); for (QStringList::iterator line = lines.begin(); line != lines.end(); ++line) { if (Composer::Util::signatureSeparator().exactMatch(*line)) { // This is the signature separator, we should not include anything below that in the quote break; } // rewrap - we need to keep the quotes at < 79 chars, yet the grow with every level if (line->length() < 79-2) { // this line is short enough, prepend quote mark and continue if (line->isEmpty() || line->at(0) == '>') line->prepend(">"); else line->prepend("> "); quote << *line; continue; } // long line -> needs to be wrapped // 1st, detect the quote depth and eventually stript the quotes from the line int quoteLevel = 0; int contentStart = 0; if (line->at(0) == '>') { quoteLevel = 1; while (quoteLevel < line->length() && line->at(quoteLevel) == '>') ++quoteLevel; contentStart = quoteLevel; if (quoteLevel < line->length() && line->at(quoteLevel) == ' ') ++contentStart; } // 2nd, build a qute string QString quotemarks; for (int i = 0; i < quoteLevel; ++i) quotemarks += ">"; quotemarks += "> "; // 3rd, wrap the line, prepend the quotemarks to each line and add it to the quote text int space(contentStart), lastSpace(contentStart), pos(contentStart), length(0); while (pos < line->length()) { if (line->at(pos) == ' ') space = pos+1; ++length; if (length > 65-quotemarks.length() && space != lastSpace) { // wrap quote << quotemarks + line->mid(lastSpace, space - lastSpace); lastSpace = space; length = pos - space; } ++pos; } quote << quotemarks + line->mid(lastSpace); } const Imap::Message::Envelope &e = message.data(Imap::Mailbox::RoleMessageEnvelope).value<Imap::Message::Envelope>(); QString sender; if (!e.from.isEmpty()) sender = e.from[0].prettyName(Imap::Message::MailAddress::FORMAT_JUST_NAME); if (e.from.isEmpty()) sender = tr("you"); // One extra newline at the end of the quoted text to separate the response quote << QString(); return tr("On %1, %2 wrote:\n").arg(e.date.toLocalTime().toString(Qt::SystemLocaleLongDate)).arg(sender) + quote.join("\n"); } return QString(); }
bool TWScript::doParseHeader(const QString& beginComment, const QString& endComment, const QString& Comment, bool skipEmpty /* = true */) { QFile file(m_Filename); QStringList lines; QString line; bool codecChanged = true; bool success = false; QTextCodec* codec; if (!file.exists() || !file.open(QIODevice::ReadOnly)) return false; m_Codec = QTextCodec::codecForName("UTF-8"); if (!m_Codec) m_Codec = QTextCodec::codecForLocale(); while (codecChanged) { codec = m_Codec; file.seek(0); lines = codec->toUnicode(file.readAll()).split(QRegExp("\r\n|[\n\r]")); // skip any empty lines if (skipEmpty) { while (!lines.isEmpty() && lines.first().isEmpty()) lines.removeFirst(); } if (lines.isEmpty()) break; // is this a valid TW script? line = lines.takeFirst(); if (!beginComment.isEmpty()) { if (!line.startsWith(beginComment)) break; line = line.mid(beginComment.size()).trimmed(); } else if (!Comment.isEmpty()) { if (!line.startsWith(Comment)) break; line = line.mid(Comment.size()).trimmed(); } if (!line.startsWith("TeXworksScript")) break; // scan to find the extent of the header lines QStringList::iterator i; for (i = lines.begin(); i != lines.end(); ++i) { // have we reached the end? if (skipEmpty && i->isEmpty()) { i = lines.erase(i); --i; continue; } if (!endComment.isEmpty()) { if (i->startsWith(endComment)) break; } if (!i->startsWith(Comment)) break; *i = i->mid(Comment.size()).trimmed(); } lines.erase(i, lines.end()); codecChanged = false; switch (doParseHeader(lines)) { case ParseHeader_OK: success = true; break; case ParseHeader_Failed: success = false; break; case ParseHeader_CodecChanged: codecChanged = true; break; } } file.close(); return success; }
void ExportGroupTemplateDialog::onOkClicked() { QString dirPath = _imp->fileEdit->text(); if ( !dirPath.isEmpty() && ( dirPath[dirPath.size() - 1] == QLatin1Char('/') ) ) { dirPath.remove(dirPath.size() - 1, 1); } QDir d(dirPath); if ( !d.exists() ) { Dialogs::errorDialog( tr("Error").toStdString(), tr("You must specify a directory to save the script").toStdString() ); return; } QString pluginLabel = _imp->labelEdit->text(); if ( pluginLabel.isEmpty() ) { Dialogs::errorDialog( tr("Error").toStdString(), tr("You must specify a label to name the script").toStdString() ); return; } else { pluginLabel = QString::fromUtf8( NATRON_PYTHON_NAMESPACE::makeNameScriptFriendly( pluginLabel.toStdString() ).c_str() ); } QString pluginID = _imp->idEdit->text(); if ( pluginID.isEmpty() ) { Dialogs::errorDialog( tr("Error").toStdString(), tr("You must specify a unique ID to identify the script").toStdString() ); return; } QString iconPath = _imp->iconPath->text(); QString grouping = _imp->groupingEdit->text(); QString description = _imp->descriptionEdit->getText(); QString filePath = d.absolutePath() + QLatin1Char('/') + pluginLabel + QString::fromUtf8(".py"); QStringList filters; filters.push_back( QString( pluginLabel + QString::fromUtf8(".py") ) ); if ( !d.entryList(filters, QDir::Files | QDir::NoDotAndDotDot).isEmpty() ) { StandardButtonEnum rep = Dialogs::questionDialog(tr("Existing plug-in").toStdString(), tr("A group plug-in with the same name already exists " "would you like to " "override it?").toStdString(), false); if (rep == eStandardButtonNo) { return; } } bool foundInPath = false; QStringList groupSearchPath = appPTR->getAllNonOFXPluginsPaths(); for (QStringList::iterator it = groupSearchPath.begin(); it != groupSearchPath.end(); ++it) { if ( !it->isEmpty() && ( it->at(it->size() - 1) == QLatin1Char('/') ) ) { it->remove(it->size() - 1, 1); } if (*it == dirPath) { foundInPath = true; } } if (!foundInPath) { QString message = dirPath + tr(" does not exist in the group plug-in search path, would you like to add it?"); StandardButtonEnum rep = Dialogs::questionDialog(tr("Plug-in path").toStdString(), message.toStdString(), false); if (rep == eStandardButtonYes) { appPTR->getCurrentSettings()->appendPythonGroupsPath( dirPath.toStdString() ); } } QFile file(filePath); if ( !file.open(QIODevice::ReadWrite | QIODevice::Truncate) ) { Dialogs::errorDialog( tr("Error").toStdString(), QString(tr("Cannot open ") + filePath).toStdString() ); return; } QTextStream ts(&file); QString content; _imp->group->exportGroupToPython(pluginID, pluginLabel, description, iconPath, grouping, content); ts << content; accept(); } // ExportGroupTemplateDialog::onOkClicked