summaryrefslogtreecommitdiffstats
path: root/kspread/kspread_doc.cc
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2021-05-23 20:48:35 +0900
committerMichele Calgaro <[email protected]>2021-05-29 15:16:28 +0900
commit8b78a8791bc539bcffe7159f9d9714d577cb3d7d (patch)
tree1328291f966f19a22d7b13657d3f01a588eb1083 /kspread/kspread_doc.cc
parent95834e2bdc5e01ae1bd21ac0dfa4fa1d2417fae9 (diff)
downloadkoffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.tar.gz
koffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.zip
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'kspread/kspread_doc.cc')
-rw-r--r--kspread/kspread_doc.cc2462
1 files changed, 0 insertions, 2462 deletions
diff --git a/kspread/kspread_doc.cc b/kspread/kspread_doc.cc
deleted file mode 100644
index 7643b31d..00000000
--- a/kspread/kspread_doc.cc
+++ /dev/null
@@ -1,2462 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2005-2006 Inge Wallin <[email protected]>
- (C) 2004 Ariya Hidayat <[email protected]>
- (C) 2002-2003 Norbert Andres <[email protected]>
- (C) 2000-2002 Laurent Montel <[email protected]>
- (C) 2002 John Dailey <[email protected]>
- (C) 2002 Phillip Mueller <[email protected]>
- (C) 2000 Werner Trobin <[email protected]>
- (C) 1999-2000 Simon Hausmann <[email protected]>
- (C) 1999 David Faure <[email protected]>
- (C) 1998-2000 Torben Weis <[email protected]>
-
- 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.
-*/
-
-#include <unistd.h>
-#include <assert.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <dirent.h>
-#include <pwd.h>
-
-#include <tqapplication.h>
-#include <tqfileinfo.h>
-#include <tqfont.h>
-#include <tqpair.h>
-
-#include <kstandarddirs.h>
-#include <kdebug.h>
-#include <tdeconfig.h>
-#include <tdemessagebox.h>
-#include <ksconfig.h>
-#include <tdetempfile.h>
-
-#include <KoApplication.h>
-#include <KoCommandHistory.h>
-#include <KoDocumentInfo.h>
-#include <KoDom.h>
-#include <KoMainWindow.h>
-#include <KoOasisSettings.h>
-#include <KoOasisStyles.h>
-#include <KoStoreDevice.h>
-#include <KoTemplateChooseDia.h>
-#include <KoVariable.h>
-#include <KoXmlNS.h>
-#include <KoXmlWriter.h>
-
-#include "kspread_canvas.h"
-#include "kspread_locale.h"
-#include "kspread_map.h"
-#include "kspread_sheet.h"
-#include "kspread_sheetprint.h"
-#include "kspread_style_manager.h"
-#include "kspread_undo.h"
-#include "kspread_util.h"
-#include "kspread_view.h"
-
-#include "commands.h"
-#include "damages.h"
-#include "formula.h"
-#include "functions.h"
-#include "ksploadinginfo.h"
-#include "selection.h"
-#include "valuecalc.h"
-#include "valueconverter.h"
-#include "valueformatter.h"
-#include "valueparser.h"
-
-#include "KSpreadDocIface.h"
-
-#include "kspread_doc.h"
-
-using namespace std;
-using namespace KSpread;
-
-static const int CURRENT_SYNTAX_VERSION = 1;
-// Make sure an appropriate DTD is available in www/koffice/DTD if changing this value
-static const char * CURRENT_DTD_VERSION = "1.2";
-
-class Doc::Private
-{
-public:
-
- Map *map;
- TDELocale *locale;
- StyleManager *styleManager;
- ValueParser *parser;
- ValueFormatter *formatter;
- ValueConverter *converter;
- ValueCalc *calc;
-
- Sheet *activeSheet;
- KSPLoadingInfo *m_loadingInfo;
- static TQValueList<Doc*> s_docs;
- static int s_docId;
-
- DCOPObject* dcop;
-
- // URL of the this part. This variable is only set if the load() function
- // had been called with an URL as argument.
- TQString fileURL;
-
- // for undo/redo
- int undoLocked;
- KoCommandHistory* commandHistory;
-
- // true if loading is in process, otherwise false.
- // This flag is used to avoid updates etc. during loading.
- bool isLoading;
-
- TQColor pageBorderColor;
-
- TQPtrList<Plugin> plugins;
-
- TQValueList<Reference> refs;
- TDECompletion listCompletion;
-
- int numOperations;
-
- TQValueList<Damage*> damages;
-
- // document properties
- int syntaxVersion;
- bool verticalScrollBar:1;
- bool horizontalScrollBar:1;
- bool columnHeader:1;
- bool rowHeader:1;
- TQColor gridColor;
- double indentValue;
- bool showStatusBar:1;
- bool showTabBar:1;
- bool showFormulaBar:1;
- bool showError:1;
- TDEGlobalSettings::Completion completionMode;
- KSpread::MoveTo moveTo;
- MethodOfCalc calcMethod;
- bool delayCalculation:1;
- KSpellConfig *spellConfig;
- bool dontCheckUpperWord:1;
- bool dontCheckTitleCase:1;
- bool configLoadFromFile:1;
- TQStringList spellListIgnoreAll;
- /// list of all objects
- TQPtrList<EmbeddedObject> m_embeddedObjects;
- KoPictureCollection m_pictureCollection;
- TQValueList<KoPictureKey> usedPictures;
- bool m_savingWholeDocument;
-};
-
-/*****************************************************************************
- *
- * Doc
- *
- *****************************************************************************/
-
-TQValueList<Doc*> Doc::Private::s_docs;
-int Doc::Private::s_docId = 0;
-
-Doc::Doc( TQWidget *parentWidget, const char *widgetName, TQObject* parent, const char* name, bool singleViewMode )
- : KoDocument( parentWidget, widgetName, parent, name, singleViewMode )
-{
- d = new Private;
- d->m_loadingInfo = 0L;
-
- d->map = new Map( this, "Map" );
- d->locale = new Locale;
- d->styleManager = new StyleManager();
-
- d->parser = new ValueParser( d->locale );
- d->converter = new ValueConverter ( d->parser );
- d->calc = new ValueCalc( d->converter );
- d->calc->setDoc (this);
- d->formatter = new ValueFormatter( d->converter );
-
- d->activeSheet = 0;
-
- d->pageBorderColor = TQt::red;
- d->configLoadFromFile = false;
-
- TQFont f( KoGlobal::defaultFont() );
- Format::setGlobalRowHeight( f.pointSizeFloat() + 3 );
- Format::setGlobalColWidth( ( f.pointSizeFloat() + 3 ) * 5 );
-
- d->plugins.setAutoDelete( false );
-
- d->delayCalculation = false;
-
- documents().append( this );
-
- setInstance( Factory::global(), false );
- setTemplateType( "kspread_template" );
-
- d->dcop = 0;
- d->isLoading = false;
- d->numOperations = 1; // don't start repainting before the GUI is done...
-
- d->undoLocked = 0;
- d->commandHistory = new KoCommandHistory( actionCollection() );
- connect( d->commandHistory, TQT_SIGNAL( commandExecuted() ), TQT_SLOT( commandExecuted() ) );
- connect( d->commandHistory, TQT_SIGNAL( documentRestored() ), TQT_SLOT( documentRestored() ) );
-
-
- // Make us scripsheet if the document has a name
- // Set a name if there is no name specified
- if ( !name )
- {
- TQString tmp( "Document%1" );
- tmp = tmp.arg( d->s_docId++ );
- setName( tmp.local8Bit());//tmp.latin1() );
- dcopObject();
- }
- else
- dcopObject();
-
- // default document properties
- d->syntaxVersion = CURRENT_SYNTAX_VERSION;
- d->verticalScrollBar = true;
- d->horizontalScrollBar = true;
- d->columnHeader = true;
- d->rowHeader = true;
- d->gridColor = TQt::lightGray;
- d->indentValue = 10.0;
- d->showStatusBar = true;
- d->showFormulaBar = true;
- d->showTabBar = true;
- d->showError = false;
- d->calcMethod = SumOfNumber;
- d->moveTo = KSpread::Bottom;
- d->completionMode = TDEGlobalSettings::CompletionAuto;
- d->spellConfig = 0;
- d->dontCheckUpperWord = false;
- d->dontCheckTitleCase = false;
-}
-
-Doc::~Doc()
-{
- //don't save config when kword is embedded into konqueror
- if(isReadWrite())
- saveConfig();
-
- delete d->dcop;
- d->s_docs.remove( this );
-
- kdDebug(36001) << "alive 1" << endl;
-
- delete d->commandHistory;
-
- delete d->spellConfig;
-
- delete d->locale;
- delete d->map;
- delete d->styleManager;
- delete d->parser;
- delete d->formatter;
- delete d->converter;
- delete d->calc;
-
- delete d;
-}
-
-TQValueList<Doc*> Doc::documents()
-{
- return Private::s_docs;
-}
-
-bool Doc::initDoc(InitDocFlags flags, TQWidget* parentWidget)
-{
- // ElapsedTime et( " initDoc " );
-
- TQString f;
-
- if (flags==KoDocument::InitDocEmpty)
- {
- TDEConfig *config = Factory::global()->config();
- int _page=1;
- if( config->hasGroup("Parameters" ))
- {
- config->setGroup( "Parameters" );
- _page=config->readNumEntry( "NbPage",1 ) ;
- }
-
- for( int i=0; i<_page; i++ )
- map()->addNewSheet();
-
- resetURL();
- setEmpty();
- initConfig();
- styleManager()->createBuiltinStyles();
-
- return true;
- }
-
- KoTemplateChooseDia::ReturnType ret;
- KoTemplateChooseDia::DialogType dlgtype;
- if (flags != KoDocument::InitDocFileNew )
- dlgtype = KoTemplateChooseDia::Everything;
- else
- dlgtype = KoTemplateChooseDia::OnlyTemplates;
-
- ret = KoTemplateChooseDia::choose( Factory::global(), f,
- dlgtype, "kspread_template", parentWidget );
-
- if ( ret == KoTemplateChooseDia::File )
- {
- KURL url( f );
-
- bool ok=openURL(url);
-
- while (KoDocument::isLoading())
- kapp->processEvents();
-
- return ok;
-
-
- }
-
- if ( ret == KoTemplateChooseDia::Empty )
- {
- TDEConfig *config = Factory::global()->config();
- int _page=1;
- if( config->hasGroup("Parameters" ))
- {
- config->setGroup( "Parameters" );
- _page=config->readNumEntry( "NbPage",1 ) ;
- }
-
- for( int i=0; i<_page; i++ )
- map()->addNewSheet ();
-
- resetURL();
- setEmpty();
- initConfig();
- styleManager()->createBuiltinStyles();
- return true;
- }
-
- if ( ret == KoTemplateChooseDia::Template )
- {
- resetURL();
- d->m_loadingInfo = new KSPLoadingInfo;
- d->m_loadingInfo->setLoadTemplate( true );
- bool ok = loadNativeFormat( f );
- if ( !ok )
- {
- showLoadingErrorDialog();
- deleteLoadingInfo();
- }
- setEmpty();
- initConfig();
- return ok;
- }
-
- return false;
-}
-
-void Doc::openTemplate (const TQString& file)
-{
- d->m_loadingInfo = new KSPLoadingInfo;
- d->m_loadingInfo->setLoadTemplate( true );
- KoDocument::openTemplate( file );
- deleteLoadingInfo();
- initConfig();
-}
-
-void Doc::initEmpty()
-{
- TDEConfig *config = Factory::global()->config();
- int _page=1;
- if( config->hasGroup("Parameters" ))
- {
- config->setGroup( "Parameters" );
- _page=config->readNumEntry( "NbPage",1 ) ;
- }
-
- for( int i=0; i<_page; i++ )
- map()->addNewSheet();
-
- resetURL();
- initConfig();
- styleManager()->createBuiltinStyles();
-
- KoDocument::initEmpty();
-}
-
-TDELocale *Doc::locale () const
-{
- return d->locale;
-}
-
-Map *Doc::map () const
-{
- return d->map;
-}
-
-StyleManager *Doc::styleManager () const
-{
- return d->styleManager;
-}
-
-ValueParser *Doc::parser () const
-{
- return d->parser;
-}
-
-ValueFormatter *Doc::formatter () const
-{
- return d->formatter;
-}
-
-ValueConverter *Doc::converter () const
-{
- return d->converter;
-}
-
-ValueCalc *Doc::calc () const
-{
- return d->calc;
-}
-
-void Doc::saveConfig()
-{
- if ( isEmbedded() ||!isReadWrite())
- return;
- TDEConfig *config = Factory::global()->config();
- config->setGroup( "Parameters" );
- config->writeEntry( "Zoom", m_zoom );
-
-}
-
-void Doc::initConfig()
-{
- TDEConfig *config = Factory::global()->config();
-
- if( config->hasGroup("KSpread Page Layout" ))
- {
- config->setGroup( "KSpread Page Layout" );
- setUnit( (KoUnit::Unit)config->readNumEntry( "Default unit page" ,0));
- }
- if( config->hasGroup("Parameters" ))
- {
- config->setGroup( "Parameters" );
- m_zoom = config->readNumEntry( "Zoom", 100 );
- }
- else
- m_zoom = 100;
-
- int undo=30;
- if(config->hasGroup("Misc" ) )
- {
- config->setGroup( "Misc" );
- undo=config->readNumEntry("UndoRedo",-1);
- }
- if(undo!=-1)
- setUndoRedoLimit(undo);
-
- setZoomAndResolution( m_zoom, KoGlobal::dpiX(), KoGlobal::dpiY() );
-}
-
-int Doc::syntaxVersion() const
-{
- return d->syntaxVersion;
-}
-
-bool Doc::isLoading() const
-{
- return d->isLoading || KoDocument::isLoading();
-}
-
-void Doc::doNotPaint(bool status)
-{
- d->isLoading = status;
-}
-
-
-TQColor Doc::pageBorderColor() const
-{
- return d->pageBorderColor;
-}
-
-void Doc::changePageBorderColor( const TQColor & _color)
-{
- d->pageBorderColor = _color;
-}
-
-const TQValueList<Reference> &Doc::listArea()
-{
- return d->refs;
-}
-
-TDECompletion& Doc::completion()
-{
- return d->listCompletion;
-}
-
-KoView* Doc::createViewInstance( TQWidget* parent, const char* name )
-{
- if ( name == 0 )
- name = "View";
- return new View( parent, name, this );
-}
-
-bool Doc::saveChildren( KoStore* _store )
-{
- return map()->saveChildren( _store );
-}
-
-int Doc::supportedSpecialFormats() const
-{
- return KoDocument::supportedSpecialFormats();
-}
-
-bool Doc::completeSaving( KoStore* _store )
-{
- d->m_pictureCollection.saveToStore( KoPictureCollection::CollectionPicture, _store, d->usedPictures );
-
- return true;
-}
-
-
-TQDomDocument Doc::saveXML()
-{
- //Terminate current cell edition, if any
- TQPtrListIterator<KoView> it( views() );
-
- /* don't pull focus away from the editor if this is just a background
- autosave */
- if (!isAutosaving())
- {
- for (; it.current(); ++it )
- static_cast<View *>( it.current() )->deleteEditor( true );
- }
-
- TQDomDocument doc = createDomDocument( "spreadsheet", CURRENT_DTD_VERSION );
- TQDomElement spread = doc.documentElement();
- spread.setAttribute( "editor", "KSpread" );
- spread.setAttribute( "mime", "application/x-kspread" );
- spread.setAttribute( "syntaxVersion", CURRENT_SYNTAX_VERSION );
-
- TQDomElement dlocale = ((Locale *)locale())->save( doc );
- spread.appendChild( dlocale );
-
- if (d->refs.count() != 0 )
- {
- TQDomElement areaname = saveAreaName( doc );
- spread.appendChild( areaname );
- }
-
- if( !d->spellListIgnoreAll.isEmpty() )
- {
- TQDomElement spellCheckIgnore = doc.createElement( "SPELLCHECKIGNORELIST" );
- spread.appendChild( spellCheckIgnore );
- for ( TQStringList::Iterator it = d->spellListIgnoreAll.begin(); it != d->spellListIgnoreAll.end(); ++it )
- {
- TQDomElement spellElem = doc.createElement( "SPELLCHECKIGNOREWORD" );
- spellCheckIgnore.appendChild( spellElem );
- spellElem.setAttribute( "word", *it );
- }
- }
-
- SavedDocParts::const_iterator iter = m_savedDocParts.begin();
- SavedDocParts::const_iterator end = m_savedDocParts.end();
- while ( iter != end )
- {
- // save data we loaded in the beginning and which has no owner back to file
- spread.appendChild( iter.data() );
- ++iter;
- }
-
- TQDomElement defaults = doc.createElement( "defaults" );
- defaults.setAttribute( "row-height", Format::globalRowHeight() );
- defaults.setAttribute( "col-width", Format::globalColWidth() );
- spread.appendChild( defaults );
-
- Plugin * plugin = d->plugins.first();
- for ( ; plugin != 0; plugin = d->plugins.next() )
- {
- TQDomElement data( plugin->saveXML( doc ) );
- if ( !data.isNull() )
- spread.appendChild( data );
- }
-
- TQDomElement s = styleManager()->save( doc );
- spread.appendChild( s );
- TQDomElement e = map()->save( doc );
- spread.appendChild( e );
-
- setModified( false );
-
- return doc;
-}
-
-bool Doc::loadChildren( KoStore* _store )
-{
- return map()->loadChildren( _store );
-}
-
-bool Doc::saveOasis( KoStore* store, KoXmlWriter* manifestWriter )
-{
- emitBeginOperation(true);
- bool result=saveOasisHelper( store, manifestWriter, SaveAll );
- emitEndOperation();
-
- return result;
-}
-
-bool Doc::saveOasisHelper( KoStore* store, KoXmlWriter* manifestWriter, SaveFlag saveFlag,
- TQString* /*plainText*/, KoPicture* /*picture*/ )
-{
- d->m_pictureCollection.assignUniqueIds();
- //Terminate current cell edition, if any
- TQPtrListIterator<KoView> it2( views() );
- d->m_savingWholeDocument = saveFlag == SaveAll ? true : false;
-
- /* don't pull focus away from the editor if this is just a background
- autosave */
- if (!isAutosaving())
- {
- for (; it2.current(); ++it2 )
- static_cast<View *>( it2.current() )->deleteEditor( true );
- }
- if ( !store->open( "content.xml" ) )
- return false;
-
- KoStoreDevice dev( store );
- KoXmlWriter* contentWriter = createOasisXmlWriter( &dev, "office:document-content" );
- KoGenStyles mainStyles;//for compile
-
- KTempFile contentTmpFile;
- //Check that temp file was successfully created
- if (contentTmpFile.status() != 0)
- {
- tqWarning("Creation of temporary file to store document content failed.");
- return false;
- }
-
- contentTmpFile.setAutoDelete( true );
- TQFile* tmpFile = contentTmpFile.file();
- KoXmlWriter contentTmpWriter( TQT_TQIODEVICE(tmpFile), 1 );
-
-
-
- //todo fixme just add a element for testing saving content.xml
- contentTmpWriter.startElement( "office:body" );
- contentTmpWriter.startElement( "office:spreadsheet" );
-
- int indexObj = 1;
- int partIndexObj = 0;
-
- // Saving the custom cell styles including the default cell style.
- styleManager()->saveOasis( mainStyles );
-
- // Saving the default column style
- KoGenStyle defaultColumnStyle( Doc::STYLE_COLUMN_USER, "table-column" );
- defaultColumnStyle.addPropertyPt( "style:column-width", Format::globalColWidth() );
- defaultColumnStyle.setDefaultStyle( true );
- mainStyles.lookup( defaultColumnStyle, "Default", KoGenStyles::DontForceNumbering );
-
- // Saving the default row style
- KoGenStyle defaultRowStyle( Doc::STYLE_ROW_USER, "table-row" );
- defaultRowStyle.addPropertyPt( "style:row-height", Format::globalRowHeight() );
- defaultRowStyle.setDefaultStyle( true );
- mainStyles.lookup( defaultRowStyle, "Default", KoGenStyles::DontForceNumbering );
-
- // Saving the map.
- map()->saveOasis( contentTmpWriter, mainStyles, store, manifestWriter, indexObj, partIndexObj );
-
- saveOasisAreaName( contentTmpWriter );
- contentTmpWriter.endElement(); ////office:spreadsheet
- contentTmpWriter.endElement(); ////office:body
-
- // Done with writing out the contents to the tempfile, we can now write out the automatic styles
- contentWriter->startElement( "office:automatic-styles" );
-
- TQValueList<KoGenStyles::NamedStyle> styles = mainStyles.styles( KoGenStyle::STYLE_AUTO );
- TQValueList<KoGenStyles::NamedStyle>::const_iterator it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "style:style", (*it).name, "style:paragraph-properties" );
- }
-
- styles = mainStyles.styles( STYLE_PAGE );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "style:style", (*it).name, "style:table-properties" );
- }
-
- styles = mainStyles.styles( STYLE_COLUMN_AUTO );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "style:style", (*it).name, "style:table-column-properties" );
- }
-
- styles = mainStyles.styles( STYLE_ROW_AUTO );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "style:style", (*it).name, "style:table-row-properties" );
- }
-
- styles = mainStyles.styles( STYLE_CELL_AUTO );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "style:style", (*it).name, "style:table-cell-properties" );
- }
-
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_NUMBER );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:number-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- //TODO FIXME !!!!
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_DATE );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:date-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_TIME );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:time-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_FRACTION );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:number-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- //TODO FIME !!!!!
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_PERCENTAGE );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:percentage-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- //TODO FIME !!!!!
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_CURRENCY );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:currency-style", (*it).name, 0 /*TODO ????*/ );
- }
-
- styles = mainStyles.styles( KoGenStyle::STYLE_NUMERIC_SCIENTIFIC );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( contentWriter, mainStyles, "number:number-style", (*it).name, 0 /*TODO ????*/ );
- }
-
-
- contentWriter->endElement(); // office:automatic-styles
-
-
- // And now we can copy over the contents from the tempfile to the real one
- tmpFile->close();
- contentWriter->addCompleteElement( TQT_TQIODEVICE(tmpFile) );
- contentTmpFile.close();
-
-
- contentWriter->endElement(); // root element
- contentWriter->endDocument();
- delete contentWriter;
- if ( !store->close() )
- return false;
- //add manifest line for content.xml
- manifestWriter->addManifestEntry( "content.xml", "text/xml" );
-
- //todo add manifest line for style.xml
- if ( !store->open( "styles.xml" ) )
- return false;
-
- manifestWriter->addManifestEntry( "styles.xml", "text/xml" );
- saveOasisDocumentStyles( store, mainStyles );
-
- if ( !store->close() ) // done with styles.xml
- return false;
-
- makeUsedPixmapList();
- d->m_pictureCollection.saveOasisToStore( store, d->usedPictures, manifestWriter);
-
- if(!store->open("settings.xml"))
- return false;
-
- KoXmlWriter* settingsWriter = createOasisXmlWriter(&dev, "office:document-settings");
- settingsWriter->startElement("office:settings");
- settingsWriter->startElement("config:config-item-set");
- settingsWriter->addAttribute("config:name", "view-settings");
-
- KoUnit::saveOasis(settingsWriter, unit());
-
- saveOasisSettings( *settingsWriter );
-
- settingsWriter->endElement(); // config:config-item-set
-
- settingsWriter->startElement("config:config-item-set");
- settingsWriter->addAttribute("config:name", "configuration-settings");
- settingsWriter->addConfigItem("SpellCheckerIgnoreList", d->spellListIgnoreAll.join( "," ) );
- settingsWriter->endElement(); // config:config-item-set
- settingsWriter->endElement(); // office:settings
- settingsWriter->endElement(); // Root:element
- settingsWriter->endDocument();
- delete settingsWriter;
-
- if(!store->close())
- return false;
-
- manifestWriter->addManifestEntry("settings.xml", "text/xml");
-
-
- if ( saveFlag == SaveSelected )
- {
- TQPtrListIterator<EmbeddedObject> it(embeddedObjects() );
- for( ; it.current(); ++it )
- {
- if ( it.current()->getType() != OBJECT_CHART && it.current()->getType() != OBJECT_KOFFICE_PART )
- continue;
- KoDocumentChild *embedded = dynamic_cast<EmbeddedKOfficeObject *>(it.current() )->embeddedObject();
- //NOTE: If an application's .desktop file lies about opendocument support (ie. it indicates that it has
- //a native OASIS mime type, when it doesn't, this causes a crash when trying to reload and paint
- //the object, since it won't have an associated document.
- if ( !embedded->saveOasis( store, manifestWriter ) )
- continue;
- }
- }
-
-
- setModified( false );
-
- return true;
-}
-
-void Doc::loadOasisSettings( const TQDomDocument&settingsDoc )
-{
- KoOasisSettings settings( settingsDoc );
- KoOasisSettings::Items viewSettings = settings.itemSet( "view-settings" );
- if ( !viewSettings.isNull() )
- {
- setUnit(KoUnit::unit(viewSettings.parseConfigItemString("unit")));
- }
- map()->loadOasisSettings( settings );
- loadOasisIgnoreList( settings );
-}
-
-void Doc::saveOasisSettings( KoXmlWriter &settingsWriter )
-{
- settingsWriter.startElement("config:config-item-map-indexed");
- settingsWriter.addAttribute("config:name", "Views");
- settingsWriter.startElement( "config:config-item-map-entry" );
- map()->saveOasisSettings( settingsWriter );
- settingsWriter.endElement();
- settingsWriter.endElement();
-}
-
-
-void Doc::loadOasisIgnoreList( const KoOasisSettings& settings )
-{
- KoOasisSettings::Items configurationSettings = settings.itemSet( "configuration-settings" );
- if ( !configurationSettings.isNull() )
- {
- const TQString ignorelist = configurationSettings.parseConfigItemString( "SpellCheckerIgnoreList" );
- //kdDebug()<<" ignorelist :"<<ignorelist<<endl;
- d->spellListIgnoreAll = TQStringList::split( ',', ignorelist );
- }
-}
-
-
-void Doc::saveOasisDocumentStyles( KoStore* store, KoGenStyles& mainStyles ) const
-{
- KoStoreDevice stylesDev( store );
- KoXmlWriter* stylesWriter = createOasisXmlWriter( &stylesDev, "office:document-styles" );
-
- stylesWriter->startElement( "office:styles" );
- TQValueList<KoGenStyles::NamedStyle> styles = mainStyles.styles( KoGenStyle::STYLE_USER );
- TQValueList<KoGenStyles::NamedStyle>::const_iterator it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:style", (*it).name, "style:paragraph-properties" );
- }
-
- // Writing out the common column styles.
- styles = mainStyles.styles( Doc::STYLE_COLUMN_USER );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- if ( (*it).style->isDefaultStyle() ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:default-style", (*it).name, "style:table-column-properties" );
- }
- else {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:style", (*it).name, "style:table-column-properties" );
- }
- }
-
- // Writing out the row column styles.
- styles = mainStyles.styles( Doc::STYLE_ROW_USER );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- if ( (*it).style->isDefaultStyle() ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:default-style", (*it).name, "style:table-row-properties" );
- }
- else {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:style", (*it).name, "style:table-row-properties" );
- }
- }
-
- // Writing out the common cell styles.
- styles = mainStyles.styles( Doc::STYLE_CELL_USER );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- if ( (*it).style->isDefaultStyle() ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:default-style", (*it).name, "style:table-cell-properties" );
- }
- else {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:style", (*it).name, "style:table-cell-properties" );
- }
- }
-
- styles = mainStyles.styles( KoGenStyle::STYLE_HATCH );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "draw:hatch", (*it).name, "style:graphic-properties" , true, true /*add draw:name*/);
- }
- styles = mainStyles.styles( KoGenStyle::STYLE_GRAPHICAUTO );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:style", (*it).name , "style:graphic-properties" );
- }
-
- stylesWriter->endElement(); // office:styles
-
- stylesWriter->startElement( "office:automatic-styles" );
- styles = mainStyles.styles( KoGenStyle::STYLE_PAGELAYOUT );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:page-layout", (*it).name, "style:page-layout-properties", false /*don't close*/ );
- stylesWriter->endElement();
- }
-
- stylesWriter->endElement(); // office:automatic-styles
- //code from kword
- stylesWriter->startElement( "office:master-styles" );
-
- styles = mainStyles.styles( Doc::STYLE_PAGEMASTER );
- it = styles.begin();
- for ( ; it != styles.end() ; ++it ) {
- (*it).style->writeStyle( stylesWriter, mainStyles, "style:master-page", (*it).name, "" );
- }
-
- stylesWriter->endElement(); // office:master-style
-
-
- stylesWriter->endElement(); // root element (office:document-styles)
- stylesWriter->endDocument();
- delete stylesWriter;;
-}
-
-bool Doc::loadOasis( const TQDomDocument& doc, KoOasisStyles& oasisStyles, const TQDomDocument& settings, KoStore* store)
-{
- if ( !d->m_loadingInfo )
- d->m_loadingInfo = new KSPLoadingInfo;
-
- TQTime dt;
- dt.start();
-
- emit sigProgress( 0 );
- d->isLoading = true;
- d->spellListIgnoreAll.clear();
-
- d->refs.clear();
-
- TQDomElement content = doc.documentElement();
- TQDomElement realBody ( KoDom::namedItemNS( content, KoXmlNS::office, "body" ) );
- if ( realBody.isNull() )
- {
- setErrorMessage( i18n( "Invalid OASIS OpenDocument file. No office:body tag found." ));
- deleteLoadingInfo();
- return false;
- }
- TQDomElement body = KoDom::namedItemNS( realBody, KoXmlNS::office, "spreadsheet" );
-
- if ( body.isNull() )
- {
- kdError(32001) << "No office:spreadsheet found!" << endl;
- TQDomElement childElem;
- TQString localName;
- forEachElement( childElem, realBody ) {
- localName = childElem.localName();
- }
- if ( localName.isEmpty() )
- setErrorMessage( i18n( "Invalid OASIS OpenDocument file. No tag found inside office:body." ) );
- else
- setErrorMessage( i18n( "This document is not a spreadsheet, but %1. Please try opening it with the appropriate application." ).arg( KoDocument::tagNameToDocumentType( localName ) ) );
- deleteLoadingInfo();
- return false;
- }
-
- KoOasisLoadingContext context( this, oasisStyles, store );
-
- //load in first
- styleManager()->loadOasisStyleTemplate( oasisStyles );
-
- // load default column style
- const TQDomElement* defaultColumnStyle = oasisStyles.defaultStyle( "table-column" );
- if ( defaultColumnStyle )
- {
-// kDebug() << "style:default-style style:family=\"table-column\"" << endl;
- KoStyleStack styleStack;
- styleStack.push( *defaultColumnStyle );
- styleStack.setTypeProperties( "table-column" );
- if ( styleStack.hasAttributeNS( KoXmlNS::style, "column-width" ) )
- {
- const double width = KoUnit::parseValue( styleStack.attributeNS( KoXmlNS::style, "column-width" ), -1.0 );
- if ( width != -1.0 )
- {
-// kDebug() << "\tstyle:column-width: " << width << endl;
- Format::setGlobalColWidth( width );
- }
- }
- }
-
- // load default row style
- const TQDomElement* defaultRowStyle = oasisStyles.defaultStyle( "table-row" );
- if ( defaultRowStyle )
- {
-// kDebug() << "style:default-style style:family=\"table-row\"" << endl;
- KoStyleStack styleStack;
- styleStack.push( *defaultRowStyle );
- styleStack.setTypeProperties( "table-row" );
- if ( styleStack.hasAttributeNS( KoXmlNS::style, "row-height" ) )
- {
- const double height = KoUnit::parseValue( styleStack.attributeNS( KoXmlNS::style, "row-height" ), -1.0 );
- if ( height != -1.0 )
- {
-// kDebug() << "\tstyle:row-height: " << height << endl;
- Format::setGlobalRowHeight( height );
- }
- }
- }
-
- // TODO check versions and mimetypes etc.
- loadOasisAreaName( body );
- loadOasisCellValidation( body );
-
- // all <sheet:sheet> goes to workbook
- if ( !map()->loadOasis( body, context ) )
- {
- d->isLoading = false;
- deleteLoadingInfo();
- return false;
- }
-
-
- if ( !settings.isNull() )
- {
- loadOasisSettings( settings );
- }
- emit sigProgress( 90 );
- initConfig();
- emit sigProgress(-1);
-
- //display loading time
- kdDebug(36001) << "Loading took " << (float)(dt.elapsed()) / 1000.0 << " seconds" << endl;
- return true;
-}
-
-bool Doc::loadXML( TQIODevice *, const TQDomDocument& doc )
-{
- TQTime dt;
- dt.start();
-
- emit sigProgress( 0 );
- d->isLoading = true;
- d->spellListIgnoreAll.clear();
- // <spreadsheet>
- TQDomElement spread = doc.documentElement();
-
- if ( spread.attribute( "mime" ) != "application/x-kspread" && spread.attribute( "mime" ) != "application/vnd.kde.kspread" )
- {
- d->isLoading = false;
- setErrorMessage( i18n( "Invalid document. Expected mimetype application/x-kspread or application/vnd.kde.kspread, got %1" ).arg( spread.attribute("mime") ) );
- return false;
- }
-
- d->syntaxVersion = Doc::getAttribute( spread, "syntaxVersion", 0 );
- if ( d->syntaxVersion > CURRENT_SYNTAX_VERSION )
- {
- int ret = KMessageBox::warningContinueCancel(
- 0, i18n("This document was created with a newer version of KSpread (syntax version: %1)\n"
- "When you open it with this version of KSpread, some information may be lost.").arg(d->syntaxVersion),
- i18n("File Format Mismatch"), KStdGuiItem::cont() );
- if ( ret == KMessageBox::Cancel )
- {
- setErrorMessage( "USER_CANCELED" );
- return false;
- }
- }
-
- // <locale>
- TQDomElement loc = spread.namedItem( "locale" ).toElement();
- if ( !loc.isNull() )
- ((Locale *) locale())->load( loc );
-
- emit sigProgress( 5 );
-
- TQDomElement defaults = spread.namedItem( "defaults" ).toElement();
- if ( !defaults.isNull() )
- {
- bool ok = false;
- double d = defaults.attribute( "row-height" ).toDouble( &ok );
- if ( !ok )
- return false;
- Format::setGlobalRowHeight( d );
-
- d = defaults.attribute( "col-width" ).toDouble( &ok );
-
- if ( !ok )
- return false;
-
- Format::setGlobalColWidth( d );
- }
-
- d->refs.clear();
- //<areaname >
- TQDomElement areaname = spread.namedItem( "areaname" ).toElement();
- if ( !areaname.isNull())
- loadAreaName(areaname);
-
- TQDomElement ignoreAll = spread.namedItem( "SPELLCHECKIGNORELIST").toElement();
- if ( !ignoreAll.isNull())
- {
- TQDomElement spellWord=spread.namedItem("SPELLCHECKIGNORELIST").toElement();
-
- spellWord=spellWord.firstChild().toElement();
- while ( !spellWord.isNull() )
- {
- if ( spellWord.tagName()=="SPELLCHECKIGNOREWORD" )
- {
- d->spellListIgnoreAll.append(spellWord.attribute("word"));
- }
- spellWord=spellWord.nextSibling().toElement();
- }
- }
-
- emit sigProgress( 40 );
- // In case of reload (e.g. from konqueror)
- map()->sheetList().clear(); // it's set to autoDelete
-
- TQDomElement styles = spread.namedItem( "styles" ).toElement();
- if ( !styles.isNull() )
- {
- if ( !styleManager()->loadXML( styles ) )
- {
- setErrorMessage( i18n( "Styles cannot be loaded." ) );
- d->isLoading = false;
- return false;
- }
- }
-
- // <map>
- TQDomElement mymap = spread.namedItem( "map" ).toElement();
- if ( mymap.isNull() )
- {
- setErrorMessage( i18n("Invalid document. No map tag.") );
- d->isLoading = false;
- return false;
- }
- if ( !map()->loadXML( mymap ) )
- {
- d->isLoading = false;
- return false;
- }
-
- //Backwards compatibility with older versions for paper layout
- if ( d->syntaxVersion < 1 )
- {
- TQDomElement paper = spread.namedItem( "paper" ).toElement();
- if ( !paper.isNull() )
- {
- loadPaper( paper );
- }
- }
-
- emit sigProgress( 85 );
-
- TQDomElement element( spread.firstChild().toElement() );
- while ( !element.isNull() )
- {
- TQString tagName( element.tagName() );
-
- if ( tagName != "locale" && tagName != "map" && tagName != "styles"
- && tagName != "SPELLCHECKIGNORELIST" && tagName != "areaname"
- && tagName != "paper" )
- {
- // belongs to a plugin, load it and save it for later use
- m_savedDocParts[ tagName ] = element;
- }
-
- element = element.nextSibling().toElement();
- }
-
- emit sigProgress( 90 );
- initConfig();
- emit sigProgress(-1);
-
- kdDebug(36001) << "Loading took " << (float)(dt.elapsed()) / 1000.0 << " seconds" << endl;
-
- emit sig_refreshView();
-
- return true;
-}
-
-void Doc::loadPaper( TQDomElement const & paper )
-{
- // <paper>
- TQString format = paper.attribute( "format" );
- TQString orientation = paper.attribute( "orientation" );
-
- // <borders>
- TQDomElement borders = paper.namedItem( "borders" ).toElement();
- if ( !borders.isNull() )
- {
- float left = borders.attribute( "left" ).toFloat();
- float right = borders.attribute( "right" ).toFloat();
- float top = borders.attribute( "top" ).toFloat();
- float bottom = borders.attribute( "bottom" ).toFloat();
-
- //apply to all sheet
- TQPtrListIterator<Sheet> it ( map()->sheetList() );
- for( ; it.current(); ++it )
- {
- it.current()->print()->setPaperLayout( left, top, right, bottom,
- format, orientation );
- }
- }
-
- TQString hleft, hright, hcenter;
- TQString fleft, fright, fcenter;
- // <head>
- TQDomElement head = paper.namedItem( "head" ).toElement();
- if ( !head.isNull() )
- {
- TQDomElement left = head.namedItem( "left" ).toElement();
- if ( !left.isNull() )
- hleft = left.text();
- TQDomElement center = head.namedItem( "center" ).toElement();
- if ( !center.isNull() )
- hcenter = center.text();
- TQDomElement right = head.namedItem( "right" ).toElement();
- if ( !right.isNull() )
- hright = right.text();
- }
- // <foot>
- TQDomElement foot = paper.namedItem( "foot" ).toElement();
- if ( !foot.isNull() )
- {
- TQDomElement left = foot.namedItem( "left" ).toElement();
- if ( !left.isNull() )
- fleft = left.text();
- TQDomElement center = foot.namedItem( "center" ).toElement();
- if ( !center.isNull() )
- fcenter = center.text();
- TQDomElement right = foot.namedItem( "right" ).toElement();
- if ( !right.isNull() )
- fright = right.text();
- }
- //The macro "<sheet>" formerly was typed as "<table>"
- hleft = hleft.replace( "<table>", "<sheet>" );
- hcenter = hcenter.replace( "<table>", "<sheet>" );
- hright = hright.replace( "<table>", "<sheet>" );
- fleft = fleft.replace( "<table>", "<sheet>" );
- fcenter = fcenter.replace( "<table>", "<sheet>" );
- fright = fright.replace( "<table>", "<sheet>" );
-
- TQPtrListIterator<Sheet> it ( map()->sheetList() );
- for( ; it.current(); ++it )
- {
- it.current()->print()->setHeadFootLine( hleft, hcenter, hright,
- fleft, fcenter, fright);
- }
-}
-
-bool Doc::completeLoading( KoStore* /* _store */ )
-{
- kdDebug(36001) << "------------------------ COMPLETING --------------------" << endl;
-
- d->isLoading = false;
-
- // map()->update();
-
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- ((View*)it.current())->initialPosition();
-
- kdDebug(36001) << "------------------------ COMPLETION DONE --------------------" << endl;
-
- setModified( false );
- return true;
-}
-
-
-void Doc::registerPlugin( Plugin * plugin )
-{
- d->plugins.append( plugin );
-}
-
-void Doc::deregisterPlugin( Plugin * plugin )
-{
- d->plugins.remove( plugin );
-}
-
-bool Doc::docData( TQString const & xmlTag, TQDomElement & data )
-{
- SavedDocParts::iterator iter = m_savedDocParts.find( xmlTag );
- if ( iter == m_savedDocParts.end() )
- return false;
-
- data = iter.data();
- m_savedDocParts.erase( iter );
-
- return true;
-}
-
-void Doc::setShowVerticalScrollBar(bool _show)
-{
- d->verticalScrollBar=_show;
-}
-
-bool Doc::showVerticalScrollBar()const
-{
- return d->verticalScrollBar;
-}
-
-void Doc::setShowHorizontalScrollBar(bool _show)
-{
- d->horizontalScrollBar=_show;
-}
-
-bool Doc::showHorizontalScrollBar()const
-{
- return d->horizontalScrollBar;
-}
-
-TDEGlobalSettings::Completion Doc::completionMode( ) const
-{
- return d->completionMode;
-}
-
-void Doc::setShowColumnHeader(bool _show)
-{
- d->columnHeader=_show;
-}
-
-bool Doc::showColumnHeader() const
-{
- return d->columnHeader;
-}
-
-void Doc::setShowRowHeader(bool _show)
-{
- d->rowHeader=_show;
-}
-
-bool Doc::showRowHeader() const
-{
- return d->rowHeader;
-}
-
-void Doc::setGridColor( const TQColor& color )
-{
- d->gridColor = color;
-}
-
-TQColor Doc::gridColor() const
-{
- return d->gridColor;
-}
-
-void Doc::setCompletionMode( TDEGlobalSettings::Completion complMode)
-{
- d->completionMode= complMode;
-}
-
-double Doc::indentValue() const
-{
- return d->indentValue;
-}
-
-void Doc::setIndentValue( double val )
-{
- d->indentValue = val;
-}
-
-void Doc::setShowStatusBar(bool _statusBar)
-{
- d->showStatusBar=_statusBar;
-}
-
-bool Doc::showStatusBar() const
-{
- return d->showStatusBar;
-}
-
-void Doc::setShowTabBar(bool _tabbar)
-{
- d->showTabBar=_tabbar;
-}
-
-bool Doc::showTabBar()const
-{
- return d->showTabBar;
-}
-
-void Doc::setShowFormulaBar(bool _formulaBar)
-{
- d->showFormulaBar=_formulaBar;
-}
-
-bool Doc::showFormulaBar() const
-{
- return d->showFormulaBar;
-}
-
-void Doc::setShowMessageError(bool _show)
-{
- d->showError=_show;
-}
-
-bool Doc::showMessageError() const
-{
- return d->showError;
-}
-
-KSpread::MoveTo Doc::getMoveToValue() const
-{
- return d->moveTo;
-}
-
-void Doc::setMoveToValue(KSpread::MoveTo _moveTo)
-{
- d->moveTo = _moveTo;
-}
-
-void Doc::setTypeOfCalc( MethodOfCalc _calc)
-{
- d->calcMethod=_calc;
-}
-
-MethodOfCalc Doc::getTypeOfCalc() const
-{
- return d->calcMethod;
-}
-
-void Doc::setKSpellConfig(KSpellConfig _tdespell)
-{
- if (d->spellConfig == 0 )
- d->spellConfig = new KSpellConfig();
-
- d->spellConfig->setNoRootAffix(_tdespell.noRootAffix ());
- d->spellConfig->setRunTogether(_tdespell.runTogether ());
- d->spellConfig->setDictionary(_tdespell.dictionary ());
- d->spellConfig->setDictFromList(_tdespell.dictFromList());
- d->spellConfig->setEncoding(_tdespell.encoding());
- d->spellConfig->setClient(_tdespell.client());
-}
-
-KSpellConfig * Doc::getKSpellConfig()
-{
- if (!d->spellConfig)
- {
- KSpellConfig ksconfig;
-
- TDEConfig *config = Factory::global()->config();
- if( config->hasGroup("KSpell kspread" ) )
- {
- config->setGroup( "KSpell kspread" );
- ksconfig.setNoRootAffix(config->readNumEntry ("KSpell_NoRootAffix", 0));
- ksconfig.setRunTogether(config->readNumEntry ("KSpell_RunTogether", 0));
- ksconfig.setDictionary(config->readEntry ("KSpell_Dictionary", ""));
- ksconfig.setDictFromList(config->readNumEntry ("KSpell_DictFromList", false));
- ksconfig.setEncoding(config->readNumEntry ("KSpell_Encoding", KS_E_ASCII));
- ksconfig.setClient(config->readNumEntry ("KSpell_Client", KS_CLIENT_ISPELL));
- setKSpellConfig(ksconfig);
-
- setDontCheckUpperWord(config->readBoolEntry("KSpell_IgnoreUppercaseWords", false));
- setDontCheckTitleCase(config->readBoolEntry("KSpell_IgnoreTitleCaseWords", false));
- }
- }
- return d->spellConfig;
-}
-
-bool Doc::dontCheckUpperWord() const
-{
- return d->dontCheckUpperWord;
-}
-
-void Doc::setDontCheckUpperWord( bool b )
-{
- d->dontCheckUpperWord = b;
-}
-
-bool Doc::dontCheckTitleCase() const
-{
- return d->dontCheckTitleCase;
-}
-
-void Doc::setDontCheckTitleCase( bool b )
-{
- d->dontCheckTitleCase = b;
-}
-
-TQString Doc::unitName() const
-{
- return KoUnit::unitName( unit() );
-}
-
-void Doc::increaseNumOperation()
-{
- ++d->numOperations;
-}
-
-void Doc::decreaseNumOperation()
-{
- --d->numOperations;
-}
-
-void Doc::addIgnoreWordAllList( const TQStringList & _lst)
-{
- d->spellListIgnoreAll = _lst;
-}
-
-TQStringList Doc::spellListIgnoreAll() const
-{
- return d->spellListIgnoreAll;
-}
-
-void Doc::setZoomAndResolution( int zoom, int dpiX, int dpiY )
-{
- KoZoomHandler::setZoomAndResolution( zoom, dpiX, dpiY );
-}
-
-void Doc::newZoomAndResolution( bool updateViews, bool /*forPrint*/ )
-{
-/* layout();
- updateAllFrames();*/
- if ( updateViews )
- {
- emit sig_refreshView();
- }
-}
-
-void Doc::addCommand( KCommand* command )
-{
- if (undoLocked()) return;
- d->commandHistory->addCommand( command, false );
- setModified( true );
-}
-
-void Doc::addCommand( UndoAction* undo )
-{
- if (undoLocked()) return;
- UndoWrapperCommand* command = new UndoWrapperCommand( undo );
- addCommand( command );
- setModified( true );
-}
-
-void Doc::undo()
-{
- undoLock ();
- d->commandHistory->undo();
- undoUnlock ();
-}
-
-void Doc::redo()
-{
- undoLock ();
- d->commandHistory->redo();
- undoUnlock ();
-}
-
-void Doc::commandExecuted()
-{
- setModified( true );
-}
-
-void Doc::documentRestored()
-{
- setModified( false );
-}
-
-void Doc::undoLock()
-{
- d->undoLocked++;
-}
-
-void Doc::undoUnlock()
-{
- d->undoLocked--;
-}
-
-bool Doc::undoLocked() const
-{
- return (d->undoLocked > 0);
-}
-
-KoCommandHistory* Doc::commandHistory()
-{
- return d->commandHistory;
-}
-
-void Doc::enableUndo( bool _b )
-{
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- static_cast<View *>( it.current() )->enableUndo( _b );
-}
-
-void Doc::enableRedo( bool _b )
-{
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- static_cast<View *>( it.current() )->enableRedo( _b );
-}
-
-void Doc::paintContent( TQPainter& painter, const TQRect& rect,
- bool transparent, double zoomX, double /*zoomY*/ )
-{
- kdDebug(36001) << "paintContent() called on " << rect << endl;
-
- // ElapsedTime et( "Doc::paintContent1" );
- //kdDebug(36001) << "Doc::paintContent m_zoom=" << m_zoom << " zoomX=" << zoomX << " zoomY=" << zoomY << " transparent=" << transparent << endl;
-
- // save current zoom
- int oldZoom = m_zoom;
-
- // choose sheet: the first or the active
- Sheet* sheet = 0L;
- if ( !d->activeSheet )
- sheet = map()->firstSheet();
- else
- sheet = d->activeSheet;
- if ( !sheet )
- return;
-
- // only one zoom is supported
- double d_zoom = 1.0;
- setZoomAndResolution( 100, KoGlobal::dpiX(), KoGlobal::dpiY() );
- if ( m_zoomedResolutionX != zoomX )
- d_zoom *= ( zoomX / m_zoomedResolutionX );
-
- // KSpread support zoom, therefore no need to scale with worldMatrix
- TQWMatrix matrix = painter.worldMatrix();
- matrix.setMatrix( 1, 0, 0, 1, matrix.dx(), matrix.dy() );
- TQRect prect = rect;
- prect.setWidth( (int) (prect.width() * painter.worldMatrix().m11()) );
- prect.setHeight( (int) (prect.height() * painter.worldMatrix().m22()) );
- setZoomAndResolution( (int) ( d_zoom * 100 ), KoGlobal::dpiX(), KoGlobal::dpiY() );
- // paint the content, now zoom is correctly set
- kdDebug(36001)<<"paintContent-------------------------------------\n";
- painter.save();
- painter.setWorldMatrix( matrix );
- paintContent( painter, prect, transparent, sheet, false );
- painter.restore();
-
- // restore zoom
- m_zoom = oldZoom;
- setZoomAndResolution( oldZoom, KoGlobal::dpiX(), KoGlobal::dpiY() );
-}
-
-void Doc::paintContent( TQPainter& painter, const TQRect& rect, bool /*transparent*/, Sheet* sheet, bool drawCursor )
-{
- if ( isLoading() )
- return;
- // ElapsedTime et( "Doc::paintContent2" );
-
- // if ( !transparent )
- // painter.eraseRect( rect );
-
- double xpos;
- double ypos;
- int left_col = sheet->leftColumn( unzoomItX( rect.x() ), xpos );
- int right_col = sheet->rightColumn( unzoomItX( rect.right() ) );
- int top_row = sheet->topRow( unzoomItY( rect.y() ), ypos );
- int bottom_row = sheet->bottomRow( unzoomItY( rect.bottom() ) );
- TQPen pen;
- pen.setWidth( 1 );
- painter.setPen( pen );
-
- /* Update the entire visible area. */
- TQValueList<TQRect> cellAreaList;
- cellAreaList.append( TQRect( left_col,
- top_row,
- right_col - left_col + 1,
- bottom_row - top_row + 1) );
-
- paintCellRegions(painter, rect, NULL, cellAreaList, sheet, drawCursor);
-}
-
-void Doc::paintUpdates()
-{
- // ElapsedTime et( "Doc::paintUpdates" );
-
- TQPtrListIterator<KoView> it( views() );
- View * view = NULL;
- Sheet * sheet = NULL;
-
- for (; it.current(); ++it )
- {
- view = static_cast<View *>( it.current() );
- view->paintUpdates();
- }
-
- for (sheet = map()->firstSheet(); sheet != NULL;
- sheet = map()->nextSheet())
- {
- sheet->clearPaintDirtyData();
- }
-}
-
-void Doc::paintCellRegions(TQPainter& painter, const TQRect &viewRect,
- View* view,
- TQValueList<TQRect> cellRegions,
- const Sheet* sheet, bool /*drawCursor*/)
-{
- //
- // Clip away children
- //
-
- TQRegion rgn = painter.clipRegion();
- if ( rgn.isEmpty() )
- rgn = TQRegion( TQRect( 0, 0, viewRect.width(), viewRect.height() ) );
-
- TQWMatrix matrix;
- if ( view ) {
- matrix.scale( zoomedResolutionX(),
- zoomedResolutionY() );
- matrix.translate( - view->canvasWidget()->xOffset(),
- - view->canvasWidget()->yOffset() );
- }
- else {
- matrix = painter.worldMatrix();
- }
-
-// TQPtrListIterator<KoDocumentChild> it( children() );
-// for( ; it.current(); ++it ) {
-// // if ( ((Child*)it.current())->sheet() == sheet &&
-// // !m_pView->hasDocumentInWindow( it.current()->document() ) )
-// if ( ((Child*)it.current())->sheet() == sheet)
-// rgn -= it.current()->region( matrix );
-// }
- painter.setClipRegion( rgn );
-
- TQPen pen;
- pen.setWidth( 1 );
- painter.setPen( pen );
-
- TQRect cellRegion;
- KoRect unzoomedViewRect = unzoomRect( viewRect );
-
- for (unsigned int i=0; i < cellRegions.size(); i++) {
- cellRegion = cellRegions[i];
-
- PaintRegion(painter, unzoomedViewRect, view, cellRegion, sheet);
- }
-}
-
-
-void Doc::PaintRegion(TQPainter &painter, const KoRect &viewRegion,
- View* view, const TQRect &paintRegion,
- const Sheet* sheet)
-{
- // Paint region has cell coordinates (col,row) while viewRegion has
- // world coordinates. paintRegion is the cells to update and
- // viewRegion is the area actually onscreen.
-
- if ( paintRegion.left() <= 0 || paintRegion.top() <= 0 )
- return;
-
- // Get the world coordinates of the upper left corner of the
- // paintRegion The view is NULL, when paintRegion is called from
- // paintContent, which itself is only called, when we should paint
- // the output for INACTIVE embedded view. If inactive embedded,
- // then there is no view and we alwas start at top/left, so the
- // offset is 0.
- //
- KoPoint dblCorner;
- if ( view == 0L ) //Most propably we are embedded and inactive, so no offset
- dblCorner = KoPoint( sheet->dblColumnPos( paintRegion.left() ),
- sheet->dblRowPos( paintRegion.top() ) );
- else
- dblCorner = KoPoint( sheet->dblColumnPos( paintRegion.left() )
- - view->canvasWidget()->xOffset(),
- sheet->dblRowPos( paintRegion.top() )
- - view->canvasWidget()->yOffset() );
- KoPoint dblCurrentCellPos( dblCorner );
-
- int regionBottom = paintRegion.bottom();
- int regionRight = paintRegion.right();
- int regionLeft = paintRegion.left();
- int regionTop = paintRegion.top();
-
- TQValueList<TQPoint> mergedCellsPainted;
- for ( int y = regionTop;
- y <= regionBottom && dblCurrentCellPos.y() <= viewRegion.bottom();
- ++y )
- {
- const RowFormat * row_lay = sheet->rowFormat( y );
- dblCurrentCellPos.setX( dblCorner.x() );
-
- for ( int x = regionLeft;
- x <= regionRight && dblCurrentCellPos.x() <= viewRegion.right();
- ++x )
- {
- const ColumnFormat *col_lay = sheet->columnFormat( x );
- Cell* cell = sheet->cellAt( x, y );
-
- TQPoint cellRef( x, y );
-
-#if 0
- bool paintBordersBottom = false;
- bool paintBordersRight = false;
- bool paintBordersLeft = false;
- bool paintBordersTop = false;
-#endif
- int paintBorder = Cell::Border_None;
-
- TQPen rightPen( cell->effRightBorderPen( x, y ) );
- TQPen leftPen( cell->effLeftBorderPen( x, y ) );
- TQPen topPen( cell->effTopBorderPen( x, y ) );
- TQPen bottomPen( cell->effBottomBorderPen( x, y ) );
-
- // Paint border if outermost cell or if the pen is more "worth"
- // than the border pen of the cell on the other side of the
- // border or if the cell on the other side is not painted. In
- // the latter case get the pen that is of more "worth"
-
- // right border:
- if ( x >= KS_colMax )
- //paintBordersRight = true;
- paintBorder |= Cell::Border_Right;
- else if ( x == regionRight ) {
- paintBorder |= Cell::Border_Right;
- if ( cell->effRightBorderValue( x, y )
- < sheet->cellAt( x + 1, y )->effLeftBorderValue( x + 1, y ) )
- rightPen = sheet->cellAt( x + 1, y )->effLeftBorderPen( x + 1, y );
- }
- else {
- paintBorder |= Cell::Border_Right;
- if ( cell->effRightBorderValue( x, y )
- < sheet->cellAt( x + 1, y )->effLeftBorderValue( x + 1, y ) )
- rightPen = sheet->cellAt( x + 1, y )->effLeftBorderPen( x + 1, y );
- }
-
- // Similiar for other borders...
- // bottom border:
- if ( y >= KS_rowMax )
- paintBorder |= Cell::Border_Bottom;
- else if ( y == regionBottom ) {
- paintBorder |= Cell::Border_Bottom;
- if ( cell->effBottomBorderValue( x, y )
- < sheet->cellAt( x, y + 1 )->effTopBorderValue( x, y + 1) )
- bottomPen = sheet->cellAt( x, y + 1 )->effTopBorderPen( x, y + 1 );
- }
- else {
- paintBorder |= Cell::Border_Bottom;
- if ( cell->effBottomBorderValue( x, y )
- < sheet->cellAt( x, y + 1 )->effTopBorderValue( x, y + 1) )
- bottomPen = sheet->cellAt( x, y + 1 )->effTopBorderPen( x, y + 1 );
- }
-
- // left border:
- if ( x == 1 )
- paintBorder |= Cell::Border_Left;
- else if ( x == regionLeft ) {
- paintBorder |= Cell::Border_Left;
- if ( cell->effLeftBorderValue( x, y )
- < sheet->cellAt( x - 1, y )->effRightBorderValue( x - 1, y ) )
- leftPen = sheet->cellAt( x - 1, y )->effRightBorderPen( x - 1, y );
- }
- else {
- paintBorder |= Cell::Border_Left;
- if ( cell->effLeftBorderValue( x, y )
- < sheet->cellAt( x - 1, y )->effRightBorderValue( x - 1, y ) )
- leftPen = sheet->cellAt( x - 1, y )->effRightBorderPen( x - 1, y );
- }
-
- // top border:
- if ( y == 1 )
- paintBorder |= Cell::Border_Top;
- else if ( y == regionTop ) {
- paintBorder |= Cell::Border_Top;
- if ( cell->effTopBorderValue( x, y )
- < sheet->cellAt( x, y - 1 )->effBottomBorderValue( x, y - 1 ) )
- topPen = sheet->cellAt( x, y - 1 )->effBottomBorderPen( x, y - 1 );
- }
- else {
- paintBorder |= Cell::Border_Top;
- if ( cell->effTopBorderValue( x, y )
- < sheet->cellAt( x, y - 1 )->effBottomBorderValue( x, y - 1 ) )
- topPen = sheet->cellAt( x, y - 1 )->effBottomBorderPen( x, y - 1 );
- }
-
-#if 0
- cell->paintCell( viewRegion, painter, view, dblCurrentCellPos, cellRef,
- paintBordersRight, paintBordersBottom,
- paintBordersLeft, paintBordersTop,
- rightPen, bottomPen, leftPen, topPen,
- mergedCellsPainted, false );
-
- Cell::BorderSides highlightBorder=Cell::Border_None;
- TQPen highlightPen;
-#endif
-
- cell->paintCell( viewRegion, painter, view, dblCurrentCellPos, cellRef,
- paintBorder,
- rightPen, bottomPen, leftPen, topPen,
- mergedCellsPainted, false );
-
-
- dblCurrentCellPos.setX( dblCurrentCellPos.x() + col_lay->dblWidth() );
- }
- dblCurrentCellPos.setY( dblCurrentCellPos.y() + row_lay->dblHeight() );
- }
-}
-
-
-DCOPObject* Doc::dcopObject()
-{
- if ( !d->dcop )
- d->dcop = new DocIface( this );
-
- return d->dcop;
-}
-
-void Doc::addAreaName(const TQRect &_rect,const TQString & name,const TQString & sheetName)
-{
- setModified( true );
- Reference tmp;
- tmp.rect = _rect;
- tmp.sheet_name = sheetName;
- tmp.ref_name = name;
- d->refs.append( tmp);
- emit sig_addAreaName( name );
-}
-
-void Doc::removeArea( const TQString & name)
-{
- TQValueList<Reference>::Iterator it2;
- for ( it2 = d->refs.begin(); it2 != d->refs.end(); ++it2 )
- {
- if((*it2).ref_name==name)
- {
- d->refs.remove(it2);
- emit sig_removeAreaName( name );
- return;
- }
- }
-}
-
-void Doc::changeAreaSheetName(const TQString & oldName,const TQString & sheetName)
-{
- TQValueList<Reference>::Iterator it2;
- for ( it2 = d->refs.begin(); it2 != d->refs.end(); ++it2 )
- {
- if((*it2).sheet_name==oldName)
- (*it2).sheet_name=sheetName;
- }
-}
-
-TQRect Doc::getRectArea(const TQString &_sheetName)
-{
- TQValueList<Reference>::Iterator it2;
- for ( it2 = d->refs.begin(); it2 != d->refs.end(); ++it2 )
- {
- if((*it2).ref_name==_sheetName)
- {
- return (*it2).rect;
- }
- }
- return TQRect(-1,-1,-1,-1);
-}
-
-TQDomElement Doc::saveAreaName( TQDomDocument& doc )
-{
- TQDomElement element = doc.createElement( "areaname" );
- TQValueList<Reference>::Iterator it2;
- for ( it2 = d->refs.begin(); it2 != d->refs.end(); ++it2 )
- {
- TQDomElement e = doc.createElement("reference");
- TQDomElement tabname = doc.createElement( "tabname" );
- tabname.appendChild( doc.createTextNode( (*it2).sheet_name ) );
- e.appendChild( tabname );
-
- TQDomElement refname = doc.createElement( "refname" );
- refname.appendChild( doc.createTextNode( (*it2).ref_name ) );
- e.appendChild( refname );
-
- TQDomElement rect = doc.createElement( "rect" );
- rect.setAttribute( "left-rect", ((*it2).rect).left() );
- rect.setAttribute( "right-rect",((*it2).rect).right() );
- rect.setAttribute( "top-rect", ((*it2).rect).top() );
- rect.setAttribute( "bottom-rect", ((*it2).rect).bottom() );
- e.appendChild( rect );
- element.appendChild(e);
- }
- return element;
-}
-
-void Doc::loadOasisCellValidation( const TQDomElement&body )
-{
- TQDomNode validation = KoDom::namedItemNS( body, KoXmlNS::table, "content-validations" );
- kdDebug()<<"void Doc::loadOasisCellValidation( const TQDomElement&body ) \n";
- kdDebug()<<"validation.isNull ? "<<validation.isNull()<<endl;
- if ( !validation.isNull() )
- {
- TQDomNode n = validation.firstChild();
- for( ; !n.isNull(); n = n.nextSibling() )
- {
- if ( n.isElement() )
- {
- TQDomElement element = n.toElement();
- //kdDebug()<<" loadOasisCellValidation element.tagName() :"<<element.tagName()<<endl;
- if ( element.tagName() == "content-validation" && element.namespaceURI() == KoXmlNS::table ) {
- d->m_loadingInfo->appendValidation(element.attributeNS( KoXmlNS::table, "name", TQString() ), element );
- kdDebug()<<" validation found :"<<element.attributeNS( KoXmlNS::table, "name", TQString() )<<endl;
- }
- else {
- kdDebug()<<" Tag not recognize :"<<element.tagName()<<endl;
- }
- }
- }
- }
-}
-
-void Doc::saveOasisAreaName( KoXmlWriter & xmlWriter )
-{
- if ( listArea().count()>0 )
- {
- xmlWriter.startElement( "table:named-expressions" );
- TQValueList<Reference>::Iterator it;
- for ( it = d->refs.begin(); it != d->refs.end(); ++it )
- {
- xmlWriter.startElement( "table:named-range" );
-
- xmlWriter.addAttribute( "table:name", ( *it ).ref_name );
- xmlWriter.addAttribute( "table:base-cell-address", convertRefToBase( ( *it ).sheet_name, ( *it ).rect ) );
- xmlWriter.addAttribute( "table:cell-range-address", convertRefToRange( ( *it ).sheet_name, ( *it ).rect ) );
-
- xmlWriter.endElement();
- }
- xmlWriter.endElement();
- }
-}
-
-void Doc::loadOasisAreaName( const TQDomElement& body )
-{
- kdDebug()<<"void Doc::loadOasisAreaName( const TQDomElement& body ) \n";
- TQDomNode namedAreas = KoDom::namedItemNS( body, KoXmlNS::table, "named-expressions" );
- if ( !namedAreas.isNull() )
- {
- kdDebug()<<" area name exist \n";
- TQDomNode area = namedAreas.firstChild();
- while ( !area.isNull() )
- {
- TQDomElement e = area.toElement();
-
- if ( e.localName() == "named-range" )
- {
- if ( !e.hasAttributeNS( KoXmlNS::table, "name" ) || !e.hasAttributeNS( KoXmlNS::table, "cell-range-address" ) )
- {
- kdDebug() << "Reading in named area failed" << endl;
- area = area.nextSibling();
- continue;
- }
-
- // TODO: what is: sheet:base-cell-address
- TQString name = e.attributeNS( KoXmlNS::table, "name", TQString() );
- TQString range = e.attributeNS( KoXmlNS::table, "cell-range-address", TQString() );
- kdDebug()<<"area name : "<<name<<" range :"<<range<<endl;
- d->m_loadingInfo->addWordInAreaList( name );
- kdDebug() << "Reading in named area, name: " << name << ", area: " << range << endl;
-
- range = Oasis::decodeFormula( range );
-
- if ( range.find( ':' ) == -1 )
- {
- Point p( range );
-
- int n = range.find( '!' );
- if ( n > 0 )
- range = range + ":" + range.right( range.length() - n - 1);
-
- kdDebug() << "=> Area: " << range << endl;
- }
-
- if ( range.contains( '!' ) && range[0] == '$' )
- {
- // cut absolute sheet indicator
- range.remove( 0, 1 );
- }
-
- Range p( range );
-
- addAreaName( p.range(), name, p.sheetName() );
- kdDebug() << "Area range: " << p.toString() << endl;
- }
- else if ( e.localName() == "named-expression" )
- {
- kdDebug() << "Named expression found." << endl;
- // TODO
- }
-
- area = area.nextSibling();
- }
- }
-}
-
-void Doc::loadAreaName( const TQDomElement& element )
-{
- TQDomElement tmp=element.firstChild().toElement();
- for( ; !tmp.isNull(); tmp=tmp.nextSibling().toElement() )
- {
- if ( tmp.tagName() == "reference" )
- {
- TQString tabname;
- TQString refname;
- int left=0;
- int right=0;
- int top=0;
- int bottom=0;
- TQDomElement sheetName = tmp.namedItem( "tabname" ).toElement();
- if ( !sheetName.isNull() )
- {
- tabname=sheetName.text();
- }
- TQDomElement referenceName = tmp.namedItem( "refname" ).toElement();
- if ( !referenceName.isNull() )
- {
- refname=referenceName.text();
- }
- TQDomElement rect =tmp.namedItem( "rect" ).toElement();
- if (!rect.isNull())
- {
- bool ok;
- if ( rect.hasAttribute( "left-rect" ) )
- left=rect.attribute("left-rect").toInt( &ok );
- if ( rect.hasAttribute( "right-rect" ) )
- right=rect.attribute("right-rect").toInt( &ok );
- if ( rect.hasAttribute( "top-rect" ) )
- top=rect.attribute("top-rect").toInt( &ok );
- if ( rect.hasAttribute( "bottom-rect" ) )
- bottom=rect.attribute("bottom-rect").toInt( &ok );
- }
- TQRect _rect;
- _rect.setCoords(left,top,right,bottom);
- addAreaName(_rect,refname,tabname);
- }
- }
-}
-
-void Doc::addStringCompletion(const TQString &stringCompletion)
-{
- if ( d->listCompletion.items().contains(stringCompletion) == 0 )
- d->listCompletion.addItem( stringCompletion );
-}
-
-void Doc::refreshInterface()
-{
- emit sig_refreshView();
-}
-
-void Doc::refreshLocale()
-{
- emit sig_refreshLocale();
-}
-
-
-void Doc::emitBeginOperation(bool waitCursor)
-{
- //If an emitBeginOperation occurs with waitCursor enabled, then the waiting cursor is set
- //until all operations have been completed.
- //
- //The reason being that any operations started before the first one with waitCursor set
- //are expected to be completed in a short time anyway.
- TQCursor* activeOverride = static_cast<TQCursor*>(TQApplication::overrideCursor());
-
- if (waitCursor && ( (!activeOverride) || (activeOverride->shape() != TQt::waitCursor.shape()) ) )
- {
- TQApplication::setOverrideCursor(TQt::waitCursor);
- }
-
-// /* just duplicate the current cursor on the stack, then */
-// else if (TQApplication::overrideCursor() != NULL)
-// {
-// TQApplication::setOverrideCursor(TQApplication::overrideCursor()->shape());
-// }
-
- KoDocument::emitBeginOperation();
- d->delayCalculation = true;
- d->numOperations++;
-}
-
-void Doc::emitBeginOperation(void)
-{
- emitBeginOperation(true);
-}
-
-
-void Doc::emitEndOperation()
-{
- d->numOperations--;
-
- if (d->numOperations <= 0)
- {
- d->numOperations = 0;
- d->delayCalculation = false;
- }
-
- KoDocument::emitEndOperation();
-
- if (d->numOperations == 0)
- {
- TQApplication::restoreOverrideCursor();
-
- /* do this after the parent class emitEndOperation because that allows updates
- on the view again
- */
- paintUpdates();
- }
-}
-
-void Doc::emitEndOperation( const Region& /*region*/ )
-{
- d->numOperations--;
-
- if ( d->numOperations > 0 || !d->activeSheet )
- {
- KoDocument::emitEndOperation();
- return;
- }
-
- d->numOperations = 0;
- d->delayCalculation = false;
-
- KoDocument::emitEndOperation();
-
- TQApplication::restoreOverrideCursor();
-
- /* do this after the parent class emitEndOperation because that allows updates
- on the view again
- */
- paintUpdates();
-}
-
-bool Doc::delayCalculation() const
-{
- return d->delayCalculation;
-}
-
-void Doc::updateBorderButton()
-{
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- static_cast<View *>( it.current() )->updateBorderButton();
-}
-
-void Doc::insertSheet( Sheet * sheet )
-{
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- ((View*)it.current())->insertSheet( sheet );
-}
-
-void Doc::takeSheet( Sheet * sheet )
-{
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- ((View*)it.current())->removeSheet( sheet );
-}
-
-void Doc::addIgnoreWordAll( const TQString & word)
-{
- if( d->spellListIgnoreAll.findIndex( word )==-1)
- d->spellListIgnoreAll.append( word );
-}
-
-void Doc::clearIgnoreWordAll( )
-{
- d->spellListIgnoreAll.clear();
-}
-
-void Doc::setDisplaySheet(Sheet *_sheet )
-{
- d->activeSheet = _sheet;
-}
-
-KSPLoadingInfo * Doc::loadingInfo() const
-{
- return d->m_loadingInfo;
-}
-
-void Doc::deleteLoadingInfo()
-{
- delete d->m_loadingInfo;
- d->m_loadingInfo = 0;
-}
-
-Sheet * Doc::displaySheet() const
-{
- return d->activeSheet;
-}
-
-void Doc::addView( KoView *_view )
-{
- KoDocument::addView( _view );
- TQPtrListIterator<KoView> it( views() );
- for (; it.current(); ++it )
- ((View*)it.current())->closeEditor();
-}
-
-void Doc::addDamage( Damage* damage )
-{
- d->damages.append( damage );
-
- if( d->damages.count() == 1 )
- TQTimer::singleShot( 0, this, TQT_SLOT( flushDamages() ) );
-}
-
-void Doc::flushDamages()
-{
- emit damagesFlushed( d->damages );
- TQValueList<Damage*>::Iterator it;
- for( it = d->damages.begin(); it != d->damages.end(); ++it )
- delete *it;
- d->damages.clear();
-}
-
-void Doc::loadConfigFromFile()
-{
- d->configLoadFromFile = true;
-}
-
-bool Doc::configLoadFromFile() const
-{
- return d->configLoadFromFile;
-}
-
-
-void Doc::insertObject( EmbeddedObject * obj )
-{
- switch ( obj->getType() )
- {
- case OBJECT_KOFFICE_PART: case OBJECT_CHART:
- {
- KoDocument::insertChild( dynamic_cast<EmbeddedKOfficeObject*>(obj)->embeddedObject() );
- break;
- }
- default:
- ;
- }
- d->m_embeddedObjects.append( obj );
-}
-
-TQPtrList<EmbeddedObject>& Doc::embeddedObjects()
-{
- return d->m_embeddedObjects;
-}
-
-KoPictureCollection *Doc::pictureCollection()
-{
- return &d->m_pictureCollection;
-}
-
-void Doc::repaint( const TQRect& rect )
-{
- TQRect r;
- TQPtrListIterator<KoView> it( views() );
- for( ; it.current(); ++it )
- {
- r = rect;
- Canvas* canvas = ((View*)it.current())->canvasWidget();
- r.moveTopLeft( TQPoint( r.x() - (int) canvas->xOffset(),
- r.y() - (int) canvas->yOffset() ) );
- canvas->update( r );
- }
-}
-
-void Doc::repaint( EmbeddedObject *obj )
-{
- TQPtrListIterator<KoView> it( views() );
- for( ; it.current(); ++it )
- {
- Canvas* canvas = ((View*)it.current())->canvasWidget();
- if ( obj->sheet() == canvas->activeSheet() )
- canvas->repaintObject( obj );
- }
-}
-
-void Doc::repaint( const KoRect& rect )
-{
- TQRect r;
- TQPtrListIterator<KoView> it( views() );
- for( ; it.current(); ++it )
- {
- Canvas* canvas = ((View*)it.current())->canvasWidget();
-
- r = zoomRect( rect );
- r.moveBy( (int)( -canvas->xOffset()*zoomedResolutionX() ) ,
- (int)( -canvas->yOffset() *zoomedResolutionY()) );
- canvas->update( r );
- }
-}
-
-void Doc::addShell( KoMainWindow *shell )
-{
- connect( shell, TQT_SIGNAL( documentSaved() ), d->commandHistory, TQT_SLOT( documentSaved() ) );
- KoDocument::addShell( shell );
-}
-
-int Doc::undoRedoLimit() const
-{
- return d->commandHistory->undoLimit();
-}
-
-void Doc::setUndoRedoLimit(int val)
-{
- d->commandHistory->setUndoLimit(val);
- d->commandHistory->setRedoLimit(val);
-}
-
-void Doc::insertPixmapKey( KoPictureKey key )
-{
- if ( !d->usedPictures.contains( key ) )
- d->usedPictures.append( key );
-}
-
-void Doc::makeUsedPixmapList()
-{
- d->usedPictures.clear();
- TQPtrListIterator<EmbeddedObject> it( d->m_embeddedObjects );
- for ( ; it.current() ; ++it )
- {
- if( it.current()->getType() == OBJECT_PICTURE && ( d->m_savingWholeDocument || it.current()->isSelected() ) )
- insertPixmapKey( static_cast<EmbeddedPictureObject*>( it.current() )->getKey() );
- }
-}
-
-bool Doc::savingWholeDocument()
-{
- return d->m_savingWholeDocument;
-}
-
-#include "kspread_doc.moc"
-