Source Code (Use browser search to find items of interest.)
Class Index
kformula'KFormulaDoc (./koffice/kformula/kformula_doc.h:25)
class KFormulaDoc : virtual public KoDocument,public KFormulaContainer
{
Q_OBJECT
public:
KFormulaDoc( KoDocument* parent = 0, const char* name = 0 );
~KFormulaDoc();
virtual KoView* createView( QWidget* parent = 0, const char* name = 0 );
virtual KoMainWindow* createShell();
virtual void paintContent( QPainter& painter, const QRect& rect, bool transparent = FALSE );
virtual bool initDoc();
virtual QCString mimeType() const;
protected:
virtual QString configFile() const;
public:
/*int addBlock( int Type = -1, int ID = -1, int nextID = -1, int prevID = -1,
QString Cont = "", int Child1 = -1, int Child2 = -1, int Child3 = -1 );
void checkAndCreate( FormulaBlock *bl );
void deleteIt( FormulaBlock *bl );
*/
QString name;
/* BasicElement *activeElement,*firstElement;
KFormulaDoc *theFormula;
*/
/**
* This is just a hack til view and doc are really split
*/
void mousePressEvent(QMouseEvent *a, QWidget *wid);
void paintEvent( QPaintEvent *_ev, QWidget *paintGround );
void print( QPrinter *thePrt);
void keyPressEvent( QKeyEvent *k );
virtual void cleanUp();
// C++
// virtual int viewCount();
protected:
/**
* We dont have embedded parts or binary data => No multipart files needed.
*/
virtual bool hasToWriteMultipart() { return false; }
public:
// IDL
// virtual CORBA::Boolean initDoc();
/**
* We dont load any children.
*/
// virtual bool loadChildren( KOStore::Store_ptr ) { return true; }
virtual bool save( ostream& out, const char* _format );
// C++
KFormulaView* createFormulaView( QWidget* _parent = 0 );
// C++
// virtual void addView( KFormulaView *_view );
// virtual void removeView( KFormulaView *_view );
virtual void emitModified();
virtual bool isEmpty() { return m_bEmpty; };
// IDL
void addTextElement(QString cont="");
void addRootElement();
BasicElement * addIndex(int index);
BasicElement * addChild(int child);
void addFractionElement(QString cont);
void addMatrixElement(QString cont);
void addPrefixedElement(QString cont);
/*
void addSymbolElement();
void addDecorationElement();
*/
void addBracketElement(QString cont);
void setActiveElement(BasicElement* c);
void setCursor(const QRect& r) { theCursor=r; }
int thePosition;
BasicElement *activeElement() const { return theActiveElement; }
QRect cursor() const { return theCursor; }
signals:
void sig_modified();
void sig_changeText( const char * );
void sig_changeType(const BasicElement* );
protected:
QList<KFormulaView> m_lstViews;
bool m_bModified;
bool m_bEmpty;
// QTimer *cursorTimer;
bool showIt;
BasicElement *theActiveElement;
QRect theCursor;
};
kformula'KFormulaDoc::~KFormulaDoc() (./koffice/kformula/kformula_doc.cc:35)
KFormulaDoc::~KFormulaDoc()
{
// cleanUp();
}
kformula'KFormulaDoc::cleanUp() (./koffice/kformula/kformula_doc.cc:40)
void KFormulaDoc::cleanUp()
{
// if ( m_bIsClean )
// return;
// assert( m_lstViews.count() == 0 );
// KoDocument::cleanUp();
}
kformula'KFormulaDoc::save() (./koffice/kformula/kformula_doc.cc:50)
bool KFormulaDoc::save( ostream& out, const char* /* format */ )
{
//#warning TODO if someone implements saving, do it right :)
#if 0
out << "<?xml version=\"1.0\"?>" << endl;
out << otag << "<DOC author=\"" << "Andrea Rizzi" << "\" email=\""
<< "rizzi@kde.org" << "\" editor=\"" << "KFormula"
<< "\" mime=\"" << MIME_TYPE << "\" >" << endl;
out << "<FORMULA>" << endl;
out << "<ELEM FIRST ";
theFirstElement->save(out);
out << "</FORMULA>" << endl;
out << etag << "</DOC>" << endl;
#endif
return true;
}
/*
KOffice::MainWindow_ptr KFormulaDoc::createMainWindow()
{
KFormulaShell* shell = new KFormulaShell;
shell->show();
shell->setDocument( this );
return KOffice::MainWindow::_duplicate( shell->koInterface() );
}
*/
/*
int KFormulaDoc::viewCount()
{
return m_lstViews.count();
}
*/
/*
void KFormulaDoc::viewList( OpenParts::Document::ViewList*& _list )
{
(*_list).length( m_lstViews.count() );
int i = 0;
QListIterator<KFormulaView> it( m_lstViews );
for( ; it.current(); ++it )
{
(*_list)[i++] = OpenParts::View::_duplicate( it.current() );
}
}
*/
/*
void KFormulaDoc::addView( KFormulaView *_view )
{
m_lstViews.append( _view );
}
*/
/*
void KFormulaDoc::removeView( KFormulaView *_view )
{
m_lstViews.setAutoDelete( false );
m_lstViews.removeRef( _view );
m_lstViews.setAutoDelete( true );
}
*/
kformula'KFormulaDoc::createFormulaView() (./koffice/kformula/kformula_doc.cc:113)
KFormulaView* KFormulaDoc::createFormulaView( QWidget* _parent )
{
KFormulaView *p = new KFormulaView( this, _parent, 0L);
//p->QWidget::show();
// m_lstViews.append( p );
return p;
}
/*
OpenParts::View_ptr KFormulaDoc::createView()
{
return OpenParts::View::_duplicate( createFormulaView() );
}
*/
kformula'KFormulaDoc::emitModified() (./koffice/kformula/kformula_doc.cc:127)
void KFormulaDoc::emitModified()
{
m_bModified = true;
m_bEmpty = false;
eList.clear();
theFirstElement->makeList();
eList.at(thePosition);
emit sig_changeType( currentElement() );
emit sig_modified();
}
kformula'KFormulaDoc::addRootElement() (./koffice/kformula/kformula_doc.cc:138)
void KFormulaDoc::addRootElement()
{
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
if (typeid(*currentElement()) == typeid(BasicElement)) {
warning("substitueted");
newElement = new RootElement(this);
currentElement()->substituteElement(newElement);
delete currentElement();
eList.current()->element = 0;
warning("done");
} else {
BasicElement *nextElement=currentElement()->getNext();
if(nextElement!=0L){ //If there's a next insert root before next
nextElement->insertElement(newElement=new RootElement(this));
} else //If there isn't a next append only.
currentElement()->setNext(newElement=new RootElement(this,currentElement()));
}
newElement->check();
// warning("Set activeelement...");
setActiveElement(newElement);
// warning("done");
//RootElement need a child[0] i.e. root content
// newElement = new BasicElement(this,currentElement(),4);
// currentElement()->setChild(newElement,0);
setActiveElement(newElement->getChild(0)); //I prefere to AutoActivate RootContent
emitModified();
}
kformula'KFormulaDoc::addPrefixedElement() (./koffice/kformula/kformula_doc.cc:171)
void KFormulaDoc::addPrefixedElement(QString cont)
{
BasicElement *newElement;
// if(eList.at()==-1)
// eList.first();
if(currentElement()==0L)
setActiveElement(theFirstElement);
//If current Element is a Basic, change it into a Prefixed
if (typeid(*currentElement()) == typeid(BasicElement)) {
warning("substitueted");
newElement = new PrefixedElement(this);
currentElement()->substituteElement(newElement);
delete currentElement();
eList.current()->element =0;
//theActiveElement = 0;
} else {
BasicElement *nextElement=currentElement()->getNext();
if(nextElement!=0L){ //If there's a next insert root before next
nextElement->insertElement(newElement=new PrefixedElement(this));
} else //If there isn't a next append only.
currentElement()->setNext(newElement=new PrefixedElement(this,currentElement()));
}
setActiveElement(newElement);
currentElement()->setContent(cont);
newElement = new BasicElement(this,currentElement(),4);
currentElement()->setChild(newElement,0);
setActiveElement(newElement); //I prefere to AutoActivate RootContent
emitModified();
}
kformula'KFormulaDoc::addFractionElement() (./koffice/kformula/kformula_doc.cc:203)
void KFormulaDoc::addFractionElement(QString cont)
{
BasicElement *nextElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
if(typeid(*currentElement()) == typeid(BasicElement)) //If current Element is a Basic
{ //It change it into a Root
currentElement()->substituteElement(newElement = new FractionElement(this));
delete currentElement();
eList.current()->element = 0;
}
else
{
nextElement=currentElement()->getNext();
if(nextElement!=0L){ //If there's a next insert root before next
nextElement->insertElement(newElement=new FractionElement(this));
}
else //If there isn't a next append only.
currentElement()->setNext(newElement=new FractionElement(this,currentElement()));
}
newElement->setContent(cont);
setActiveElement(newElement);
//RootElement need a child[0] i.e. numer
currentElement()->setChild(newElement = new BasicElement(this,currentElement(),5),1);
currentElement()->setChild(newElement = new BasicElement(this,currentElement(),4),0);
setActiveElement(newElement); //I prefere to AutoActivate numerator
emitModified();
}
kformula'KFormulaDoc::addMatrixElement() (./koffice/kformula/kformula_doc.cc:235)
void KFormulaDoc::addMatrixElement(QString cont)
{
int rows=atoi(cont.mid(3,3));
int cols=atoi(cont.mid(6,3));
BasicElement *nextElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
if(typeid(*currentElement()) == typeid(BasicElement)) //If current Element is a Basic
{ //It change it into a Root
currentElement()->substituteElement(newElement = new MatrixElement(this));
delete currentElement();
eList.current()->element = 0;
}
else
{
nextElement=currentElement()->getNext();
if(nextElement!=0L){ //If there's a next insert root before next
nextElement->insertElement(newElement=new MatrixElement(this));
}
else //If there isn't a next append only.
currentElement()->setNext(newElement=new MatrixElement(this,currentElement()));
}
newElement->setContent(cont);
setActiveElement(newElement);
//RootElement need a child[0] i.e. numer
((MatrixElement *)(currentElement()))->setChildrenNumber(rows*cols);
for (int i=rows*cols-1;i>=0;i--)
currentElement()->setChild(newElement = new BasicElement(this,currentElement(),i+4),i);
setActiveElement(newElement); //I prefere to AutoActivate numerator
emitModified();
}
kformula'KFormulaDoc::addBracketElement() (./koffice/kformula/kformula_doc.cc:271)
void KFormulaDoc::addBracketElement(QString cont)
{
BasicElement *nextElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
if(typeid(*currentElement()) == typeid(BasicElement)) //If current Element is a Basic
{ //It change it into a Bracket
currentElement()->substituteElement(newElement = new BracketElement(this));
delete currentElement();
eList.current()->element = 0;
}
else
{
nextElement=currentElement()->getNext();
if(nextElement!=0L){ //If there's a next insert Brackets before next
nextElement->insertElement(newElement=new BracketElement(this));
}
else //If there isn't a next append only.
activeElement()->setNext(newElement=new BracketElement(this,currentElement()));
}
newElement->setContent(cont);
setActiveElement(newElement);
//RootElement need a child[0] i.e. parenthesis content
currentElement()->setChild(newElement = new BasicElement(this,currentElement(),4),0);
setActiveElement(newElement); //I prefere to AutoActivate RootContent
emitModified();
}
/*
* If activeElement is a NON-BasicElement it add
* a TextElement between activeElement and its next element
* If activeElement is a BasicElement it "substitute"
* this basicElement with a TextElement
*/
kformula'KFormulaDoc::addIndex() (./koffice/kformula/kformula_doc.cc:307)
BasicElement * KFormulaDoc::addIndex(int index)
{
BasicElement *oldIndexElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
oldIndexElement=currentElement()->getIndex(index);
if(oldIndexElement==0L)
currentElement()->setIndex(newElement =
new BasicElement(this,currentElement(),index),index);
else
{
oldIndexElement->insertElement(newElement = new BasicElement(this));
}
newElement->scaleNumericFont(FN_REDUCE | FN_P43 | FN_ELEMENT);
setActiveElement(newElement);
emitModified();
return(newElement);
}
kformula'KFormulaDoc::addChild() (./koffice/kformula/kformula_doc.cc:327)
BasicElement * KFormulaDoc::addChild(int child)
{
BasicElement *oldChildElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
oldChildElement=currentElement()->getChild(child);
if(oldChildElement==0L)
currentElement()->setChild(newElement =
new BasicElement(this,currentElement(),child+4),child);
else
{
oldChildElement->insertElement(newElement = new BasicElement(this));
}
setActiveElement(newElement);
emitModified();
return(newElement);
}
kformula'KFormulaDoc::addTextElement() (./koffice/kformula/kformula_doc.cc:346)
void KFormulaDoc::addTextElement(QString cont)
{
BasicElement *nextElement;
BasicElement *newElement;
if(currentElement()==0L)
setActiveElement(theFirstElement);
if(typeid(*currentElement()) == typeid(BasicElement)) //see addRootElement()
{
currentElement()->substituteElement(newElement = new TextElement(this));
delete currentElement();
eList.current()->element = 0;
}
else
{
nextElement=currentElement()->getNext();
if(nextElement!=0L){
nextElement->insertElement(newElement=new TextElement(this));
}else
currentElement()->setNext(newElement=new TextElement(this,currentElement()));
}
newElement->setContent(cont);
setActiveElement(newElement);
emitModified();
}
kformula'KFormulaDoc::mousePressEvent() (./koffice/kformula/kformula_doc.cc:372)
void KFormulaDoc::mousePressEvent( QMouseEvent *a,QWidget *wid)
{
setActiveElement(theFirstElement->isInside(a->pos()));
/* if(currentElement()!=0)
currentElement()->setPosition(-2);
*/ emitModified();
if(a->button()==RightButton){
QPopupMenu *mousepopup = new QPopupMenu;
QPopupMenu *convert = new QPopupMenu;
QPopupMenu *fontpopup = new QPopupMenu;
fontpopup->insertItem(i18n("Font +"), this, SLOT(enlarge()), ALT+Key_K);
fontpopup->insertItem(i18n("Font -"), this, SLOT(reduce()), ALT+Key_K);
fontpopup->insertItem(i18n("Font + (also Children)"), this, SLOT(enlargeRecur()), ALT+Key_K);
fontpopup->insertItem(i18n("Font - (also Children)"), this, SLOT(reduceRecur()), ALT+Key_K);
fontpopup->insertItem(i18n("All Font +"), this, SLOT(enlargeAll()), ALT+Key_K);
fontpopup->insertItem(i18n("All Font -"), this, SLOT(reduceAll()), ALT+Key_K);
// convert->insertItem(klocale("Simple Text"), parent->_part, SLOT(slotQuit()), ALT+Key_E);
// convert->insertItem("AAAARGGHHH", _part, SLOT(slotQuit()), ALT+Key_E);
mousepopup->insertItem(i18n("Properties"), this,SLOT(pro()), ALT+Key_E);
mousepopup->insertItem(i18n("Delete"), this,SLOT(dele()), ALT+Key_E);
mousepopup->insertSeparator();
mousepopup->insertItem(i18n("Change font"),fontpopup);
mousepopup->insertItem(i18n("Export as"),convert);
// mousepopup->insertSeparator();
// mousepopup->insertItem(i18n("Quit"), _part, SLOT(slotQuit()), ALT+Key_Q);
mousepopup->popup(wid->mapToGlobal(a->pos()));
}
}
kformula'KFormulaDoc::keyPressEvent() (./koffice/kformula/kformula_doc.cc:402)
void KFormulaDoc::keyPressEvent( QKeyEvent *k )
{
cerr << " key received , " << k->ascii() << endl;
warning("Key pressed %i, ascii:%i",k->key(),k->ascii());
int elReturn=0;
if((k->ascii()>=32)&&(k->ascii()<127))
{
switch(k->ascii())
{
case '[':
addBracketElement("[]");
break;
case '(':
addBracketElement(DEFAULT_DELIMITER);
break;
case '|':
addBracketElement("||");
break;
case '/':
addFractionElement(DEFAULT_FRACTION);
break;
case '@':
addRootElement();
break;
case '^':
addIndex(IN_TOPRIGHT);
break;
case '_':
addIndex(IN_BOTTOMRIGHT);
break;
default:
{
if (currentElement()!=0L)
{
int po=eList.current()->pos;
if (po>0)
{
QString text;
po--;
warning("Internal Text Position %d",po);
text=currentElement()->getContent().copy();
text.insert(po,k->ascii());
currentElement()->setContent(text);
thePosition=eList.at();
warning("thePosition %d int:%d",thePosition,eList.current()->pos);
eList.clear();
theFirstElement->makeList();
thePosition++;
eList.at(thePosition);
warning("the New Position %d int:%d",thePosition,eList.current()->pos);
}
else
elReturn=FCOM_ADDTEXT;
}
} //default
} //Switch
} //if
else //Not ascii
{
int action=k->key();
if (currentElement()!=0L)
{
int po=eList.current()->pos;
if (po>0)
{
}
}
if(action==Qt::Key_BackSpace)
{
if(eList.prev()->element!=0)
action=Qt::Key_Delete;
else
eList.next();
}
if(action==Qt::Key_Delete)
{
warning("Key Delete");
if(eList.current()->pos>=0)
{
QString text;
text=currentElement()->getContent().copy();
text.remove(eList.current()->pos-1,1);
currentElement()->setContent(text);
thePosition=eList.at();
eList.clear();
theFirstElement->makeList();
eList.at(thePosition);
}
else {
if(eList.current()->pos==0)
elReturn=FCOM_DELETEME;
else
if(eList.next()->element!=0)
elReturn=FCOM_DELETEME;
else
eList.prev();
}
}
if(action==Qt::Key_Left)
{
/* if(eList.current()->pos==0)
{
if(eList.prev()->pos==-1)
eList.prev();
}
else*/
eList.prev();
}
if(action==Qt::Key_Right)
{/*
if(eList.current()->pos==-1)
{
if(eList.next()->pos==0)
eList.next();
}
else
*/ eList.next();
}
warning("Not Ascii return %d",elReturn);
thePosition=eList.at();
}
if (elReturn==FCOM_ADDTEXT)
{
if(eList.current()->pos==0)
{
BasicElement *newElement;
currentElement()->insertElement(newElement=new TextElement(this));
setActiveElement(newElement);
} else addTextElement();
if((k->ascii()>32)&&(k->ascii()<127))
{
QString text;
int po=0;
warning("Internal Text Position %d",po);
text=currentElement()->getContent().copy();
text.insert(po,k->ascii());
currentElement()->setContent(text);
thePosition=eList.at();
warning("thePosition %d int:%d",thePosition,eList.current()->pos);
eList.clear();
theFirstElement->makeList();
thePosition++;
eList.at(thePosition);
warning("the New Position %d int:%d",thePosition,eList.current()->pos);
}
}
if (elReturn==FCOM_DELETEME)
{
BasicElement *newActive;
BasicElement *prev;
newActive=currentElement()->getNext();
prev=currentElement()->getPrev();
currentElement()->deleteElement();
if(prev!=0)
prev->check();
setActiveElement(newActive);
}
emitModified();
}
kformula'KFormulaDoc::paintEvent() (./koffice/kformula/kformula_doc.cc:590)
void KFormulaDoc::paintEvent( QPaintEvent *, QWidget *paintGround )
{
/* //paintGround->size()
QPixmap pm(100,100); //double buffer
pm.fill();
QPainter q;
thePainter=&q;
*/
thePainter->begin(paintGround);
thePainter->setPen( black );
theFirstElement->checkSize();
if(currentElement()!=0L)
currentElement()->setActive(true);
theFirstElement->draw(QPoint(5,5)-theFirstElement->getSize().topLeft());
// if(currentElement() && typeid(*currentElement()) == typeid(TextElement))
// {
//thePainter->drawWinFocusRect(theCursor);
theCursor=currentElement()->getCursor(eList.current()->pos);
thePainter->drawLine(theCursor.topLeft()+QPoint(0,1),theCursor.topRight()+QPoint(0,1));
thePainter->drawLine(theCursor.bottomLeft()-QPoint(0,1),theCursor.bottomRight()-QPoint(0,1));
thePainter->drawLine(theCursor.topLeft()+QPoint(theCursor.width()/2,1),
theCursor.bottomLeft()+QPoint(theCursor.width()/2,-1));
// }
thePainter->end();
// bitBlt(paintGround,0,0,&pm,0,0,-1,-1);
}
kformula'KFormulaDoc::print() (./koffice/kformula/kformula_doc.cc:617)
void KFormulaDoc::print( QPrinter *thePrt)
{
setActiveElement(0L);
thePainter->begin(thePrt);
thePainter->setPen( black );
theFirstElement->checkSize();
theFirstElement->draw(QPoint(0,0)-theFirstElement->getSize().topLeft());
thePainter->end();
}
kformula'KFormulaDoc::setActiveElement() (./koffice/kformula/kformula_doc.cc:627)
void KFormulaDoc::setActiveElement(BasicElement* c)
{
warning("Set active element old %p new %p",currentElement(),c);
eList.clear();
thePosition=-1;
theFirstElement->makeList();
for(eList.first();eList.current()!=0;eList.next())
if(currentElement()==c)
thePosition=eList.at();
eList.at(thePosition);
/* if(currentElement())
currentElement()->setActive(false);
if (c!=0)
c->setActive(true);
eList.clear();
warning("clear list");
thePosition=-1;
theFirstElement->makeList(1);
eList.at(thePosition);*/
warning("New Active Element %p",c);
}
kformula'KFormulaDoc::KFormulaDoc() (./koffice/kformula/kformula_doc.cc:656)
KFormulaDoc::KFormulaDoc( KoDocument* parent, const char* name )
: KoDocument( parent, name )
{
// setFocusPolicy( ClickFocus );
thePosition=0;
thePainter = new QPainter();
warning("General Settings");
theFont.setFamily( "utopia" );
theFont.setPointSize(DEFAULT_FONT_SIZE);
theFont.setWeight( QFont::Normal );
theFont.setItalic( false );
theColor=black;
warning("General Font OK");
// theActiveElement = 0;
// Use CORBA mechanism for deleting views
m_lstViews.setAutoDelete( false );
m_bModified = false;
m_bEmpty = true;
theFirstElement= new BasicElement(this,0L,-1,0L,"");
addElement(theFirstElement, 0);
addElement(theFirstElement, -1);
eList.at(0);
thePosition=0;
warning("SIZE OF: basic:%i,text:%i,root:%i",sizeof(BasicElement),
sizeof(TextElement),sizeof(RootElement));
}
kformula'KFormulaDoc::initDoc() (./koffice/kformula/kformula_doc.cc:691)
bool KFormulaDoc::initDoc()
{
// If nothing is loaded, do initialize here
return TRUE;
}
kformula'KFormulaDoc::mimeType() (./koffice/kformula/kformula_doc.cc:697)
QCString KFormulaDoc::mimeType() const
{
return "application/x-kformula";
}
kformula'KFormulaDoc::createView() (./koffice/kformula/kformula_doc.cc:702)
KoView* KFormulaDoc::createView( QWidget* parent, const char* name )
{
KFormulaView* view = new KFormulaView( this, parent, name );
addView( view );
return view;
}
kformula'KFormulaDoc::createShell() (./koffice/kformula/kformula_doc.cc:710)
KoMainWindow* KFormulaDoc::createShell()
{
KoMainWindow* shell = new KFormulaShell;
// shell->setRootPart( this );
shell->show();
return shell;}
kformula'KFormulaDoc::paintContent() (./koffice/kformula/kformula_doc.cc:718)
void KFormulaDoc::paintContent( QPainter& painter, const QRect& rect, bool /*transparent*/ )
{
// ####### handle transparency
// Need to draw only the document rectangle described in the parameter rect.
QPainter *old=thePainter;
thePainter=&painter;
theFirstElement->checkSize();
if(currentElement()!=0L)
currentElement()->setActive(false);
theFirstElement->draw(QPoint(5,5)-theFirstElement->getSize().topLeft());
if(currentElement()!=0L)
currentElement()->setActive(true);
thePainter=old;
}
kformula'KFormulaDoc::configFile() (./koffice/kformula/kformula_doc.cc:735)
QString KFormulaDoc::configFile() const
{
// return readConfigFile( locate( "data", "kformula/kformula.rc",
// KFormulaFactory::global() ) );
// return readConfigFile( "kformula.rc" );
}