std::string mkContractInfoDecl(std::string input) { Node n = parseSerpent(input); std::string s = mkFullExtern(n); std::string c = compileLLL(rewrite(n)); return "{\n" " \"code\": \"0x" + binToHex(c) + "\",\n" " \"info\": {\n" " \"abiDefinition\": " + indentLines(indentLines(s)).substr(8) + "\n" " },\n" " \"language\": \"serpent\",\n" " \"languageVersion\": \"2\",\n" " \"source\": \""+input+"\",\n" " \"userDoc\": {}\n" "}"; }
// Pretty-prints a lisp AST std::string printAST(Node ast, bool printMetadata) { if (ast.type == TOKEN) return ast.val; std::string o = "("; if (printMetadata) { o += ast.metadata.file + " "; o += unsignedToDecimal(ast.metadata.ln) + " "; o += unsignedToDecimal(ast.metadata.ch) + ": "; } o += ast.val; std::vector<std::string> subs; for (unsigned i = 0; i < ast.args.size(); i++) { subs.push_back(printAST(ast.args[i], printMetadata)); } unsigned k = 0; std::string out = " "; // As many arguments as possible go on the same line as the function, // except when seq is used while (k < subs.size() && o != "(seq") { if (subs[k].find("\n") != std::string::npos || (out + subs[k]).length() >= 80) break; out += subs[k] + " "; k += 1; } // All remaining arguments go on their own lines if (k < subs.size()) { o += out + "\n"; std::vector<std::string> subsSliceK; for (unsigned i = k; i < subs.size(); i++) subsSliceK.push_back(subs[i]); o += indentLines(joinLines(subsSliceK)); o += "\n)"; } else { o += out.substr(0, out.size() - 1) + ")"; } return o; }
void TextRoom::newFile() { if (maybeSave()) { textEdit->document()->blockSignals(true); textEdit->clear(); scratchDialog->ui.scratchTextEdit->clear(); textEdit->document()->blockSignals(false); setCurrentFile(""); textEdit->setUndoRedoEnabled(true); textEdit->document()->setModified(false); textEdit->verticalScrollBar()->setValue(0); textEdit->setFont(defaultFont); indentLines(indentValue); wordCountChanged = true; } }
void TextRoom::readSettings() { QFile file( settings->fileName() ); if ( !file.exists() ) { toggleFullScreen(); writeSettings(); return; } if ( settings->value("WindowState/ShowFullScreen", true).toBool() ) { if ( !isFullScreen() ) showFullScreen(); } else { showNormal(); QPoint pos = settings->value("WindowState/TopLeftPosition", QPoint(100, 100)).toPoint(); QSize size = settings->value("WindowState/WindowSize", QSize(300, 200)).toSize(); resize(size); move(pos); } QString foregroundColor = settings->value("Colors/FontColor", "#808080" ).toString(); QString back = settings->value("Colors/Background", "#000000" ).toString(); QString status_c = settings->value("Colors/StatusColor", "#202020" ).toString(); // oxygen does weird stuff with the background QApplication::setStyle("plastique"); QFont font; font.fromString( settings->value("StatusFont").toString()); defaultFont.fromString( settings->value("DefaultFont").toString() ); statsLabel->setFont( font ); deadlineLabel->setFont ( font ) ; curDir = settings->value("RecentFiles/LastDir", curDir).toString(); lastSearch = settings->value("TextSearch/LastPhrase", lastSearch).toString(); QDateTime today = QDateTime::currentDateTime(); QString todaytext = today.toString("yyyyMMdd"); // Read all the settings-> isAutoSave = settings->value("AutoSave", false).toBool(); isFlowMode = settings->value("FlowMode", false).toBool(); isSound = settings->value("Sound", true).toBool(); isPageCount = settings->value("PageCount", false).toBool(); isCharacterCount = settings->value("CharacterCount", false).toBool(); deadlinetext = settings->value("Deadline", todaytext).toString(); deadline = QDate::fromString(deadlinetext, "yyyyMMdd"); wordcount = settings->value("WordCount", 0).toInt(); editorWidth = settings->value("EditorWidth", 800).toInt(); editorTopSpace = settings->value("EditorTopSpace", 0).toInt(); editorBottomSpace = settings->value("EditorBottomSpace", 0).toInt(); alarm = settings->value("TimedWriting", 0).toInt(); pageCountFormula = settings->value("PageCountFormula", 250).toInt(); dateFormat = settings->value("DateFormat", "d MMMM yyyy dddd").toString(); timeFormatBool = settings->value("24-Hour", true ).toBool(); defaultDir = settings->value("DefaultDirectory", QDir::homePath()).toString(); backgroundImage = settings->value("BackgroundImage", "").toString(); isPlainText = settings->value("PlainText", false).toBool(); language = settings->value("LanguageName", "en_US").toString(); indentValue = settings->value("Indent", 50).toInt(); paragraphSpacing = settings->value("ParagraphSpacing", 20).toInt(); tabStopWidth = settings->value("TabStopWidth", 80).toInt(); cursorWidth = settings->value("CursorWidth", 3).toInt(); textEdit->setLayoutDirection(Qt::LayoutDirectionAuto); textEdit->setTabStopWidth(tabStopWidth); textEdit->setCursorWidth(cursorWidth); loadStyleSheet(foregroundColor, back, status_c); textEdit->setMaximumWidth(editorWidth); textEdit->document()->blockSignals(true); bool modified = textEdit->document()->isModified(); if ( isPlainText ) { QString text( textEdit->document()->toPlainText() ); textEdit->document()->clear(); textEdit->insertPlainText(text); textEdit->setAcceptRichText( false ); } else { textEdit->setAcceptRichText( true ); } indentLines(indentValue); setWindowModified(modified); textEdit->document()->setModified(modified); textEdit->document()->blockSignals(false); if ( timeFormatBool ) { timeFormat = "h:mm"; } else { timeFormat = "h:mm AP"; } horizontalSlider->setVisible( settings->value("ScrollBar", true).toBool() ); isScrollBarVisible = horizontalSlider->isVisible(); vPositionChanged(); topSpacer->changeSize(20, editorTopSpace, QSizePolicy::Maximum, QSizePolicy::Maximum); bottomSpacer->changeSize(20, editorBottomSpace, QSizePolicy::Maximum, QSizePolicy::Maximum); timeOut = alarm * 60000; if (alarm != 0) { QTimer::singleShot(timeOut, this, SLOT(alarmTime())); } if ( (optOpenLastFile = settings->value("RecentFiles/OpenLastFile", true).toBool()) ) { curFile = settings->value("RecentFiles/LastFile", curFile).toString(); if ( (isSaveCursor = settings->value("RecentFiles/SavePosition", true).toBool() )) cPosition = settings->value("RecentFiles/AtPosition", cPosition).toInt(); } wordCountChanged = true; getFileStatus(); sCursor(); }
void TextRoom::loadFile(const QString &fileName) { // Loads the file. QApplication::setOverrideCursor(Qt::WaitCursor); QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, qApp->applicationName(), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); newFile(); return; } else if (fileName.endsWith("odt")) { QMessageBox::warning(this, qApp->applicationName(), tr("Cannot read odt files.")); newFile(); return; } QByteArray data = file.readAll(); QTextCodec *codec = QTextCodec::codecForName("UTF-8"); textEdit->document()->blockSignals(true); textEdit->setUndoRedoEnabled(false); textEdit->setPlainText(""); scratchDialog->ui.scratchTextEdit->setPlainText(""); QString strall = codec->toUnicode(data); QStringList strlist = strall.split("\n<split>\n", QString::SkipEmptyParts); if (fileName.endsWith("txr") && strlist.length() > 1) { QString strscratch = strlist.at(0); QString strdoc = strlist.at(1); textEdit->append(strdoc); scratchDialog->ui.scratchTextEdit->append(strscratch); } else { textEdit->append(strall); } if (fileName.endsWith("txt")) { textEdit->setFont(defaultFont); } QString text = textEdit->document()->toPlainText(); textEdit->moveCursor(QTextCursor::Start); parasold = textEdit->document()->blockCount(); indentLines(indentValue); setCurrentFile(fileName); textEdit->setUndoRedoEnabled(true); textEdit->document()->blockSignals(false); vPositionChanged(); wordCountChanged = true; getFileStatus(); QApplication::restoreOverrideCursor(); }