/*---------------------------------------------------------------------------------------------- Write the given FontInfo string text property value in readable XML format. @param pstrm Pointer to an IStream for output. @param bstrVal ----------------------------------------------------------------------------------------------*/ void FwXml::WriteBulNumFontInfo(IStream * pstrm, BSTR bstrVal, int cchIndent) { AssertPtr(pstrm); Assert(cchIndent >= 0); int cchProps = ::SysStringLen(bstrVal); if (!cchProps) return; Vector<char> vchIndent; vchIndent.Resize(cchIndent + 1); memset(vchIndent.Begin(), ' ', cchIndent); const OLECHAR * pchProps = bstrVal; const OLECHAR * pchPropsLim = pchProps + cchProps; FormatToStream(pstrm, "%s<BulNumFontInfo", vchIndent.Begin()); StrAnsi staItalic; StrAnsi staBold; StrAnsi staSuperscript; StrAnsi staUnderline; StrAnsi staFontsize; StrAnsi staOffset; StrAnsi staForecolor; StrAnsi staBackcolor; StrAnsi staUndercolor; StrAnsi staXXX; int tpt; while (pchProps < pchPropsLim) { tpt = *pchProps++; if (tpt == ktptFontFamily) break; int nVal = *pchProps + ((*(pchProps + 1)) << 16); pchProps += 2; switch (tpt) { case ktptItalic: staItalic.Format(" italic=\"%s\"", ToggleValueName((byte)nVal)); break; case ktptBold: staBold.Format(" bold=\"%s\"", ToggleValueName((byte)nVal)); break; case ktptSuperscript: staSuperscript.Format(" superscript=\"%s\"", SuperscriptValName((byte)nVal)); break; case ktptUnderline: staUnderline.Format(" underline=\"%s\"", UnderlineTypeName((byte)nVal)); break; case ktptFontSize: staFontsize.Format(" fontsize=\"%dmpt\"", nVal); break; case ktptOffset: staOffset.Format(" offset=\"%dmpt\"", nVal); break; case ktptForeColor: staForecolor.Format(" forecolor=\"%s\"", ColorName(nVal)); break; case ktptBackColor: staBackcolor.Format(" backcolor=\"%s\"", ColorName(nVal)); break; case ktptUnderColor: staUndercolor.Format(" undercolor=\"%s\"", ColorName(nVal)); break; default: staXXX.FormatAppend(" prop_%u=\"%d\"", tpt, nVal); break; } } ULONG cb; // Write the integer valued properties in alphabetical order. if (staBackcolor.Length()) pstrm->Write(staBackcolor.Chars(), staBackcolor.Length(), &cb); if (staBold.Length()) pstrm->Write(staBold.Chars(), staBold.Length(), &cb); if (staFontsize.Length()) pstrm->Write(staFontsize.Chars(), staFontsize.Length(), &cb); if (staForecolor.Length()) pstrm->Write(staForecolor.Chars(), staForecolor.Length(), &cb); if (staItalic.Length()) pstrm->Write(staItalic.Chars(), staItalic.Length(), &cb); if (staOffset.Length()) pstrm->Write(staOffset.Chars(), staOffset.Length(), &cb); if (staSuperscript.Length()) pstrm->Write(staSuperscript.Chars(), staSuperscript.Length(), &cb); if (staUndercolor.Length()) pstrm->Write(staUndercolor.Chars(), staUndercolor.Length(), &cb); if (staUnderline.Length()) pstrm->Write(staUnderline.Chars(), staUnderline.Length(), &cb); if (staXXX.Length()) pstrm->Write(staXXX.Chars(), staXXX.Length(), &cb); // Write the string valued property (if it exists). if (tpt == ktptFontFamily && pchProps < pchPropsLim) { FormatToStream(pstrm, " fontFamily=\""); WriteXmlUnicode(pstrm, pchProps, pchPropsLim - pchProps); FormatToStream(pstrm, "\""); } FormatToStream(pstrm, "/>%n"); }
EditNoteForm::EditNoteForm(QWidget *parent) : QMainWindow(parent), ui(new Ui::CreateNoteForm), _textColorCombobox(NULL), _allowDatetimeEditing(false) { ui->setupUi(this); ui->te_NoteHtmlText->setUndoRedoEnabled(true); _cancelShortcut .setShortcut(QKeySequence(Qt::SHIFT + Qt::Key_Escape)); _okEnterShortcut .setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Enter)); _okReturnShortcut .setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return)); _okAndNewEnterShortcut .setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Return)); _okAndNewReturnShortcut.setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Enter)); connect(&_okEnterShortcut, SIGNAL(activated()), this, SLOT(finish())); connect(&_okReturnShortcut, SIGNAL(activated()), this, SLOT(finish())); connect(&_cancelShortcut, SIGNAL(activated()), this, SLOT(cancel())); _colorMap.insert(0, ColorName("black", QColor(0,0,0))); _colorMap.insert(1, ColorName("blue", QColor(0,0,255))); _colorMap.insert(2, ColorName("darkgreen", QColor(0,127,0))); _colorMap.insert(3, ColorName("darkgrey", QColor(127,127,127))); _colorMap.insert(4, ColorName("green", QColor(0,255,0))); _colorMap.insert(5, ColorName("lightblue", QColor(0,255,255))); _colorMap.insert(6, ColorName("magenta", QColor(255,0,255))); _colorMap.insert(7, ColorName("red", QColor(255,0,0))); _colorMap.insert(8, ColorName("white", QColor(255,255,255))); _colorMap.insert(9, ColorName("yellow", QColor(255,255,0))); _colorMap.insert(10, ColorName("orange", QColor(255,127,0))); _textColorCombobox = new QComboBox(this); foreach(int key, _colorMap.keys()) { ColorName cname = _colorMap[key]; QString name = cname.first; QString capedName = name.at(0).toUpper() + name.mid(1); _textColorCombobox->addItem(QIcon(":icons/resources/edit-color-" + name + ".ico"), capedName, name); } ui->editToolBar->addWidget(_textColorCombobox); QObject::connect(_textColorCombobox, SIGNAL(activated(int)), this, SLOT(setForegroundColor(int))); _tagHandler.setQuery(tagBatch()); _tagHandler.setModel(&_tagModel); _tagHandler.setTableView(ui->tv_Tags); _tagModel.setTagColumnIndex(_tagHandler.fieldColumnIndex("info_tag")); _tagModel.setTagSelectable("All", false); _tagModel.setTagSelectable("Untagged", false); }
/*---------------------------------------------------------------------------------------------- Write an integer-valued text property in XML format. @param pstrm Pointer to an IStream for output. @param tpt @param nVar @param nVal ----------------------------------------------------------------------------------------------*/ void FwXml::WriteIntTextProp(IStream * pstrm, ILgWritingSystemFactory * pwsf, int tpt, int nVar, int nVal) { AssertPtr(pstrm); AssertPtr(pwsf); switch (tpt) { case ktptBackColor: FormatToStream(pstrm, " backcolor=\"%s\"", ColorName(nVal)); break; case ktptBold: FormatToStream(pstrm, " bold=\"%s\"", ToggleValueName((byte)nVal)); break; case ktptWs: if (nVal == 0) { Assert(nVar == 0); } else { SmartBstr sbstrWs; CheckHr(pwsf->GetStrFromWs(nVal, &sbstrWs)); if (!sbstrWs.Length()) ThrowInternalError(E_INVALIDARG, "Writing system invalid for <Run ws>"); FormatToStream(pstrm, " ws=\"", nVal); WriteXmlUnicode(pstrm, sbstrWs.Chars(), sbstrWs.Length()); FormatToStream(pstrm, "\"", nVal); } break; case ktptBaseWs: if (nVal == 0) { Assert(nVar == 0); } else { SmartBstr sbstrWs; CheckHr(pwsf->GetStrFromWs(nVal, &sbstrWs)); if (!sbstrWs.Length()) ThrowInternalError(E_INVALIDARG, "Writing system invalid for <Run wsBase>"); FormatToStream(pstrm, " wsBase=\"", nVal); WriteXmlUnicode(pstrm, sbstrWs.Chars(), sbstrWs.Length()); FormatToStream(pstrm, "\"", nVal); } break; case ktptFontSize: FormatToStream(pstrm, " fontsize=\"%d\"", nVal); if (nVar != ktpvDefault) FormatToStream(pstrm, " fontsizeUnit=\"%s\"", PropVarName(nVar)); break; case ktptForeColor: FormatToStream(pstrm, " forecolor=\"%s\"", ColorName(nVal)); break; case ktptItalic: FormatToStream(pstrm, " italic=\"%s\"", ToggleValueName((byte)nVal)); break; case ktptOffset: FormatToStream(pstrm, " offset=\"%d\"", nVal); FormatToStream(pstrm, " offsetUnit=\"%s\"", PropVarName(nVar)); break; case ktptSuperscript: FormatToStream(pstrm, " superscript=\"%s\"", SuperscriptValName((byte)nVal)); break; case ktptUnderColor: FormatToStream(pstrm, " undercolor=\"%s\"", ColorName(nVal)); break; case ktptUnderline: FormatToStream(pstrm, " underline=\"%s\"", UnderlineTypeName((byte)nVal)); break; case ktptSpellCheck: FormatToStream(pstrm, " spellcheck=\"%s\"", SpellingModeName((byte)nVal)); break; // Paragraph-level properties: case ktptAlign: FormatToStream(pstrm, " align=\"%s\"", AlignmentTypeName((byte)nVal)); break; case ktptFirstIndent: FormatToStream(pstrm, " firstIndent=\"%d\"", nVal); break; case ktptLeadingIndent: FormatToStream(pstrm, " leadingIndent=\"%d\"", nVal); break; case ktptTrailingIndent: FormatToStream(pstrm, " trailingIndent=\"%d\"", nVal); break; case ktptSpaceBefore: FormatToStream(pstrm, " spaceBefore=\"%d\"", nVal); break; case ktptSpaceAfter: FormatToStream(pstrm, " spaceAfter=\"%d\"", nVal); break; case ktptTabDef: FormatToStream(pstrm, " tabDef=\"%d\"", nVal); break; case ktptLineHeight: FormatToStream(pstrm, " lineHeight=\"%d\"", abs(nVal)); FormatToStream(pstrm, " lineHeightUnit=\"%s\"", PropVarName(nVar)); Assert(nVal >= 0 || nVar == ktpvMilliPoint); if (nVar == ktpvMilliPoint) { // negative means "exact" internally. See FWC-20. FormatToStream(pstrm, " lineHeightType=\"%s\"", nVal < 0 ? "exact" : "atLeast"); } break; case ktptParaColor: FormatToStream(pstrm, " paracolor=\"%s\"", ColorName(nVal)); break; // Properties from the views subsystem: case ktptRightToLeft: FormatToStream(pstrm, " rightToLeft=\"%d\"", nVal); break; case ktptPadLeading: FormatToStream(pstrm, " padLeading=\"%d\"", nVal); break; case ktptPadTrailing: FormatToStream(pstrm, " padTrailing=\"%d\"", nVal); break; // Not the other margins: they are duplicated by FirstIndent etc. case ktptMarginTop: FormatToStream(pstrm, " MarginTop=\"%d\"", nVal); break; case ktptPadTop: FormatToStream(pstrm, " padTop=\"%d\"", nVal); break; case ktptPadBottom: FormatToStream(pstrm, " padBottom=\"%d\"", nVal); break; case ktptBorderTop: FormatToStream(pstrm, " borderTop=\"%d\"", nVal); break; case ktptBorderBottom: FormatToStream(pstrm, " borderBottom=\"%d\"", nVal); break; case ktptBorderLeading: FormatToStream(pstrm, " borderLeading=\"%d\"", nVal); break; case ktptBorderTrailing: FormatToStream(pstrm, " borderTrailing=\"%d\"", nVal); break; case ktptBorderColor: FormatToStream(pstrm, " borderColor=\"%s\"", ColorName(nVal)); break; case ktptBulNumScheme: FormatToStream(pstrm, " bulNumScheme=\"%d\"", nVal); break; case ktptBulNumStartAt: FormatToStream(pstrm, " bulNumStartAt=\"%d\"", nVal == INT_MIN ? 0 : nVal); break; case ktptDirectionDepth: FormatToStream(pstrm, " directionDepth=\"%d\"", nVal); break; case ktptKeepWithNext: FormatToStream(pstrm, " keepWithNext=\"%d\"", nVal); break; case ktptKeepTogether: FormatToStream(pstrm, " keepTogether=\"%d\"", nVal); break; case ktptHyphenate: FormatToStream(pstrm, " hyphenate=\"%d\"", nVal); break; case ktptWidowOrphanControl: FormatToStream(pstrm, " widowOrphan=\"%d\"", nVal); break; case ktptMaxLines: FormatToStream(pstrm, " maxLines=\"%d\"", nVal); break; case ktptCellBorderWidth: FormatToStream(pstrm, " cellBorderWidth=\"%d\"", nVal); break; case ktptCellSpacing: FormatToStream(pstrm, " cellSpacing=\"%d\"", nVal); break; case ktptCellPadding: FormatToStream(pstrm, " cellPadding=\"%d\"", nVal); break; case ktptEditable: FormatToStream(pstrm, " editable=\"%s\"", EditableName(nVal)); break; case ktptSetRowDefaults: FormatToStream(pstrm, " setRowDefaults=\"%d\"", nVal); break; case ktptRelLineHeight: FormatToStream(pstrm, " relLineHeight=\"%d\"", nVal); break; case ktptTableRule: // Ignore this view-only property. break; default: break; } }