diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kspread/kspread_doc.h | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kspread/kspread_doc.h')
-rw-r--r-- | kspread/kspread_doc.h | 736 |
1 files changed, 736 insertions, 0 deletions
diff --git a/kspread/kspread_doc.h b/kspread/kspread_doc.h new file mode 100644 index 00000000..e1bd50e4 --- /dev/null +++ b/kspread/kspread_doc.h @@ -0,0 +1,736 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Ariya Hidayat <ariya@kde.org> + (C) 2002-2003 Norbert Andres <nandres@web.de> + (C) 2000-2005 Laurent Montel <montel@kde.org> + (C) 2002 John Dailey <dailey@vt.edu> + (C) 2002 Phillip Mueller <philipp.mueller@gmx.de> + (C) 2000 Werner Trobin <trobin@kde.org> + (C) 1999-2000 Simon Hausmann <hausmann@kde.org> + (C) 1999 David Faure <faure@kde.org> + (C) 1998-2000 Torben Weis <weis@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#ifndef KSPREAD_DOC +#define KSPREAD_DOC + +#include <qmap.h> +#include <qobject.h> +#include <qpainter.h> +#include <qrect.h> +#include <qstring.h> +#include <qvaluelist.h> + +#include <kcompletion.h> + +#include <KoDocument.h> +#include <KoZoomHandler.h> + +#include "kspread_global.h" + +class KCommand; + +class KoCommandHistory; +class KoGenStyles; +class KoOasisSettings; +class KoPicture; +class KoPictureCollection; +class KoPictureKey; +class KoStore; +class KoXmlWriter; + +class DCOPObject; +class QDomDocument; +class KSpellConfig; + +#define MIME_TYPE "application/x-kspread" + +namespace KSpread +{ +class Damage; +class ValueParser; +class ValueConverter; +class ValueFormatter; +class ValueCalc; +class Sheet; +class Doc; +class View; +class Map; +class Region; +class StyleManager; +class UndoAction; +class KSPLoadingInfo; +class EmbeddedObject; + +struct Reference +{ + QString sheet_name; + QString ref_name; + QRect rect; +}; + +class Plugin +{ + public: + Plugin() {} + virtual ~Plugin() {} + virtual QDomElement saveXML( QDomDocument & doc ) const = 0; +}; + +/** + * This class holds the data that makes up a spreadsheet. + */ +class KSPREAD_EXPORT Doc : public KoDocument, public KoZoomHandler +{ + Q_OBJECT + Q_PROPERTY( bool getShowRowHeader READ getShowRowHeader ) + Q_PROPERTY( bool getShowColHeader READ getShowColHeader ) + Q_PROPERTY( double getIndentValue READ getIndentValue WRITE setIndentValue ) + Q_PROPERTY( bool getShowMessageError READ getShowMessageError WRITE setShowMessageError) + Q_PROPERTY( bool dontCheckUpperWord READ dontCheckUpperWord WRITE setDontCheckUpperWord) + Q_PROPERTY( bool dontCheckTitleCase READ dontCheckTitleCase WRITE setDontCheckTitleCase) + + Q_PROPERTY( int syntaxVersion READ syntaxVersion ) + Q_PROPERTY( bool showVerticalScrollBar READ showVerticalScrollBar WRITE setShowVerticalScrollBar ) + Q_PROPERTY( bool showHorizontalScrollBar READ showHorizontalScrollBar WRITE setShowHorizontalScrollBar ) + Q_PROPERTY( bool showColumnHeader READ showColumnHeader WRITE setShowColumnHeader ) + Q_PROPERTY( bool showRowHeader READ showRowHeader WRITE setShowRowHeader ) + Q_PROPERTY( bool showStatusBar READ showStatusBar WRITE setShowStatusBar ) + Q_PROPERTY( bool showFormulaBar READ showFormulaBar WRITE setShowFormulaBar ) + Q_PROPERTY( bool showTabBar READ showTabBar WRITE setShowTabBar ) + Q_PROPERTY( int undoRedoLimit READ undoRedoLimit WRITE setUndoRedoLimit ) + +public: + + /** + * Creates a new document. + */ + Doc( QWidget *parentWidget = 0, const char *widgetName = 0, QObject* parent = 0, + const char* name = 0, bool singleViewMode = false ); + + /** + * Destroys the document. + */ + ~Doc(); + + /** + * Possible values for the "type" argument of the KoGenStyle constructor. + */ + enum { STYLE_PAGE = 20, + STYLE_COLUMN_USER, /**< commmon column styles */ + STYLE_COLUMN_AUTO, /**< auto column styles */ + STYLE_ROW_USER, /**< common row styles */ + STYLE_ROW_AUTO, /**< auto row styles */ + STYLE_CELL_USER, + STYLE_CELL_AUTO, + STYLE_PAGEMASTER, + STYLE_NUMERIC_NUMBER }; + + /** + * Returns list of all documents. + */ + static QValueList<Doc*> documents(); + + /** + * Returns the MIME type of KSpread document. + */ + virtual QCString mimeType() const { return MIME_TYPE; } + + KLocale *locale () const; + Map *map () const; + StyleManager *styleManager () const; + ValueParser *parser () const; + ValueFormatter *formatter () const; + ValueConverter *converter () const; + ValueCalc *calc () const; + + /** + * Adds a command to the command history. The command itself + * would not be executed. + */ + void addCommand( KCommand* command ); + + /* + * Adds an undo object. This is the same as addCommand, except + * that it accepts Undo instance. Once every undo object + * is converted to KCommand, this function will be obsoleted. + */ + void addCommand( UndoAction* command ); + + /** + * Undoes the last operation. + */ + void undo(); + + /** + * Redoes the last undo. + */ + void redo(); + + /** + * Locks the undo buffer. + */ + void undoLock(); + + /** + * Releases lock of undo buffer. + */ + void undoUnlock(); + + /** + * Returns true if undo buffer is locked. + */ + bool undoLocked() const; + + /** + * Returns the command history for the document. This is used + * in View for updating the actions (i.e through + * signal KoCommandHistory::commandExecuted) + */ + KoCommandHistory* commandHistory(); + + /** + * Returns the name of the unit used to display margins. + * For example, if unit() returns KoUnit::U_MM, then + * this functions return "mm". + */ + QString unitName() const; + + /** + * Returns the syntax version of the currently opened file + */ + int syntaxVersion( ) const; + + /** + * If b is true, vertical scrollbar is visible, otherwise + * it will be hidden. + */ + void setShowVerticalScrollBar( bool b ); + + /** + * Returns true if vertical scroll bar is visible. + */ + bool showVerticalScrollBar() const; + + /** + * \deprecated Use showVerticalScrollBar(). + */ + bool getShowVerticalScrollBar() const { return showVerticalScrollBar(); } + + /** + * If b is true, horizontal scrollbar is visible, otherwise + * it will be hidden. + */ + void setShowHorizontalScrollBar( bool b ); + + /** + * Returns true if horizontal scroll bar is visible. + */ + bool showHorizontalScrollBar() const; + + /** + * \deprecated Use showHorizontalScrollBar(). + */ + bool getShowHorizontalScrollBar() const { return showHorizontalScrollBar(); } + + /** + * If b is true, column header is visible, otherwise + * it will be hidden. + */ + void setShowColumnHeader( bool b ); + + /** + * Returns true if column header is visible. + */ + bool showColumnHeader() const; + + /** + * \deprecated Use setShowColumnHeader(). + */ + void setShowColHeader( bool b ){ setShowColumnHeader( b ) ; } + + /** + * \deprecated Use showColumnHeader(). + */ + bool getShowColHeader() const { return showColumnHeader(); } + + /** + * If b is true, row header is visible, otherwise + * it will be hidden. + */ + void setShowRowHeader( bool b ); + + /** + * Returns true if row header is visible. + */ + bool showRowHeader() const; + + /** + * \deprecated Use showRowHeader(). + */ + bool getShowRowHeader() const { return showRowHeader(); } + + /** + * Sets the color of the grid. + */ + void setGridColor( const QColor& color ); + + /** + * Returns the color of the grid. + */ + QColor gridColor() const; + + /** + * Sets the indentation value. + */ + void setIndentValue( double val ); + + /** + * Returns the indentation value. + */ + double indentValue() const; + + /** + * \deprecated Use indentValue(). + */ + double getIndentValue() const { return indentValue(); } + + /** + * If b is true, status bar is visible, otherwise + * it will be hidden. + */ + void setShowStatusBar( bool b ); + + /** + * Returns true if status bar is visible. + */ + bool showStatusBar() const; + + /** + * \deprecated Use showStatusBar(). + */ + bool getShowStatusBar() const { return showStatusBar(); } + + /** + * If b is true, tab bar is visible, otherwise + * it will be hidden. + */ + void setShowTabBar( bool b ); + + /** + * Returns true if tab bar is visible. + */ + bool showTabBar() const; + + /** + * \deprecated Use showTabBar(). + */ + bool getShowTabBar() const { return showTabBar(); } + + /** + * If b is true, formula bar is visible, otherwise + * it will be hidden. + */ + void setShowFormulaBar( bool b ); + + /** + * Returns true if formula bar is visible. + */ + bool showFormulaBar() const; + + /** + * \deprecated Use showFormulaBar(). + */ + bool getShowFormulaBar() const { return showFormulaBar(); } + + /** + * If b is true, an error message will pop up whenever error occurs. + */ + void setShowMessageError( bool b ); + + /** + * Returns true if error message should pop up whenever error occurs. + */ + bool showMessageError() const; + + /** + * \deprecated Use showMessageError(). + */ + bool getShowMessageError() const{ return showMessageError(); } + + /** + * completion mode + */ + + KGlobalSettings::Completion completionMode( )const ; + void setCompletionMode( KGlobalSettings::Completion _complMode); + + KSpread::MoveTo getMoveToValue()const; + void setMoveToValue(KSpread::MoveTo _moveTo) ; + + /** + * Method of calc + */ + void setTypeOfCalc( MethodOfCalc _calc); + MethodOfCalc getTypeOfCalc() const; + + + /** + * get custom kspell config + */ + void setKSpellConfig(KSpellConfig _kspell); + KSpellConfig * getKSpellConfig(); + + bool dontCheckUpperWord() const; + void setDontCheckUpperWord(bool _b); + + bool dontCheckTitleCase() const; + void setDontCheckTitleCase(bool _b); + + QColor pageBorderColor() const; + void changePageBorderColor( const QColor & _color); + + virtual bool completeSaving( KoStore* _store ); + + virtual QDomDocument saveXML(); + + enum SaveFlag { SaveAll, SaveSelected }; // kpresenter and kword have have SavePage too + + bool savingWholeDocument(); + + /** + * Save the whole document, or just the selection, into OASIS format + * When saving the selection, also return the data as plain text and/or plain picture, + * which are used to insert into the KMultipleDrag drag object. + * + * @param store the KoStore to save into + * @param manifestWriter pointer to a koxmlwriter to add entries to the manifest + * @param saveFlag either the whole document, or only the selected text/objects. + * @param plainText must be set when saveFlag==SaveSelected. + * It returns the plain text format of the saved data, when available. + * @param picture must be set when saveFlag==SaveSelected. + * It returns the selected picture, when exactly one picture was selected. + */ + bool saveOasisHelper( KoStore* store, KoXmlWriter* manifestWriter, SaveFlag saveFlag, + QString* plainText = 0, KoPicture* picture = 0 ); + + virtual bool saveOasis( KoStore* store, KoXmlWriter* manifestWriter ); + void saveOasisDocumentStyles( KoStore* store, KoGenStyles& mainStyles ) const; + virtual int supportedSpecialFormats() const; + + virtual bool loadXML( QIODevice *, const QDomDocument& doc ); + virtual bool loadOasis( const QDomDocument& doc, KoOasisStyles& oasisStyles, const QDomDocument& settings, KoStore* ); + virtual bool loadChildren( KoStore* _store ); + QDomElement saveAreaName( QDomDocument& doc ) ; + void saveOasisAreaName( KoXmlWriter & xmlWriter ); + + void loadAreaName( const QDomElement& element ); + void loadOasisAreaName( const QDomElement& element ); + void loadOasisCellValidation( const QDomElement&body ); + + virtual void addView( KoView *_view ); + + virtual bool initDoc(InitDocFlags flags, QWidget* parentWidget=0); + + /** + * Change the zoom factor to @p z (e.g. 150 for 150%) + * and/or change the resolution, given in DPI. + * This is done on startup and when printing. + * The same call combines both so that all the updating done behind + * the scenes is done only once, even if both zoom and DPI must be changed. + */ + virtual void setZoomAndResolution( int zoom, int dpiX, int dpiY ); + + /** + * updates all properties after zoom changed + */ + void newZoomAndResolution( bool updateViews, bool forPrint ); + + // virtual void printMap( QPainter & _painter ); + + void enableUndo( bool _b ); + void enableRedo( bool _b ); + + /** + * @return true if the document is currently loading. + */ + bool isLoading() const; + + /** + Prevents painting. Useful when importing data. + * @param status switch the painting on/off + */ + void doNotPaint(bool status); + + virtual void paintContent( QPainter & painter, const QRect & rect, bool transparent = false, + double zoomX = 1.0, double zoomY = 1.0 ); + void paintContent( QPainter & painter, const QRect & rect, bool transparent, + Sheet * sheet, bool drawCursor = true ); + + bool docData( QString const & xmlTag, QDomElement & data ); + void deregisterPlugin( Plugin * plugin ); + void registerPlugin( Plugin * plugin ); + + /** + * Primary entry point for painting. Use this function to paint groups of cells + * + * @param painter the painter object to use. This should already be + * initialized with the world matrix. The begin and end calls + * should surround this function. + * + * @param viewRect the document coordinates showing what is actually visible in + * the screen + * + * @param view the view of the region -- may be NULL but no selection markers + * can be passed in that case. + * + * @param cellRegions a list of rectangles indicating the cell ranges needing + * painted. + * + * @param sheet the sheet which the cells in cellRegions come from + * + * @param drawCursor whether or not to draw the selection rectangle and the choose + * marker + */ + void paintCellRegions(QPainter& painter, const QRect &viewRect, + View* view, + QValueList<QRect> cellRegions, + const Sheet* sheet, bool drawCursor); + + virtual DCOPObject* dcopObject(); + + void addAreaName(const QRect &_rect,const QString & name,const QString & sheetName); + const QValueList<Reference> & listArea(); + void removeArea( const QString &name); + KCompletion & completion(); + void addStringCompletion(const QString & stringCompletion); + + void changeAreaSheetName(const QString & oldName,const QString &sheetName); + + + QRect getRectArea(const QString & _sheetName); + + /** + * Inserts an object to the object list. + */ + void insertObject( EmbeddedObject * obj ); + /** + * @return the list of all embedded objects (charts, pictures and koffice objects) Use insertObject to add an object to the list. + */ + QPtrList<EmbeddedObject>& embeddedObjects(); + KoPictureCollection *pictureCollection(); + + void initConfig(); + void saveConfig(); + void refreshLocale(); + + /** + * Functions to begin a kspread 'operation'. Calls to emitBeginOperation + * and emitEndOperation should surround each logical user operation. + * During the operation, the following should hold true: + * - No painting will be done to the screen + * - No cell calculation will be done (maybe there are exceptions, such + * as the goalseek operation needs to calculate values) + * During an operation, calls to Sheet::setRegionPaintDirty mark + * regions as needing repainted. Once the emitEndOperation function is + * called, those regions will be painted all at once, values being calculated + * as necessary. + * Calls to begin/endOperation may be nested. Calcualation/painting will + * be delayed until the outer begin/end pair has finished. + * + * The waitCursor parameter specifies whether to put the hourglass + * up during the operation. + * + */ + void emitBeginOperation(bool waitCursor); + + /** default override of koDocument version. Changes the cursor to an + * hourglass + */ + virtual void emitBeginOperation(); + + /** + * Mark the end of an operation and triggers a repaint of any cells or regions of cells which + * have been marked as 'dirty' via calls to Sheet::setRegionPaintDirty + * See above comment to emitBeginOperation(bool). + */ + virtual void emitEndOperation(); + + /** + * s.a. difference does only specified tasks and thats why it improves performance + * significantly. rect normally are the visible cells/the cells that need to be updated. + * + * TODO: This is essentially redundant now since emitEndOperation behaviour has been fixed to + * only update cells that were already in the paint dirty list. + */ + void emitEndOperation( const Region& region ); + + bool delayCalculation() const; + + + void updateBorderButton(); + + void insertSheet( Sheet * sheet ); + void takeSheet( Sheet * sheet ); + + // The user-chosen global unit + + static QString getAttribute(const QDomElement &element, const char *attributeName, const QString &defaultValue) + { + return element.attribute( attributeName, defaultValue ); + } + + static int getAttribute(const QDomElement &element, const char *attributeName, int defaultValue) + { + QString value; + if ( ( value = element.attribute( attributeName ) ) != QString::null ) + return value.toInt(); + else + return defaultValue; + } + + static double getAttribute(const QDomElement &element, const char *attributeName, double defaultValue) + { + QString value; + if ( ( value = element.attribute( attributeName ) ) != QString::null ) + return value.toDouble(); + else + return defaultValue; + } + + void addIgnoreWordAll( const QString & word); + void clearIgnoreWordAll( ); + void addIgnoreWordAllList( const QStringList & _lst); + QStringList spellListIgnoreAll() const ; + + void setDisplaySheet(Sheet *_Sheet ); + Sheet * displaySheet() const; + + /** + * @return the loading info + */ + KSPLoadingInfo* loadingInfo() const; + + /** + * deletes the loading info after loading is complete + */ + void deleteLoadingInfo(); + + void increaseNumOperation(); + void decreaseNumOperation(); + + void addDamage( Damage* damage ); + +/* Function specific when we load config from file */ + void loadConfigFromFile(); + bool configLoadFromFile() const; + + // repaint (update) all views + void repaint( const QRect& ); + void repaint( EmbeddedObject* ); + void repaint( const KoRect& ); + + virtual void addShell( KoMainWindow *shell ); + + int undoRedoLimit() const; + void setUndoRedoLimit(int _val); + +public slots: + + //void newView(); obsloete (Werner) + + void refreshInterface(); + + void flushDamages(); + +signals: + // Document signals + /** + * Emitted if all views have to be updated. + */ + void sig_updateView(); + /** + * Emitted if all interfaces have to be updated. + */ + void sig_refreshView(); + /** + * Emitted if we update to locale system + */ + void sig_refreshLocale(); + + void sig_addAreaName( const QString & ); + void sig_removeAreaName( const QString & ); + + void damagesFlushed( const QValueList<Damage*>& damages ); + +protected slots: + void commandExecuted(); + void documentRestored(); + + virtual void openTemplate( const QString& file ); + virtual void initEmpty(); + +protected: + KoView* createViewInstance( QWidget* parent, const char* name ); + + void makeUsedPixmapList(); + void insertPixmapKey( KoPictureKey key ); + + /** + * Overloaded function of @ref KoDocument. + */ + virtual bool completeLoading( KoStore* ); + + /** + * Overloaded function of @ref KoDocument. + */ + virtual bool saveChildren( KoStore* _store ); + + class SavedDocParts : public QMap<QString, QDomElement> {}; + SavedDocParts m_savedDocParts; + +private: + class Private; + Private* d; + + // don't allow copy or assignment + Doc( const Doc& ); + Doc& operator=( const Doc& ); + + /* helper functions for painting */ + + /** + * This function is called at the end of an operation and is responsible + * for painting any changes that have occurred in the meantime + */ + void paintUpdates(); + + void PaintRegion(QPainter& painter, const KoRect &viewRegion, + View* view, const QRect &paintRegion, + const Sheet* sheet); + + void loadPaper( QDomElement const & paper ); + + void saveOasisSettings( KoXmlWriter &settingsWriter ); + void loadOasisSettings( const QDomDocument&settingsDoc ); + void loadOasisIgnoreList( const KoOasisSettings& settings ); + KSPLoadingInfo *m_loadingInfo; +}; + +} // namespace KSpread + +#endif /* KSPREAD_DOC */ |