本文整理汇总了C++中Cell::addRule方法的典型用法代码示例。如果您正苦于以下问题:C++ Cell::addRule方法的具体用法?C++ Cell::addRule怎么用?C++ Cell::addRule使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cell
的用法示例。
在下文中一共展示了Cell::addRule方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: traverseInputCell
/*!
* \author Anders Fernstrom
* \date 2005-11-30
* \date 2006-01-17 (update)
*
* \brief Parse an input cell in the xml file.
*
* 2005-12-01 AF, Implement function
* 2006-01-17 AF, Added support for closed value in the inputcell
*
* \param parent The parent cell to the input cell
* \param element The current QDomElement being parsed
*/
void XMLParser::traverseInputCell( Cell *parent, QDomElement &element )
{
// Get the style value
QString style = element.attribute( XML_STYLE, "Input" );
// create inputcell with the saved style
Cell *inputcell = factory_->createCell( style, parent );
// go through all children in input cell/element
QString text;
QDomNode node = element.firstChild();
while( !node.isNull() )
{
QDomElement e = node.toElement();
if( !e.isNull() )
{
if( e.tagName() == XML_INPUTPART )
{
text = e.text();
inputcell->setText( text );
}
else if( e.tagName() == XML_OUTPUTPART )
{
InputCell *iCell = dynamic_cast<InputCell*>(inputcell);
iCell->setTextOutput( e.text() );
}
else if( e.tagName() == XML_RULE )
{
inputcell->addRule(
new Rule( e.attribute( XML_NAME, "" ), e.text() ));
}
else if( e.tagName() == XML_IMAGE )
{
addImage( inputcell, e );
}
else
{
string msg = "Unknown tagname " + e.tagName().toStdString() + ", in input cell";
throw runtime_error( msg.c_str() );
}
}
node = node.nextSibling();
}
// set style, before set text, so all rules are applied to the style
inputcell->setStyle( *inputcell->style() );
inputcell->setText( text );
// 2006-01-17 AF, check if the inputcell is open or closed
QString closed = element.attribute( XML_CLOSED, XML_FALSE );
if( closed == XML_TRUE )
inputcell->setClosed( true );
else if( closed == XML_FALSE )
inputcell->setClosed( false );
else
throw runtime_error( "Unknown closed value in inputcell" );
parent->addChild( inputcell );
}
示例2: traverseGraphCell
void XMLParser::traverseGraphCell( Cell *parent, QDomElement &element )
{
// Get the style value
QString style = element.attribute( XML_STYLE, "Graph" );
// create inputcell with the saved style
Cell *graphcell = factory_->createCell( style, parent );
graphcell->setStyle(QString("Input"));
// graphcell->setStyle(style);
// go through all children in input cell/element
QString text;
QDomNode node = element.firstChild();
while( !node.isNull() )
{
QDomElement e = node.toElement();
if( !e.isNull() )
{
if( e.tagName() == XML_INPUTPART )
{
text = e.text();
GraphCell *gCell = dynamic_cast<GraphCell*>(graphcell);
gCell->setText(text);
}
else if( e.tagName() == XML_OUTPUTPART )
{
GraphCell *iCell = dynamic_cast<GraphCell*>(graphcell);
iCell->setTextOutput( e.text() );
}
else if( e.tagName() == XML_IMAGE )
{
addImage( graphcell, e );
}
else if( e.tagName() == XML_RULE )
{
graphcell->addRule(
new Rule( e.attribute( XML_NAME, "" ), e.text() ));
}
else if( e.tagName() == XML_GRAPHCELL_DATA ) {}
else if( e.tagName() == XML_GRAPHCELL_GRAPH ) {}
else if( e.tagName() == XML_GRAPHCELL_SHAPE ) {}
else if( e.tagName() == XML_GRAPHCELL_OMCPLOT )
{
GraphCell *gCell = dynamic_cast<GraphCell*>(graphcell);
// read attributes and set the plotwindow values
gCell->mpPlotWindow->setTitle(e.attribute(XML_GRAPHCELL_TITLE));
gCell->mpPlotWindow->setGrid(e.attribute(XML_GRAPHCELL_GRID));
int type = e.attribute(XML_GRAPHCELL_PLOTTYPE).toInt();
if (type == 1)
gCell->mpPlotWindow->setPlotType(PlotWindow::PLOTALL);
else if (type == 2)
gCell->mpPlotWindow->setPlotType(PlotWindow::PLOTPARAMETRIC);
else
gCell->mpPlotWindow->setPlotType(PlotWindow::PLOT);
gCell->mpPlotWindow->setLogX((e.attribute(XML_GRAPHCELL_LOGX) == XML_TRUE) ? true : false);
gCell->mpPlotWindow->setLogY((e.attribute(XML_GRAPHCELL_LOGY) == XML_TRUE) ? true : false);
gCell->mpPlotWindow->setXRange(e.attribute(XML_GRAPHCELL_XRANGE_MIN).toDouble(), e.attribute(XML_GRAPHCELL_XRANGE_MAX).toDouble());
gCell->mpPlotWindow->setYRange(e.attribute(XML_GRAPHCELL_YRANGE_MIN).toDouble(), e.attribute(XML_GRAPHCELL_YRANGE_MAX).toDouble());
gCell->mpPlotWindow->setXLabel(e.attribute(XML_GRAPHCELL_XLABEL));
gCell->mpPlotWindow->setYLabel(e.attribute(XML_GRAPHCELL_YLABEL));
gCell->mpPlotWindow->setCurveWidth(e.attribute(XML_GRAPHCELL_CURVE_WIDTH).toDouble());
gCell->mpPlotWindow->setCurveStyle(e.attribute(XML_GRAPHCELL_CURVE_STYLE).toDouble());
gCell->mpPlotWindow->setLegendPosition(e.attribute(XML_GRAPHCELL_LEGENDPOSITION));
gCell->mpPlotWindow->setFooter(e.attribute(XML_GRAPHCELL_FOOTER));
gCell->mpPlotWindow->setAutoScale((e.attribute(XML_GRAPHCELL_AUTOSCALE) == XML_TRUE) ? true : false);
// read curves
for (QDomNode n = e.firstChild(); !n.isNull(); n = n.nextSibling())
{
QDomElement curveElement = n.toElement();
if (curveElement.tagName() == XML_GRAPHCELL_CURVE)
{
PlotCurve *pPlotCurve = new PlotCurve("", curveElement.attribute(XML_GRAPHCELL_TITLE), "", gCell->mpPlotWindow->getPlot());
// read the curve data
if (curveElement.hasAttribute(XML_GRAPHCELL_XDATA) && curveElement.hasAttribute(XML_GRAPHCELL_YDATA))
{
QByteArray xByteArray = QByteArray::fromBase64(curveElement.attribute(XML_GRAPHCELL_XDATA).toStdString().c_str());
QDataStream xInStream(xByteArray);
while (!xInStream.atEnd())
{
double d;
xInStream >> d;
pPlotCurve->addXAxisValue(d);
}
QByteArray yByteArray = QByteArray::fromBase64(curveElement.attribute(XML_GRAPHCELL_YDATA).toStdString().c_str());
QDataStream yInStream(yByteArray);
while (!yInStream.atEnd())
{
double d;
yInStream >> d;
pPlotCurve->addYAxisValue(d);
}
// set the curve data
pPlotCurve->setData(pPlotCurve->getXAxisVector(), pPlotCurve->getYAxisVector(), pPlotCurve->getSize());
}
gCell->mpPlotWindow->getPlot()->addPlotCurve(pPlotCurve);
pPlotCurve->attach(gCell->mpPlotWindow->getPlot());
// read the curve attributes
//.........这里部分代码省略.........
示例3: traverseTextCell
/*!
* \author Anders Fernstrom
* \date 2005-11-30
* \date 2005-12-01 (update)
*
* \brief Parse a text cell in the xml file.
*
* 2005-12-01 AF, Implement function
*
* \param parent The parent cell to the text cell
* \param element The current QDomElement being parsed
*/
void XMLParser::traverseTextCell( Cell *parent, QDomElement &element )
{
// Get the style value
QString style = element.attribute( XML_STYLE, "Text" );
// create textcell with the saved style
Cell *textcell = factory_->createCell( style, parent );
// go through all children in text cell/element
QDomNode node = element.firstChild();
while( !node.isNull() )
{
QDomElement e = node.toElement();
if( !e.isNull() )
{
if( e.tagName() == XML_TEXT )
{
// adrpo --> add URL conversion because Qt 4.4.2 doesn't accept \ in the URL!
QString text = e.text();
// replace all href="...\..." with href=".../..."
QString pattern("(href[^=]*=[^\"]*\"[^\"\\\\]*)\\\\([^\"]*\")");
QRegExp rx(pattern);
rx.setCaseSensitivity(Qt::CaseInsensitive);
rx.setMinimal(true);
rx.setPatternSyntax(QRegExp::RegExp);
if (!rx.isValid())
{
fprintf(stderr, "Invalid QRegExp(%s)\n", rx.pattern().toStdString().c_str());
}
int done = rx.indexIn(text);
if (done > -1)
{
while (done > -1)
{
// int numX = rx.numCaptures(); QString s1 = rx.cap(1),s2 = rx.cap(2);
// cout << numX << " " << s1.toStdString() << "-" << s2.toStdString() << endl;
text = text.replace(rx, rx.cap(1) + QString::fromAscii("/") + rx.cap(2));
done = rx.indexIn(text);
}
textcell->setTextHtml( text );
// fprintf(stderr, "str->%s %d\n", text.toStdString().c_str());
}
else // we haven't found any "\"
{
textcell->setTextHtml( text );
}
}
else if( e.tagName() == XML_RULE )
{
textcell->addRule(
new Rule( e.attribute( XML_NAME, "" ), e.text() ));
}
else if( e.tagName() == XML_IMAGE )
{
addImage( textcell, e );
}
else
{
string msg = "Unknown tagname " + e.tagName().toStdString() + ", in text cell";
throw runtime_error( msg.c_str() );
}
}
node = node.nextSibling();
}
// set style, before set text, so all rules are applied to the style
QString html = textcell->textHtml();
textcell->setStyle( *textcell->style() );
textcell->setTextHtml( html );
parent->addChild( textcell );
}
示例4: pasteCell
// 2006-01-16 AF, move this code to a seperated function
// 2006-09-04 AF, redid entire function, so groupcells are created, have there
// children added and THEN add to the documnet
void PasteCellsCommand::pasteCell( Cell *cell, CellGroup *groupcell )
{
// get cursor, factory and cell style
CellCursor *cursor = document()->getCursor();
Factory *factory = document()->cellFactory();
CellStyle style = *cell->style();
// set focus and readonly stuff (from old implementation, IA)
if(cursor->currentCell()->isClosed())
{
if(cursor->currentCell()->hasChilds())
{
cursor->currentCell()->child()->setReadOnly(true);
cursor->currentCell()->child()->setFocus(false);
}
}
else
{
cursor->currentCell()->setReadOnly(true);
cursor->currentCell()->setFocus(false);
}
// create the new cell, if there exists a groupcell add the new cell to
// that groupcell.
Cell* newCell = factory->createCell( style.name() );
// if( groupcell )
// groupcell->addChild( newCell );
// set content of cell
// *************************************************************************
// COPY - EVERY CELL TYPE
// ----------------------
newCell->setCellTag( cell->cellTag() );
// rules
rules_t rules = cell->rules();
rules_t::iterator current = rules.begin();
while( current != rules.end() )
{
newCell->addRule( (*current) );
++current;
}
// COPY - SPECIFIC FOR CELL TYPE
// -----------------------------
if( typeid(CellGroup) == typeid( *newCell ))
{
CellGroup *newCellGroup = dynamic_cast<CellGroup *>( newCell );
newCellGroup->setClosed( cell->isClosed() );
if( cell->hasChilds() )
{
Cell* child = cell->child();
while( child )
{
pasteCell( child, newCellGroup );
child = child->next();
}
}
}
else if( typeid(InputCell) == typeid( *newCell ))
{
InputCell *newInputCell = dynamic_cast<InputCell *>( newCell );
InputCell *oldInputCell = dynamic_cast<InputCell *>( cell );
newInputCell->setStyle( style );
newInputCell->setText( oldInputCell->text() );
if( oldInputCell->isEvaluated() )
{
newInputCell->setEvaluated( true );
newInputCell->setTextOutput( oldInputCell->textOutput() );
}
else
newInputCell->setEvaluated( false );
newInputCell->setClosed( oldInputCell->isClosed() );
}
else if( typeid(GraphCell) == typeid( *newCell ))
{
GraphCell *newGraphCell = dynamic_cast<GraphCell *>( newCell );
GraphCell *oldGraphCell = dynamic_cast<GraphCell *>( cell );
newGraphCell->setStyle( style );
newGraphCell->setText( oldGraphCell->text() );
if( oldGraphCell->isEvaluated() )
{
newGraphCell->setEvaluated( true );
newGraphCell->setTextOutput( oldGraphCell->textOutput() );
}
else
newGraphCell->setEvaluated( false );
//.........这里部分代码省略.........