Commit acb88e44 authored by Fredrik Edemar's avatar Fredrik Edemar

* Ufkt::extstr isn't necessary anymore as Ufkt::fstr contains the function expression.

* Set some members in Parser to private (was protected before).
* The load/save implemention for constants now works with KCalc again.
* XParser::functionFstr is renamed to XParser::functionStr.

svn path=/trunk/kdeedu/kmplot/; revision=372367
parent bf39137f
......@@ -97,7 +97,7 @@ void FktDlg::slotEdit()
int const id = getId( lb_fktliste->currentText().section( ";", 0, 0) ) ;
// find out the function type
char const prefix = m_view->parser()->ufkt[ m_view->parser()->ixValue(id) ].extstr.at(0).latin1();
char const prefix = m_view->parser()->ufkt[ m_view->parser()->ixValue(id) ].fstr.at(0).latin1();
if ( prefix == 'r')
slotEditPolar( id, num );
......@@ -111,7 +111,7 @@ int FktDlg::getId( const QString &f_str )
{
for( QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin(); it != m_view->parser()->ufkt.end(); ++it)
{
if ( it->extstr == f_str )
if ( it->fstr == f_str )
return it->id;
}
return -1;
......@@ -211,14 +211,14 @@ void FktDlg::getPlots()
// adding all yet added functions
for( QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin(); it != m_view->parser()->ufkt.end(); ++it)
{
if( it->fname.isEmpty() || it->extstr[0] == 'y' ) continue;
if( it->extstr[0] == 'x' )
if( it->fname.isEmpty() || it->fstr[0] == 'y' ) continue;
if( it->fstr[0] == 'x' )
{
QString y = it->extstr;
QString y = it->fstr;
++it;
lb_fktliste->insertItem( y + ";" + it->extstr );
lb_fktliste->insertItem( y + ";" + it->fstr );
}
else lb_fktliste->insertItem( it->extstr );
else lb_fktliste->insertItem( it->fstr );
}
lb_fktliste->sort();
}
......
......@@ -521,10 +521,13 @@ void MainDlg::slotEditPlots()
tmpfile.unlink();
}
void MainDlg::slotQuickEdit(const QString& tmp_f_str )
void MainDlg::slotQuickEdit(const QString& f_str_const )
{
//creates a valid name for the function if the user has forgotten that
QString f_str( tmp_f_str );
QString f_str( f_str_const );
int const pos = f_str_const.find(';');
if (pos!=-1)
f_str = f_str.left(pos);
if (f_str.at(0)=='r')
view->parser()->fixFunctionName(f_str, XParser::Polar);
else
......@@ -553,7 +556,7 @@ void MainDlg::slotQuickEdit(const QString& tmp_f_str )
Ufkt *ufkt = &view->parser()->ufkt.last();
view->parser()->prepareAddingFunction(ufkt);
if ( view->parser()->getext( ufkt ) == -1)
if ( pos!=-1 && !view->parser()->getext(ufkt, QString(f_str_const)))
{
m_quickEdit->setFocus();
m_quickEdit->selectAll();
......@@ -609,23 +612,34 @@ void MainDlg::loadConstants()
{
KSimpleConfig conf ("kcalcrc");
conf.setGroup("Constants");
conf.setGroup("UserConstants");
QString tmp;
QString tmp_constant;
QString tmp_value;
char constant;
double value;
for( int i=0; ;i++)
{
tmp.setNum(i+1);
tmp.setNum(i);
tmp_constant = conf.readEntry("nameConstant"+tmp," ");
value = conf.readDoubleNumEntry("valueConstant"+tmp,1.23456789);
constant = tmp_constant.at(0).upper().latin1();
//value = conf.readDoubleNumEntry("valueConstant"+tmp,1.23456789);
tmp_value = conf.readEntry("valueConstant"+tmp," ");
kdDebug() << "konstant: " << tmp_constant.latin1() << endl;
kdDebug() << "value: " << value << endl;
kdDebug() << "**************" << endl;
if ( tmp_constant == " " || tmp_constant == " ")
return;
constant = tmp_constant.at(0).upper().latin1();
if ( constant<'A' || constant>'Z')
constant = 'A';
if ( tmp_constant == " " || value == 1.23456789)
return;
value = view->parser()->eval(tmp_value);
if ( view->parser()->parserError(false) ) //couln't parse the value
continue;
if ( !view->parser()->constant.empty() )
{
bool copy_found=false;
......@@ -664,11 +678,11 @@ void MainDlg::saveConstants()
{
KSimpleConfig conf ("kcalcrc");
conf.deleteGroup("Constants");
conf.setGroup("Constants");
conf.setGroup("UserConstants");
QString tmp;
for( int i = 0; i< (int)view->parser()->constant.size();i++)
{
tmp.setNum(i+1);
tmp.setNum(i);
conf.writeEntry("nameConstant"+tmp, QString( QChar(view->parser()->constant[i].constant) ) ) ;
conf.writeEntry("valueConstant"+tmp, view->parser()->constant[i].value);
}
......
......@@ -200,9 +200,9 @@ protected slots:
void updateSettings();
/**
* Manages the LineEdit content after returnPressed() is emitted.
* @param f_str the content of the KLineEdit
* @param f_str_const the content of the KLineEdit
*/
void slotQuickEdit( const QString& tmp_f_str );
void slotQuickEdit( const QString& f_str_const );
void setReadOnlyStatusBarText(const QString &);
......
......@@ -51,7 +51,6 @@ k_dcop:
virtual void toggleShowSlider1() = 0;
virtual void toggleShowSlider2() = 0;
virtual void toggleShowSlider3() = 0;
// virtual void slotCleanWindow() = 0;
virtual void slotSave() = 0;
virtual void slotSaveas() = 0;
virtual void slotEditPlots() = 0;
......
......@@ -218,7 +218,7 @@ void View::plotfkt(Ufkt *ufkt, QPainter *pDC)
iy=0;
y=0.0;
char const fktmode=ufkt->extstr[0].latin1();
char const fktmode=ufkt->fstr[0].latin1();
if(fktmode=='y') return ;
dmin=ufkt->dmin;
......@@ -469,7 +469,7 @@ void View::drawHeaderTable(QPainter *pDC)
//for(uint ix=0; ix<m_parser->countFunctions() && !stop_calculating; ++ix)
for(QValueVector<Ufkt>::iterator it=m_parser->ufkt.begin(); it!=m_parser->ufkt.end() && !stop_calculating; ++it)
{
pDC->drawText(100, ypos, it->extstr);
pDC->drawText(100, ypos, it->fstr);
ypos+=60;
}
pDC->translate(-60., ypos+100.);
......@@ -836,9 +836,9 @@ void View::mousePressEvent(QMouseEvent *e)
char function_type;
for( QValueVector<Ufkt>::iterator it = m_parser->ufkt.begin(); it != m_parser->ufkt.end(); ++it)
{
function_type = it->extstr[0].latin1();
function_type = it->fstr[0].latin1();
if ( function_type=='y' || function_type=='r' || it->fname.isEmpty()) continue;
kdDebug() << "it:" << it->extstr << endl;
kdDebug() << "it:" << it->fstr << endl;
int k=0;
int const ke=it->parameters.count();
do
......@@ -851,10 +851,10 @@ void View::mousePressEvent(QMouseEvent *e)
else
it->setParameter(sliders[ it->use_slider ]->slider->value() );
if ( function_type=='x' && fabs(csxpos-m_parser->fkt(it, csxpos))< g && it->extstr.contains('t')==1) //parametric plot
if ( function_type=='x' && fabs(csxpos-m_parser->fkt(it, csxpos))< g && it->fstr.contains('t')==1) //parametric plot
{
QValueVector<Ufkt>::iterator ufkt_y = it+1;
if ( fabs(csypos-m_parser->fkt(ufkt_y, csxpos)<g) && ufkt_y->extstr.contains('t')==1)
if ( fabs(csypos-m_parser->fkt(ufkt_y, csxpos)<g) && ufkt_y->fstr.contains('t')==1)
{
if ( csmode == -1)
{
......@@ -865,12 +865,12 @@ void View::mousePressEvent(QMouseEvent *e)
}
else
m_popupmenushown = 2;
QString y_name( ufkt_y->extstr );
QString y_name( ufkt_y->fstr );
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-1),false);
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-2),false);
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-3),false);
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-4),false);
m_popupmenu->changeTitle(10,ufkt_y->extstr+";"+y_name);
m_popupmenu->changeTitle(10,ufkt_y->fstr+";"+y_name);
m_popupmenu->exec(QCursor::pos());
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-1),true);
m_popupmenu->setItemEnabled(m_popupmenu->idAt(m_popupmenu->count()-2),true);
......@@ -890,7 +890,7 @@ void View::mousePressEvent(QMouseEvent *e)
}
else
m_popupmenushown = 2;
m_popupmenu->changeTitle(10, it->extstr);
m_popupmenu->changeTitle(10, it->fstr);
m_popupmenu->exec(QCursor::pos());
return;
}
......@@ -905,7 +905,7 @@ void View::mousePressEvent(QMouseEvent *e)
}
else
m_popupmenushown = 2;
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + '\'';
m_popupmenu->changeTitle(10, function);
m_popupmenu->exec(QCursor::pos());
......@@ -922,7 +922,7 @@ void View::mousePressEvent(QMouseEvent *e)
}
else
m_popupmenushown = 2;
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + "\'\'";
m_popupmenu->changeTitle(10, function);
m_popupmenu->exec(QCursor::pos());
......@@ -946,7 +946,7 @@ void View::mousePressEvent(QMouseEvent *e)
{
if (it->fname.isEmpty() )
continue;
switch(it->extstr[0].latin1())
switch(it->fstr[0].latin1())
{
case 'x': case 'y': case 'r': continue; // Not possible to catch
}
......@@ -967,7 +967,7 @@ void View::mousePressEvent(QMouseEvent *e)
cstype=0;
csparam = k;
m_minmax->selectItem();
setStatusBar(it->extstr,4);
setStatusBar(it->fstr,4);
mouseMoveEvent(e);
return;
}
......@@ -977,7 +977,7 @@ void View::mousePressEvent(QMouseEvent *e)
cstype=1;
csparam = k;
m_minmax->selectItem();
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + '\'';
setStatusBar(function,4);
mouseMoveEvent(e);
......@@ -989,7 +989,7 @@ void View::mousePressEvent(QMouseEvent *e)
cstype=2;
csparam = k;
m_minmax->selectItem();
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + "\'\'";
setStatusBar(function,4);
mouseMoveEvent(e);
......@@ -1455,7 +1455,7 @@ void View::keyPressEvent( QKeyEvent * e)
break;
}
kdDebug() << "csmode: " << csmode << endl;
switch(it->extstr[0].latin1())
switch(it->fstr[0].latin1())
{
case 'x':
case 'y':
......@@ -1513,18 +1513,18 @@ void View::keyPressEvent( QKeyEvent * e)
switch (cstype )
{
case 0:
setStatusBar(it->extstr,4);
setStatusBar(it->fstr,4);
break;
case 1:
{
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + '\'';
setStatusBar(function,4);
break;
}
case 2:
{
QString function = it->extstr;
QString function = it->fstr;
function = function.left(function.find('(')) + "\'\'";
setStatusBar(function,4);
break;
......@@ -1824,7 +1824,7 @@ void View::mnuRemove_clicked()
if ( KMessageBox::questionYesNo(this,i18n("Are you sure you want to remove this function?")) == KMessageBox::Yes )
{
Ufkt *ufkt = &m_parser->ufkt[m_parser->ixValue(csmode)];
char const function_type = ufkt->extstr[0].latin1();
char const function_type = ufkt->fstr[0].latin1();
m_parser->delfkt( ufkt );
drawPlot();
......@@ -1835,7 +1835,7 @@ void View::mnuRemove_clicked()
}
void View::mnuEdit_clicked()
{
if ( m_parser->ufkt[m_parser->ixValue(csmode)].extstr[0] == 'x') // a parametric function
if ( m_parser->ufkt[m_parser->ixValue(csmode)].fstr[0] == 'x') // a parametric function
{
int y_index = csmode+1; //the y-function
if ( y_index == (int)m_parser->countFunctions())
......@@ -1911,22 +1911,20 @@ void View::mnuTrig_clicked()
{
if ( Settings::anglemode()==0 ) //radians
{
Settings::setXMin("-6.152285613" );
Settings::setXMax("6.152285613" );
Settings::setXMin("-(47/24)pi");
Settings::setXMax("(47/24)pi");
}
else //degrees
{
Settings::setXMin("-352.5" );
Settings::setXMax("352.5" );
}
Settings::setYMin("-4");
Settings::setYMax("4");
Settings::setXRange(4); //custom x-range
Settings::setYRange(4); //custom y-range
drawPlot(); //update all graphs
return;
}
void View::invertColor(QColor &org, QColor &inv)
{
......
......@@ -110,7 +110,7 @@ void EditFunction::clearWidgets()
void EditFunction::setWidgets()
{
Ufkt *ufkt = &m_parser->ufkt[ m_parser->ixValue(m_id) ];
editfunctionpage->equation->setText( ufkt->extstr );
editfunctionpage->equation->setText( ufkt->fstr );
editfunctionpage->hide->setChecked( !ufkt->f_mode);
editfunctionpage->lineWidth->setValue( ufkt->linewidth );
editfunctionpage->color->setColor( ufkt->color );
......@@ -305,7 +305,6 @@ void EditFunction::accept()
if(( (!m_parameter.isEmpty() && editfunctionpage->useList->isChecked() ) || editfunctionpage->useSlider->isChecked() ) && !functionHas2Arguments() )
fixFunctionArguments(f_str); //adding an extra argument for the parameter value
added_ufkt->fstr = f_str;
added_ufkt->extstr = f_str;
m_parser->reparse(added_ufkt); //reparse the funcion
if ( m_parser->parserError() != 0)
{
......
......@@ -88,7 +88,7 @@ void KConstantEditor::cmdDelete_clicked()
for( QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin(); it != m_view->parser()->ufkt.end(); ++it)
{
str = it->extstr;
str = it->fstr;
for (int i=str.find(')'); (uint)i<str.length();i++)
if ( str.at(i) == constant )
{
......
......@@ -71,10 +71,10 @@ void KEditParametric::setWidgets()
{
Ufkt *ufkt = &m_parser->ufkt[ m_parser->ixValue(m_x_id) ];
QString name, expression;
splitEquation( ufkt->extstr, name, expression );
splitEquation( ufkt->fstr, name, expression );
kLineEditName->setText( name );
kLineEditXFunction->setText( expression );
splitEquation( m_parser->ufkt[ m_y_id ].extstr, name, expression );
splitEquation( m_parser->ufkt[ m_y_id ].fstr, name, expression );
kLineEditYFunction->setText( expression );
checkBoxHide->setChecked( !ufkt->f_mode );
if ( ufkt->dmin != ufkt->dmax )
......@@ -165,7 +165,7 @@ void KEditParametric::accept()
added_ufkt = &m_parser->ufkt[ix];
QString old_fstr = added_ufkt->fstr;
added_ufkt->fstr = xFunction();
added_ufkt->extstr = added_ufkt->fstr;
added_ufkt->fstr = added_ufkt->fstr;
m_parser->reparse(added_ufkt); //reparse the funcion
if ( m_parser->parserError() != 0)
{
......@@ -223,7 +223,7 @@ void KEditParametric::accept()
added_ufkt = &m_parser->ufkt[m_parser->ixValue(m_y_id)];
QString old_fstr = added_ufkt->fstr;
added_ufkt->fstr = yFunction();
added_ufkt->extstr = added_ufkt->fstr;
added_ufkt->fstr = added_ufkt->fstr;
m_parser->reparse(added_ufkt); //reparse the funcion
if ( m_parser->parserError() != 0) //when something went wrong:
{
......
......@@ -68,7 +68,7 @@ void KEditPolar::clearWidgets()
void KEditPolar::setWidgets()
{
Ufkt *ufkt = &m_parser->ufkt[ m_parser->ixValue(m_id) ];
QString function = ufkt->extstr;
QString function = ufkt->fstr;
function = function.right( function.length()-1 );
kLineEditYFunction->setText( function );
checkBoxHide->setChecked( !ufkt->f_mode);
......@@ -147,7 +147,6 @@ void KEditPolar::accept()
added_ufkt = &m_parser->ufkt[ix];
QString const old_fstr = added_ufkt->fstr;
added_ufkt->fstr = f_str;
added_ufkt->extstr = f_str;
m_parser->reparse(added_ufkt); //reparse the funcion
if ( m_parser->parserError() != 0)
{
......
......@@ -145,10 +145,10 @@ void KMinMax::updateFunctions()
if( it->fname[0] != 'x' && it->fname[0] != 'y' && it->fname[0] != 'r')
{
if ( it->f_mode )
list->insertItem(it->extstr);
list->insertItem(it->fstr);
if ( it->f1_mode ) //1st derivative
{
QString function (it->extstr);
QString function (it->fstr);
int i= function.find('(');
function.truncate(i);
function +="\'";
......@@ -156,7 +156,7 @@ void KMinMax::updateFunctions()
}
if ( it->f2_mode )//2nd derivative
{
QString function (it->extstr);
QString function (it->fstr);
int i= function.find('(');
function.truncate(i);
function +="\'\'";
......@@ -164,7 +164,7 @@ void KMinMax::updateFunctions()
}
if ( it->integral_mode )//integral
{
QString function (it->extstr);
QString function (it->fstr);
int i= function.find('(');
function.truncate(i);
function = function.upper();
......@@ -187,7 +187,7 @@ void KMinMax::selectItem()
return;
//kdDebug() << "cstype: " << (int)m_view->cstype << endl;
Ufkt *ufkt = &m_view->parser()->ufkt[m_view->parser()->ixValue(m_view->csmode)];
QString function = ufkt->extstr;
QString function = ufkt->fstr;
if ( m_view->cstype == 2)
{
int i= function.find('(');
......@@ -280,7 +280,7 @@ void KMinMax::cmdFind_clicked()
for( QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin(); it != m_view->parser()->ufkt.end(); ++it)
{
if ( it->extstr.section('(',0,0) == sec_function)
if ( it->fstr.section('(',0,0) == sec_function)
{
ufkt = it;
break;
......@@ -370,7 +370,7 @@ void KMinMax::list_highlighted(QListBoxItem* item)
QString const sec_function = function.section('(',0,0);
for(QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin(); it!=m_view->parser()->ufkt.end(); ++it)
{
if ( it->extstr.section('(',0,0) == sec_function)
if ( it->fstr.section('(',0,0) == sec_function)
{
if ( it->parameters.count() == 0)
cmdParameter->hide();
......@@ -409,7 +409,7 @@ void KMinMax::cmdParameter_clicked()
QString const sec_function = function.section('(',0,0);
for(QValueVector<Ufkt>::iterator it = m_view->parser()->ufkt.begin() ; it!=m_view->parser()->ufkt.end(); ++it)
{
if ( it->extstr.section('(',0,0) == sec_function)
if ( it->fstr.section('(',0,0) == sec_function)
{
QStringList str_parameters;
for ( QValueList<ParameterValueItem>::Iterator k = it->parameters.begin(); k != it->parameters.end(); ++k )
......
......@@ -116,7 +116,7 @@ bool KmPlotIO::save( const KURL &url )
for( QValueVector<Ufkt>::iterator it = m_parser->ufkt.begin(); it != m_parser->ufkt.end(); ++it)
{
if ( !it->extstr.isEmpty() )
if ( !it->fstr.isEmpty() )
{
tag = doc.createElement( "function" );
......@@ -151,7 +151,7 @@ bool KmPlotIO::save( const KURL &url )
tag.setAttribute( "integral-starty", it->str_starty );
}
addTag( doc, tag, "equation", it->extstr );
addTag( doc, tag, "equation", it->fstr );
QStringList str_parameters;
for ( QValueList<ParameterValueItem>::Iterator k = it->parameters.begin(); k != it->parameters.end(); ++k )
......@@ -415,14 +415,14 @@ void KmPlotIO::parseFunction( XParser *m_parser, const QDomElement & n )
ufkt.dmax = 0;
}
else ufkt.dmax = m_parser->eval( ufkt.str_dmax );
ufkt.extstr = n.namedItem( "equation" ).toElement().text();
ufkt.fstr = n.namedItem( "equation" ).toElement().text();
if (MainDlg::oldfileversion)
parseThreeDotThreeParameters( m_parser, n, ufkt );
else
parseParameters( m_parser, n, ufkt );
QCString fstr = ufkt.extstr.utf8();
QString fstr = ufkt.fstr;
if ( !fstr.isEmpty() )
{
int const i = fstr.find( ';' );
......@@ -511,10 +511,21 @@ void KmPlotIO::oldParseFunction( XParser *m_parser, const QDomElement & n )
}
else ufkt.dmax = m_parser->eval( ufkt.str_dmax );
ufkt.extstr = n.namedItem( "equation" ).toElement().text();
m_parser->getext( &ufkt );
const QString tmp_fstr = n.namedItem( "equation" ).toElement().text();
const int pos = tmp_fstr.find(';');
if ( pos == -1 )
ufkt.fstr = tmp_fstr;
else
{
ufkt.fstr = tmp_fstr.left(pos);
if ( !m_parser->getext( &ufkt, tmp_fstr) )
{
KMessageBox::error(0,i18n("The function %1 could not be loaded").arg(ufkt.fstr));
return;
}
}
QCString fstr = ufkt.extstr.utf8();
QString fstr = ufkt.fstr;
if ( !fstr.isEmpty() )
{
int const i = fstr.find( ';' );
......
......@@ -358,7 +358,7 @@ int Parser::addfkt(QString str)
else
{
Ufkt temp;
if ( temp.extstr.at(0) == 'y')
if ( temp.fstr.at(0) == 'y')
temp.id = ufkt.last().id; //the function belongs to the last inserted function
else
temp.id = getNewId();
......@@ -367,7 +367,7 @@ int Parser::addfkt(QString str)
}
QString const fname = str.left(p1);
Ufkt *temp = &ufkt.last();
temp->fstr=str;
temp->fstr=extstr;
temp->mptr = 0;
temp->memsize=memsize;
temp->stacksize=stacksize;
......@@ -375,7 +375,6 @@ int Parser::addfkt(QString str)
temp->fvar=str.mid(p1+1, p2-p1-1);
if(p2<p3) temp->fpar=str.mid(p2+1, p3-p2-1);
else temp->fpar=""; //.resize(1);
temp->extstr = extstr;
kdDebug() << "temp.id:" << temp->id << endl;
......@@ -515,20 +514,20 @@ void Parser::delfkt( Ufkt *item)
else
{
//kdDebug() << "Deleting something" << endl;
QChar const extstr_c = item->extstr.at(0);
QChar const extstr_c = item->fstr.at(0);
uint const id = item->id;
delete []item->mem;
ufkt.erase(item);
if ( extstr_c == 'x')
{
int const ix = ixValue(id+1);
if (ix!= -1 && ufkt[ix].extstr.at(0) == 'y')
if (ix!= -1 && ufkt[ix].fstr.at(0) == 'y')
delfkt( &ufkt[ix]);
}
else if ( extstr_c == 'y')
{
int const ix = ixValue(id-1);
if (ix!= -1 && ufkt[ix].extstr.at(0) == 'x')
if (ix!= -1 && ufkt[ix].fstr.at(0) == 'x')
delfkt( &ufkt[ix]);
}
}
......
......@@ -149,7 +149,6 @@ class Ufkt
starty,///< startposition for Euler's method, the initial y-value
startx, ///< startposition for Euler's method, the initial x-value last y'.valuenitial x-value last y'.valuenitial x-value
integral_precision; ///<precision when drawing numeric prime-functions
QString extstr; ///< Complete function string including the extensions.
QRgb color, ///< current color.
f1_color, f2_color, integral_color;
int use_slider; ///< -1: none (use list), else: slider number
......@@ -216,7 +215,7 @@ public:
QValueVector<Constant> constant;
QValueVector<Ufkt> ufkt;///< Points to the array of user defined functions.
protected:
private:
/** Mathematical function. */
struct Mfkt
{
......@@ -225,29 +224,29 @@ protected:
};
static Mfkt mfkttab[FANZ];
int err,
errpos; ///< Position where the error occurred.
/// Error codes.
/// Error codes:
/**
* The values have following meanings:
* \li 0 => parse success