void TextSelection::showDocText( DocText dt ) { if( dt.type() != KraftDoc::Unknown && dt.isStandardText() ) { showHelp(i18n("This is the standard text used in new documents.")); } mTextDisplay->setText( dt.text() ); }
DocText TextEditDialog::docText() { DocText dt; dt = mOriginalText; dt.setName( mBaseWidget->mEditName->text() ); dt.setDescription( QString() ); // mBaseWidget->mEditDescription->text() ); dt.setText( mBaseWidget->mEditText->toPlainText() ); // dt.setDocType( mBaseWidget->mCbDocType->currentText() ); // dt.setTextType( DocText::stringToTextType( mBaseWidget->mCbTextType->currentText() ) ); return dt; }
void TextEditDialog::setDocText( DocText dt ) { QString name = i18n( "Template" ); if ( ! dt.name().isEmpty() ) { name = dt.name(); } mBaseWidget->mEditName->setText( name ); // mBaseWidget->mEditDescription->setText( dt.description() ); mBaseWidget->mEditText->setText( dt.text() ); mBaseWidget->mDocPartLabel->setText( dt.textTypeString() ); mBaseWidget->mDocTypeLabel->setText( dt.docType() ); mOriginalText = dt; }
void TextSelection::addNewDocText( const DocText& dt ) { slotSelectDocType( mDocType ); // update the list of available texts QModelIndexList newItems = mTemplNamesModel->match( mTemplNamesModel->index(0), Qt::DisplayRole, dt.name() ); if( newItems.size() > 0 ) { QModelIndex selected = newItems[0]; mTextNameView->selectionModel()->setCurrentIndex( selected, QItemSelectionModel::Select); } else { kDebug() << "Unable to find the new item named " << dt.name(); } emit validTemplateSelected(); }
bool OutputList::parseText(const QCString &textStr) { int count=0; QListIterator<OutputGenerator> it(m_outputs); OutputGenerator *og; for (it.toFirst();(og=it.current());++it) { if (og->isEnabled()) count++; } if (count==0) return TRUE; // no output formats enabled. DocText *root = validatingParseText(textStr); for (it.toFirst();(og=it.current());++it) { if (og->isEnabled()) og->writeDoc(root,0,0); } bool isEmpty = root->isEmpty(); delete root; return isEmpty; }
void TabDoc::DecodeHTML(const char* filename, int scheme) { // Open the file CFile htmlFile; if (htmlFile.Open(filename,CFile::modeRead) == 0) return; // Read it into memory CString htmlText; int len = (int)htmlFile.GetLength(); htmlFile.Read(htmlText.GetBuffer(len),len); htmlText.ReleaseBuffer(len); // Convert from UTF-8 to Unicode CStringW html = TextFormat::UTF8ToUnicode(htmlText); // Get the body text int body1 = html.Find(L"<body"); if (body1 == -1) return; body1 = html.Find(L">",body1); if (body1 == -1) return; int body2 = html.Find(L"</body>"); if (body2 <= body1) return; CStringW bodyHtml = html.Mid(body1+1,body2-body1-1); // Create a DocText instance for this file DocText* mainDocText = new DocText(); mainDocText->file = filename; mainDocText->colourScheme = scheme; m_docTexts.Add(mainDocText); // Reserve space for the main text len = bodyHtml.GetLength(); mainDocText->body.Preallocate(len); // Scan the text, removing markup DocText* docText = mainDocText; bool ignore = false; bool white = false; const wchar_t* p1 = bodyHtml; const wchar_t* p2 = p1+len; while (p1 < p2) { // Look for a markup element if ((*p1 == L'<') && (iswalpha(*(p1+1)) || (*(p1+1) == L'/'))) { // Check for a closing markup element bool closing = false; if (*(p1+1) == L'/') { closing = true; p1++; } // Scan for a known markup element bool found = false; int i = 0; while (!found && (i < sizeof tags / sizeof tags[0])) { if (wcsncmp(p1+1,tags[i].name,tags[i].len) == 0) found = true; if (!found) i++; } ASSERT(found); // Remove the markup if (found && tags[i].remove) { ASSERT(!closing); // Remove everything until the closing element CStringW search; search.Format(L"</%s>",tags[i].name); p1 = wcsstr(p1,search); if (p1 != NULL) p1 += search.GetLength()-1; else p1 = p2; } else { // Remove just the element while ((p1 < p2) && (*p1 != L'>')) p1++; } ASSERT(*p1 == L'>'); // Add a carriage return for appropriate markup if (found && !closing && tags[i].cr && !ignore) docText->AddToBody(L'\n'); white = false; } else if ((*p1 == L'<') && (*(p1+1) == L'!')) { // Extract metadata from comments wchar_t meta1[256], meta2[256]; if (swscanf(p1,L"<!-- SEARCH TITLE \"%[^\"]",meta1) == 1) docText->title = meta1; else if (swscanf(p1,L"<!-- SEARCH SECTION \"%[^\"]",meta1) == 1) docText->section = meta1; else if (swscanf(p1,L"<!-- SEARCH SORT \"%[^\"]",meta1) == 1) docText->sort = meta1; else if (swscanf(p1,L"<!-- START EXAMPLE \"%[^\"]\" \"%[^\"]",meta1,meta2) == 2) { docText = new DocText(); docText->file = mainDocText->file + "#" + CStringA(meta2); docText->colourScheme = mainDocText->colourScheme; docText->title = "Example " + CStringA(meta1); docText->section = mainDocText->section; docText->sort = mainDocText->sort; docText->body.Preallocate(len/2); m_docTexts.Add(docText); } else if (wcsncmp(p1,L"<!-- END EXAMPLE -->",20) == 0) docText = mainDocText; else if (wcsncmp(p1,L"<!-- START IGNORE ",18) == 0) ignore = true; else if (wcsncmp(p1,L"<!-- END IGNORE -->",19) == 0) ignore = false; p1 = wcsstr(p1,L"-->"); if (p1 != NULL) p1 += 2; else p1 = p2; } else if (*p1 == L'&') { // Scan for a known literal bool found = false; int i = 0; while (!found && (i < sizeof literals / sizeof literals[0])) { if (wcsncmp(p1+1,literals[i].name,literals[i].len) == 0) found = true; if (!found) i++; } // Replace the literal if (found) { if (!ignore) docText->AddToBody(literals[i].replace); p1 += literals[i].len; } else { ASSERT(FALSE); if (!ignore) docText->AddToBody(*p1); } white = false; } else if (iswspace(*p1)) { if (!white && !ignore) docText->AddToBody(L' '); white = true; } else { if (!ignore) docText->AddToBody(*p1); white = false; } p1++; } /* CString bodyA(docText->body); AfxMessageBox(bodyA); */ }