lib Library API Documentation

kformulacommand.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 2001 Andrea Rizzi <rizzi@kde.org>
00003                   Ulrich Kuettler <ulrich.kuettler@mailbox.tu-dresden.de>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public License
00016    along with this library; see the file COPYING.LIB.  If not, write to
00017    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018    Boston, MA 02111-1307, USA.
00019 */
00020 
00021 #ifndef KFORMULACOMMAND_H
00022 #define KFORMULACOMMAND_H
00023 
00024 #include <qmap.h>
00025 #include <qptrlist.h>
00026 #include <qvaluevector.h>
00027 
00028 #include <kcommand.h>
00029 
00030 #include "fontstyle.h"
00031 #include "kformulacontainer.h"
00032 #include "formulacursor.h"
00033 
00034 KFORMULA_NAMESPACE_BEGIN
00035 
00036 
00051 class PlainCommand : public KNamedCommand
00052 {
00053 public:
00054 
00063     PlainCommand(const QString& name);
00064     virtual ~PlainCommand();
00065 
00069     static int getEvilDestructionCount() { return evilDestructionCount; }
00070 
00071 private:
00072 
00073     // debug
00074     static int evilDestructionCount;
00075 };
00076 
00077 
00078 class Command : public PlainCommand
00079 {
00080 public:
00081 
00091     Command(const QString& name, Container* document);
00092     virtual ~Command();
00093 
00094 protected:
00095 
00100     FormulaCursor* getExecuteCursor();
00101 
00106     FormulaCursor* getUnexecuteCursor();
00107 
00114     void setUnexecuteCursor(FormulaCursor* cursor);
00115 
00120     FormulaCursor* getActiveCursor() { return doc->activeCursor(); }
00121 
00126     void testDirty() { doc->testDirty(); }
00127 
00131     Container* getDocument() const { return doc; }
00132 
00133 private:
00134 
00135     void destroyUndoCursor() { delete undocursor; undocursor = 0; }
00136 
00140     void setExecuteCursor(FormulaCursor* cursor);
00141 
00145     FormulaCursor::CursorData* cursordata;
00146 
00150     FormulaCursor::CursorData* undocursor;
00151 
00155     Container* doc;
00156 };
00157 
00158 
00162 class KFCAdd : public Command
00163 {
00164 public:
00165 
00166     KFCAdd(const QString &name, Container* document);
00167 
00168     virtual void execute();
00169     virtual void unexecute();
00170 
00174     void addElement(BasicElement* element) { addList.append(element); }
00175 
00176 private:
00177 
00182     QPtrList<BasicElement> addList;
00183 };
00184 
00185 
00190 class KFCRemoveSelection : public Command
00191 {
00192 public:
00193 
00197     KFCRemoveSelection(Container* document,
00198                        Direction dir = beforeCursor);
00199 
00200     virtual void execute();
00201     virtual void unexecute();
00202 
00203 private:
00204 
00209     QPtrList<BasicElement> removedList;
00210 
00211     Direction dir;
00212 };
00213 
00214 
00219 class KFCReplace : public KFCAdd
00220 {
00221 public:
00222 
00223     KFCReplace(const QString &name, Container* document);
00224     ~KFCReplace();
00225 
00226     virtual void execute();
00227     virtual void unexecute();
00228 
00229 private:
00230 
00234     KFCRemoveSelection* removeSelection;
00235 };
00236 
00237 
00242 class KFCRemove : public Command
00243 {
00244 public:
00245 
00249     KFCRemove(Container* document, Direction dir);
00250     ~KFCRemove();
00251 
00252     virtual void execute();
00253     virtual void unexecute();
00254 
00259     //virtual bool isSenseless() { return removedList.isEmpty(); }
00260 
00261 private:
00262 
00267     QPtrList<BasicElement> removedList;
00268 
00272     BasicElement* element;
00273 
00279     FormulaCursor::CursorData* simpleRemoveCursor;
00280 
00281     Direction dir;
00282 };
00283 
00284 
00288 class KFCRemoveEnclosing : public Command
00289 {
00290 public:
00291     KFCRemoveEnclosing(Container* document, Direction dir);
00292     ~KFCRemoveEnclosing();
00293 
00294     virtual void execute();
00295     virtual void unexecute();
00296 
00297 private:
00298     BasicElement* element;
00299 
00300     Direction direction;
00301 };
00302 
00303 
00308 class KFCAddReplacing : public Command
00309 {
00310 public:
00311     KFCAddReplacing(const QString &name, Container* document);
00312     ~KFCAddReplacing();
00313 
00314     virtual void execute();
00315     virtual void unexecute();
00316 
00317     void setElement(BasicElement* e) { element = e; }
00318 
00319 private:
00320 
00324     BasicElement* element;
00325 };
00326 
00327 
00332 class KFCAddGenericIndex : public KFCAdd
00333 {
00334 public:
00335 
00336     KFCAddGenericIndex(Container* document, ElementIndexPtr index);
00337 
00338     virtual void execute();
00339 
00340 private:
00341     ElementIndexPtr index;
00342 };
00343 
00344 
00345 class IndexElement;
00346 
00350 class KFCAddIndex : public KFCAddReplacing
00351 {
00352 public:
00353 
00354     KFCAddIndex(Container* document, IndexElement* element, ElementIndexPtr index);
00355     ~KFCAddIndex();
00356 
00357     virtual void execute();
00358     virtual void unexecute();
00359 
00360 private:
00361     KFCAddGenericIndex addIndex;
00362 };
00363 
00364 
00365 class FormulaElement;
00366 
00367 class KFCChangeBaseSize : public PlainCommand {
00368 public:
00369     KFCChangeBaseSize( const QString& name, Container* document, FormulaElement* formula, int size );
00370 
00371     void execute();
00372     void unexecute();
00373 
00374 private:
00375     Container* m_document;
00376     FormulaElement* m_formula;
00377     int m_size;
00378     int m_oldSize;
00379 };
00380 
00381 
00386 class FontCommand : public Command {
00387 public:
00388     FontCommand( const QString& name, Container* document );
00389 
00393     void addTextElement( TextElement* element ) { list.append(element); }
00394 
00398     void addElement( BasicElement* element ) { elementList.append( element ); }
00399 
00400 protected:
00401 
00402     QPtrList<TextElement>& childrenList() { return list; }
00403 
00404     void collectChildren();
00405 
00406     void parseSequences( const QMap<SequenceElement*, int>& parents );
00407 
00408 private:
00409 
00414     QPtrList<TextElement> list;
00415 
00416     QPtrList<BasicElement> elementList;
00417 };
00418 
00419 
00423 class CharStyleCommand : public FontCommand {
00424 public:
00425     CharStyleCommand( CharStyle cs, const QString& name, Container* document );
00426 
00427     virtual void execute();
00428     virtual void unexecute();
00429 
00430 private:
00431 
00432     typedef QValueVector<CharStyle> StyleList;
00433 
00434     StyleList styleList;
00435     CharStyle charStyle;
00436 };
00437 
00438 
00442 class CharFamilyCommand : public FontCommand {
00443 public:
00444     CharFamilyCommand( CharFamily cf, const QString& name, Container* document );
00445 
00446     virtual void execute();
00447     virtual void unexecute();
00448 
00449 private:
00450 
00451     typedef QValueVector<CharFamily> FamilyList;
00452 
00453     FamilyList familyList;
00454     CharFamily charFamily;
00455 };
00456 
00457 
00458 KFORMULA_NAMESPACE_END
00459 
00460 #endif // KFORMULACOMMAND_H
KDE Logo
This file is part of the documentation for lib Library Version 1.3.5.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Mar 20 14:25:23 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003