Files
libreoffice/sc/source/ui/unoobj/docuno.cxx

3741 lines
137 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patches contributed by Herbert Duerr i#118735 prevent endless loop if vlookup/hlookup doesn't find anything http://svn.apache.org/viewvc?view=revision&revision=1239673 Patches contributed by Andre Fischer remove lp_solver http://svn.apache.org/viewvc?view=revision&revision=1199180 i#118160: Added external CoinMP library. http://svn.apache.org/viewvc?view=revision&revision=1233909 Patches contributed by Armin Le-Grand i#118485 - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 i#118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 Patches contributed by lihuiibm i#108860 - Fix range validation. http://svn.apache.org/viewvc?view=revision&revision=1242846 i#118954 Chart data will lost after copy to different file http://svn.apache.org/viewvc?view=revision&revision=1301345 Patches contributed by Ariel Constenla-Haile Fix Linux build breaker: extra qualification on member http://svn.apache.org/viewvc?view=revision&revision=1301591 i#118696 - i#118697 - Fix some Sheet Tab Color API issues http://svn.apache.org/viewvc?view=revision&revision=1225428 i#118697 - Fix uninitialized variable http://svn.apache.org/viewvc?view=revision&revision=1225859 i#118771 - ScUndoImportTab should preserve tab background color http://svn.apache.org/viewvc?view=revision&revision=1230356 i#118921 - Repaint linked sheet tab background color after updating link http://svn.apache.org/viewvc?view=revision&revision=1245177 i#118927 - Undo/Redo "Update Link" does not reset sheet tab color http://svn.apache.org/viewvc?view=revision&revision=1245241 i#118747 - Copy tab color when transferring sheets across documents http://svn.apache.org/viewvc?view=revision&revision=1230355 Patch contributed by Oliver Rainer-Wittman i#118012 - methods <ScBroadcastAreaSlot::AreaBroadcast(..)> and <ScBroadcastAreaSlot::AreaBroadcastInRange(..)> adapt stl-container iteration in order to avoid destroyed iterators during iteration. http://svn.apache.org/viewvc?view=revision&revision=1297916 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 Patch contributed by Daniel Rentz calc69: #i116936# fix VBA symbol Cells http://svn.apache.org/viewvc?view=revision&revision=1172135 Patches contributed by leiw: i#118546 CPU 100% on switched off AutoCalculate with Conditional Formatting on date values http://svn.apache.org/viewvc?view=revision&revision=1301380 Re-add new function documentation. Many various cleanups. Add missing calc66: #o11817313# also look at formula result number format, remove redundant binaries.
2012-11-30 12:23:25 +00:00
/*
* This file is part of the LibreOffice project.
2000-09-18 16:07:07 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Herbert Duerr i#118735 prevent endless loop if vlookup/hlookup doesn't find anything http://svn.apache.org/viewvc?view=revision&revision=1239673 Patches contributed by Andre Fischer remove lp_solver http://svn.apache.org/viewvc?view=revision&revision=1199180 i#118160: Added external CoinMP library. http://svn.apache.org/viewvc?view=revision&revision=1233909 Patches contributed by Armin Le-Grand i#118485 - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 i#118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 Patches contributed by lihuiibm i#108860 - Fix range validation. http://svn.apache.org/viewvc?view=revision&revision=1242846 i#118954 Chart data will lost after copy to different file http://svn.apache.org/viewvc?view=revision&revision=1301345 Patches contributed by Ariel Constenla-Haile Fix Linux build breaker: extra qualification on member http://svn.apache.org/viewvc?view=revision&revision=1301591 i#118696 - i#118697 - Fix some Sheet Tab Color API issues http://svn.apache.org/viewvc?view=revision&revision=1225428 i#118697 - Fix uninitialized variable http://svn.apache.org/viewvc?view=revision&revision=1225859 i#118771 - ScUndoImportTab should preserve tab background color http://svn.apache.org/viewvc?view=revision&revision=1230356 i#118921 - Repaint linked sheet tab background color after updating link http://svn.apache.org/viewvc?view=revision&revision=1245177 i#118927 - Undo/Redo "Update Link" does not reset sheet tab color http://svn.apache.org/viewvc?view=revision&revision=1245241 i#118747 - Copy tab color when transferring sheets across documents http://svn.apache.org/viewvc?view=revision&revision=1230355 Patch contributed by Oliver Rainer-Wittman i#118012 - methods <ScBroadcastAreaSlot::AreaBroadcast(..)> and <ScBroadcastAreaSlot::AreaBroadcastInRange(..)> adapt stl-container iteration in order to avoid destroyed iterators during iteration. http://svn.apache.org/viewvc?view=revision&revision=1297916 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 Patch contributed by Daniel Rentz calc69: #i116936# fix VBA symbol Cells http://svn.apache.org/viewvc?view=revision&revision=1172135 Patches contributed by leiw: i#118546 CPU 100% on switched off AutoCalculate with Conditional Formatting on date values http://svn.apache.org/viewvc?view=revision&revision=1301380 Re-add new function documentation. Many various cleanups. Add missing calc66: #o11817313# also look at formula result number format, remove redundant binaries.
2012-11-30 12:23:25 +00:00
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
2000-09-18 16:07:07 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Herbert Duerr i#118735 prevent endless loop if vlookup/hlookup doesn't find anything http://svn.apache.org/viewvc?view=revision&revision=1239673 Patches contributed by Andre Fischer remove lp_solver http://svn.apache.org/viewvc?view=revision&revision=1199180 i#118160: Added external CoinMP library. http://svn.apache.org/viewvc?view=revision&revision=1233909 Patches contributed by Armin Le-Grand i#118485 - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 i#118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 Patches contributed by lihuiibm i#108860 - Fix range validation. http://svn.apache.org/viewvc?view=revision&revision=1242846 i#118954 Chart data will lost after copy to different file http://svn.apache.org/viewvc?view=revision&revision=1301345 Patches contributed by Ariel Constenla-Haile Fix Linux build breaker: extra qualification on member http://svn.apache.org/viewvc?view=revision&revision=1301591 i#118696 - i#118697 - Fix some Sheet Tab Color API issues http://svn.apache.org/viewvc?view=revision&revision=1225428 i#118697 - Fix uninitialized variable http://svn.apache.org/viewvc?view=revision&revision=1225859 i#118771 - ScUndoImportTab should preserve tab background color http://svn.apache.org/viewvc?view=revision&revision=1230356 i#118921 - Repaint linked sheet tab background color after updating link http://svn.apache.org/viewvc?view=revision&revision=1245177 i#118927 - Undo/Redo "Update Link" does not reset sheet tab color http://svn.apache.org/viewvc?view=revision&revision=1245241 i#118747 - Copy tab color when transferring sheets across documents http://svn.apache.org/viewvc?view=revision&revision=1230355 Patch contributed by Oliver Rainer-Wittman i#118012 - methods <ScBroadcastAreaSlot::AreaBroadcast(..)> and <ScBroadcastAreaSlot::AreaBroadcastInRange(..)> adapt stl-container iteration in order to avoid destroyed iterators during iteration. http://svn.apache.org/viewvc?view=revision&revision=1297916 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 Patch contributed by Daniel Rentz calc69: #i116936# fix VBA symbol Cells http://svn.apache.org/viewvc?view=revision&revision=1172135 Patches contributed by leiw: i#118546 CPU 100% on switched off AutoCalculate with Conditional Formatting on date values http://svn.apache.org/viewvc?view=revision&revision=1301380 Re-add new function documentation. Many various cleanups. Add missing calc66: #o11817313# also look at formula result number format, remove redundant binaries.
2012-11-30 12:23:25 +00:00
* This file incorporates work covered by the following license notice:
2000-09-18 16:07:07 +00:00
*
re-base on ALv2 code. Includes: Patches contributed by Herbert Duerr i#118735 prevent endless loop if vlookup/hlookup doesn't find anything http://svn.apache.org/viewvc?view=revision&revision=1239673 Patches contributed by Andre Fischer remove lp_solver http://svn.apache.org/viewvc?view=revision&revision=1199180 i#118160: Added external CoinMP library. http://svn.apache.org/viewvc?view=revision&revision=1233909 Patches contributed by Armin Le-Grand i#118485 - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 i#118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 Patches contributed by lihuiibm i#108860 - Fix range validation. http://svn.apache.org/viewvc?view=revision&revision=1242846 i#118954 Chart data will lost after copy to different file http://svn.apache.org/viewvc?view=revision&revision=1301345 Patches contributed by Ariel Constenla-Haile Fix Linux build breaker: extra qualification on member http://svn.apache.org/viewvc?view=revision&revision=1301591 i#118696 - i#118697 - Fix some Sheet Tab Color API issues http://svn.apache.org/viewvc?view=revision&revision=1225428 i#118697 - Fix uninitialized variable http://svn.apache.org/viewvc?view=revision&revision=1225859 i#118771 - ScUndoImportTab should preserve tab background color http://svn.apache.org/viewvc?view=revision&revision=1230356 i#118921 - Repaint linked sheet tab background color after updating link http://svn.apache.org/viewvc?view=revision&revision=1245177 i#118927 - Undo/Redo "Update Link" does not reset sheet tab color http://svn.apache.org/viewvc?view=revision&revision=1245241 i#118747 - Copy tab color when transferring sheets across documents http://svn.apache.org/viewvc?view=revision&revision=1230355 Patch contributed by Oliver Rainer-Wittman i#118012 - methods <ScBroadcastAreaSlot::AreaBroadcast(..)> and <ScBroadcastAreaSlot::AreaBroadcastInRange(..)> adapt stl-container iteration in order to avoid destroyed iterators during iteration. http://svn.apache.org/viewvc?view=revision&revision=1297916 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 Patch contributed by Daniel Rentz calc69: #i116936# fix VBA symbol Cells http://svn.apache.org/viewvc?view=revision&revision=1172135 Patches contributed by leiw: i#118546 CPU 100% on switched off AutoCalculate with Conditional Formatting on date values http://svn.apache.org/viewvc?view=revision&revision=1301380 Re-add new function documentation. Many various cleanups. Add missing calc66: #o11817313# also look at formula result number format, remove redundant binaries.
2012-11-30 12:23:25 +00:00
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include "scitems.hxx"
2000-09-18 16:07:07 +00:00
#include <svx/fmdpage.hxx>
#include <svx/fmview.hxx>
#include <svx/svditer.hxx>
2000-09-18 16:07:07 +00:00
#include <svx/svdpage.hxx>
#include <svx/svxids.hrc>
#include <svx/unoshape.hxx>
2000-09-18 16:07:07 +00:00
#include <officecfg/Office/Common.hxx>
#include <svl/numuno.hxx>
#include <svl/smplhint.hxx>
2010-01-15 00:20:57 +01:00
#include <unotools/moduleoptions.hxx>
2000-09-18 16:07:07 +00:00
#include <sfx2/printer.hxx>
#include <sfx2/bindings.hxx>
#include <vcl/pdfextoutdevdata.hxx>
2000-09-18 16:07:07 +00:00
#include <vcl/waitobj.hxx>
#include <unotools/charclass.hxx>
#include <tools/multisel.hxx>
#include <tools/resary.hxx>
#include <toolkit/awt/vclxdevice.hxx>
2000-09-18 16:07:07 +00:00
#include <ctype.h>
#include <float.h> // DBL_MAX
#include <com/sun/star/util/Date.hpp>
#include <com/sun/star/sheet/XNamedRanges.hpp>
#include <com/sun/star/sheet/XLabelRanges.hpp>
#include <com/sun/star/sheet/XSelectedSheetsSupplier.hpp>
#include <com/sun/star/sheet/XUnnamedDatabaseRanges.hpp>
#include <com/sun/star/i18n/XForbiddenCharacters.hpp>
#include <com/sun/star/script/XLibraryContainer.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
#include <com/sun/star/document/IndexedPropertyValues.hpp>
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
#include <com/sun/star/script/XInvocation.hpp>
#include <com/sun/star/script/vba/XVBAEventProcessor.hpp>
#include <comphelper/processfactory.hxx>
#include <comphelper/servicehelper.hxx>
#include <comphelper/string.hxx>
2000-09-18 16:07:07 +00:00
#include "docuno.hxx"
#include "cellsuno.hxx"
#include "nameuno.hxx"
#include "datauno.hxx"
#include "miscuno.hxx"
#include "notesuno.hxx"
#include "styleuno.hxx"
#include "linkuno.hxx"
#include "servuno.hxx"
#include "targuno.hxx"
#include "convuno.hxx"
#include "optuno.hxx"
#include "forbiuno.hxx"
2000-09-18 16:07:07 +00:00
#include "docsh.hxx"
#include "hints.hxx"
#include "docfunc.hxx"
2012-03-02 03:39:26 +01:00
#include "postit.hxx"
2000-09-18 16:07:07 +00:00
#include "dociter.hxx"
#include "formulacell.hxx"
2000-09-18 16:07:07 +00:00
#include "drwlayer.hxx"
#include "rangeutl.hxx"
#include "markdata.hxx"
#include "docoptio.hxx"
#include "unonames.hxx"
#include "shapeuno.hxx"
#include "viewuno.hxx"
#include "tabvwsh.hxx"
#include "printfun.hxx"
#include "pfuncache.hxx"
#include "scmod.hxx"
#include "ViewSettingsSequenceDefines.hxx"
#include "sheetevents.hxx"
#include "sc.hrc"
#include "scresid.hxx"
2000-09-18 16:07:07 +00:00
using namespace com::sun::star;
// #i111553# provides the name of the VBA constant for this document type (e.g. 'ThisExcelDoc' for Calc)
#define SC_UNO_VBAGLOBNAME "VBAGlobalConstantName"
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
// alles ohne Which-ID, Map nur fuer PropertySetInfo
//! umbenennen, sind nicht mehr nur Options
static const SfxItemPropertyMapEntry* lcl_GetDocOptPropertyMap()
2000-09-18 16:07:07 +00:00
{
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
static SfxItemPropertyMapEntry aDocOptPropertyMap_Impl[] =
2000-09-18 16:07:07 +00:00
{
{MAP_CHAR_LEN(SC_UNO_APPLYFMDES), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_AREALINKS), 0, &getCppuType((uno::Reference<sheet::XAreaLinks>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_AUTOCONTFOC), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_BASICLIBRARIES), 0, &getCppuType((uno::Reference< script::XLibraryContainer >*)0), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_DIALOGLIBRARIES), 0, &getCppuType((uno::Reference< script::XLibraryContainer >*)0), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_VBAGLOBNAME), 0, &getCppuType(static_cast< const rtl::OUString * >(0)), beans::PropertyAttribute::READONLY, 0},
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
{MAP_CHAR_LEN(SC_UNO_CALCASSHOWN), PROP_UNO_CALCASSHOWN, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNONAME_CLOCAL), 0, &getCppuType((lang::Locale*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_CJK_CLOCAL), 0, &getCppuType((lang::Locale*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_CTL_CLOCAL), 0, &getCppuType((lang::Locale*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_COLLABELRNG), 0, &getCppuType((uno::Reference<sheet::XLabelRanges>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_DDELINKS), 0, &getCppuType((uno::Reference<container::XNameAccess>*)0), 0, 0},
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
{MAP_CHAR_LEN(SC_UNO_DEFTABSTOP), PROP_UNO_DEFTABSTOP, &getCppuType((sal_Int16*)0), 0, 0},
CWS-TOOLING: integrate CWS mooxlsc 2008-12-12 09:32:19 +0100 dr r265390 : #i10000# warning 2008-12-11 14:54:26 +0100 dr r265301 : add strings from dr66 to meet ui freeze 2008-12-11 14:53:20 +0100 dr r265300 : add strings from dr66 to meet ui freeze 2008-12-08 14:43:25 +0100 er r264997 : DBG_... need semicolon 2008-12-04 19:16:50 +0100 er r264872 : DBG_... needs semicolon 2008-12-04 11:09:27 +0100 er r264824 : DBG_ERROR needs semicolon 2008-12-03 13:29:46 +0100 er r264770 : CWS-TOOLING: rebase CWS mooxlsc to trunk@264325 (milestone: DEV300:m36) 2008-12-02 16:49:09 +0100 er r264722 : disable code for named references #i4385# import as long as #i3740# isn't fully implemented 2008-12-02 16:45:04 +0100 er r264721 : some compilers attempt to be too smart; persuade them it's really meant what was written 2008-12-02 16:04:56 +0100 er r264715 : #i3740# no storage in ODF for external name references 2008-11-29 02:20:50 +0100 er r264575 : some huge performance improvement when reading repeated empty rows for the external references cache from ODF, as they often occur in the sparse matrix 2008-11-29 01:14:55 +0100 er r264574 : WriteExternalRefCaches: for table:number-columns-repeated write used columns instead of MAXCOLCOUNT 2008-11-28 18:30:04 +0100 er r264570 : #i3740# write/read external name references as bracketed references, as proposed on the ODFF list 2008-11-27 20:36:54 +0100 er r264521 : merge i95068 from cws calc46 for code correctness 2008-11-21 20:39:34 +0100 kohei r264174 : fixed a crash when importing a BIFF8 document with per-sheet external names. For now, we don't support per-sheet external names. Let's throw in NoName error until they are supported. 2008-11-21 18:47:27 +0100 kohei r264168 : I forgot to process cached range references in the EXTERNNAME record, which prevented cached external names with range references from being imported correctly. P.S. I swear I thought I had covered this.... 2008-11-20 23:07:22 +0100 er r264104 : #i4385# parse external defined names in MOOXML import 2008-11-14 23:18:54 +0100 er r263700 : #i92797# parse external sheet references under aspects of MOOXML import and new ScExternalRefManager 2008-11-14 18:49:48 +0100 er r263696 : remove infinity assertion, leftover from binary file format; coded double error may occur via filter import 2008-11-12 13:29:44 +0100 er r263593 : make references to entire rows/columns, such as A:A or 3:3, actually work in MOOXML import 2008-11-03 12:35:11 +0100 er r263282 : a struct is a struct is a ... 2008-10-31 00:30:59 +0100 er r262843 : aTableRowCellAttrTokenMap needed 2008-10-31 00:26:07 +0100 er r262842 : GetTableRowCellAttrTokenMap() is not unused 2008-10-31 00:13:53 +0100 er r262841 : merge error 2008-10-31 00:05:39 +0100 er r262840 : merge error 2008-10-30 23:17:48 +0100 er r262839 : unresolved merge conflict!?! 2008-10-30 22:59:11 +0100 er r262838 : merge error 2008-10-30 16:31:04 +0100 hr r262833 : CWS-TOOLING: rebase CWS mooxlsc to trunk@262620 (milestone: DEV300:m34) 2008-10-16 21:57:51 +0200 er r262272 : migrate CWS mooxlsc to SVN
2008-12-12 09:38:47 +00:00
{MAP_CHAR_LEN(SC_UNO_EXTERNALDOCLINKS), 0, &getCppuType((uno::Reference<sheet::XExternalDocLinks>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_FORBIDDEN), 0, &getCppuType((uno::Reference<i18n::XForbiddenCharacters>*)0), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_HASDRAWPAGES), 0, &getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0},
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
{MAP_CHAR_LEN(SC_UNO_IGNORECASE), PROP_UNO_IGNORECASE, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ITERENABLED), PROP_UNO_ITERENABLED, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ITERCOUNT), PROP_UNO_ITERCOUNT, &getCppuType((sal_Int32*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ITEREPSILON), PROP_UNO_ITEREPSILON, &getCppuType((double*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_LOOKUPLABELS), PROP_UNO_LOOKUPLABELS, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_MATCHWHOLE), PROP_UNO_MATCHWHOLE, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_NAMEDRANGES), 0, &getCppuType((uno::Reference<sheet::XNamedRanges>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_DATABASERNG), 0, &getCppuType((uno::Reference<sheet::XDatabaseRanges>*)0), 0, 0},
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
{MAP_CHAR_LEN(SC_UNO_NULLDATE), PROP_UNO_NULLDATE, &getCppuType((util::Date*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ROWLABELRNG), 0, &getCppuType((uno::Reference<sheet::XLabelRanges>*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_SHEETLINKS), 0, &getCppuType((uno::Reference<container::XNameAccess>*)0), 0, 0},
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
{MAP_CHAR_LEN(SC_UNO_SPELLONLINE), PROP_UNO_SPELLONLINE, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_STANDARDDEC), PROP_UNO_STANDARDDEC, &getCppuType((sal_Int16*)0), 0, 0},
{MAP_CHAR_LEN(SC_UNO_REGEXENABLED), PROP_UNO_REGEXENABLED, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_RUNTIMEUID), 0, &getCppuType(static_cast< const rtl::OUString * >(0)), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_HASVALIDSIGNATURES),0, &getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN(SC_UNO_ISLOADED), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ISUNDOENABLED), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ISADJUSTHEIGHTENABLED), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ISEXECUTELINKENABLED), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_ISCHANGEREADONLYENABLED), 0, &getBooleanCppuType(), 0, 0},
{MAP_CHAR_LEN(SC_UNO_REFERENCEDEVICE), 0, &getCppuType((uno::Reference<awt::XDevice>*)0), beans::PropertyAttribute::READONLY, 0},
{MAP_CHAR_LEN("BuildId"), 0, &::getCppuType(static_cast< const rtl::OUString * >(0)), 0, 0},
{MAP_CHAR_LEN(SC_UNO_CODENAME), 0, &getCppuType(static_cast< const rtl::OUString * >(0)), 0, 0},
{0,0,0,0,0,0}
2000-09-18 16:07:07 +00:00
};
return aDocOptPropertyMap_Impl;
}
//! StandardDecimals als Property und vom NumberFormatter ????????
static const SfxItemPropertyMapEntry* lcl_GetColumnsPropertyMap()
2000-12-13 17:56:58 +00:00
{
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
static SfxItemPropertyMapEntry aColumnsPropertyMap_Impl[] =
2000-12-13 17:56:58 +00:00
{
{MAP_CHAR_LEN(SC_UNONAME_MANPAGE), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), 0, &getBooleanCppuType(), 0, 0 },
2000-12-13 17:56:58 +00:00
{MAP_CHAR_LEN(SC_UNONAME_CELLVIS), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_OWIDTH), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_CELLWID), 0, &getCppuType((sal_Int32*)0), 0, 0 },
{0,0,0,0,0,0}
2000-12-13 17:56:58 +00:00
};
return aColumnsPropertyMap_Impl;
}
static const SfxItemPropertyMapEntry* lcl_GetRowsPropertyMap()
2000-12-13 17:56:58 +00:00
{
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
static SfxItemPropertyMapEntry aRowsPropertyMap_Impl[] =
2000-12-13 17:56:58 +00:00
{
{MAP_CHAR_LEN(SC_UNONAME_CELLHGT), 0, &getCppuType((sal_Int32*)0), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_CELLFILT), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_OHEIGHT), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_MANPAGE), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_NEWPAGE), 0, &getBooleanCppuType(), 0, 0 },
2000-12-13 17:56:58 +00:00
{MAP_CHAR_LEN(SC_UNONAME_CELLVIS), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNONAME_CELLBACK), ATTR_BACKGROUND, &::getCppuType((const sal_Int32*)0), 0, MID_BACK_COLOR },
{MAP_CHAR_LEN(SC_UNONAME_CELLTRAN), ATTR_BACKGROUND, &::getBooleanCppuType(), 0, MID_GRAPHIC_TRANSPARENT },
CWS-TOOLING: integrate CWS os128 2009-04-22 12:58:26 +0200 b_michaelsen r271093 : #i101084# using the frames enumeration for other SwXFrames-queries; also added a complex test to ensure the behavior to be the same 2009-04-20 14:53:03 +0200 mav r270987 : #i101219# adjust the testcases to test memory cache and temporary file cache 2009-04-20 14:52:09 +0200 mav r270986 : #i101219#,#i99077# use memory to cache data; no precopying on commit 2009-04-20 14:39:21 +0200 mav r270984 : #i101219# use memory to cache data 2009-04-20 14:39:08 +0200 mav r270983 : #i101219# use memory to cache data 2009-04-20 14:38:45 +0200 mav r270982 : #i101219# use memory to cache data 2009-04-17 07:37:52 +0200 os r270912 : CWS-TOOLING: rebase CWS os128 to trunk@270723 (milestone: DEV300:m46) 2009-04-15 14:54:18 +0200 b_michaelsen r270845 : #i101084# using frame enumerations for paragraph export for better performance 2009-04-15 14:52:54 +0200 b_michaelsen r270843 : #i101084# implemented XEnumerationAccess interface on framesets 2009-04-03 17:08:10 +0200 mav r270504 : #i100722# do not compress streams of known compressed types per default 2009-04-03 13:49:50 +0200 os r270484 : resync error fixed 2009-04-03 12:55:32 +0200 mav r270470 : #i100722# do not compress streams of known compressed types per default 2009-04-03 10:00:58 +0200 os r270463 : resync error fixed 2009-04-03 09:52:53 +0200 os r270462 : resync error fixed 2009-04-03 09:10:14 +0200 os r270449 : #i99568# string compare operator of hash_map changed 2009-04-03 09:03:49 +0200 os r270446 : #i100683# normalize file URLs 2009-04-02 11:09:27 +0200 os r270381 : #i100683# making URLs relative without file access 2009-04-02 09:04:42 +0200 os r270366 : CWS-TOOLING: rebase CWS os128 to trunk@270033 (milestone: DEV300:m45) 2009-03-31 08:08:37 +0200 os r270258 : #i100683# reducing calls to URIHelper::simpleNormalizeMakeRelative() 2009-03-19 17:06:22 +0100 os r269756 : #i99568# XTolerantMultiPropertySet activated 2009-03-16 11:46:14 +0100 os r269517 : wrong commit to #i97471# removed 2009-03-16 11:36:50 +0100 os r269514 : #i97471# SwDrawTextShell::Init(): mouse double click and key input in group objects at the same time: prevent crash 2009-03-13 11:08:54 +0100 os r269464 : #i99568# static SfxItemPropertySet 2009-03-13 11:03:22 +0100 os r269463 : #i99568# static SfxItemPropertySet 2009-03-11 12:59:27 +0100 os r269320 : #i99568# WhichId of properties handled from ScDocOptionsObj added 2009-03-06 09:09:58 +0100 os r268972 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:54:43 +0100 os r268942 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 20:19:52 +0100 os r268941 : #i99568# SfxItemPropertySet improvements 2009-03-05 20:05:03 +0100 os r268940 : #i99568# SfxItemPropertySet improvements 2009-03-05 18:54:47 +0100 os r268936 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:51:38 +0100 os r268931 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 17:33:03 +0100 os r268930 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:53:00 +0100 os r268920 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:52:50 +0100 os r268919 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:50:41 +0100 os r268918 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:41:04 +0100 os r268916 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 15:40:40 +0100 os r268915 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:16:20 +0100 os r268881 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-05 10:15:55 +0100 os r268880 : #i99568# Sfx/SvxItemPropertySet improvements 2009-03-03 08:40:09 +0100 os r268704 : ScTableSheetObj::GetItemPropertyMap fixed 2009-03-03 07:50:00 +0100 os r268703 : SfxItemProperty set as pointer 2009-03-03 07:49:46 +0100 os r268702 : SfxItemProperty set as pointer 2009-03-02 08:15:37 +0100 os r268631 : minor fix 2009-03-02 07:58:38 +0100 os r268630 : minor fix 2009-02-27 13:03:25 +0100 os r268584 : exports 2009-02-27 11:17:04 +0100 os r268567 : debug code removed 2009-02-27 11:04:07 +0100 os r268565 : duplicate return removed 2009-02-27 10:17:37 +0100 os r268558 : syntax fixed 2009-02-27 09:56:14 +0100 os r268554 : #i99568# type mix fixed 2009-02-27 09:40:56 +0100 os r268553 : #i99568# exports changes reverted 2009-02-25 12:50:54 +0100 os r268433 : #i99568# SfxItemPropertySet rework 2009-02-25 12:13:39 +0100 os r268432 : #i99568# SfxItemPropertySet rework 2009-02-25 12:12:47 +0100 os r268431 : #i99568# SfxItemPropertySet rework 2009-02-25 12:10:27 +0100 os r268430 : #i99568# SfxItemPropertySet rework 2009-02-25 12:09:36 +0100 os r268429 : #i99568# SfxItemPropertySet rework 2009-02-25 12:07:39 +0100 os r268428 : #i99568# SfxItemPropertySet rework 2009-02-25 11:59:35 +0100 os r268427 : #i99568# SfxItemPropertySet rework 2009-02-25 11:52:52 +0100 os r268425 : #i99568# SfxItemPropertySet rework 2009-02-25 11:49:17 +0100 os r268424 : #i99568# SfxItemPropertySet rework 2009-02-25 11:45:17 +0100 os r268423 : #i99568# SfxItemPropertySet rework 2009-02-11 11:39:04 +0100 os r267587 : #i57008# use registration of index marks at SwUnoCallback
2009-06-03 11:26:39 +00:00
// not sorted, not used with SfxItemPropertyMapEntry::GetByName
{0,0,0,0,0,0}
2000-12-13 17:56:58 +00:00
};
return aRowsPropertyMap_Impl;
}
using sc::HMMToTwips;
using sc::TwipsToHMM;
2000-12-13 17:56:58 +00:00
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
#define SCMODELOBJ_SERVICE "com.sun.star.sheet.SpreadsheetDocument"
#define SCDOCSETTINGS_SERVICE "com.sun.star.sheet.SpreadsheetDocumentSettings"
#define SCDOC_SERVICE "com.sun.star.document.OfficeDocument"
2000-09-18 16:07:07 +00:00
SC_SIMPLE_SERVICE_INFO( ScAnnotationsObj, "ScAnnotationsObj", "com.sun.star.sheet.CellAnnotations" )
SC_SIMPLE_SERVICE_INFO( ScDrawPagesObj, "ScDrawPagesObj", "com.sun.star.drawing.DrawPages" )
SC_SIMPLE_SERVICE_INFO( ScScenariosObj, "ScScenariosObj", "com.sun.star.sheet.Scenarios" )
SC_SIMPLE_SERVICE_INFO( ScSpreadsheetSettingsObj, "ScSpreadsheetSettingsObj", "com.sun.star.sheet.SpreadsheetDocumentSettings" )
SC_SIMPLE_SERVICE_INFO( ScTableColumnsObj, "ScTableColumnsObj", "com.sun.star.table.TableColumns" )
SC_SIMPLE_SERVICE_INFO( ScTableRowsObj, "ScTableRowsObj", "com.sun.star.table.TableRows" )
SC_SIMPLE_SERVICE_INFO( ScTableSheetsObj, "ScTableSheetsObj", "com.sun.star.sheet.Spreadsheets" )
//------------------------------------------------------------------------
class ScPrintUIOptions : public vcl::PrinterOptionsHelper
{
public:
ScPrintUIOptions();
void SetDefaults();
};
ScPrintUIOptions::ScPrintUIOptions()
{
const ScPrintOptions& rPrintOpt = SC_MOD()->GetPrintOptions();
sal_Int32 nContent = rPrintOpt.GetAllSheets() ? 0 : 1;
sal_Bool bSuppress = rPrintOpt.GetSkipEmpty();
ResStringArray aStrings( ScResId( SCSTR_PRINT_OPTIONS ) );
OSL_ENSURE( aStrings.Count() >= 10, "resource incomplete" );
if( aStrings.Count() < 10 ) // bad resource ?
return;
sal_Int32 nNumProps= 9, nIdx = 0;
m_aUIProperties.realloc(nNumProps);
// load the writer PrinterOptions into the custom tab
m_aUIProperties[nIdx].Name = rtl::OUString("OptionsUIFile");
m_aUIProperties[nIdx++].Value <<= rtl::OUString("modules/scalc/ui/printeroptions.ui");
// create Section for spreadsheet (results in an extra tab page in dialog)
2009-07-23 17:26:52 +00:00
SvtModuleOptions aOpt;
String aAppGroupname( aStrings.GetString( 9 ) );
2009-08-01 15:16:11 +00:00
aAppGroupname.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "%s" ) ),
aOpt.GetModuleName( SvtModuleOptions::E_SCALC ) );
m_aUIProperties[nIdx++].Value = setGroupControlOpt("tabcontrol-page2", aAppGroupname, rtl::OUString());
// show subgroup for pages
m_aUIProperties[nIdx++].Value = setSubgroupControlOpt("pages", rtl::OUString(aStrings.GetString(0)), rtl::OUString());
// create a bool option for empty pages
m_aUIProperties[nIdx++].Value = setBoolControlOpt("includeemptypages", rtl::OUString( aStrings.GetString( 1 ) ),
".HelpID:vcl:PrintDialog:IsIncludeEmptyPages:CheckBox",
"IsIncludeEmptyPages",
! bSuppress);
// show Subgroup for print content
2009-07-28 19:02:03 +00:00
vcl::PrinterOptionsHelper::UIControlOptions aPrintRangeOpt;
aPrintRangeOpt.maGroupHint = rtl::OUString( "PrintRange" );
m_aUIProperties[nIdx++].Value = setSubgroupControlOpt("printrange", rtl::OUString(aStrings.GetString(2)),
2009-07-22 17:15:35 +00:00
rtl::OUString(),
aPrintRangeOpt);
// create a choice for the content to create
uno::Sequence< rtl::OUString > aChoices( 3 ), aHelpIds( 3 ), aWidgetIds( 3 );
aChoices[0] = aStrings.GetString( 3 );
aHelpIds[0] = rtl::OUString( ".HelpID:vcl:PrintDialog:PrintContent:RadioButton:0" );
aWidgetIds[0] = "printallsheets";
aChoices[1] = aStrings.GetString( 4 );
aHelpIds[1] = rtl::OUString( ".HelpID:vcl:PrintDialog:PrintContent:RadioButton:1" );
aWidgetIds[1] = "printselectedsheets";
aChoices[2] = aStrings.GetString( 5 );
aHelpIds[2] = rtl::OUString( ".HelpID:vcl:PrintDialog:PrintContent:RadioButton:2" );
aWidgetIds[2] = "printselectedcells";
m_aUIProperties[nIdx++].Value = setChoiceRadiosControlOpt(aWidgetIds, rtl::OUString(),
aHelpIds, "PrintContent",
aChoices, nContent );
// show Subgroup for print range
2009-07-28 19:02:03 +00:00
aPrintRangeOpt.mbInternalOnly = sal_True;
m_aUIProperties[nIdx++].Value = setSubgroupControlOpt("fromwhich", rtl::OUString(aStrings.GetString(6)),
2009-07-22 17:15:35 +00:00
rtl::OUString(),
aPrintRangeOpt);
// create a choice for the range to print
rtl::OUString aPrintRangeName( "PrintRange" );
aChoices.realloc( 2 );
aHelpIds.realloc( 2 );
aWidgetIds.realloc( 2 );
aChoices[0] = aStrings.GetString( 7 );
aHelpIds[0] = rtl::OUString( ".HelpID:vcl:PrintDialog:PrintRange:RadioButton:0" );
aWidgetIds[0] = "printallpages";
aChoices[1] = aStrings.GetString( 8 );
aHelpIds[1] = rtl::OUString( ".HelpID:vcl:PrintDialog:PrintRange:RadioButton:1" );
aWidgetIds[1] = "printpages";
m_aUIProperties[nIdx++].Value = setChoiceRadiosControlOpt(aWidgetIds, rtl::OUString(),
aHelpIds,
aPrintRangeName,
aChoices,
0 );
// create a an Edit dependent on "Pages" selected
2009-07-28 19:02:03 +00:00
vcl::PrinterOptionsHelper::UIControlOptions aPageRangeOpt( aPrintRangeName, 1, sal_True );
m_aUIProperties[nIdx++].Value = setEditControlOpt("pagerange", rtl::OUString(),
".HelpID:vcl:PrintDialog:PageRange:Edit",
"PageRange", rtl::OUString(), aPageRangeOpt);
assert(nIdx == nNumProps);
}
void ScPrintUIOptions::SetDefaults()
{
// re-initialize the default values from print options
const ScPrintOptions& rPrintOpt = SC_MOD()->GetPrintOptions();
sal_Int32 nContent = rPrintOpt.GetAllSheets() ? 0 : 1;
sal_Bool bSuppress = rPrintOpt.GetSkipEmpty();
for (sal_Int32 nUIPos=0; nUIPos<m_aUIProperties.getLength(); ++nUIPos)
{
uno::Sequence<beans::PropertyValue> aUIProp;
if ( m_aUIProperties[nUIPos].Value >>= aUIProp )
{
for (sal_Int32 nPropPos=0; nPropPos<aUIProp.getLength(); ++nPropPos)
{
rtl::OUString aName = aUIProp[nPropPos].Name;
if ( aName == "Property" )
{
beans::PropertyValue aPropertyValue;
if ( aUIProp[nPropPos].Value >>= aPropertyValue )
{
if ( aPropertyValue.Name == "PrintContent" )
{
aPropertyValue.Value <<= nContent;
aUIProp[nPropPos].Value <<= aPropertyValue;
}
else if ( aPropertyValue.Name == "IsIncludeEmptyPages" )
{
ScUnoHelpFunctions::SetBoolInAny( aPropertyValue.Value, ! bSuppress );
aUIProp[nPropPos].Value <<= aPropertyValue;
}
}
}
}
m_aUIProperties[nUIPos].Value <<= aUIProp;
}
}
}
2000-09-18 16:07:07 +00:00
void ScModelObj::CreateAndSet(ScDocShell* pDocSh)
{
if (pDocSh)
pDocSh->SetBaseModel( new ScModelObj(pDocSh) );
}
ScModelObj::ScModelObj( ScDocShell* pDocSh ) :
SfxBaseModel( pDocSh ),
aPropSet( lcl_GetDocOptPropertyMap() ),
pDocShell( pDocSh ),
pPrintFuncCache( NULL ),
pPrinterOptions( NULL ),
maChangesListeners( m_aMutex )
2000-09-18 16:07:07 +00:00
{
// pDocShell may be NULL if this is the base of a ScDocOptionsObj
if ( pDocShell )
{
pDocShell->GetDocument()->AddUnoObject(*this); // SfxModel is derived from SfxListener
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
}
}
2000-09-18 16:07:07 +00:00
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
ScModelObj::~ScModelObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
if (xNumberAgg.is())
xNumberAgg->setDelegator(uno::Reference<uno::XInterface>());
2000-09-18 16:07:07 +00:00
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
delete pPrintFuncCache;
2009-10-09 15:11:54 +02:00
delete pPrinterOptions;
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
}
uno::Reference< uno::XAggregation> ScModelObj::GetFormatter()
{
// pDocShell may be NULL if this is the base of a ScDocOptionsObj
if ( !xNumberAgg.is() && pDocShell )
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
{
// setDelegator veraendert den RefCount, darum eine Referenz selber halten
// (direkt am m_refCount, um sich beim release nicht selbst zu loeschen)
comphelper::increment( m_refCount );
// waehrend des queryInterface braucht man ein Ref auf das
// SvNumberFormatsSupplierObj, sonst wird es geloescht.
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
uno::Reference<util::XNumberFormatsSupplier> xFormatter(new SvNumberFormatsSupplierObj(pDocShell->GetDocument()->GetFormatTable() ));
{
xNumberAgg.set(uno::Reference<uno::XAggregation>( xFormatter, uno::UNO_QUERY ));
// extra block to force deletion of the temporary before setDelegator
}
2000-09-18 16:07:07 +00:00
// beim setDelegator darf die zusaetzliche Ref nicht mehr existieren
xFormatter = NULL;
2000-09-18 16:07:07 +00:00
if (xNumberAgg.is())
xNumberAgg->setDelegator( (cppu::OWeakObject*)this );
comphelper::decrement( m_refCount );
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
} // if ( !xNumberAgg.is() )
return xNumberAgg;
2000-09-18 16:07:07 +00:00
}
ScDocument* ScModelObj::GetDocument() const
{
if (pDocShell)
return pDocShell->GetDocument();
return NULL;
}
SfxObjectShell* ScModelObj::GetEmbeddedObject() const
{
return pDocShell;
}
void ScModelObj::UpdateAllRowHeights()
{
if (pDocShell)
pDocShell->UpdateAllRowHeights(NULL);
}
void ScModelObj::BeforeXMLLoading()
{
if (pDocShell)
pDocShell->BeforeXMLLoading();
}
void ScModelObj::AfterXMLLoading(sal_Bool bRet)
{
if (pDocShell)
pDocShell->AfterXMLLoading(bRet);
}
CWS-TOOLING: integrate CWS calcsheetdata 2009-08-13 16:18:48 +0200 nn r274950 : #i102616# shared/remote files, better handling of formula results 2009-08-12 11:17:30 +0200 nn r274884 : CWS-TOOLING: rebase CWS calcsheetdata to trunk@274622 (milestone: DEV300:m54) 2009-08-12 10:30:47 +0200 nn r274881 : #i102616# some clean-up 2009-08-11 19:01:18 +0200 nn r274876 : #i102616# store loaded namespaces, so prefixes remain valid 2009-08-11 19:00:49 +0200 nn r274875 : #i102616# store loaded namespaces, so prefixes remain valid 2009-08-10 19:12:04 +0200 nn r274835 : #i102616# detective, notes, encoding, error handling 2009-08-07 11:18:46 +0200 nn r274751 : #i102616# use new method SvXMLAutoStylePoolP::AddNamed 2009-08-07 11:18:15 +0200 nn r274750 : #i102616# new method SvXMLAutoStylePoolP::AddNamed 2009-08-06 18:02:42 +0200 nn r274740 : #i102616# modification: shapes, notes, pending row heights; skip sheets in export iterator 2009-08-05 18:41:59 +0200 nn r274694 : #i102616# handle text styles in notes 2009-08-03 18:55:59 +0200 nn r274594 : #i102616# handle text styles in cells 2009-07-31 19:00:06 +0200 nn r274548 : #i102616# handle styles for notes 2009-07-28 16:46:20 +0200 nn r274414 : missed a conflict 2009-07-28 14:01:56 +0200 nn r274404 : CWS-TOOLING: rebase CWS calcsheetdata to trunk@274203 (milestone: DEV300:m53) 2009-07-23 18:28:47 +0200 nn r274278 : #i102616# handle table styles 2009-07-22 15:40:24 +0200 nn r274244 : #i102616# handle row styles 2009-07-21 20:09:37 +0200 nn r274211 : #i102616# handle column styles 2009-07-16 13:00:18 +0200 nn r274043 : #i102616# invalidate all stream positions when inserting/deleting sheets 2009-07-15 17:41:15 +0200 nn r274021 : #i102616# don't collect cell styles twice for copied sheets 2009-07-14 18:36:11 +0200 nn r273985 : #i102616# allow to query stream position, clear buffer 2009-07-14 18:32:10 +0200 nn r273984 : #i102616# allow to specify a name for an autostyle 2009-07-09 22:01:23 +0200 nn r273870 : #i102616# copy stream for unchanged sheets 2009-07-08 18:11:42 +0200 nn r273844 : #i102616# store stream positions of sheets 2009-06-24 19:08:18 +0200 nn r273363 : #i102616# detect changed sheets since loading 2009-06-09 15:53:32 +0200 nn r272774 : #i102616# store automatic cell style information after loading
2009-09-07 15:38:19 +00:00
ScSheetSaveData* ScModelObj::GetSheetSaveData()
{
if (pDocShell)
return pDocShell->GetSheetSaveData();
return NULL;
}
void ScModelObj::RepaintRange( const ScRange& rRange )
{
if (pDocShell)
pDocShell->PostPaint( rRange, PAINT_GRID );
}
void ScModelObj::RepaintRange( const ScRangeList& rRange )
{
if (pDocShell)
pDocShell->PostPaint( rRange, PAINT_GRID );
}
2000-09-18 16:07:07 +00:00
uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
throw(uno::RuntimeException)
{
SC_QUERYINTERFACE( sheet::XSpreadsheetDocument )
SC_QUERYINTERFACE( document::XActionLockable )
SC_QUERYINTERFACE( sheet::XCalculatable )
SC_QUERYINTERFACE( util::XProtectable )
SC_QUERYINTERFACE( drawing::XDrawPagesSupplier )
SC_QUERYINTERFACE( sheet::XGoalSeek )
SC_QUERYINTERFACE( sheet::XConsolidatable )
SC_QUERYINTERFACE( sheet::XDocumentAuditing )
SC_QUERYINTERFACE( style::XStyleFamiliesSupplier )
SC_QUERYINTERFACE( view::XRenderable )
2000-09-18 16:07:07 +00:00
SC_QUERYINTERFACE( document::XLinkTargetSupplier )
SC_QUERYINTERFACE( beans::XPropertySet )
SC_QUERYINTERFACE( lang::XMultiServiceFactory )
SC_QUERYINTERFACE( lang::XServiceInfo )
SC_QUERYINTERFACE( util::XChangesNotifier )
2000-09-18 16:07:07 +00:00
uno::Any aRet(SfxBaseModel::queryInterface( rType ));
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
if ( !aRet.hasValue()
&& rType != ::getCppuType((uno::Reference< com::sun::star::document::XDocumentEventBroadcaster>*)0)
&& rType != ::getCppuType((uno::Reference< com::sun::star::frame::XController>*)0)
&& rType != ::getCppuType((uno::Reference< com::sun::star::frame::XFrame>*)0)
&& rType != ::getCppuType((uno::Reference< com::sun::star::script::XInvocation>*)0)
&& rType != ::getCppuType((uno::Reference< com::sun::star::beans::XFastPropertySet>*)0)
&& rType != ::getCppuType((uno::Reference< com::sun::star::awt::XWindow>*)0))
{
GetFormatter();
if ( xNumberAgg.is() )
aRet = xNumberAgg->queryAggregation( rType );
}
2000-09-18 16:07:07 +00:00
return aRet;
}
2001-10-23 10:39:50 +00:00
void SAL_CALL ScModelObj::acquire() throw()
2000-09-18 16:07:07 +00:00
{
SfxBaseModel::acquire();
}
2001-10-23 10:39:50 +00:00
void SAL_CALL ScModelObj::release() throw()
2000-09-18 16:07:07 +00:00
{
SfxBaseModel::release();
}
uno::Sequence<uno::Type> SAL_CALL ScModelObj::getTypes() throw(uno::RuntimeException)
{
static uno::Sequence<uno::Type> aTypes;
if ( aTypes.getLength() == 0 )
{
uno::Sequence<uno::Type> aParentTypes(SfxBaseModel::getTypes());
2000-09-18 16:07:07 +00:00
long nParentLen = aParentTypes.getLength();
const uno::Type* pParentPtr = aParentTypes.getConstArray();
uno::Sequence<uno::Type> aAggTypes;
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
if ( GetFormatter().is() )
2000-09-18 16:07:07 +00:00
{
const uno::Type& rProvType = ::getCppuType((uno::Reference<lang::XTypeProvider>*) 0);
uno::Any aNumProv(xNumberAgg->queryAggregation(rProvType));
2000-09-18 16:07:07 +00:00
if(aNumProv.getValueType() == rProvType)
{
uno::Reference<lang::XTypeProvider> xNumProv(
*(uno::Reference<lang::XTypeProvider>*)aNumProv.getValue());
2000-09-18 16:07:07 +00:00
aAggTypes = xNumProv->getTypes();
}
}
long nAggLen = aAggTypes.getLength();
const uno::Type* pAggPtr = aAggTypes.getConstArray();
const long nThisLen = 15;
2000-09-18 16:07:07 +00:00
aTypes.realloc( nParentLen + nAggLen + nThisLen );
uno::Type* pPtr = aTypes.getArray();
pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSpreadsheetDocument>*)0);
pPtr[nParentLen + 1] = getCppuType((const uno::Reference<document::XActionLockable>*)0);
pPtr[nParentLen + 2] = getCppuType((const uno::Reference<sheet::XCalculatable>*)0);
pPtr[nParentLen + 3] = getCppuType((const uno::Reference<util::XProtectable>*)0);
pPtr[nParentLen + 4] = getCppuType((const uno::Reference<drawing::XDrawPagesSupplier>*)0);
pPtr[nParentLen + 5] = getCppuType((const uno::Reference<sheet::XGoalSeek>*)0);
pPtr[nParentLen + 6] = getCppuType((const uno::Reference<sheet::XConsolidatable>*)0);
pPtr[nParentLen + 7] = getCppuType((const uno::Reference<sheet::XDocumentAuditing>*)0);
pPtr[nParentLen + 8] = getCppuType((const uno::Reference<style::XStyleFamiliesSupplier>*)0);
pPtr[nParentLen + 9] = getCppuType((const uno::Reference<view::XRenderable>*)0);
pPtr[nParentLen +10] = getCppuType((const uno::Reference<document::XLinkTargetSupplier>*)0);
pPtr[nParentLen +11] = getCppuType((const uno::Reference<beans::XPropertySet>*)0);
pPtr[nParentLen +12] = getCppuType((const uno::Reference<lang::XMultiServiceFactory>*)0);
pPtr[nParentLen +13] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0);
pPtr[nParentLen +14] = getCppuType((const uno::Reference<util::XChangesNotifier>*)0);
2000-09-18 16:07:07 +00:00
long i;
for (i=0; i<nParentLen; i++)
pPtr[i] = pParentPtr[i]; // parent types first
for (i=0; i<nAggLen; i++)
pPtr[nParentLen+nThisLen+i] = pAggPtr[i]; // aggregated types last
}
return aTypes;
}
namespace
{
class theScModelObjImplementationId : public rtl::Static< UnoTunnelIdInit, theScModelObjImplementationId > {};
}
2000-09-18 16:07:07 +00:00
uno::Sequence<sal_Int8> SAL_CALL ScModelObj::getImplementationId()
throw(uno::RuntimeException)
{
return theScModelObjImplementationId::get().getSeq();
2000-09-18 16:07:07 +00:00
}
void ScModelObj::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
{
// Not interested in reference update hints here
2000-09-18 16:07:07 +00:00
if ( rHint.ISA( SfxSimpleHint ) )
2000-09-18 16:07:07 +00:00
{
sal_uLong nId = ((const SfxSimpleHint&)rHint).GetId();
if ( nId == SFX_HINT_DYING )
2000-09-18 16:07:07 +00:00
{
pDocShell = NULL; // has become invalid
if (xNumberAgg.is())
{
SvNumberFormatsSupplierObj* pNumFmt =
SvNumberFormatsSupplierObj::getImplementation(
uno::Reference<util::XNumberFormatsSupplier>(xNumberAgg, uno::UNO_QUERY) );
if ( pNumFmt )
pNumFmt->SetNumberFormatter( NULL );
}
DELETEZ( pPrintFuncCache ); // must be deleted because it has a pointer to the DocShell
}
else if ( nId == SFX_HINT_DATACHANGED )
{
// cached data for rendering become invalid when contents change
// (if a broadcast is added to SetDrawModified, is has to be tested here, too)
DELETEZ( pPrintFuncCache );
// handle "OnCalculate" sheet events (search also for VBA event handlers)
if ( pDocShell )
{
ScDocument* pDoc = pDocShell->GetDocument();
if ( pDoc->GetVbaEventProcessor().is() )
{
// If the VBA event processor is set, HasAnyCalcNotification is much faster than HasAnySheetEventScript
if ( pDoc->HasAnyCalcNotification() && pDoc->HasAnySheetEventScript( SC_SHEETEVENT_CALCULATE, true ) )
HandleCalculateEvents();
}
else
{
if ( pDoc->HasAnySheetEventScript( SC_SHEETEVENT_CALCULATE ) )
HandleCalculateEvents();
}
}
2000-09-18 16:07:07 +00:00
}
}
else if ( rHint.ISA( ScPointerChangedHint ) )
{
sal_uInt16 nFlags = ((const ScPointerChangedHint&)rHint).GetFlags();
2000-09-18 16:07:07 +00:00
if (nFlags & SC_POINTERCHANGED_NUMFMT)
{
// NumberFormatter-Pointer am Uno-Objekt neu setzen
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
if (GetFormatter().is())
2000-09-18 16:07:07 +00:00
{
SvNumberFormatsSupplierObj* pNumFmt =
SvNumberFormatsSupplierObj::getImplementation(
uno::Reference<util::XNumberFormatsSupplier>(xNumberAgg, uno::UNO_QUERY) );
if ( pNumFmt && pDocShell )
pNumFmt->SetNumberFormatter( pDocShell->GetDocument()->GetFormatTable() );
}
}
}
// always call parent - SfxBaseModel might need to handle the same hints again
SfxBaseModel::Notify( rBC, rHint ); // SfxBaseModel is derived from SfxListener
2000-09-18 16:07:07 +00:00
}
// XSpreadsheetDocument
uno::Reference<sheet::XSpreadsheets> SAL_CALL ScModelObj::getSheets() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return new ScTableSheetsObj(pDocShell);
return NULL;
}
// XStyleFamiliesSupplier
uno::Reference<container::XNameAccess> SAL_CALL ScModelObj::getStyleFamilies()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return new ScStyleFamiliesObj(pDocShell);
return NULL;
}
// XRenderable
static OutputDevice* lcl_GetRenderDevice( const uno::Sequence<beans::PropertyValue>& rOptions )
{
OutputDevice* pRet = NULL;
const beans::PropertyValue* pPropArray = rOptions.getConstArray();
long nPropCount = rOptions.getLength();
for (long i = 0; i < nPropCount; i++)
{
const beans::PropertyValue& rProp = pPropArray[i];
String aPropName(rProp.Name);
if (aPropName.EqualsAscii( SC_UNONAME_RENDERDEV ))
{
uno::Reference<awt::XDevice> xRenderDevice(rProp.Value, uno::UNO_QUERY);
if ( xRenderDevice.is() )
{
VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice );
if ( pDevice )
{
pRet = pDevice->GetOutputDevice();
pRet->SetDigitLanguage( SC_MOD()->GetOptDigitLanguage() );
}
}
}
}
return pRet;
}
static bool lcl_ParseTarget( const String& rTarget, ScRange& rTargetRange, Rectangle& rTargetRect,
bool& rIsSheet, ScDocument* pDoc, SCTAB nSourceTab )
{
// test in same order as in SID_CURRENTCELL execute
ScAddress aAddress;
ScRangeUtil aRangeUtil;
SCTAB nNameTab;
sal_Int32 nNumeric = 0;
bool bRangeValid = false;
bool bRectValid = false;
if ( rTargetRange.Parse( rTarget, pDoc ) & SCA_VALID )
{
bRangeValid = true; // range reference
}
else if ( aAddress.Parse( rTarget, pDoc ) & SCA_VALID )
{
rTargetRange = aAddress;
bRangeValid = true; // cell reference
}
else if ( aRangeUtil.MakeRangeFromName( rTarget, pDoc, nSourceTab, rTargetRange, RUTL_NAMES ) ||
aRangeUtil.MakeRangeFromName( rTarget, pDoc, nSourceTab, rTargetRange, RUTL_DBASE ) )
{
bRangeValid = true; // named range or database range
}
2011-08-28 01:03:37 +01:00
else if ( comphelper::string::isdigitAsciiString(rTarget) &&
( nNumeric = rTarget.ToInt32() ) > 0 && nNumeric <= MAXROW+1 )
{
// row number is always mapped to cell A(row) on the same sheet
rTargetRange = ScAddress( 0, (SCROW)(nNumeric-1), nSourceTab ); // target row number is 1-based
bRangeValid = true; // row number
}
else if ( pDoc->GetTable( rTarget, nNameTab ) )
{
rTargetRange = ScAddress(0,0,nNameTab);
bRangeValid = true; // sheet name
rIsSheet = true; // needs special handling (first page of the sheet)
}
else
{
// look for named drawing object
ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
if ( pDrawLayer )
{
SCTAB nTabCount = pDoc->GetTableCount();
for (SCTAB i=0; i<nTabCount && !bRangeValid; i++)
{
SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(i));
OSL_ENSURE(pPage,"Page ?");
if (pPage)
{
SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
SdrObject* pObject = aIter.Next();
while (pObject && !bRangeValid)
{
if ( ScDrawLayer::GetVisibleName( pObject ) == rTarget )
{
rTargetRect = pObject->GetLogicRect(); // 1/100th mm
rTargetRange = pDoc->GetRange( i, rTargetRect ); // underlying cells
bRangeValid = bRectValid = true; // rectangle is valid
}
pObject = aIter.Next();
}
}
}
}
}
if ( bRangeValid && !bRectValid )
{
// get rectangle for cell range
rTargetRect = pDoc->GetMMRect( rTargetRange.aStart.Col(), rTargetRange.aStart.Row(),
rTargetRange.aEnd.Col(), rTargetRange.aEnd.Row(),
rTargetRange.aStart.Tab() );
}
return bRangeValid;
}
2011-11-28 19:25:43 -05:00
bool ScModelObj::FillRenderMarkData( const uno::Any& aSelection,
const uno::Sequence< beans::PropertyValue >& rOptions,
ScMarkData& rMark,
2009-05-20 16:10:24 +00:00
ScPrintSelectionStatus& rStatus, String& rPagesStr ) const
{
OSL_ENSURE( !rMark.IsMarked() && !rMark.IsMultiMarked(), "FillRenderMarkData: MarkData must be empty" );
OSL_ENSURE( pDocShell, "FillRenderMarkData: DocShell must be set" );
2011-11-28 19:25:43 -05:00
bool bDone = false;
uno::Reference<frame::XController> xView;
// defaults when no options are passed: all sheets, include empty pages
sal_Bool bSelectedSheetsOnly = false;
2011-11-28 19:25:43 -05:00
sal_Bool bIncludeEmptyPages = true;
bool bHasPrintContent = false;
sal_Int32 nPrintContent = 0; // all sheets / selected sheets / selected cells
sal_Int32 nPrintRange = 0; // all pages / pages
rtl::OUString aPageRange; // "pages" edit value
for( sal_Int32 i = 0, nLen = rOptions.getLength(); i < nLen; i++ )
{
if ( rOptions[i].Name == "IsOnlySelectedSheets" )
{
rOptions[i].Value >>= bSelectedSheetsOnly;
}
else if ( rOptions[i].Name == "IsIncludeEmptyPages" )
{
rOptions[i].Value >>= bIncludeEmptyPages;
}
else if ( rOptions[i].Name == "PageRange" )
{
rOptions[i].Value >>= aPageRange;
}
else if ( rOptions[i].Name == "PrintRange" )
{
rOptions[i].Value >>= nPrintRange;
}
else if ( rOptions[i].Name == "PrintContent" )
2009-05-27 17:59:50 +00:00
{
bHasPrintContent = true;
2009-05-27 17:59:50 +00:00
rOptions[i].Value >>= nPrintContent;
}
else if ( rOptions[i].Name == "View" )
{
rOptions[i].Value >>= xView;
}
}
// "Print Content" selection wins over "Selected Sheets" option
if ( bHasPrintContent )
bSelectedSheetsOnly = ( nPrintContent != 0 );
uno::Reference<uno::XInterface> xInterface(aSelection, uno::UNO_QUERY);
if ( xInterface.is() )
{
ScCellRangesBase* pSelObj = ScCellRangesBase::getImplementation( xInterface );
uno::Reference< drawing::XShapes > xShapes( xInterface, uno::UNO_QUERY );
if ( pSelObj && pSelObj->GetDocShell() == pDocShell )
{
2011-11-28 19:25:43 -05:00
bool bSheet = ( ScTableSheetObj::getImplementation( xInterface ) != NULL );
bool bCursor = pSelObj->IsCursorOnly();
const ScRangeList& rRanges = pSelObj->GetRangeList();
rMark.MarkFromRangeList( rRanges, false );
rMark.MarkToSimple();
if ( rMark.IsMultiMarked() )
{
// #i115266# copy behavior of old printing:
// treat multiple selection like a single selection with the enclosing range
ScRange aMultiMarkArea;
rMark.GetMultiMarkArea( aMultiMarkArea );
rMark.ResetMark();
rMark.SetMarkArea( aMultiMarkArea );
}
if ( rMark.IsMarked() && !rMark.IsMultiMarked() )
{
// a sheet object is treated like an empty selection: print the used area of the sheet
if ( bCursor || bSheet ) // nothing selected -> use whole tables
{
rMark.ResetMark(); // doesn't change table selection
rStatus.SetMode( SC_PRINTSEL_CURSOR );
}
else
rStatus.SetMode( SC_PRINTSEL_RANGE );
rStatus.SetRanges( rRanges );
2011-11-28 19:25:43 -05:00
bDone = true;
}
// multi selection isn't supported
}
else if( xShapes.is() )
{
//print a selected ole object
uno::Reference< container::XIndexAccess > xIndexAccess( xShapes, uno::UNO_QUERY );
if( xIndexAccess.is() )
{
// multi selection isn't supported yet
uno::Reference< drawing::XShape > xShape( xIndexAccess->getByIndex(0), uno::UNO_QUERY );
SvxShape* pShape = SvxShape::getImplementation( xShape );
if( pShape )
{
SdrObject *pSdrObj = pShape->GetSdrObject();
if( pDocShell )
{
ScDocument* pDoc = pDocShell->GetDocument();
if( pDoc && pSdrObj )
{
Rectangle aObjRect = pSdrObj->GetCurrentBoundRect();
SCTAB nCurrentTab = ScDocShell::GetCurTab();
ScRange aRange = pDoc->GetRange( nCurrentTab, aObjRect );
rMark.SetMarkArea( aRange );
if( rMark.IsMarked() && !rMark.IsMultiMarked() )
{
rStatus.SetMode( SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS );
2011-11-28 19:25:43 -05:00
bDone = true;
}
}
}
}
}
}
else if ( ScModelObj::getImplementation( xInterface ) == this )
{
// render the whole document
// -> no selection, all sheets
SCTAB nTabCount = pDocShell->GetDocument()->GetTableCount();
for (SCTAB nTab = 0; nTab < nTabCount; nTab++)
rMark.SelectTable( nTab, sal_True );
rStatus.SetMode( SC_PRINTSEL_DOCUMENT );
2011-11-28 19:25:43 -05:00
bDone = true;
}
// other selection types aren't supported
}
// restrict to selected sheets if a view is available
uno::Reference<sheet::XSelectedSheetsSupplier> xSelectedSheets(xView, uno::UNO_QUERY);
if (bSelectedSheetsOnly && xSelectedSheets.is())
{
uno::Sequence<sal_Int32> aSelected = xSelectedSheets->getSelectedSheets();
ScMarkData::MarkedTabsType aSelectedTabs;
SCTAB nMaxTab = pDocShell->GetDocument()->GetTableCount() -1;
for (sal_Int32 i = 0, n = aSelected.getLength(); i < n; ++i)
{
SCTAB nSelected = static_cast<SCTAB>(aSelected[i]);
if (ValidTab(nSelected, nMaxTab))
aSelectedTabs.insert(static_cast<SCTAB>(aSelected[i]));
}
rMark.SetSelectedTabs(aSelectedTabs);
}
ScPrintOptions aNewOptions;
aNewOptions.SetSkipEmpty( !bIncludeEmptyPages );
aNewOptions.SetAllSheets( !bSelectedSheetsOnly );
rStatus.SetOptions( aNewOptions );
// "PrintRange" enables (1) or disables (0) the "PageRange" edit
if ( nPrintRange == 1 )
rPagesStr = aPageRange;
2009-05-20 16:10:24 +00:00
else
rPagesStr.Erase();
2009-05-20 16:10:24 +00:00
return bDone;
}
sal_Int32 SAL_CALL ScModelObj::getRendererCount( const uno::Any& aSelection,
const uno::Sequence<beans::PropertyValue>& rOptions )
throw (lang::IllegalArgumentException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
if (!pDocShell)
{
throw lang::DisposedException( ::rtl::OUString(),
static_cast< sheet::XSpreadsheetDocument* >(this) );
}
ScMarkData aMark;
ScPrintSelectionStatus aStatus;
2009-05-20 16:10:24 +00:00
String aPagesStr;
if ( !FillRenderMarkData( aSelection, rOptions, aMark, aStatus, aPagesStr ) )
return 0;
// The same ScPrintFuncCache object in pPrintFuncCache is used as long as
// the same selection is used (aStatus) and the document isn't changed
// (pPrintFuncCache is cleared in Notify handler)
if ( !pPrintFuncCache || !pPrintFuncCache->IsSameSelection( aStatus ) )
{
delete pPrintFuncCache;
pPrintFuncCache = new ScPrintFuncCache( pDocShell, aMark, aStatus );
}
2009-05-20 16:10:24 +00:00
sal_Int32 nPages = pPrintFuncCache->GetPageCount();
sal_Int32 nSelectCount = nPages;
if ( aPagesStr.Len() )
{
StringRangeEnumerator aRangeEnum( aPagesStr, 0, nPages-1 );
nSelectCount = aRangeEnum.size();
2009-05-20 16:10:24 +00:00
}
return nSelectCount;
}
static sal_Int32 lcl_GetRendererNum( sal_Int32 nSelRenderer, const String& rPagesStr, sal_Int32 nTotalPages )
2009-05-20 16:10:24 +00:00
{
if ( !rPagesStr.Len() )
return nSelRenderer;
StringRangeEnumerator aRangeEnum( rPagesStr, 0, nTotalPages-1 );
StringRangeEnumerator::Iterator aIter = aRangeEnum.begin();
StringRangeEnumerator::Iterator aEnd = aRangeEnum.end();
for ( ; nSelRenderer > 0 && aIter != aEnd; --nSelRenderer )
++aIter;
2009-05-20 16:10:24 +00:00
return *aIter; // returns -1 if reached the end
}
2009-05-20 16:10:24 +00:00
uno::Sequence<beans::PropertyValue> SAL_CALL ScModelObj::getRenderer( sal_Int32 nSelRenderer,
const uno::Any& aSelection, const uno::Sequence<beans::PropertyValue>& rOptions )
throw (lang::IllegalArgumentException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
if (!pDocShell)
{
throw lang::DisposedException( ::rtl::OUString(),
static_cast< sheet::XSpreadsheetDocument* >(this) );
}
ScMarkData aMark;
ScPrintSelectionStatus aStatus;
2009-05-20 16:10:24 +00:00
String aPagesStr;
// #i115266# if FillRenderMarkData fails, keep nTotalPages at 0, but still handle getRenderer(0) below
long nTotalPages = 0;
if ( FillRenderMarkData( aSelection, rOptions, aMark, aStatus, aPagesStr ) )
{
if ( !pPrintFuncCache || !pPrintFuncCache->IsSameSelection( aStatus ) )
{
delete pPrintFuncCache;
pPrintFuncCache = new ScPrintFuncCache( pDocShell, aMark, aStatus );
}
nTotalPages = pPrintFuncCache->GetPageCount();
}
2009-05-20 16:10:24 +00:00
sal_Int32 nRenderer = lcl_GetRendererNum( nSelRenderer, aPagesStr, nTotalPages );
if ( nRenderer < 0 )
2009-05-05 14:48:02 +00:00
{
2009-05-20 16:10:24 +00:00
if ( nSelRenderer == 0 )
2009-05-05 14:48:02 +00:00
{
// getRenderer(0) is used to query the settings, so it must always return something
SCTAB nCurTab = 0; //! use current sheet from view?
ScPrintFunc aDefaultFunc( pDocShell, pDocShell->GetPrinter(), nCurTab );
Size aTwips = aDefaultFunc.GetPageSize();
awt::Size aPageSize( TwipsToHMM( aTwips.Width() ), TwipsToHMM( aTwips.Height() ) );
uno::Sequence<beans::PropertyValue> aSequence(1);
beans::PropertyValue* pArray = aSequence.getArray();
pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_PAGESIZE ));
2009-05-05 14:48:02 +00:00
pArray[0].Value <<= aPageSize;
if( ! pPrinterOptions )
pPrinterOptions = new ScPrintUIOptions;
else
pPrinterOptions->SetDefaults();
2009-05-05 14:48:02 +00:00
pPrinterOptions->appendPrintUIOptions( aSequence );
return aSequence;
}
else
throw lang::IllegalArgumentException();
}
// printer is used as device (just for page layout), draw view is not needed
SCTAB nTab = pPrintFuncCache->GetTabForPage( nRenderer );
ScRange aRange;
const ScRange* pSelRange = NULL;
if ( aMark.IsMarked() )
{
aMark.GetMarkArea( aRange );
pSelRange = &aRange;
}
ScPrintFunc aFunc( pDocShell, pDocShell->GetPrinter(), nTab,
pPrintFuncCache->GetFirstAttr(nTab), nTotalPages, pSelRange, &aStatus.GetOptions() );
aFunc.SetRenderFlag( sal_True );
Range aPageRange( nRenderer+1, nRenderer+1 );
MultiSelection aPage( aPageRange );
aPage.SetTotalRange( Range(0,RANGE_MAX) );
aPage.Select( aPageRange );
long nDisplayStart = pPrintFuncCache->GetDisplayStart( nTab );
long nTabStart = pPrintFuncCache->GetTabStart( nTab );
(void)aFunc.DoPrint( aPage, nTabStart, nDisplayStart, false, NULL );
ScRange aCellRange;
sal_Bool bWasCellRange = aFunc.GetLastSourceRange( aCellRange );
Size aTwips = aFunc.GetPageSize();
awt::Size aPageSize( TwipsToHMM( aTwips.Width() ), TwipsToHMM( aTwips.Height() ) );
long nPropCount = bWasCellRange ? 3 : 2;
uno::Sequence<beans::PropertyValue> aSequence(nPropCount);
beans::PropertyValue* pArray = aSequence.getArray();
pArray[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_PAGESIZE ));
pArray[0].Value <<= aPageSize;
// #i111158# all positions are relative to the whole page, including non-printable area
pArray[1].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_INC_NP_AREA ));
pArray[1].Value = uno::makeAny( sal_True );
if ( bWasCellRange )
{
table::CellRangeAddress aRangeAddress( nTab,
aCellRange.aStart.Col(), aCellRange.aStart.Row(),
aCellRange.aEnd.Col(), aCellRange.aEnd.Row() );
pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SOURCERANGE ));
pArray[2].Value <<= aRangeAddress;
}
if( ! pPrinterOptions )
pPrinterOptions = new ScPrintUIOptions;
else
pPrinterOptions->SetDefaults();
pPrinterOptions->appendPrintUIOptions( aSequence );
return aSequence;
}
2009-05-20 16:10:24 +00:00
void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelection,
const uno::Sequence<beans::PropertyValue>& rOptions )
throw(lang::IllegalArgumentException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
if (!pDocShell)
{
throw lang::DisposedException( ::rtl::OUString(),
static_cast< sheet::XSpreadsheetDocument* >(this) );
}
ScMarkData aMark;
ScPrintSelectionStatus aStatus;
2009-05-20 16:10:24 +00:00
String aPagesStr;
if ( !FillRenderMarkData( aSelection, rOptions, aMark, aStatus, aPagesStr ) )
throw lang::IllegalArgumentException();
if ( !pPrintFuncCache || !pPrintFuncCache->IsSameSelection( aStatus ) )
{
delete pPrintFuncCache;
pPrintFuncCache = new ScPrintFuncCache( pDocShell, aMark, aStatus );
}
long nTotalPages = pPrintFuncCache->GetPageCount();
2009-05-20 16:10:24 +00:00
sal_Int32 nRenderer = lcl_GetRendererNum( nSelRenderer, aPagesStr, nTotalPages );
if ( nRenderer < 0 )
throw lang::IllegalArgumentException();
OutputDevice* pDev = lcl_GetRenderDevice( rOptions );
if ( !pDev )
throw lang::IllegalArgumentException();
SCTAB nTab = pPrintFuncCache->GetTabForPage( nRenderer );
ScDocument* pDoc = pDocShell->GetDocument();
FmFormView* pDrawView = NULL;
// #114135#
ScDrawLayer* pModel = pDoc->GetDrawLayer();
if( pModel )
{
pDrawView = new FmFormView( pModel, pDev );
pDrawView->ShowSdrPage(pDrawView->GetModel()->GetPage(nTab));
pDrawView->SetPrintPreview( sal_True );
}
ScRange aRange;
const ScRange* pSelRange = NULL;
if ( aMark.IsMarked() )
{
aMark.GetMarkArea( aRange );
pSelRange = &aRange;
}
// to increase performance, ScPrintState might be used here for subsequent
// pages of the same sheet
ScPrintFunc aFunc( pDev, pDocShell, nTab, pPrintFuncCache->GetFirstAttr(nTab), nTotalPages, pSelRange, &aStatus.GetOptions() );
aFunc.SetDrawView( pDrawView );
aFunc.SetRenderFlag( sal_True );
if( aStatus.GetMode() == SC_PRINTSEL_RANGE_EXCLUSIVELY_OLE_AND_DRAW_OBJECTS )
aFunc.SetExclusivelyDrawOleAndDrawObjects();
Range aPageRange( nRenderer+1, nRenderer+1 );
MultiSelection aPage( aPageRange );
aPage.SetTotalRange( Range(0,RANGE_MAX) );
aPage.Select( aPageRange );
long nDisplayStart = pPrintFuncCache->GetDisplayStart( nTab );
long nTabStart = pPrintFuncCache->GetTabStart( nTab );
2009-04-02 13:37:02 +00:00
vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pDev->GetExtOutDevData() );
if ( nRenderer == nTabStart )
{
// first page of a sheet: add outline item for the sheet name
if ( pPDFData && pPDFData->GetIsExportBookmarks() )
{
// the sheet starts at the top of the page
Rectangle aArea( pDev->PixelToLogic( Rectangle( 0,0,0,0 ) ) );
sal_Int32 nDestID = pPDFData->CreateDest( aArea );
2011-08-26 19:33:59 -04:00
rtl::OUString aTabName;
pDoc->GetName( nTab, aTabName );
sal_Int32 nParent = -1; // top-level
pPDFData->CreateOutlineItem( nParent, aTabName, nDestID );
}
// #i56629# add the named destination stuff
2009-04-02 13:37:02 +00:00
if( pPDFData && pPDFData->GetIsExportNamedDestinations() )
{
Rectangle aArea( pDev->PixelToLogic( Rectangle( 0,0,0,0 ) ) );
2011-08-26 19:33:59 -04:00
rtl::OUString aTabName;
pDoc->GetName( nTab, aTabName );
//need the PDF page number here
pPDFData->CreateNamedDest( aTabName, aArea );
}
}
(void)aFunc.DoPrint( aPage, nTabStart, nDisplayStart, true, NULL );
// resolve the hyperlinks for PDF export
if ( pPDFData )
{
// iterate over the hyperlinks that were output for this page
std::vector< vcl::PDFExtOutDevBookmarkEntry >& rBookmarks = pPDFData->GetBookmarks();
std::vector< vcl::PDFExtOutDevBookmarkEntry >::iterator aIter = rBookmarks.begin();
std::vector< vcl::PDFExtOutDevBookmarkEntry >::iterator aIEnd = rBookmarks.end();
while ( aIter != aIEnd )
{
rtl::OUString aBookmark = aIter->aBookmark;
if ( aBookmark.toChar() == (sal_Unicode) '#' )
{
// try to resolve internal link
String aTarget( aBookmark.copy( 1 ) );
ScRange aTargetRange;
Rectangle aTargetRect; // 1/100th mm
bool bIsSheet = false;
bool bValid = lcl_ParseTarget( aTarget, aTargetRange, aTargetRect, bIsSheet, pDoc, nTab );
if ( bValid )
{
sal_Int32 nPage = -1;
Rectangle aArea;
if ( bIsSheet )
{
// Get first page for sheet (if nothing from that sheet is printed,
// this page can show a different sheet)
nPage = pPrintFuncCache->GetTabStart( aTargetRange.aStart.Tab() );
aArea = pDev->PixelToLogic( Rectangle( 0,0,0,0 ) );
}
else
{
pPrintFuncCache->InitLocations( aMark, pDev ); // does nothing if already initialized
ScPrintPageLocation aLocation;
if ( pPrintFuncCache->FindLocation( aTargetRange.aStart, aLocation ) )
{
nPage = aLocation.nPage;
// get the rectangle of the page's cell range in 1/100th mm
ScRange aLocRange = aLocation.aCellRange;
Rectangle aLocationMM = pDoc->GetMMRect(
aLocRange.aStart.Col(), aLocRange.aStart.Row(),
aLocRange.aEnd.Col(), aLocRange.aEnd.Row(),
aLocRange.aStart.Tab() );
Rectangle aLocationPixel = aLocation.aRectangle;
// Scale and move the target rectangle from aLocationMM to aLocationPixel,
// to get the target rectangle in pixels.
Fraction aScaleX( aLocationPixel.GetWidth(), aLocationMM.GetWidth() );
Fraction aScaleY( aLocationPixel.GetHeight(), aLocationMM.GetHeight() );
long nX1 = aLocationPixel.Left() + (long)
( Fraction( aTargetRect.Left() - aLocationMM.Left(), 1 ) * aScaleX );
long nX2 = aLocationPixel.Left() + (long)
( Fraction( aTargetRect.Right() - aLocationMM.Left(), 1 ) * aScaleX );
long nY1 = aLocationPixel.Top() + (long)
( Fraction( aTargetRect.Top() - aLocationMM.Top(), 1 ) * aScaleY );
long nY2 = aLocationPixel.Top() + (long)
( Fraction( aTargetRect.Bottom() - aLocationMM.Top(), 1 ) * aScaleY );
if ( nX1 > aLocationPixel.Right() ) nX1 = aLocationPixel.Right();
if ( nX2 > aLocationPixel.Right() ) nX2 = aLocationPixel.Right();
if ( nY1 > aLocationPixel.Bottom() ) nY1 = aLocationPixel.Bottom();
if ( nY2 > aLocationPixel.Bottom() ) nY2 = aLocationPixel.Bottom();
// The link target area is interpreted using the device's MapMode at
// the time of the CreateDest call, so PixelToLogic can be used here,
// regardless of the MapMode that is actually selected.
aArea = pDev->PixelToLogic( Rectangle( nX1, nY1, nX2, nY2 ) );
}
}
if ( nPage >= 0 )
pPDFData->SetLinkDest( aIter->nLinkId, pPDFData->CreateDest( aArea, nPage ) );
}
}
else
{
// external link, use as-is
pPDFData->SetLinkURL( aIter->nLinkId, aBookmark );
}
++aIter;
}
rBookmarks.clear();
}
if ( pDrawView )
pDrawView->HideSdrPage();
delete pDrawView;
}
2000-09-18 16:07:07 +00:00
// XLinkTargetSupplier
uno::Reference<container::XNameAccess> SAL_CALL ScModelObj::getLinks() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return new ScLinkTargetTypesObj(pDocShell);
return NULL;
}
// XActionLockable
sal_Bool SAL_CALL ScModelObj::isActionLocked() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bLocked = false;
2000-09-18 16:07:07 +00:00
if (pDocShell)
bLocked = ( pDocShell->GetLockCount() != 0 );
return bLocked;
}
void SAL_CALL ScModelObj::addActionLock() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->LockDocument();
2000-09-18 16:07:07 +00:00
}
void SAL_CALL ScModelObj::removeActionLock() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->UnlockDocument();
2000-09-18 16:07:07 +00:00
}
void SAL_CALL ScModelObj::setActionLocks( sal_Int16 nLock ) throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->SetLockCount(nLock);
}
sal_Int16 SAL_CALL ScModelObj::resetActionLocks() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_uInt16 nRet = 0;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
nRet = pDocShell->GetLockCount();
pDocShell->SetLockCount(0);
}
return nRet;
}
2001-09-13 09:18:37 +00:00
void SAL_CALL ScModelObj::lockControllers() throw (::com::sun::star::uno::RuntimeException)
{
SolarMutexGuard aGuard;
SfxBaseModel::lockControllers();
if (pDocShell)
pDocShell->LockPaint();
}
2001-09-13 09:18:37 +00:00
void SAL_CALL ScModelObj::unlockControllers() throw (::com::sun::star::uno::RuntimeException)
{
SolarMutexGuard aGuard;
if (hasControllersLocked())
{
SfxBaseModel::unlockControllers();
if (pDocShell)
pDocShell->UnlockPaint();
}
}
2000-09-18 16:07:07 +00:00
// XCalculate
void SAL_CALL ScModelObj::calculate() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->DoRecalc(sal_True);
2000-09-18 16:07:07 +00:00
else
{
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
}
2000-09-18 16:07:07 +00:00
}
void SAL_CALL ScModelObj::calculateAll() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->DoHardRecalc(sal_True);
2000-09-18 16:07:07 +00:00
else
{
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
}
2000-09-18 16:07:07 +00:00
}
sal_Bool SAL_CALL ScModelObj::isAutomaticCalculationEnabled() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return pDocShell->GetDocument()->GetAutoCalc();
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
return false;
2000-09-18 16:07:07 +00:00
}
void SAL_CALL ScModelObj::enableAutomaticCalculation( sal_Bool bEnabledIn )
2000-09-18 16:07:07 +00:00
throw(uno::RuntimeException)
{
bool bEnabled(bEnabledIn);
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
if ( pDoc->GetAutoCalc() != bEnabled )
{
pDoc->SetAutoCalc( bEnabled );
pDocShell->SetDocumentModified();
}
}
else
{
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
}
2000-09-18 16:07:07 +00:00
}
// XProtectable
void SAL_CALL ScModelObj::protect( const rtl::OUString& aPassword ) throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
// #i108245# if already protected, don't change anything
if ( pDocShell && !pDocShell->GetDocument()->IsDocProtected() )
2000-09-18 16:07:07 +00:00
{
String aString(aPassword);
pDocShell->GetDocFunc().Protect( TABLEID_DOC, aString, sal_True );
2000-09-18 16:07:07 +00:00
}
}
void SAL_CALL ScModelObj::unprotect( const rtl::OUString& aPassword )
throw(lang::IllegalArgumentException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
String aString(aPassword);
sal_Bool bDone = pDocShell->GetDocFunc().Unprotect( TABLEID_DOC, aString, sal_True );
if (!bDone)
throw lang::IllegalArgumentException();
2000-09-18 16:07:07 +00:00
}
}
sal_Bool SAL_CALL ScModelObj::isProtected() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return pDocShell->GetDocument()->IsDocProtected();
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
return false;
2000-09-18 16:07:07 +00:00
}
// XDrawPagesSupplier
uno::Reference<drawing::XDrawPages> SAL_CALL ScModelObj::getDrawPages() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return new ScDrawPagesObj(pDocShell);
2011-03-01 19:05:02 +01:00
OSL_FAIL("keine DocShell"); //! Exception oder so?
2000-09-18 16:07:07 +00:00
return NULL;
}
// XGoalSeek
sheet::GoalResult SAL_CALL ScModelObj::seekGoal(
const table::CellAddress& aFormulaPosition,
const table::CellAddress& aVariablePosition,
const ::rtl::OUString& aGoalValue )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
sheet::GoalResult aResult;
aResult.Divergence = DBL_MAX; // nichts gefunden
if (pDocShell)
{
WaitObject aWait( pDocShell->GetActiveDialogParent() );
String aGoalString(aGoalValue);
2000-09-18 16:07:07 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
double fValue = 0.0;
sal_Bool bFound = pDoc->Solver(
(SCCOL)aFormulaPosition.Column, (SCROW)aFormulaPosition.Row, aFormulaPosition.Sheet,
(SCCOL)aVariablePosition.Column, (SCROW)aVariablePosition.Row, aVariablePosition.Sheet,
2000-09-18 16:07:07 +00:00
aGoalString, fValue );
aResult.Result = fValue;
if (bFound)
aResult.Divergence = 0.0; //! das ist gelogen
}
return aResult;
}
// XConsolidatable
uno::Reference<sheet::XConsolidationDescriptor> SAL_CALL ScModelObj::createConsolidationDescriptor(
sal_Bool bEmpty ) throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
ScConsolidationDescriptor* pNew = new ScConsolidationDescriptor;
if ( pDocShell && !bEmpty )
{
ScDocument* pDoc = pDocShell->GetDocument();
const ScConsolidateParam* pParam = pDoc->GetConsolidateDlgData();
if (pParam)
pNew->SetParam( *pParam );
}
return pNew;
}
void SAL_CALL ScModelObj::consolidate(
const uno::Reference<sheet::XConsolidationDescriptor>& xDescriptor )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
// das koennte theoretisch ein fremdes Objekt sein, also nur das
// oeffentliche XConsolidationDescriptor Interface benutzen, um
// die Daten in ein ScConsolidationDescriptor Objekt zu kopieren:
//! wenn es schon ein ScConsolidationDescriptor ist, direkt per getImplementation?
ScConsolidationDescriptor aImpl;
aImpl.setFunction( xDescriptor->getFunction() );
aImpl.setSources( xDescriptor->getSources() );
aImpl.setStartOutputPosition( xDescriptor->getStartOutputPosition() );
aImpl.setUseColumnHeaders( xDescriptor->getUseColumnHeaders() );
aImpl.setUseRowHeaders( xDescriptor->getUseRowHeaders() );
aImpl.setInsertLinks( xDescriptor->getInsertLinks() );
if (pDocShell)
{
const ScConsolidateParam& rParam = aImpl.GetParam();
pDocShell->DoConsolidate( rParam, sal_True );
2000-09-18 16:07:07 +00:00
pDocShell->GetDocument()->SetConsolidateDlgData( &rParam );
}
}
// XDocumentAuditing
void SAL_CALL ScModelObj::refreshArrows() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
pDocShell->GetDocFunc().DetectiveRefresh();
2000-09-18 16:07:07 +00:00
}
// XViewDataSupplier
uno::Reference< container::XIndexAccess > SAL_CALL ScModelObj::getViewData( )
throw (uno::RuntimeException)
{
uno::Reference < container::XIndexAccess > xRet( SfxBaseModel::getViewData() );
if( !xRet.is() )
{
SolarMutexGuard aGuard;
if (pDocShell && pDocShell->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)
{
uno::Reference < container::XIndexContainer > xCont = document::IndexedPropertyValues::create( ::comphelper::getProcessComponentContext() );
xRet.set( xCont, uno::UNO_QUERY_THROW );
uno::Sequence< beans::PropertyValue > aSeq;
aSeq.realloc(1);
rtl::OUString sName;
pDocShell->GetDocument()->GetName( pDocShell->GetDocument()->GetVisibleTab(), sName );
rtl::OUString sOUName(sName);
aSeq[0].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_ACTIVETABLE));
aSeq[0].Value <<= sOUName;
xCont->insertByIndex( 0, uno::makeAny( aSeq ) );
}
}
return xRet;
}
2000-09-18 16:07:07 +00:00
// XPropertySet (Doc-Optionen)
//! auch an der Applikation anbieten?
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScModelObj::getPropertySetInfo()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
static uno::Reference<beans::XPropertySetInfo> aRef(
new SfxItemPropertySetInfo( aPropSet.getPropertyMap() ));
2000-09-18 16:07:07 +00:00
return aRef;
}
void SAL_CALL ScModelObj::setPropertyValue(
const rtl::OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
String aString(aPropertyName);
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
const ScDocOptions& rOldOpt = pDoc->GetDocOptions();
ScDocOptions aNewOpt = rOldOpt;
// Don't recalculate while loading XML, when the formula text is stored
// Recalculation after loading is handled separately.
bool bHardRecalc = !pDoc->IsImportingXML();
2000-09-18 16:07:07 +00:00
sal_Bool bOpt = ScDocOptionsHelper::setPropertyValue( aNewOpt, aPropSet.getPropertyMap(), aPropertyName, aValue );
if (bOpt)
2000-09-18 16:07:07 +00:00
{
// done...
if ( aString.EqualsAscii( SC_UNO_IGNORECASE ) ||
aString.EqualsAscii( SC_UNONAME_REGEXP ) ||
aString.EqualsAscii( SC_UNO_LOOKUPLABELS ) )
bHardRecalc = false;
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNONAME_CLOCAL ) )
{
lang::Locale aLocale;
if ( aValue >>= aLocale )
2000-11-26 12:51:18 +00:00
{
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
eLatin = ScUnoConversion::GetLanguage(aLocale);
pDoc->SetLanguage( eLatin, eCjk, eCtl );
}
}
else if ( aString.EqualsAscii( SC_UNO_CODENAME ) )
{
rtl::OUString sCodeName;
if ( aValue >>= sCodeName )
pDoc->SetCodeName( sCodeName );
}
2000-11-26 12:51:18 +00:00
else if ( aString.EqualsAscii( SC_UNO_CJK_CLOCAL ) )
{
lang::Locale aLocale;
if ( aValue >>= aLocale )
{
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
eCjk = ScUnoConversion::GetLanguage(aLocale);
pDoc->SetLanguage( eLatin, eCjk, eCtl );
}
}
else if ( aString.EqualsAscii( SC_UNO_CTL_CLOCAL ) )
{
lang::Locale aLocale;
if ( aValue >>= aLocale )
{
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
eCtl = ScUnoConversion::GetLanguage(aLocale);
pDoc->SetLanguage( eLatin, eCjk, eCtl );
}
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_APPLYFMDES ) )
{
// model is created if not there
ScDrawLayer* pModel = pDocShell->MakeDrawLayer();
pModel->SetOpenInDesignMode( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
SfxBindings* pBindings = pDocShell->GetViewBindings();
if (pBindings)
pBindings->Invalidate( SID_FM_OPEN_READONLY );
}
else if ( aString.EqualsAscii( SC_UNO_AUTOCONTFOC ) )
{
// model is created if not there
ScDrawLayer* pModel = pDocShell->MakeDrawLayer();
pModel->SetAutoControlFocus( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
SfxBindings* pBindings = pDocShell->GetViewBindings();
if (pBindings)
pBindings->Invalidate( SID_FM_AUTOCONTROLFOCUS );
}
else if ( aString.EqualsAscii( SC_UNO_ISLOADED ) )
{
pDocShell->SetEmpty( !ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
}
else if ( aString.EqualsAscii( SC_UNO_ISUNDOENABLED ) )
{
sal_Bool bUndoEnabled = ScUnoHelpFunctions::GetBoolFromAny( aValue );
pDoc->EnableUndo( bUndoEnabled );
pDocShell->GetUndoManager()->SetMaxUndoActionCount(
bUndoEnabled
? officecfg::Office::Common::Undo::Steps::get() : 0);
}
else if ( aString.EqualsAscii( SC_UNO_ISADJUSTHEIGHTENABLED ) )
{
CWS-TOOLING: integrate CWS dr67 2009-04-08 13:23:56 +0200 dr r270638 : #i100534# reverted 2009-04-08 10:14:55 +0200 dr r270621 : CWS-TOOLING: rebase CWS dr67 to trunk@270033 (milestone: DEV300:m45) 2009-04-07 21:06:33 +0200 dr r270610 : #i100534# sc does not link in debug mode 2009-03-12 11:20:09 +0100 dr r269375 : #i10000# wae 2009-03-11 19:43:55 +0100 dr r269351 : #i10000# adjust oox namespace ids according to oox/inc/oox/core/namespaces.hxx 2009-03-11 15:38:52 +0100 dr r269339 : CWS-TOOLING: rebase CWS dr67 to trunk@269297 (milestone: DEV300:m43) 2009-02-27 15:20:21 +0100 dr r268598 : CWS-TOOLING: rebase CWS dr67 to trunk@268395 (milestone: DEV300:m42) 2009-02-19 13:32:17 +0100 dr r268277 : moved hf parser into page settings 2009-02-19 12:25:15 +0100 dr r268272 : renamed some structs according to chart filter 2009-02-16 15:51:31 +0100 dr r267823 : #i97873# import autosort settings from BIFF8/OOBIN/OOXML 2009-02-06 17:09:29 +0100 dr r267477 : #i97873# minor changes 2009-02-06 16:38:56 +0100 dr r267473 : #i97873# import date grouping settings from BIFF5/BIFF8/OOBIN/OOXML 2009-02-06 16:38:11 +0100 dr r267472 : #i97873# check min/max/step of passed GroupInfo 2009-02-06 16:35:13 +0100 dr r267471 : #i97873# more doc for createDategroup() 2009-02-06 13:53:42 +0100 dr r267459 : #i97873# make XDataPilotGrouping::createDateGroup() implementation working and robust against wrong input data 2009-02-06 13:52:16 +0100 dr r267458 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-06 12:35:49 +0100 dr r267453 : fix other IDLC warnings in sheet module 2009-02-06 12:05:19 +0100 dr r267448 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-02 17:58:46 +0100 dr r267284 : #i10000# rebase errors 2009-02-02 17:52:21 +0100 dr r267282 : #i10000# rebase errors 2009-02-02 17:35:58 +0100 dr r267280 : #i10000# rebase errors 2009-02-02 15:58:04 +0100 dr r267274 : CWS-TOOLING: rebase CWS dr67 to trunk@267171 (milestone: DEV300:m41) 2009-02-02 09:16:32 +0100 dr r267247 : #i97873# typo 2009-01-30 17:09:09 +0100 dr r267215 : #i97873# import numeric grouping settings for datapilot fields from BIFF5/BIFF8/OOBIN/OOXML 2009-01-29 16:36:24 +0100 dr r267154 : #i97873# import datapilot discrete grouping from BIFF5/BIFF8/OOBIN/OOXLS 2009-01-29 16:33:37 +0100 dr r267152 : #i97873# do not kill _all_ the other group fields when writing back DataPilotField::GroupInfo property 2009-01-29 14:15:45 +0100 dr r267133 : #i93839# remove ScChengeTrack::Load and ::Store, adapt xls export filter 2009-01-28 13:30:37 +0100 dr r267056 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-28 12:09:05 +0100 dr r267051 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-27 16:13:58 +0100 dr r267005 : #i97873# minor changes in DataPilot API implementation as preparation for additional changes needed for OOX import filter 2009-01-27 10:08:01 +0100 dr r266961 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-27 10:06:50 +0100 dr r266960 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-23 12:52:31 +0100 dr r266808 : #i97873# DP documentation extended 2009-01-21 20:07:15 +0100 dr r266702 : #i97873# this trivial patch adds BIFF5/BIFF8 pivot table import to the oox filter 2009-01-20 16:06:23 +0100 dr r266592 : select BIFF filter via env.var 2009-01-16 18:51:01 +0100 dr r266452 : #i97873# import page fields 2009-01-16 15:05:36 +0100 dr r266420 : #i97873# field item settings (collapsed/hidden), settings of hidden fields 2009-01-15 16:01:17 +0100 dr r266377 : #i97873# import OOXML7/OOBIN7 autoshow settings 2009-01-14 15:24:27 +0100 dr r266310 : #i97873# import auto show settings generated by MSO2003 2009-01-14 12:29:44 +0100 dr r266281 : #i97873# set global dp settings 2009-01-13 15:04:30 +0100 dr r266229 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-13 14:46:50 +0100 dr r266225 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-12 15:04:22 +0100 dr r266161 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 15:03:42 +0100 dr r266160 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 14:57:33 +0100 dr r266159 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-12 14:52:43 +0100 dr r266158 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-09 16:34:55 +0100 dr r266098 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 16:32:16 +0100 dr r266097 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 12:02:39 +0100 dr r266072 : #i97623# RTL handling changed after CWS rtlcontrols 2009-01-09 09:48:53 +0100 dr r266050 : #i158444# SXLI must be filled completely before starting CONTINUE 2009-01-08 18:50:08 +0100 dr r266032 : #158444# allow to disable dump of record positions 2009-01-08 15:46:45 +0100 dr r266020 : #i97873# data layout field handling 2009-01-08 15:45:45 +0100 dr r266019 : #i97873# data layout field handling 2009-01-08 15:42:25 +0100 dr r266018 : #i97873# data layout field handling 2009-01-02 17:28:32 +0100 dr r265844 : #i10000# unxmacxi warning 2009-01-02 16:59:13 +0100 dr r265842 : #i10000# rebase corrections 2009-01-02 16:44:44 +0100 dr r265838 : #i10000# rebase corrections 2009-01-02 11:32:44 +0100 dr r265834 : CWS-TOOLING: rebase CWS dr67 to trunk@265758 (milestone: DEV300:m38) 2008-12-29 16:55:40 +0100 dr r265822 : more pivot table import, field layout settings 2008-12-29 14:27:35 +0100 dr r265817 : more pivot table import, additions for data field settings 2008-12-26 14:39:21 +0100 dr r265805 : updates 2008-12-19 16:31:39 +0100 dr r265734 : typo 2008-12-19 16:30:00 +0100 dr r265733 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:43 +0100 dr r265732 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:07 +0100 dr r265731 : add API for sequence of DP field subtotal functions 2008-12-18 18:07:58 +0100 dr r265710 : #i96758# try to cache row default formatting and apply it at row ranges instead of single rows 2008-12-18 16:00:25 +0100 dr r265698 : more additions to pivot import 2008-12-17 13:38:19 +0100 dr r265599 : do not assert HIDDEN orientation 2008-12-12 13:51:29 +0100 dr r265415 : minor typos 2008-12-12 10:15:04 +0100 dr r265394 : pivot cache import extended to XLSB, added creation of cache data for missing/external sheets 2008-12-04 13:16:16 +0100 dr r264837 : #i96860# remove old dumper files 2008-12-04 12:17:38 +0100 dr r264834 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-04 12:16:38 +0100 dr r264833 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-03 14:51:05 +0100 dr r264784 : #i10000# warnings 2008-12-03 14:32:46 +0100 dr r264778 : #i10000# warning 2008-12-03 11:28:38 +0100 dr r264758 : #i96758# ignore zero-sized objects 2008-12-03 10:09:34 +0100 dr r264748 : #i96758# change ::oox::Property(Set|Map) keys to sal_Int32 property identifiers, to save construction of property names 2008-12-01 16:09:02 +0100 dr r264615 : #i96758# headerdoc 2008-12-01 14:49:04 +0100 dr r264607 : #i96758# import performance of formatted documents 2008-11-26 17:08:15 +0100 dr r264424 : make it more simple 2008-11-26 16:31:41 +0100 dr r264419 : c:crossesAt is for crossing axis, not for own axis. This is different to BIFF 2008-11-26 13:55:55 +0100 dr r264382 : #i86346# import of MissingValueTreatment from XLSX 2008-11-26 12:49:38 +0100 dr r264370 : #i86346# import/export of MissingValueTreatment from/to XLS 2008-11-25 17:48:59 +0100 dr r264320 : update row height with single progress bar when using 'IsAdjustHeightEnabled' document property 2008-11-25 17:24:26 +0100 dr r264319 : #i96438# disable importing comment text until API is fixed 2008-11-25 17:11:30 +0100 dr r264318 : #i90124# set control tooltips, patch from npower 2008-11-25 15:09:28 +0100 dr r264309 : #i94028# #i94991# update drawing objects when changing row height 2008-11-24 15:21:35 +0100 dr r264224 : prevent ::rtl::OUString::copy assertion 2008-11-24 15:19:39 +0100 dr r264223 : #i95183# #158573# handle non-ascii characters in sheet names in OOXML import 2008-11-24 12:54:30 +0100 dr r264221 : #i94157# support ESC key to leave full-screen in page preview 2008-11-21 18:15:17 +0100 dr r264165 : #i90360# disable chart perspective if it is set to 0 2008-11-21 18:14:41 +0100 dr r264164 : #i90360# disable chart perspective if it is set to 0 2008-11-21 17:43:26 +0100 dr r264155 : #i96140# missing parenth 2008-11-21 17:36:35 +0100 dr r264154 : #i96438# first steps of note import 2008-11-20 15:15:03 +0100 dr r264059 : get rid of ContextWrapper 2008-11-18 11:39:52 +0100 dr r263755 : #i78476# moved to CWS dr67
2009-04-22 10:06:26 +00:00
bool bOldAdjustHeightEnabled = pDoc->IsAdjustHeightEnabled();
bool bAdjustHeightEnabled = ScUnoHelpFunctions::GetBoolFromAny( aValue );
CWS-TOOLING: integrate CWS dr67 2009-04-08 13:23:56 +0200 dr r270638 : #i100534# reverted 2009-04-08 10:14:55 +0200 dr r270621 : CWS-TOOLING: rebase CWS dr67 to trunk@270033 (milestone: DEV300:m45) 2009-04-07 21:06:33 +0200 dr r270610 : #i100534# sc does not link in debug mode 2009-03-12 11:20:09 +0100 dr r269375 : #i10000# wae 2009-03-11 19:43:55 +0100 dr r269351 : #i10000# adjust oox namespace ids according to oox/inc/oox/core/namespaces.hxx 2009-03-11 15:38:52 +0100 dr r269339 : CWS-TOOLING: rebase CWS dr67 to trunk@269297 (milestone: DEV300:m43) 2009-02-27 15:20:21 +0100 dr r268598 : CWS-TOOLING: rebase CWS dr67 to trunk@268395 (milestone: DEV300:m42) 2009-02-19 13:32:17 +0100 dr r268277 : moved hf parser into page settings 2009-02-19 12:25:15 +0100 dr r268272 : renamed some structs according to chart filter 2009-02-16 15:51:31 +0100 dr r267823 : #i97873# import autosort settings from BIFF8/OOBIN/OOXML 2009-02-06 17:09:29 +0100 dr r267477 : #i97873# minor changes 2009-02-06 16:38:56 +0100 dr r267473 : #i97873# import date grouping settings from BIFF5/BIFF8/OOBIN/OOXML 2009-02-06 16:38:11 +0100 dr r267472 : #i97873# check min/max/step of passed GroupInfo 2009-02-06 16:35:13 +0100 dr r267471 : #i97873# more doc for createDategroup() 2009-02-06 13:53:42 +0100 dr r267459 : #i97873# make XDataPilotGrouping::createDateGroup() implementation working and robust against wrong input data 2009-02-06 13:52:16 +0100 dr r267458 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-06 12:35:49 +0100 dr r267453 : fix other IDLC warnings in sheet module 2009-02-06 12:05:19 +0100 dr r267448 : #i97873# fix and extend IDL doc for datapilot grouping 2009-02-02 17:58:46 +0100 dr r267284 : #i10000# rebase errors 2009-02-02 17:52:21 +0100 dr r267282 : #i10000# rebase errors 2009-02-02 17:35:58 +0100 dr r267280 : #i10000# rebase errors 2009-02-02 15:58:04 +0100 dr r267274 : CWS-TOOLING: rebase CWS dr67 to trunk@267171 (milestone: DEV300:m41) 2009-02-02 09:16:32 +0100 dr r267247 : #i97873# typo 2009-01-30 17:09:09 +0100 dr r267215 : #i97873# import numeric grouping settings for datapilot fields from BIFF5/BIFF8/OOBIN/OOXML 2009-01-29 16:36:24 +0100 dr r267154 : #i97873# import datapilot discrete grouping from BIFF5/BIFF8/OOBIN/OOXLS 2009-01-29 16:33:37 +0100 dr r267152 : #i97873# do not kill _all_ the other group fields when writing back DataPilotField::GroupInfo property 2009-01-29 14:15:45 +0100 dr r267133 : #i93839# remove ScChengeTrack::Load and ::Store, adapt xls export filter 2009-01-28 13:30:37 +0100 dr r267056 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-28 12:09:05 +0100 dr r267051 : #i98397# enhance DataPilot API: allow to rename groups and items in a group field 2009-01-27 16:13:58 +0100 dr r267005 : #i97873# minor changes in DataPilot API implementation as preparation for additional changes needed for OOX import filter 2009-01-27 10:08:01 +0100 dr r266961 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-27 10:06:50 +0100 dr r266960 : #i97873# changing orientation of a DP field moves it to last position in new dimension 2009-01-23 12:52:31 +0100 dr r266808 : #i97873# DP documentation extended 2009-01-21 20:07:15 +0100 dr r266702 : #i97873# this trivial patch adds BIFF5/BIFF8 pivot table import to the oox filter 2009-01-20 16:06:23 +0100 dr r266592 : select BIFF filter via env.var 2009-01-16 18:51:01 +0100 dr r266452 : #i97873# import page fields 2009-01-16 15:05:36 +0100 dr r266420 : #i97873# field item settings (collapsed/hidden), settings of hidden fields 2009-01-15 16:01:17 +0100 dr r266377 : #i97873# import OOXML7/OOBIN7 autoshow settings 2009-01-14 15:24:27 +0100 dr r266310 : #i97873# import auto show settings generated by MSO2003 2009-01-14 12:29:44 +0100 dr r266281 : #i97873# set global dp settings 2009-01-13 15:04:30 +0100 dr r266229 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-13 14:46:50 +0100 dr r266225 : #i98029# SdrGroupObj does not remember predefined bounding rectangle anymore 2009-01-12 15:04:22 +0100 dr r266161 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 15:03:42 +0100 dr r266160 : #i97873# remove misleading hasDataLayoutField() 2009-01-12 14:57:33 +0100 dr r266159 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-12 14:52:43 +0100 dr r266158 : #i97900# reverted previous change, adjusted code to new EnableRTL() behaviour 2009-01-09 16:34:55 +0100 dr r266098 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 16:32:16 +0100 dr r266097 : #i97900# RTL handling in TabBar changed with CWS rtlcontrols 2009-01-09 12:02:39 +0100 dr r266072 : #i97623# RTL handling changed after CWS rtlcontrols 2009-01-09 09:48:53 +0100 dr r266050 : #i158444# SXLI must be filled completely before starting CONTINUE 2009-01-08 18:50:08 +0100 dr r266032 : #158444# allow to disable dump of record positions 2009-01-08 15:46:45 +0100 dr r266020 : #i97873# data layout field handling 2009-01-08 15:45:45 +0100 dr r266019 : #i97873# data layout field handling 2009-01-08 15:42:25 +0100 dr r266018 : #i97873# data layout field handling 2009-01-02 17:28:32 +0100 dr r265844 : #i10000# unxmacxi warning 2009-01-02 16:59:13 +0100 dr r265842 : #i10000# rebase corrections 2009-01-02 16:44:44 +0100 dr r265838 : #i10000# rebase corrections 2009-01-02 11:32:44 +0100 dr r265834 : CWS-TOOLING: rebase CWS dr67 to trunk@265758 (milestone: DEV300:m38) 2008-12-29 16:55:40 +0100 dr r265822 : more pivot table import, field layout settings 2008-12-29 14:27:35 +0100 dr r265817 : more pivot table import, additions for data field settings 2008-12-26 14:39:21 +0100 dr r265805 : updates 2008-12-19 16:31:39 +0100 dr r265734 : typo 2008-12-19 16:30:00 +0100 dr r265733 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:43 +0100 dr r265732 : add API for sequence of DP field subtotal functions 2008-12-19 16:29:07 +0100 dr r265731 : add API for sequence of DP field subtotal functions 2008-12-18 18:07:58 +0100 dr r265710 : #i96758# try to cache row default formatting and apply it at row ranges instead of single rows 2008-12-18 16:00:25 +0100 dr r265698 : more additions to pivot import 2008-12-17 13:38:19 +0100 dr r265599 : do not assert HIDDEN orientation 2008-12-12 13:51:29 +0100 dr r265415 : minor typos 2008-12-12 10:15:04 +0100 dr r265394 : pivot cache import extended to XLSB, added creation of cache data for missing/external sheets 2008-12-04 13:16:16 +0100 dr r264837 : #i96860# remove old dumper files 2008-12-04 12:17:38 +0100 dr r264834 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-04 12:16:38 +0100 dr r264833 : #i96858# XTO broken, if textbox is empty but contains formatting 2008-12-03 14:51:05 +0100 dr r264784 : #i10000# warnings 2008-12-03 14:32:46 +0100 dr r264778 : #i10000# warning 2008-12-03 11:28:38 +0100 dr r264758 : #i96758# ignore zero-sized objects 2008-12-03 10:09:34 +0100 dr r264748 : #i96758# change ::oox::Property(Set|Map) keys to sal_Int32 property identifiers, to save construction of property names 2008-12-01 16:09:02 +0100 dr r264615 : #i96758# headerdoc 2008-12-01 14:49:04 +0100 dr r264607 : #i96758# import performance of formatted documents 2008-11-26 17:08:15 +0100 dr r264424 : make it more simple 2008-11-26 16:31:41 +0100 dr r264419 : c:crossesAt is for crossing axis, not for own axis. This is different to BIFF 2008-11-26 13:55:55 +0100 dr r264382 : #i86346# import of MissingValueTreatment from XLSX 2008-11-26 12:49:38 +0100 dr r264370 : #i86346# import/export of MissingValueTreatment from/to XLS 2008-11-25 17:48:59 +0100 dr r264320 : update row height with single progress bar when using 'IsAdjustHeightEnabled' document property 2008-11-25 17:24:26 +0100 dr r264319 : #i96438# disable importing comment text until API is fixed 2008-11-25 17:11:30 +0100 dr r264318 : #i90124# set control tooltips, patch from npower 2008-11-25 15:09:28 +0100 dr r264309 : #i94028# #i94991# update drawing objects when changing row height 2008-11-24 15:21:35 +0100 dr r264224 : prevent ::rtl::OUString::copy assertion 2008-11-24 15:19:39 +0100 dr r264223 : #i95183# #158573# handle non-ascii characters in sheet names in OOXML import 2008-11-24 12:54:30 +0100 dr r264221 : #i94157# support ESC key to leave full-screen in page preview 2008-11-21 18:15:17 +0100 dr r264165 : #i90360# disable chart perspective if it is set to 0 2008-11-21 18:14:41 +0100 dr r264164 : #i90360# disable chart perspective if it is set to 0 2008-11-21 17:43:26 +0100 dr r264155 : #i96140# missing parenth 2008-11-21 17:36:35 +0100 dr r264154 : #i96438# first steps of note import 2008-11-20 15:15:03 +0100 dr r264059 : get rid of ContextWrapper 2008-11-18 11:39:52 +0100 dr r263755 : #i78476# moved to CWS dr67
2009-04-22 10:06:26 +00:00
if( bOldAdjustHeightEnabled != bAdjustHeightEnabled )
pDoc->EnableAdjustHeight( bAdjustHeightEnabled );
}
else if ( aString.EqualsAscii( SC_UNO_ISEXECUTELINKENABLED ) )
{
pDoc->EnableExecuteLink( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
}
else if ( aString.EqualsAscii( SC_UNO_ISCHANGEREADONLYENABLED ) )
{
pDoc->EnableChangeReadOnly( ScUnoHelpFunctions::GetBoolFromAny( aValue ) );
}
else if ( aString.EqualsAscii( "BuildId" ) )
{
aValue >>= maBuildId;
}
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
else if ( aString.EqualsAscii( "SavedObject" ) ) // set from chart after saving
{
rtl::OUString aObjName;
aValue >>= aObjName;
if ( !aObjName.isEmpty() )
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
pDoc->RestoreChartListener( aObjName );
}
2000-09-18 16:07:07 +00:00
if ( aNewOpt != rOldOpt )
{
pDoc->SetDocOptions( aNewOpt );
//! Recalc only for options that need it?
if ( bHardRecalc )
pDocShell->DoHardRecalc( sal_True );
2000-09-18 16:07:07 +00:00
pDocShell->SetDocumentModified();
}
}
}
uno::Any SAL_CALL ScModelObj::getPropertyValue( const rtl::OUString& aPropertyName )
throw(beans::UnknownPropertyException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
String aString(aPropertyName);
2000-09-18 16:07:07 +00:00
uno::Any aRet;
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
const ScDocOptions& rOpt = pDoc->GetDocOptions();
aRet = ScDocOptionsHelper::getPropertyValue( rOpt, aPropSet.getPropertyMap(), aPropertyName );
if ( aRet.hasValue() )
2000-09-18 16:07:07 +00:00
{
// done...
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNONAME_CLOCAL ) )
{
2000-11-26 12:51:18 +00:00
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
2000-11-26 12:51:18 +00:00
lang::Locale aLocale;
ScUnoConversion::FillLocale( aLocale, eLatin );
aRet <<= aLocale;
}
else if ( aString.EqualsAscii( SC_UNO_CODENAME ) )
{
rtl::OUString sCodeName = pDoc->GetCodeName();
aRet <<= sCodeName;
}
2000-11-26 12:51:18 +00:00
else if ( aString.EqualsAscii( SC_UNO_CJK_CLOCAL ) )
{
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
2000-11-26 12:51:18 +00:00
lang::Locale aLocale;
ScUnoConversion::FillLocale( aLocale, eCjk );
aRet <<= aLocale;
}
else if ( aString.EqualsAscii( SC_UNO_CTL_CLOCAL ) )
{
LanguageType eLatin, eCjk, eCtl;
pDoc->GetLanguage( eLatin, eCjk, eCtl );
2000-11-26 12:51:18 +00:00
2000-09-18 16:07:07 +00:00
lang::Locale aLocale;
2000-11-26 12:51:18 +00:00
ScUnoConversion::FillLocale( aLocale, eCtl );
2000-09-18 16:07:07 +00:00
aRet <<= aLocale;
}
else if ( aString.EqualsAscii( SC_UNO_NAMEDRANGES ) )
{
aRet <<= uno::Reference<sheet::XNamedRanges>(new ScGlobalNamedRangesObj( pDocShell ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_DATABASERNG ) )
{
aRet <<= uno::Reference<sheet::XDatabaseRanges>(new ScDatabaseRangesObj( pDocShell ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_UNNAMEDDBRNG ) )
{
aRet <<= uno::Reference<sheet::XUnnamedDatabaseRanges>(new ScUnnamedDatabaseRangesObj(pDocShell));
}
2000-09-18 16:07:07 +00:00
else if ( aString.EqualsAscii( SC_UNO_COLLABELRNG ) )
{
aRet <<= uno::Reference<sheet::XLabelRanges>(new ScLabelRangesObj( pDocShell, sal_True ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_ROWLABELRNG ) )
{
aRet <<= uno::Reference<sheet::XLabelRanges>(new ScLabelRangesObj( pDocShell, false ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_AREALINKS ) )
{
aRet <<= uno::Reference<sheet::XAreaLinks>(new ScAreaLinksObj( pDocShell ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_DDELINKS ) )
{
aRet <<= uno::Reference<container::XNameAccess>(new ScDDELinksObj( pDocShell ));
2000-09-18 16:07:07 +00:00
}
CWS-TOOLING: integrate CWS mooxlsc 2008-12-12 09:32:19 +0100 dr r265390 : #i10000# warning 2008-12-11 14:54:26 +0100 dr r265301 : add strings from dr66 to meet ui freeze 2008-12-11 14:53:20 +0100 dr r265300 : add strings from dr66 to meet ui freeze 2008-12-08 14:43:25 +0100 er r264997 : DBG_... need semicolon 2008-12-04 19:16:50 +0100 er r264872 : DBG_... needs semicolon 2008-12-04 11:09:27 +0100 er r264824 : DBG_ERROR needs semicolon 2008-12-03 13:29:46 +0100 er r264770 : CWS-TOOLING: rebase CWS mooxlsc to trunk@264325 (milestone: DEV300:m36) 2008-12-02 16:49:09 +0100 er r264722 : disable code for named references #i4385# import as long as #i3740# isn't fully implemented 2008-12-02 16:45:04 +0100 er r264721 : some compilers attempt to be too smart; persuade them it's really meant what was written 2008-12-02 16:04:56 +0100 er r264715 : #i3740# no storage in ODF for external name references 2008-11-29 02:20:50 +0100 er r264575 : some huge performance improvement when reading repeated empty rows for the external references cache from ODF, as they often occur in the sparse matrix 2008-11-29 01:14:55 +0100 er r264574 : WriteExternalRefCaches: for table:number-columns-repeated write used columns instead of MAXCOLCOUNT 2008-11-28 18:30:04 +0100 er r264570 : #i3740# write/read external name references as bracketed references, as proposed on the ODFF list 2008-11-27 20:36:54 +0100 er r264521 : merge i95068 from cws calc46 for code correctness 2008-11-21 20:39:34 +0100 kohei r264174 : fixed a crash when importing a BIFF8 document with per-sheet external names. For now, we don't support per-sheet external names. Let's throw in NoName error until they are supported. 2008-11-21 18:47:27 +0100 kohei r264168 : I forgot to process cached range references in the EXTERNNAME record, which prevented cached external names with range references from being imported correctly. P.S. I swear I thought I had covered this.... 2008-11-20 23:07:22 +0100 er r264104 : #i4385# parse external defined names in MOOXML import 2008-11-14 23:18:54 +0100 er r263700 : #i92797# parse external sheet references under aspects of MOOXML import and new ScExternalRefManager 2008-11-14 18:49:48 +0100 er r263696 : remove infinity assertion, leftover from binary file format; coded double error may occur via filter import 2008-11-12 13:29:44 +0100 er r263593 : make references to entire rows/columns, such as A:A or 3:3, actually work in MOOXML import 2008-11-03 12:35:11 +0100 er r263282 : a struct is a struct is a ... 2008-10-31 00:30:59 +0100 er r262843 : aTableRowCellAttrTokenMap needed 2008-10-31 00:26:07 +0100 er r262842 : GetTableRowCellAttrTokenMap() is not unused 2008-10-31 00:13:53 +0100 er r262841 : merge error 2008-10-31 00:05:39 +0100 er r262840 : merge error 2008-10-30 23:17:48 +0100 er r262839 : unresolved merge conflict!?! 2008-10-30 22:59:11 +0100 er r262838 : merge error 2008-10-30 16:31:04 +0100 hr r262833 : CWS-TOOLING: rebase CWS mooxlsc to trunk@262620 (milestone: DEV300:m34) 2008-10-16 21:57:51 +0200 er r262272 : migrate CWS mooxlsc to SVN
2008-12-12 09:38:47 +00:00
else if ( aString.EqualsAscii( SC_UNO_EXTERNALDOCLINKS ) )
{
aRet <<= uno::Reference<sheet::XExternalDocLinks>(new ScExternalDocLinksObj(pDocShell));
}
2000-09-18 16:07:07 +00:00
else if ( aString.EqualsAscii( SC_UNO_SHEETLINKS ) )
{
aRet <<= uno::Reference<container::XNameAccess>(new ScSheetLinksObj( pDocShell ));
2000-09-18 16:07:07 +00:00
}
else if ( aString.EqualsAscii( SC_UNO_APPLYFMDES ) )
{
// default for no model is TRUE
ScDrawLayer* pModel = pDoc->GetDrawLayer();
sal_Bool bOpenInDesign = pModel ? pModel->GetOpenInDesignMode() : sal_True;
ScUnoHelpFunctions::SetBoolInAny( aRet, bOpenInDesign );
}
else if ( aString.EqualsAscii( SC_UNO_AUTOCONTFOC ) )
{
// default for no model is FALSE
ScDrawLayer* pModel = pDoc->GetDrawLayer();
sal_Bool bAutoControlFocus = pModel ? pModel->GetAutoControlFocus() : false;
ScUnoHelpFunctions::SetBoolInAny( aRet, bAutoControlFocus );
}
else if ( aString.EqualsAscii( SC_UNO_FORBIDDEN ) )
{
aRet <<= uno::Reference<i18n::XForbiddenCharacters>(new ScForbiddenCharsObj( pDocShell ));
}
2001-07-26 05:32:44 +00:00
else if ( aString.EqualsAscii( SC_UNO_HASDRAWPAGES ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, (pDocShell->GetDocument()->GetDrawLayer() != 0) );
}
else if ( aString.EqualsAscii( SC_UNO_BASICLIBRARIES ) )
{
aRet <<= pDocShell->GetBasicContainer();
}
else if ( aString.EqualsAscii( SC_UNO_DIALOGLIBRARIES ) )
{
aRet <<= pDocShell->GetDialogContainer();
}
else if ( aString.EqualsAscii( SC_UNO_VBAGLOBNAME ) )
{
/* #i111553# This property provides the name of the constant that
will be used to store this model in the global Basic manager.
That constant will be equivelant to 'ThisComponent' but for
each application, so e.g. a 'ThisExcelDoc' and a 'ThisWordDoc'
constant can co-exist, as required by VBA. */
aRet <<= rtl::OUString( "ThisExcelDoc" );
}
else if ( aString.EqualsAscii( SC_UNO_RUNTIMEUID ) )
{
aRet <<= getRuntimeUID();
}
else if ( aString.EqualsAscii( SC_UNO_HASVALIDSIGNATURES ) )
{
aRet <<= hasValidSignatures();
}
else if ( aString.EqualsAscii( SC_UNO_ISLOADED ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, !pDocShell->IsEmpty() );
}
else if ( aString.EqualsAscii( SC_UNO_ISUNDOENABLED ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->IsUndoEnabled() );
}
else if ( aString.EqualsAscii( SC_UNO_ISADJUSTHEIGHTENABLED ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->IsAdjustHeightEnabled() );
}
else if ( aString.EqualsAscii( SC_UNO_ISEXECUTELINKENABLED ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->IsExecuteLinkEnabled() );
}
else if ( aString.EqualsAscii( SC_UNO_ISCHANGEREADONLYENABLED ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, pDoc->IsChangeReadOnlyEnabled() );
}
else if ( aString.EqualsAscii( SC_UNO_REFERENCEDEVICE ) )
{
VCLXDevice* pXDev = new VCLXDevice();
pXDev->SetOutputDevice( pDoc->GetRefDevice() );
aRet <<= uno::Reference< awt::XDevice >( pXDev );
}
else if ( aString.EqualsAscii( "BuildId" ) )
{
aRet <<= maBuildId;
}
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
else if ( aString.EqualsAscii( "InternalDocument" ) )
{
ScUnoHelpFunctions::SetBoolInAny( aRet, (pDocShell->GetCreateMode() == SFX_CREATE_MODE_INTERNAL) );
}
2000-09-18 16:07:07 +00:00
}
return aRet;
}
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScModelObj )
// XMultiServiceFactory
uno::Reference<uno::XInterface> SAL_CALL ScModelObj::createInstance(
const rtl::OUString& aServiceSpecifier )
throw(uno::Exception, uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
uno::Reference<uno::XInterface> xRet;
String aNameStr(aServiceSpecifier);
sal_uInt16 nType = ScServiceProvider::GetProviderType(aNameStr);
2000-09-18 16:07:07 +00:00
if ( nType != SC_SERVICE_INVALID )
{
// drawing layer tables must be kept as long as the model is alive
// return stored instance if already set
switch ( nType )
{
case SC_SERVICE_GRADTAB: xRet.set(xDrawGradTab); break;
case SC_SERVICE_HATCHTAB: xRet.set(xDrawHatchTab); break;
case SC_SERVICE_BITMAPTAB: xRet.set(xDrawBitmapTab); break;
case SC_SERVICE_TRGRADTAB: xRet.set(xDrawTrGradTab); break;
case SC_SERVICE_MARKERTAB: xRet.set(xDrawMarkerTab); break;
case SC_SERVICE_DASHTAB: xRet.set(xDrawDashTab); break;
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
case SC_SERVICE_CHDATAPROV: xRet.set(xChartDataProv); break;
case SC_SERVICE_VBAOBJECTPROVIDER: xRet.set(xObjProvider); break;
}
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
// #i64497# If a chart is in a temporary document during clipoard paste,
// there should be no data provider, so that own data is used
bool bCreate =
! ( nType == SC_SERVICE_CHDATAPROV &&
( pDocShell->GetCreateMode() == SFX_CREATE_MODE_INTERNAL ));
// this should never happen, i.e. the temporary document should never be
// loaded, because this unlinks the data
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
OSL_ASSERT( bCreate );
if ( !xRet.is() && bCreate )
{
xRet.set(ScServiceProvider::MakeInstance( nType, pDocShell ));
// store created instance
switch ( nType )
{
case SC_SERVICE_GRADTAB: xDrawGradTab.set(xRet); break;
case SC_SERVICE_HATCHTAB: xDrawHatchTab.set(xRet); break;
case SC_SERVICE_BITMAPTAB: xDrawBitmapTab.set(xRet); break;
case SC_SERVICE_TRGRADTAB: xDrawTrGradTab.set(xRet); break;
case SC_SERVICE_MARKERTAB: xDrawMarkerTab.set(xRet); break;
case SC_SERVICE_DASHTAB: xDrawDashTab.set(xRet); break;
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
case SC_SERVICE_CHDATAPROV: xChartDataProv.set(xRet); break;
case SC_SERVICE_VBAOBJECTPROVIDER: xObjProvider.set(xRet); break;
}
}
2000-09-18 16:07:07 +00:00
}
else
{
// alles was ich nicht kenn, werf ich der SvxFmMSFactory an den Hals,
// da wird dann 'ne Exception geworfen, wenn's nicht passt...
try
{
xRet.set(SvxFmMSFactory::createInstance(aServiceSpecifier));
// extra block to force deletion of the temporary before ScShapeObj ctor (setDelegator)
}
catch ( lang::ServiceNotRegisteredException & )
{
}
2011-03-01 14:29:24 +01:00
// if the drawing factory created a shape, a ScShapeObj has to be used
// to support own properties like ImageMap:
uno::Reference<drawing::XShape> xShape( xRet, uno::UNO_QUERY );
if ( xShape.is() )
{
xRet.clear(); // for aggregation, xShape must be the object's only ref
new ScShapeObj( xShape ); // aggregates object and modifies xShape
xRet.set(xShape);
}
2000-09-18 16:07:07 +00:00
}
return xRet;
}
uno::Reference<uno::XInterface> SAL_CALL ScModelObj::createInstanceWithArguments(
const rtl::OUString& ServiceSpecifier,
const uno::Sequence<uno::Any>& aArgs )
2000-09-18 16:07:07 +00:00
throw(uno::Exception, uno::RuntimeException)
{
//! unterscheiden zwischen eigenen Services und denen vom Drawing-Layer?
SolarMutexGuard aGuard;
uno::Reference<uno::XInterface> xInt(createInstance(ServiceSpecifier));
if ( aArgs.getLength() )
{
// used only for cell value binding so far - it can be initialized after creating
uno::Reference<lang::XInitialization> xInit( xInt, uno::UNO_QUERY );
if ( xInit.is() )
xInit->initialize( aArgs );
}
2000-09-18 16:07:07 +00:00
return xInt;
}
uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getAvailableServiceNames()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
//! warum sind die Parameter bei concatServiceNames nicht const ???
//! return concatServiceNames( ScServiceProvider::GetAllServiceNames(),
//! SvxFmMSFactory::getAvailableServiceNames() );
uno::Sequence<rtl::OUString> aMyServices(ScServiceProvider::GetAllServiceNames());
uno::Sequence<rtl::OUString> aDrawServices(SvxFmMSFactory::getAvailableServiceNames());
2000-09-18 16:07:07 +00:00
return concatServiceNames( aMyServices, aDrawServices );
}
// XServiceInfo
rtl::OUString SAL_CALL ScModelObj::getImplementationName() throw(uno::RuntimeException)
{
return rtl::OUString( "ScModelObj" );
2000-09-18 16:07:07 +00:00
}
sal_Bool SAL_CALL ScModelObj::supportsService( const rtl::OUString& rServiceName )
throw(uno::RuntimeException)
{
String aServiceStr(rServiceName);
2000-09-18 16:07:07 +00:00
return aServiceStr.EqualsAscii( SCMODELOBJ_SERVICE ) ||
aServiceStr.EqualsAscii( SCDOCSETTINGS_SERVICE ) ||
aServiceStr.EqualsAscii( SCDOC_SERVICE );
2000-09-18 16:07:07 +00:00
}
uno::Sequence<rtl::OUString> SAL_CALL ScModelObj::getSupportedServiceNames()
throw(uno::RuntimeException)
{
uno::Sequence<rtl::OUString> aRet(2);
2000-09-18 16:07:07 +00:00
rtl::OUString* pArray = aRet.getArray();
pArray[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCMODELOBJ_SERVICE ));
pArray[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SCDOCSETTINGS_SERVICE ));
2000-09-18 16:07:07 +00:00
return aRet;
}
// XUnoTunnel
sal_Int64 SAL_CALL ScModelObj::getSomething(
const uno::Sequence<sal_Int8 >& rId ) throw(uno::RuntimeException)
{
if ( rId.getLength() == 16 &&
0 == memcmp( getUnoTunnelId().getConstArray(),
2000-09-18 16:07:07 +00:00
rId.getConstArray(), 16 ) )
{
return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this));
2000-09-18 16:07:07 +00:00
}
2010-03-01 12:59:33 +00:00
if ( rId.getLength() == 16 &&
0 == memcmp( SfxObjectShell::getUnoTunnelId().getConstArray(),
2010-03-01 12:59:33 +00:00
rId.getConstArray(), 16 ) )
{
return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(pDocShell ));
}
2010-03-01 12:59:33 +00:00
2000-09-18 16:07:07 +00:00
// aggregated number formats supplier has XUnoTunnel, too
// interface from aggregated object must be obtained via queryAggregation
sal_Int64 nRet = SfxBaseModel::getSomething( rId );
if ( nRet )
return nRet;
CWS-TOOLING: integrate CWS oj18 2009-08-21 15:08:49 +0200 oj r275263 : wrong check 2009-08-21 08:56:01 +0200 oj r275215 : missing not 2009-08-20 07:27:13 +0200 oj r275164 : use new method from global 2009-08-19 10:22:35 +0200 oj r275138 : call GetLocale instead of pLocale 2009-08-18 10:39:32 +0200 oj r275082 : missing header include 2009-08-18 10:09:44 +0200 oj r275081 : new methods at global 2009-08-18 10:09:00 +0200 oj r275080 : unused var 2009-08-18 08:59:04 +0200 oj r275078 : move files from classes to xml 2009-08-17 14:58:16 +0200 oj r275056 : CWS-TOOLING: rebase CWS oj18 to trunk@275001 (milestone: DEV300:m55) 2009-08-17 13:29:44 +0200 oj r275047 : compile error 2009-08-17 13:27:47 +0200 oj r275045 : compile error 2009-08-17 11:44:54 +0200 oj r275040 : add dep 2009-07-22 14:26:05 +0200 oj r274240 : move unused services into fwl 2009-07-22 14:25:35 +0200 oj r274239 : move unused services into fwl 2009-07-22 13:47:45 +0200 oj r274233 : remove some unused code 2009-07-22 09:06:20 +0200 oj r274219 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 08:48:58 +0200 oj r274218 : create NumberFormatter on demand 2009-07-22 08:39:23 +0200 oj r274217 : change char to sal_Char 2009-07-22 07:33:34 +0200 oj r274214 : export dbtoolsclient dbcharsethelper for sc 2009-07-22 07:30:04 +0200 oj r274213 : late init of numberformatter and breakiterator 2009-07-22 07:28:55 +0200 oj r274212 : export dbtoolsclient dbcharsethelper for sc 2009-07-21 13:43:28 +0200 oj r274196 : check if quick start is enbaled 2009-07-21 13:40:09 +0200 oj r274195 : check config entry for UiEventsLogger 2009-07-21 13:37:40 +0200 oj r274194 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:35:38 +0200 oj r274193 : code refactoring, remove of duplicate code and some late inits and removale of not needed files 2009-07-21 13:33:41 +0200 oj r274192 : doc meta data will now be created on demand 2009-07-21 13:13:40 +0200 oj r274187 : load ldap functions on demand 2009-07-21 13:03:17 +0200 oj r274183 : late init of TransliterationImpl 2009-07-21 12:36:10 +0200 oj r274180 : late init of charClass
2009-09-08 04:57:32 +00:00
if ( GetFormatter().is() )
2000-09-18 16:07:07 +00:00
{
const uno::Type& rTunnelType = ::getCppuType((uno::Reference<lang::XUnoTunnel>*) 0);
uno::Any aNumTunnel(xNumberAgg->queryAggregation(rTunnelType));
2000-09-18 16:07:07 +00:00
if(aNumTunnel.getValueType() == rTunnelType)
{
uno::Reference<lang::XUnoTunnel> xTunnelAgg(
*(uno::Reference<lang::XUnoTunnel>*)aNumTunnel.getValue());
2000-09-18 16:07:07 +00:00
return xTunnelAgg->getSomething( rId );
}
}
return 0;
}
namespace
{
class theScModelObjUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theScModelObjUnoTunnelId> {};
}
2000-09-18 16:07:07 +00:00
const uno::Sequence<sal_Int8>& ScModelObj::getUnoTunnelId()
{
return theScModelObjUnoTunnelId::get().getSeq();
2000-09-18 16:07:07 +00:00
}
ScModelObj* ScModelObj::getImplementation( const uno::Reference<uno::XInterface> xObj )
{
ScModelObj* pRet = NULL;
uno::Reference<lang::XUnoTunnel> xUT( xObj, uno::UNO_QUERY );
if (xUT.is())
pRet = reinterpret_cast<ScModelObj*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething(getUnoTunnelId())));
2000-09-18 16:07:07 +00:00
return pRet;
}
// XChangesNotifier
void ScModelObj::addChangesListener( const uno::Reference< util::XChangesListener >& aListener )
throw (uno::RuntimeException)
{
SolarMutexGuard aGuard;
maChangesListeners.addInterface( aListener );
}
void ScModelObj::removeChangesListener( const uno::Reference< util::XChangesListener >& aListener )
throw (uno::RuntimeException)
{
SolarMutexGuard aGuard;
maChangesListeners.removeInterface( aListener );
}
bool ScModelObj::HasChangesListeners() const
{
if ( maChangesListeners.getLength() > 0 )
return true;
// "change" event set in any sheet?
return pDocShell && pDocShell->GetDocument()->HasAnySheetEventScript(SC_SHEETEVENT_CHANGE);
}
void ScModelObj::NotifyChanges( const ::rtl::OUString& rOperation, const ScRangeList& rRanges,
const uno::Sequence< beans::PropertyValue >& rProperties )
{
if ( pDocShell && HasChangesListeners() )
{
util::ChangesEvent aEvent;
aEvent.Source.set( static_cast< cppu::OWeakObject* >( this ) );
aEvent.Base <<= aEvent.Source;
size_t nRangeCount = rRanges.size();
aEvent.Changes.realloc( static_cast< sal_Int32 >( nRangeCount ) );
for ( size_t nIndex = 0; nIndex < nRangeCount; ++nIndex )
{
uno::Reference< table::XCellRange > xRangeObj;
ScRange aRange( *rRanges[ nIndex ] );
if ( aRange.aStart == aRange.aEnd )
{
xRangeObj.set( new ScCellObj( pDocShell, aRange.aStart ) );
}
else
{
xRangeObj.set( new ScCellRangeObj( pDocShell, aRange ) );
}
util::ElementChange& rChange = aEvent.Changes[ static_cast< sal_Int32 >( nIndex ) ];
rChange.Accessor <<= rOperation;
rChange.Element <<= rProperties;
rChange.ReplacedElement <<= xRangeObj;
}
::cppu::OInterfaceIteratorHelper aIter( maChangesListeners );
while ( aIter.hasMoreElements() )
{
try
{
static_cast< util::XChangesListener* >( aIter.next() )->changesOccurred( aEvent );
}
catch( uno::Exception& )
{
}
}
}
// handle sheet events
//! separate method with ScMarkData? Then change HasChangesListeners back.
if ( rOperation.compareToAscii("cell-change") == 0 && pDocShell )
{
ScMarkData aMarkData;
aMarkData.MarkFromRangeList( rRanges, false );
ScDocument* pDoc = pDocShell->GetDocument();
SCTAB nTabCount = pDoc->GetTableCount();
ScMarkData::iterator itr = aMarkData.begin(), itrEnd = aMarkData.end();
for (; itr != itrEnd && *itr < nTabCount; ++itr)
{
SCTAB nTab = *itr;
const ScSheetEvents* pEvents = pDoc->GetSheetEvents(nTab);
if (pEvents)
{
const rtl::OUString* pScript = pEvents->GetScript(SC_SHEETEVENT_CHANGE);
if (pScript)
{
ScRangeList aTabRanges; // collect ranges on this sheet
size_t nRangeCount = rRanges.size();
for ( size_t nIndex = 0; nIndex < nRangeCount; ++nIndex )
{
ScRange aRange( *rRanges[ nIndex ] );
if ( aRange.aStart.Tab() == nTab )
aTabRanges.Append( aRange );
}
size_t nTabRangeCount = aTabRanges.size();
if ( nTabRangeCount > 0 )
{
uno::Reference<uno::XInterface> xTarget;
if ( nTabRangeCount == 1 )
{
ScRange aRange( *aTabRanges[ 0 ] );
if ( aRange.aStart == aRange.aEnd )
xTarget.set( static_cast<cppu::OWeakObject*>( new ScCellObj( pDocShell, aRange.aStart ) ) );
else
xTarget.set( static_cast<cppu::OWeakObject*>( new ScCellRangeObj( pDocShell, aRange ) ) );
}
else
xTarget.set( static_cast<cppu::OWeakObject*>( new ScCellRangesObj( pDocShell, aTabRanges ) ) );
uno::Sequence<uno::Any> aParams(1);
aParams[0] <<= xTarget;
uno::Any aRet;
uno::Sequence<sal_Int16> aOutArgsIndex;
uno::Sequence<uno::Any> aOutArgs;
/*ErrCode eRet =*/ pDocShell->CallXScript( *pScript, aParams, aRet, aOutArgsIndex, aOutArgs );
}
}
}
}
}
}
void ScModelObj::HandleCalculateEvents()
{
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
// don't call events before the document is visible
// (might also set a flag on SFX_EVENT_LOADFINISHED and only disable while loading)
if ( pDoc->IsDocVisible() )
{
SCTAB nTabCount = pDoc->GetTableCount();
for (SCTAB nTab = 0; nTab < nTabCount; nTab++)
{
if (pDoc->HasCalcNotification(nTab))
{
if (const ScSheetEvents* pEvents = pDoc->GetSheetEvents( nTab ))
{
if (const rtl::OUString* pScript = pEvents->GetScript(SC_SHEETEVENT_CALCULATE))
{
uno::Any aRet;
uno::Sequence<uno::Any> aParams;
uno::Sequence<sal_Int16> aOutArgsIndex;
uno::Sequence<uno::Any> aOutArgs;
pDocShell->CallXScript( *pScript, aParams, aRet, aOutArgsIndex, aOutArgs );
}
}
try
{
2010-07-12 11:17:00 +02:00
uno::Reference< script::vba::XVBAEventProcessor > xVbaEvents( pDoc->GetVbaEventProcessor(), uno::UNO_SET_THROW );
uno::Sequence< uno::Any > aArgs( 1 );
aArgs[ 0 ] <<= nTab;
xVbaEvents->processVbaEvent( ScSheetEvents::GetVbaSheetEventId( SC_SHEETEVENT_CALCULATE ), aArgs );
}
catch( uno::Exception& )
{
}
}
}
}
pDoc->ResetCalcNotifications();
}
}
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
ScDrawPagesObj::ScDrawPagesObj(ScDocShell* pDocSh) :
pDocShell( pDocSh )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScDrawPagesObj::~ScDrawPagesObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScDrawPagesObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
// Referenz-Update interessiert hier nicht
if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
uno::Reference<drawing::XDrawPage> ScDrawPagesObj::GetObjectByIndex_Impl(sal_Int32 nIndex) const
2000-09-18 16:07:07 +00:00
{
if (pDocShell)
{
ScDrawLayer* pDrawLayer = pDocShell->MakeDrawLayer();
OSL_ENSURE(pDrawLayer,"kann Draw-Layer nicht anlegen");
2000-09-18 16:07:07 +00:00
if ( pDrawLayer && nIndex >= 0 && nIndex < pDocShell->GetDocument()->GetTableCount() )
{
SdrPage* pPage = pDrawLayer->GetPage((sal_uInt16)nIndex);
OSL_ENSURE(pPage,"Draw-Page nicht gefunden");
2000-09-18 16:07:07 +00:00
if (pPage)
{
return uno::Reference<drawing::XDrawPage> (pPage->getUnoPage(), uno::UNO_QUERY);
2000-09-18 16:07:07 +00:00
}
}
}
return NULL;
}
// XDrawPages
uno::Reference<drawing::XDrawPage> SAL_CALL ScDrawPagesObj::insertNewByIndex( sal_Int32 nPos )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
uno::Reference<drawing::XDrawPage> xRet;
if (pDocShell)
{
rtl::OUString aNewName;
2000-09-18 16:07:07 +00:00
pDocShell->GetDocument()->CreateValidTabName(aNewName);
if ( pDocShell->GetDocFunc().InsertTable( static_cast<SCTAB>(nPos),
aNewName, true, true ) )
xRet.set(GetObjectByIndex_Impl( nPos ));
2000-09-18 16:07:07 +00:00
}
return xRet;
}
void SAL_CALL ScDrawPagesObj::remove( const uno::Reference<drawing::XDrawPage>& xPage )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
SvxDrawPage* pImp = SvxDrawPage::getImplementation( xPage );
if ( pDocShell && pImp )
{
SdrPage* pPage = pImp->GetSdrPage();
if (pPage)
{
SCTAB nPageNum = static_cast<SCTAB>(pPage->GetPageNum());
pDocShell->GetDocFunc().DeleteTable( nPageNum, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
}
}
// XIndexAccess
sal_Int32 SAL_CALL ScDrawPagesObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return pDocShell->GetDocument()->GetTableCount();
return 0;
}
uno::Any SAL_CALL ScDrawPagesObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<drawing::XDrawPage> xPage(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xPage.is())
return uno::makeAny(xPage);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
}
uno::Type SAL_CALL ScDrawPagesObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<drawing::XDrawPage>*)0);
}
sal_Bool SAL_CALL ScDrawPagesObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
//------------------------------------------------------------------------
ScTableSheetsObj::ScTableSheetsObj(ScDocShell* pDocSh) :
pDocShell( pDocSh )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScTableSheetsObj::~ScTableSheetsObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScTableSheetsObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
// Referenz-Update interessiert hier nicht
if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XSpreadsheets
ScTableSheetObj* ScTableSheetsObj::GetObjectByIndex_Impl(sal_Int32 nIndex) const
2000-09-18 16:07:07 +00:00
{
if ( pDocShell && nIndex >= 0 && nIndex < pDocShell->GetDocument()->GetTableCount() )
return new ScTableSheetObj( pDocShell, static_cast<SCTAB>(nIndex) );
2000-09-18 16:07:07 +00:00
return NULL;
}
ScTableSheetObj* ScTableSheetsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
{
if (pDocShell)
{
SCTAB nIndex;
if ( pDocShell->GetDocument()->GetTable( aName, nIndex ) )
2000-09-18 16:07:07 +00:00
return new ScTableSheetObj( pDocShell, nIndex );
}
return NULL;
}
void SAL_CALL ScTableSheetsObj::insertNewByName( const rtl::OUString& aName, sal_Int16 nPosition )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
String aNamStr(aName);
bDone = pDocShell->GetDocFunc().InsertTable( nPosition, aNamStr, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
void SAL_CALL ScTableSheetsObj::moveByName( const rtl::OUString& aName, sal_Int16 nDestination )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
SCTAB nSource;
if ( pDocShell->GetDocument()->GetTable( aName, nSource ) )
bDone = pDocShell->MoveTable( nSource, nDestination, false, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
void SAL_CALL ScTableSheetsObj::copyByName( const rtl::OUString& aName,
const rtl::OUString& aCopy, sal_Int16 nDestination )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
String aNewStr(aCopy);
SCTAB nSource;
if ( pDocShell->GetDocument()->GetTable( aName, nSource ) )
2000-09-18 16:07:07 +00:00
{
bDone = pDocShell->MoveTable( nSource, nDestination, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
if (bDone)
{
// #i92477# any index past the last sheet means "append" in MoveTable
SCTAB nResultTab = static_cast<SCTAB>(nDestination);
SCTAB nTabCount = pDocShell->GetDocument()->GetTableCount(); // count after copying
if (nResultTab >= nTabCount)
nResultTab = nTabCount - 1;
bDone = pDocShell->GetDocFunc().RenameTable( nResultTab, aNewStr,
sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
}
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
void SAL_CALL ScTableSheetsObj::insertByName( const rtl::OUString& aName, const uno::Any& aElement )
throw(lang::IllegalArgumentException, container::ElementExistException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
sal_Bool bIllArg = false;
2000-09-18 16:07:07 +00:00
//! Type of aElement can be some specific interface instead of XInterface
if ( pDocShell )
{
uno::Reference<uno::XInterface> xInterface(aElement, uno::UNO_QUERY);
if ( xInterface.is() )
2000-09-18 16:07:07 +00:00
{
ScTableSheetObj* pSheetObj = ScTableSheetObj::getImplementation( xInterface );
if ( pSheetObj && !pSheetObj->GetDocShell() ) // noch nicht eingefuegt?
{
ScDocument* pDoc = pDocShell->GetDocument();
String aNamStr(aName);
SCTAB nDummy;
2000-09-18 16:07:07 +00:00
if ( pDoc->GetTable( aNamStr, nDummy ) )
{
// name already exists
throw container::ElementExistException();
}
else
{
SCTAB nPosition = pDoc->GetTableCount();
bDone = pDocShell->GetDocFunc().InsertTable( nPosition, aNamStr,
sal_True, sal_True );
2000-09-18 16:07:07 +00:00
if (bDone)
pSheetObj->InitInsertSheet( pDocShell, nPosition );
// Dokument und neuen Range am Objekt setzen
}
}
else
bIllArg = sal_True;
2000-09-18 16:07:07 +00:00
}
else
bIllArg = sal_True;
2000-09-18 16:07:07 +00:00
}
if (!bDone)
{
if (bIllArg)
throw lang::IllegalArgumentException();
else
throw uno::RuntimeException(); // ElementExistException is handled above
}
}
void SAL_CALL ScTableSheetsObj::replaceByName( const rtl::OUString& aName, const uno::Any& aElement )
throw(lang::IllegalArgumentException, container::NoSuchElementException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
sal_Bool bIllArg = false;
2000-09-18 16:07:07 +00:00
//! Type of aElement can be some specific interface instead of XInterface
if ( pDocShell )
{
uno::Reference<uno::XInterface> xInterface(aElement, uno::UNO_QUERY);
if ( xInterface.is() )
2000-09-18 16:07:07 +00:00
{
ScTableSheetObj* pSheetObj = ScTableSheetObj::getImplementation( xInterface );
if ( pSheetObj && !pSheetObj->GetDocShell() ) // noch nicht eingefuegt?
{
SCTAB nPosition;
if ( pDocShell->GetDocument()->GetTable( aName, nPosition ) )
2000-09-18 16:07:07 +00:00
{
if ( pDocShell->GetDocFunc().DeleteTable( nPosition, sal_True, sal_True ) )
2000-09-18 16:07:07 +00:00
{
// InsertTable kann jetzt eigentlich nicht schiefgehen...
String aNamStr(aName);
bDone = pDocShell->GetDocFunc().InsertTable( nPosition, aNamStr, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
if (bDone)
pSheetObj->InitInsertSheet( pDocShell, nPosition );
}
}
else
{
// not found
throw container::NoSuchElementException();
}
}
else
bIllArg = sal_True;
2000-09-18 16:07:07 +00:00
}
else
bIllArg = sal_True;
2000-09-18 16:07:07 +00:00
}
if (!bDone)
{
if (bIllArg)
throw lang::IllegalArgumentException();
else
throw uno::RuntimeException(); // NoSuchElementException is handled above
}
}
void SAL_CALL ScTableSheetsObj::removeByName( const rtl::OUString& aName )
throw(container::NoSuchElementException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
SCTAB nIndex;
if ( pDocShell->GetDocument()->GetTable( aName, nIndex ) )
bDone = pDocShell->GetDocFunc().DeleteTable( nIndex, sal_True, sal_True );
else // not found
2000-09-18 16:07:07 +00:00
throw container::NoSuchElementException();
}
if (!bDone)
throw uno::RuntimeException(); // NoSuchElementException is handled above
}
sal_Int32 ScTableSheetsObj::importSheet(
const uno::Reference < sheet::XSpreadsheetDocument > & xDocSrc,
const rtl::OUString& srcName, const sal_Int32 nDestPosition )
throw( lang::IllegalArgumentException, lang::IndexOutOfBoundsException, uno::RuntimeException )
{
//pDocShell is the destination
ScDocument* pDocDest = pDocShell->GetDocument();
// Source document docShell
if ( !xDocSrc.is() )
throw uno::RuntimeException();
ScModelObj* pObj = ScModelObj::getImplementation(xDocSrc);
ScDocShell* pDocShellSrc = static_cast<ScDocShell*>(pObj->GetEmbeddedObject());
// SourceSheet Position and does srcName exists ?
SCTAB nIndexSrc;
if ( !pDocShellSrc->GetDocument()->GetTable( srcName, nIndexSrc ) )
throw lang::IllegalArgumentException();
2011-11-23 15:44:01 -05:00
// Check the validity of destination index.
SCTAB nCount = pDocDest->GetTableCount();
2011-11-23 15:44:01 -05:00
SCTAB nIndexDest = static_cast<SCTAB>(nDestPosition);
if (nIndexDest > nCount || nIndexDest < 0)
throw lang::IndexOutOfBoundsException();
// Transfert Tab
bool bInsertNew = true;
bool bNotifyAndPaint = true;
pDocShell->TransferTab(
*pDocShellSrc, nIndexSrc, nIndexDest, bInsertNew, bNotifyAndPaint );
return nIndexDest;
}
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
// XCellRangesAccess
uno::Reference< table::XCell > SAL_CALL ScTableSheetsObj::getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow, sal_Int32 nSheet )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<table::XCellRange> xSheet(static_cast<ScCellRangeObj*>(GetObjectByIndex_Impl((sal_uInt16)nSheet)));
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
if (! xSheet.is())
throw lang::IndexOutOfBoundsException();
return xSheet->getCellByPosition(nColumn, nRow);
}
uno::Reference< table::XCellRange > SAL_CALL ScTableSheetsObj::getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom, sal_Int32 nSheet )
throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<table::XCellRange> xSheet(static_cast<ScCellRangeObj*>(GetObjectByIndex_Impl((sal_uInt16)nSheet)));
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
if (! xSheet.is())
throw lang::IndexOutOfBoundsException();
return xSheet->getCellRangeByPosition(nLeft, nTop, nRight, nBottom);
}
uno::Sequence < uno::Reference< table::XCellRange > > SAL_CALL ScTableSheetsObj::getCellRangesByName( const rtl::OUString& aRange )
throw (lang::IllegalArgumentException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
uno::Sequence < uno::Reference < table::XCellRange > > xRet;
ScRangeList aRangeList;
CWS-TOOLING: integrate CWS koheiformula02 2009-02-19 13:18:02 +0100 iha r268276 : #i99400# Missing value plotting broken 2009-02-11 03:39:50 +0100 kohei r267579 : forgot to add an in-line comment. 2009-02-11 00:26:03 +0100 kohei r267578 : Handle also the single cell references when exporting chart ranges. 2009-02-10 19:50:37 +0100 kohei r267576 : removed a compiler warning. 2009-02-10 06:48:55 +0100 kohei r267536 : got xls export filter to correctly write external references in charts. However, Excel doesn't entirely like my chart output if the chart contains external references. The data are all there, but it refuses to draw it. It works fine with charts with internal references. 2009-02-10 03:33:13 +0100 kohei r267533 : correctly import external references used in chart objects, by using a token array instead of a range list to represent the data ranges. 2009-02-04 15:22:30 +0100 kohei r267387 : return aRet instead of the sRangeRepresentation, just to be consistent with the rest of the code there. Both strings are empty so this is just for aesthetic reasons. 2009-02-04 15:07:49 +0100 kohei r267384 : #i98872# allow export of empty data range, in order to allow saving of documents with an empty chart. 2009-02-03 19:20:38 +0100 kohei r267340 : #i98801# added a special case handler for parsing range address syntax used by the older version of OOo. In the old syntax, the sheet name was dropped for the 2nd reference of a range if the 1st and 2nd references are on the same sheet. In the new syntax this is not the case. Also fixed unintential display of the sheet name for the end range address of a single-sheet range. 2009-01-28 20:46:11 +0100 kohei r267085 : call GetIndex() and GetString() only when the token is external ref, to avoid triggering assertions in a non-pro build. 2009-01-28 19:30:58 +0100 kohei r267080 : When listeners are being destroyed, don't bother unregistering them with the external ref manager if the document itself is being destroyed. 2009-01-28 18:56:52 +0100 kohei r267079 : fixed a heap corruption. The Table instance stores instances of FormulaToken type, not of ScAddress type. 2009-01-26 18:59:14 +0100 kohei r266945 : removed another warning on win32 build. 2009-01-26 18:50:56 +0100 kohei r266943 : removed warnings on windows build. 2009-01-26 17:16:09 +0100 kohei r266939 : added const to a returned reference value that is never used to modify its value. 2009-01-26 16:49:33 +0100 kohei r266937 : Assume that the document instance is not null, or else don't copy any data at all. 2009-01-26 16:19:50 +0100 kohei r266935 : create a clone of ScChart2DataSeqeunce without calling its copy constructor, since explicit definition of copy constructor would cause a serious compiler warning that's too ugly to fix. 2009-01-26 05:26:58 +0100 kohei r266894 : removed unused variable and changed function signature. 2009-01-26 05:02:58 +0100 kohei r266893 : removed unused variables to remove compiler warnings. 2009-01-25 18:07:31 +0100 kohei r266890 : fixed indentation inconsistencies in ctor initializers. 2009-01-25 18:01:41 +0100 kohei r266889 : * removed a compiler warning. * tab -> whitespace conversion in some code. 2009-01-25 03:57:37 +0100 kohei r266888 : removed a mis-leading comment. 2009-01-25 02:37:45 +0100 kohei r266887 : * moved the ref token join method from chart2uno local to ScRefTokenHelper. * a little code cleanup. 2009-01-24 09:29:26 +0100 kohei r266865 : Don't re-link external files if their link has been broken once. 2009-01-24 09:16:28 +0100 kohei r266864 : a typo in an in-line comment. 2009-01-24 09:14:29 +0100 kohei r266863 : Treat non-cached cells as empty cells only when the source document is not reachable. 2009-01-24 07:23:44 +0100 kohei r266862 : Don't purge the external ref cache when the link is broken. 2009-01-24 03:25:46 +0100 kohei r266861 : When a cell outside the cached range is queried, we should return an emtpy cell token instead of NULL, to be consistent with the old behavior. 2009-01-24 02:34:38 +0100 kohei r266860 : Remove corresponding listeners when an external doc link is broken. 2009-01-23 23:18:44 +0100 kohei r266856 : more work on handling external ref update listeners. 2009-01-23 18:10:09 +0100 kohei r266846 : Handle loading of chart objects when their external link is updated. 2009-01-23 06:57:34 +0100 kohei r266765 : more work on ref-tokenizing ScChartListener. 2009-01-22 22:57:52 +0100 kohei r266760 : More work on moving ref token helper code to reftokenhelper & ref-tokenizing ScChartListener. 2009-01-22 21:52:38 +0100 kohei r266758 : moved the code that converts XML range string into Calc's internal range string from chart2uno to rangeutl & compile the range string to generate ref tokens upon ods import. 2009-01-22 18:56:14 +0100 kohei r266749 : fixed a build breakage. 2009-01-22 18:53:43 +0100 kohei r266748 : Initial work toward using ref tokens in ScChartListener class. I'll start moving some of local ref token handling functions from chart2uno.cxx to ScRefTokenHelper class to make them available in other places. 2009-01-22 17:38:20 +0100 kohei r266746 : Add a big, fat warning against mixed use of ScSharedTokenRef and ScTokenRef. 2009-01-22 08:33:28 +0100 kohei r266711 : #i98338# fixed slicing of external ref token classes by adding their own Clone() method. 2009-01-22 05:02:25 +0100 kohei r266710 : Applied the same fix that npower/oj applied to fix a crasher (from #i98317#). 2009-01-21 23:02:42 +0100 kohei r266705 : fix build breakages as a result of rebase to m39. Mostly due to the new formula module and its associated changes esp. wrt token classes. 2009-01-21 19:14:40 +0100 kohei r266699 : CWS-TOOLING: rebase CWS koheiformula02 to trunk@266428 (milestone: DEV300:m39) 2009-01-21 17:55:10 +0100 kohei r266698 : moved the shared ScToken typedef to token.hxx, and use it instead of ScChart2TokenRef, since I need this typedef in the odf importer. In the future this can also replace the similar typedef in ScExternalRefManager. 2009-01-21 06:54:04 +0100 kohei r266627 : Added external ref listener framework so that objects listening to external ref changes can get notified when the link is updated. The work is not done yet. 2009-01-20 23:07:38 +0100 kohei r266626 : When exporting a range to ODF, we don't want to prepend a sheet name with '$' even for an external sheet. 2009-01-20 23:06:40 +0100 kohei r266625 : 1) code cleanup to remove compiler warnings. 2) fixed convertRangesToXML to convert ref tokens into correct ODF range format. 2009-01-20 19:40:45 +0100 kohei r266620 : extracted the code that fills cache from external ref into its own method. 2009-01-20 18:26:47 +0100 kohei r266616 : added javadoc parameter descriptions. 2009-01-20 18:01:17 +0100 kohei r266615 : disable ScChart2EmptyDataSequence entirely since that class doesn't appear to be used any more. 2009-01-20 17:42:59 +0100 kohei r266608 : fixed a crash when the data source range is empty at time of chart creation. 2009-01-20 17:13:34 +0100 kohei r266601 : a simple locale variable rename. 2009-01-20 16:57:04 +0100 kohei r266598 : #i97563# applied my patch, to fix incorrect export attempts of color values as a number formatter key, and change the condition of one assertion to prevent it from being triggered incorrectly in non-pro build. 2009-01-17 07:41:01 +0100 kohei r266458 : a little code cleanup. 2009-01-17 07:30:48 +0100 kohei r266457 : removed a method that it no longer used. 2009-01-17 07:29:15 +0100 kohei r266456 : fixed a crash when no external data is available for a given range. 2009-01-17 07:14:50 +0100 kohei r266455 : Even more work on range list to ref token migration. The chart now retains external data after editing of chart. 2009-01-16 18:54:35 +0100 kohei r266453 : More work on replacing flat ranges and addresses with ref tokens. 2009-01-16 17:07:51 +0100 kohei r266438 : extracted a large code block into its own local method. 2009-01-16 15:22:57 +0100 kohei r266423 : Initial work toward replacing the chart positioner and its related code in order to use reference tokens instead of range list. The basis of that code is the old ScChartPositioner and ScChartPositionMap duplicated to avoid breaking any existing legacy code that might still use it. It appears to be used by the StarOffice 1.0 filter only. Still not working with the external references. 2009-01-15 05:33:39 +0100 kohei r266334 : renamed chackRanges() to overlaps() to make it more descriptive of what it does. 2009-01-13 23:25:50 +0100 kohei r266260 : Moved the token-to-string conversion code up so that other parts of the code can use it. 2009-01-13 22:14:35 +0100 kohei r266256 : generateLabels() now uses reference token list. 2009-01-13 18:42:23 +0100 kohei r266246 : Finally, build data array for external data sources. This will now allow the data to be displayed in the diagram. 2009-01-13 16:34:03 +0100 kohei r266235 : We now need to verify range representation by compiling it instead of parsing it. 2009-01-13 15:41:48 +0100 kohei r266230 : cosmetic function name change & added javadoc comment for it. 2009-01-13 06:32:06 +0100 kohei r266194 : Fixed a typo. 2009-01-13 06:04:23 +0100 kohei r266193 : Generate data source range string by compiling reference tokens. This way we can also display external reference addresses correctly. 2009-01-13 05:55:44 +0100 kohei r266192 : moved compileRangeRepresentation from being a class member method to a local function. 2009-01-13 05:41:53 +0100 kohei r266191 : nuked one unused method & tab -> whitespace conversion. 2009-01-13 05:35:10 +0100 kohei r266190 : A little code cleanup & consolidated all range-joining code into a single function object class. 2009-01-13 03:58:51 +0100 kohei r266189 : removed the unused method. 2009-01-13 03:53:01 +0100 kohei r266188 : This time I (hopefully) fixed the range consolidation problem for real. I forgot to join the missing upper-left corner cell with the existing range list. Also, I needed to join ranges recursively instead of just doing it once. 2009-01-13 02:15:48 +0100 kohei r266187 : fixed the "add corner if missing" thing. 2009-01-12 23:36:19 +0100 kohei r266185 : More work on range list -> ref tokens. 2009-01-12 23:12:28 +0100 kohei r266184 : More work on switching to reference tokens from range list. Still in progress. 2009-01-10 08:15:39 +0100 kohei r266125 : More code change for switching to reference tokens, especially in ScChart2DataProvider. Created another addUpperLeftCornerIfMissing method that can take a list of reference tokens instead of range list. 2009-01-09 19:22:33 +0100 kohei r266110 : entirely removed the range list data member from ScChart2DataSequence class. From now on we will use a list of tokens to track data source ranges. Now, if I haven't introduced any bugs in the process, normal charts with no external references should work as before. But I still need to get the external refs to work. 2009-01-09 19:11:45 +0100 kohei r266108 : Convert ranges to token list before instantiating ScChart2DataSequence. 2009-01-09 18:27:13 +0100 kohei r266107 : Extracted a common code block into its own method. 2009-01-09 18:18:36 +0100 kohei r266106 : More progress on chart2uno implementation change. Still more to do. 2009-01-09 06:24:36 +0100 kohei r266043 : another place to swap the use of range list with token list. 2009-01-09 06:18:57 +0100 kohei r266042 : Started re-working the chart2uno implementation, to use a list of ScToken instances instead of ScRangeList, to keep track of data source ranges. This way, the chart2uno code can tell whether the ranges are external or internal, and act accordingly. I'm not finished with it yet. Some things are still not working. 2009-01-08 19:28:51 +0100 kohei r266034 : yet another place to hardcode CONV_OOO for cell range address parsing. 2009-01-08 19:19:21 +0100 kohei r266033 : transferred the BuildArray() method from the koheichart01 cws and its associated changes. I need to be changing code around this area, and I don't want to redo my changes once koheichart01 gets integrated for 3.2. 2009-01-08 18:07:08 +0100 kohei r266030 : Have convertRangeFromXML convert external ranges into the appropriate OOO A1 format. I also added a helper method to append a table name because this is useful in a lot of other places. 2009-01-07 06:57:52 +0100 kohei r265944 : These places also need a hard-coded CONV_OOO address convention, for Excel chart import and export to function properly. 2009-01-06 16:41:07 +0100 kohei r265932 : removed unused variable. 2009-01-06 16:30:36 +0100 kohei r265931 : removed unused ScDPCacheTable::GroupFilter::setMatchIfFound() method and its associated member variable (per Caolan's callcatcher output). I added that method to allow reverse matching in some code but later retracted that logic. I guess I forgot to remove the method itself afterwards... 2009-01-06 06:39:51 +0100 kohei r265891 : #i97735# Always write cell and cell range addresses using the OOo A1 (CONV_OOO) address convention when exporting to ODF, regardless of current address convention. Same for reading from ODF documents. 2009-01-06 05:46:40 +0100 kohei r265890 : #i94696# Use the current address convention in the chart wizard dialog.
2009-03-03 15:05:33 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
if (ScRangeStringConverter::GetRangeListFromString( aRangeList, aRange, pDoc, ::formula::FormulaGrammar::CONV_OOO, ';' ))
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
{
size_t nCount = aRangeList.size();
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
if (nCount)
{
xRet.realloc(nCount);
for( size_t nIndex = 0; nIndex < nCount; nIndex++ )
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
{
const ScRange* pRange = aRangeList[ nIndex ];
INTEGRATION: CWS chart2mst3 (1.41.6); FILE MERGED 2007/04/26 08:36:59 bm 1.41.6.20: RESYNC: warnings removed (warnings are now errors) on Solaris 2007/04/25 04:04:58 bm 1.41.6.19: RESYNC: (1.58-1.61); FILE MERGED 2007/02/07 15:49:32 iha 1.41.6.18: RESYNC: (1.57-1.58); FILE MERGED 2006/12/01 17:25:59 bm 1.41.6.17: #i64497# the case that a data provider from a temporary document is requested should never happen -> assertion 2006/11/30 15:29:22 bm 1.41.6.16: #i64497# create data provider only when document was not created with mode internal (which is the case during clipboard actions) 2006/11/24 18:31:21 bm 1.41.6.15: RESYNC: (1.56-1.57); FILE MERGED 2006/11/17 16:34:47 bm 1.41.6.14: add implementation property InternalDocument for the chart to get informed whether the current document provides the correct data during clipboard copy/paste process 2006/11/02 18:04:58 nn 1.41.6.13: #i66865# chart listener loads chart, saving chart restores chart listener 2006/10/19 00:40:51 bm 1.41.6.12: RESYNC: (1.54-1.56); FILE MERGED 2006/05/05 15:30:35 bm 1.41.6.11: RESYNC: (1.52-1.54); FILE MERGED 2006/01/25 14:56:42 bm 1.41.6.10: RESYNC: (1.51-1.52); FILE MERGED 2005/10/08 11:35:32 bm 1.41.6.9: RESYNC: (1.50-1.51); FILE MERGED 2005/05/17 13:15:07 bm 1.41.6.8: RESYNC: (1.49-1.50); FILE MERGED 2005/05/12 19:59:26 sab 1.41.6.7: get access to ranges 2005/03/17 13:58:07 bm 1.41.6.6: RESYNC: (1.48-1.49); FILE MERGED 2004/11/02 16:59:24 bm 1.41.6.5: RESYNC: (1.44-1.48); FILE MERGED 2004/08/30 18:24:35 bm 1.41.6.4: RESYNC: (1.43-1.44); FILE MERGED 2004/06/15 19:02:52 bm 1.41.6.3: RESYNC: (1.42-1.43); FILE MERGED 2004/06/03 06:44:34 iha 1.41.6.2: RESYNC: (1.41-1.42); FILE MERGED 2004/05/05 14:47:54 sab 1.41.6.1: #i10733#; have access to cellranges in all sheets
2007-05-22 19:11:28 +00:00
if( pRange )
xRet[nIndex] = new ScCellRangeObj(pDocShell, *pRange);
}
}
else
throw lang::IllegalArgumentException();
}
else
throw lang::IllegalArgumentException();
return xRet;
}
2000-09-18 16:07:07 +00:00
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScTableSheetsObj::createEnumeration()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
return new ScIndexEnumeration(this, rtl::OUString("com.sun.star.sheet.SpreadsheetsEnumeration"));
2000-09-18 16:07:07 +00:00
}
// XIndexAccess
sal_Int32 SAL_CALL ScTableSheetsObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
return pDocShell->GetDocument()->GetTableCount();
return 0;
}
uno::Any SAL_CALL ScTableSheetsObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<sheet::XSpreadsheet> xSheet(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xSheet.is())
return uno::makeAny(xSheet);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
// return uno::Any();
2000-09-18 16:07:07 +00:00
}
uno::Type SAL_CALL ScTableSheetsObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<sheet::XSpreadsheet>*)0);
}
sal_Bool SAL_CALL ScTableSheetsObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
// XNameAccess
uno::Any SAL_CALL ScTableSheetsObj::getByName( const rtl::OUString& aName )
throw(container::NoSuchElementException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<sheet::XSpreadsheet> xSheet(GetObjectByName_Impl(aName));
2000-09-18 16:07:07 +00:00
if (xSheet.is())
return uno::makeAny(xSheet);
2000-09-18 16:07:07 +00:00
else
throw container::NoSuchElementException();
}
uno::Sequence<rtl::OUString> SAL_CALL ScTableSheetsObj::getElementNames()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
ScDocument* pDoc = pDocShell->GetDocument();
SCTAB nCount = pDoc->GetTableCount();
2011-08-26 19:33:59 -04:00
rtl::OUString aName;
2000-09-18 16:07:07 +00:00
uno::Sequence<rtl::OUString> aSeq(nCount);
rtl::OUString* pAry = aSeq.getArray();
for (SCTAB i=0; i<nCount; i++)
2000-09-18 16:07:07 +00:00
{
pDoc->GetName( i, aName );
pAry[i] = aName;
}
return aSeq;
}
return uno::Sequence<rtl::OUString>();
}
sal_Bool SAL_CALL ScTableSheetsObj::hasByName( const rtl::OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
SCTAB nIndex;
if ( pDocShell->GetDocument()->GetTable( aName, nIndex ) )
return sal_True;
2000-09-18 16:07:07 +00:00
}
return false;
2000-09-18 16:07:07 +00:00
}
//------------------------------------------------------------------------
ScTableColumnsObj::ScTableColumnsObj(ScDocShell* pDocSh, SCTAB nT, SCCOL nSC, SCCOL nEC) :
2000-09-18 16:07:07 +00:00
pDocShell( pDocSh ),
nTab ( nT ),
nStartCol( nSC ),
nEndCol ( nEC )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScTableColumnsObj::~ScTableColumnsObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScTableColumnsObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
if ( rHint.ISA( ScUpdateRefHint ) )
{
//! Referenz-Update fuer Tab und Start/Ende
}
else if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XTableColumns
ScTableColumnObj* ScTableColumnsObj::GetObjectByIndex_Impl(sal_Int32 nIndex) const
2000-09-18 16:07:07 +00:00
{
SCCOL nCol = static_cast<SCCOL>(nIndex) + nStartCol;
2000-09-18 16:07:07 +00:00
if ( pDocShell && nCol <= nEndCol )
return new ScTableColumnObj( pDocShell, nCol, nTab );
return NULL; // falscher Index
}
ScTableColumnObj* ScTableColumnsObj::GetObjectByName_Impl(const rtl::OUString& aName) const
{
SCCOL nCol = 0;
String aString(aName);
if ( ::AlphaToCol( nCol, aString) )
2000-09-18 16:07:07 +00:00
if ( pDocShell && nCol >= nStartCol && nCol <= nEndCol )
return new ScTableColumnObj( pDocShell, nCol, nTab );
return NULL;
}
void SAL_CALL ScTableColumnsObj::insertByIndex( sal_Int32 nPosition, sal_Int32 nCount )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if ( pDocShell && nCount > 0 && nPosition >= 0 && nStartCol+nPosition <= nEndCol &&
nStartCol+nPosition+nCount-1 <= MAXCOL )
{
ScRange aRange( (SCCOL)(nStartCol+nPosition), 0, nTab,
(SCCOL)(nStartCol+nPosition+nCount-1), MAXROW, nTab );
bDone = pDocShell->GetDocFunc().InsertCells( aRange, NULL, INS_INSCOLS, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
void SAL_CALL ScTableColumnsObj::removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
// Der zu loeschende Bereich muss innerhalb des Objekts liegen
if ( pDocShell && nCount > 0 && nIndex >= 0 && nStartCol+nIndex+nCount-1 <= nEndCol )
{
ScRange aRange( (SCCOL)(nStartCol+nIndex), 0, nTab,
(SCCOL)(nStartCol+nIndex+nCount-1), MAXROW, nTab );
bDone = pDocShell->GetDocFunc().DeleteCells( aRange, NULL, DEL_DELCOLS, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScTableColumnsObj::createEnumeration()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
return new ScIndexEnumeration(this, rtl::OUString("com.sun.star.table.TableColumnsEnumeration"));
2000-09-18 16:07:07 +00:00
}
// XIndexAccess
sal_Int32 SAL_CALL ScTableColumnsObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return nEndCol - nStartCol + 1;
}
uno::Any SAL_CALL ScTableColumnsObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<table::XCellRange> xColumn(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xColumn.is())
return uno::makeAny(xColumn);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
}
uno::Type SAL_CALL ScTableColumnsObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<table::XCellRange>*)0);
}
sal_Bool SAL_CALL ScTableColumnsObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
uno::Any SAL_CALL ScTableColumnsObj::getByName( const rtl::OUString& aName )
throw(container::NoSuchElementException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<table::XCellRange> xColumn(GetObjectByName_Impl(aName));
2000-09-18 16:07:07 +00:00
if (xColumn.is())
return uno::makeAny(xColumn);
2000-09-18 16:07:07 +00:00
else
throw container::NoSuchElementException();
}
uno::Sequence<rtl::OUString> SAL_CALL ScTableColumnsObj::getElementNames()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCCOL nCount = nEndCol - nStartCol + 1;
2000-09-18 16:07:07 +00:00
uno::Sequence<rtl::OUString> aSeq(nCount);
rtl::OUString* pAry = aSeq.getArray();
for (SCCOL i=0; i<nCount; i++)
CWS-TOOLING: integrate CWS ooxml02 2008-12-18 06:12:51 +0100 jpryor r265657 : Remove valgrind warning about "Conditional jump or move depends on uninitialised value(s)" within XclFontData::SetApiEscapement(short), as nApiEscapement isn't set by maHlpChCommon>>nApiEscapement. Instead, provide a default value. 2008-12-16 21:50:23 +0100 jpryor r265575 : Remove warnings from Mac OSX gcc-4.0.1. 2008-12-11 20:13:08 +0100 jpryor r265356 : Remove warning so that ooxml02 can build on Ubuntu build bots. 2008-12-11 17:18:47 +0100 jpryor r265336 : CWS-TOOLING: rebase CWS ooxml02 to trunk@264807 (milestone: DEV300:m37) 2008-12-10 17:03:09 +0100 kohei r265208 : take out the xls english opcode bits from sc. We'll decide what to do later. 2008-12-10 16:34:30 +0100 kohei r265202 : removed the xls english formula language entry. 2008-12-10 07:03:56 +0100 jpryor r265144 : Generate the PROT4REV, PROT4REVPASS, BACKUP, and HIDEOBJ records. 2008-12-10 05:16:23 +0100 jpryor r265143 : Undo BIFF record reordering. This was originally done to increase code sharing between the BIFF & OOXML export code, and was tested as being compatible between several .xls-supporting apps, but it is now felt that the change in ordering will complicate testing more than is desirable. 2008-12-08 19:37:27 +0100 kohei r265036 : 1) reverted the localized separator bits, to keep the core functionality intact. 2) introduced English XL A1 and R1C1 grammars, which can be used for OOXML export filter (and later for VBA formula parsing). 3) use the English XL A1 grammar for OOXML export. 2008-12-08 19:33:13 +0100 kohei r265030 : added XL_ENGLISH formula language, which is used in OOXML export (and probably useful in the import as well). This will also be used in VBA formulas as well. 2008-12-03 04:23:54 +0100 jpryor r264737 : Revert -Werror changes; these will be handled in a separate CWS. 2008-12-03 04:21:10 +0100 jpryor r264736 : Revert -Werror fixes; these are being handled in a separate CWS. 2008-12-02 15:48:04 +0100 kendy r264709 : Fix even the visibility warnings. 2008-12-02 09:57:16 +0100 kendy r264661 : Deliver also scfiltmi.dll. 2008-12-02 05:19:37 +0100 jpryor r264654 : -Werror fixes... 2008-12-02 05:14:53 +0100 jpryor r264653 : -Werror fixes... 2008-12-02 05:10:36 +0100 jpryor r264652 : -Werror fixes... 2008-12-02 04:07:52 +0100 jpryor r264651 : -Werror fixes... 2008-12-02 04:00:54 +0100 jpryor r264650 : Further -Werror god appeasement... 2008-12-01 20:23:04 +0100 kendy r264637 : Deliver ioox.lib. 2008-12-01 20:13:38 +0100 kendy r264635 : More visibility fixes in sc. 2008-12-01 20:12:09 +0100 kendy r264634 : Fix build in sax, thanks to Tor :-) 2008-12-01 20:03:36 +0100 kendy r264631 : Define OOXLIB even on Windows. 2008-12-01 15:07:45 +0100 kendy r264609 : More visibilility fixes - sc links now even on Win32. 2008-12-01 12:28:18 +0100 kendy r264594 : Fix visibility markup so that it [nearly ;-)] builds on Windows. It should also save some good amount of symbols... 2008-12-01 12:18:21 +0100 kendy r264593 : Add TYPEINFO_VISIBILITY() - it is the same as TYPEINFO(), but you can specify what visibility markup should it use. 2008-11-27 16:34:23 +0100 mmeeks r264504 : revert ppt bits that slipped in by accident. 2008-11-27 16:32:38 +0100 kendy r264503 : Fix visibility markup in oox (SAL_DLLPUBLIC_EXPORT -> OOX_DLLPUBLIC). 2008-11-27 16:10:16 +0100 mmeeks r264502 : revert un-necessary filter changes ... 2008-11-27 15:52:28 +0100 mmeeks r264498 : revert un-intended evoab2 fixes ... 2008-11-27 15:17:59 +0100 mmeeks r264494 : revert apparently unrelated evoab2 fixups that crept in here. 2008-11-27 11:18:26 +0100 mmeeks r264468 : Rename ComplRefData -> ScComplexRefData for dr #96652# 2008-11-26 23:05:57 +0100 kendy r264437 : #i96634# Fix build with --disable-mozilla. 2008-11-26 22:43:25 +0100 kendy r264435 : #i96316# Fix filter signature to fix Win32 build. 2008-11-25 17:05:35 +0100 mmeeks r264316 : distribute new scfilt library 2008-11-25 17:04:56 +0100 mmeeks r264315 : Add visibility markup to allow all filters to be built as a separate module, and tweak the build to build that way. Fix some existing instances of daft symbol naming around the place. Move headers that are now internal into source/filter/inc Saves ~1.4Mb on a normal calc, on Linux 2008-11-21 22:51:08 +0100 jpryor r264178 : Disable OOXML .xlsx export. 2008-11-21 22:49:26 +0100 jpryor r264177 : More -Werror fixes... 2008-11-21 22:05:42 +0100 jpryor r264175 : Appease the great -Werror god. And cry. Warnings fixed: - Duplicate definition of CREATE_OUSTRING. This is caused because of the use of oox within sc/source/filter/excel, and oox has it's own version of CREATE_OUSTRING. Fix things by ensuring that the oox version is always included first, thus allowing the ftools.hxx version to #undef it and provide it's own version. - Addition of braces for `if` blocks, parenthesis to disambiguate & | && ||. - One s/==/&&/ in dpoutput.cxx (as it's the only thing that makes sense). - Changing parameter names so that they don't hide member variables with the same name. 2008-11-21 13:33:25 +0100 jpryor r264131 : Fix the Win32 build by moving the UnknownAttribute declaration into fastattribs.hxx (lest MSVC complain about vector<UnknownAttribute>). 2008-11-20 19:05:27 +0100 jpryor r264095 : fastsax was originally a UNO component, and then turned into a hybrid UNO/C++ library. Undo this hybridization, reverting it to a normal UNO component, and place the C++ classes into saxinstead. Update project references to use $(SAXLIB) instead of $(FASTSAXLIB). * oox/util/makefile.mk, sc/util/makefile.mk: Remove $(FASTSAXLIB) and use $(SAXLIB) instead. * sax/prj/build.lst: Don't build sax\util, as sax\source\tools now builds the sax library. * sax/source/fastparser/exports.map: Remove; no longer needed. * sax/source/fastparser/facreg.cxx: Change path for fastserializer.hxx. * sax/source/fastparser/fastattribs.cxx, sax/source/fastparser/fastserializer.cxx, sax/source/fastparser/fastserializer.hxx, sax/source/fastparser/fshelper.cxx: Moved to sax/source/tools. * sax/source/fastparser/makefile.mk: Use appropriate UNO naming convention; link against $(SAXLIB) (which now contains FastSaxSerializer, etc.); don't compile fastserializer.obj/etc. (now built by tools); use component.map instead of export.map (removed). * sax/source/tools/makefile.mk: Build sax library instead of building a saxtools.lib file. The sax library now contains FastAttributeList, FastSaxSerializer, and FastSerializerHelper. * scp2/source/ooo/file_library_ooo.scp: Install fastsax.uno, not libfastsax. 2008-11-20 19:04:06 +0100 jpryor r264094 : * oox/source/core/xmlfilterbase.cxx: Remove warning. 2008-11-19 22:26:16 +0100 kendy r264025 : #i96333# A better fix for the evoab2 installation problem Actually, it should be built as evoab2, not evoab; it should be possible to have both at the same time... 2008-11-19 21:52:12 +0100 jpryor r264024 : Shouldn't export symbols by-glob anymore, as we're using SAX_DLLPUBLIC now. 2008-11-19 21:50:30 +0100 jpryor r264023 : Fix Win32 linker error as FastAttributeList and FastSerializerHelper need to be accessible from other shared libraries. (Hopefully this'll work...) * sax/inc/sax/fastattribs.hxx, sax/inc/sax/fshelper.hxx: Add SAX_DLLPUBLIC to class declarations so that they'll be visible from other shared libraries. 2008-11-19 06:47:51 +0100 jpryor r263961 : Cope with oox::core::FilterBase changes. * xestream.cxx: FilterBase now requires that an XModel be provided so that FilterBase::filter() will actually _do_ anything useful, so call FilterBase::setSourceDocument() so that it has one. 2008-11-19 06:37:34 +0100 jpryor r263960 : make sure evoab lib is not installed twice (because it breaks install process as 2nd installation try fails). Thanks to Radek Doulik <rodo@novell.com> for the patch. 2008-11-19 01:53:27 +0100 jpryor r263959 : Fix build break under Linux. * connectivity/source/drivers/evoab2/NResultSetMetaData.cxx: Use a proper type declaration (`:.connectivity::SharedResource'? wtf?!), and use a type that actually exists. /me suspects that this was a bad case of regex search & replace without actually making sure things compiled... * connectivity/source/drivers/evoab2/NStatement.cxx: - #include <resource/common_res.hrc> so that the symbol STR_QUERY_TOO_COMPLEX can be found. - Use a variable that actually has the throwGenericSQLException() method... 2008-11-18 21:37:46 +0100 kendy r263956 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> getTableStyles() needs to be a member of XclExpXmlStream... 2008-11-18 21:37:12 +0100 kendy r263955 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix runtime crash due to sending a non-POD type through a ... function. * sc/source/filter/excel/xestyle.cxx: Stupid fix: s/.getStr() FSEND/.getStr(), FSEND/g (commas are important!). 2008-11-18 21:36:47 +0100 kendy r263954 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix sc build problems... * excel/excdoc.cxx, excel/excrecds.cxx: Remove ScTableProtection, XclExpProtection references (these don't exist here); remove compiler warnings & errors (AddSdrPage prototype changed?!). * excel/expop2.cxx: XclEscher constructor changed; deal. * excel/xestream.cxx, inc/xestream.hxx: XmlFilterBase added some additional abstract members; implement them so we're a concrete type. 2008-11-18 21:36:25 +0100 kendy r263953 : #i96320# xlsx export From: Fridrich Strba <fstrba@novell.com> disambiguate 2008-11-18 21:36:00 +0100 kendy r263952 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Flush, Flush, Flush... 2008-11-18 21:35:38 +0100 kendy r263951 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /styleSheet/numFmts/numFmt support. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Generate /styleSheet/numFmts/numFmt. 2008-11-18 21:35:08 +0100 kendy r263950 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /styleSheet/colors/indexedColors/rgbColor. Also generates /worksheet//col/@style. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Generate /styleSheet/colors/indexedColors/rgbColor. * sc/source/filter/excel/xetable.cxx: Generate /worksheet//col/@style. 2008-11-18 21:34:46 +0100 kendy r263949 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Correct /worksheet//row/@s and /worksheet//row/@ht logic. We need an actual /styleSheet/cellXfs index for //row/@s, which mnIndex most certainly was not, and XclExpRow::mnHeight is a value in twips, while OOXML //row/@ht is a value in points, resulting in _huge_ row heights when opening the document in Excel. Oops. * sc/source/filter/excel/xetable.cxx: Fix //row/@s, //row/@ht. 2008-11-18 21:34:15 +0100 kendy r263948 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /styleSheet/cellXfs/xf/@xfId. Now that I understand what this field is supposed to contain... * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Generate /styleSheet/cellXfs/xf/@xfId. 2008-11-18 21:33:52 +0100 kendy r263947 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Document current state of style support. 2008-11-18 21:33:22 +0100 kendy r263946 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Style Index Support, Take 3! The problem is XclExpCellTable and XclExpRkCell: when XclExpCellTable creates XclExpRkCell instances, it sets their style to EXC_XFID_NOTFOUND, which seems to persist for quite some time, and is later "corrected" to the correct style index in XclExpXFBuffer::GetXFIndex(). This leads to all sorts of problems for me, though, as XclExpXFBuffer::maCellIndexes and maStyleIndexes were a nXFId::index map, and it wasn't easy to get a "valid" nXFId value. Hence, Take 3: maCellIndexes and maStyleIndexes aren't nXFId::index maps, but nXFIndex::index maps. (nXFId is the "original" XF index into XclExpXFBuffer::maXFList, while nXFIndex is the index into XclExpXFBuffer::maSortedXFList, which is the order that BIFF Excel export uses.) Since the nXFId::nXFIndex map logic must work (it's required for BIFF support), we can rely on this logic via a nXFIndex::xml-index map, allowing us to export correct style indexes. Now things Just Work (at least until I find another set of bugs...). * sc/source/filter/excel/xestyle.cxx: Rewrite (and simplify) maCellIndexes and maStyleIndexes initialization, so that XclExpRkCell can get proper style indexes. * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Rewrite XclExpBlankCell and XclExpRkCell XML generation to more closely mimic BIFF generation (thus allowing us to more sanely deal with the XclExpMultiCellBase "chaining" semantics). 2008-11-18 21:33:01 +0100 kendy r263945 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Correct font export within xl/styles.xml. The problem is that BIFF export inserts a "blind" font to appease older versions of Excel, but Excel/OOXML does not want the blind font. So instead of making XclExpBlindFont do nothing -- which causes all //*/@fontId values to be wrong because the @fontId is counting a font that isn't present -- we just don't use XclExpBlindFont with OOXML output. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Don't override+implement XclExpBlindFont::SaveXml(), and instead don't add a XclExpBlindFont() record for OOXML export. 2008-11-18 21:32:30 +0100 kendy r263944 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Enable export of blank cells. Blank cells can contain formatting information (background color, borders, etc.), and XclExpBlankCell was previously overlooked. :-( * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Export /worksheet//c elements for blank cells. 2008-11-18 21:32:08 +0100 kendy r263943 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Start implementing /worksheet/cols/col/c/@s attribute. This allows Style information to be set for cells. It currently works for background color on cells with text; still needs work to support ~everything. * sc/source/filter/excel/xetable.cxx: Generate the /worksheet/cols/col/c/@s attribute so that it contains the Cell XF which contains the appropriate formatting information. 2008-11-18 21:31:41 +0100 kendy r263942 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix "Excel yells when importing a document that sets cell background color." i.e. styles weren't quite right (shock!). In this case, the issues were: - I wasn't distinguishing between *Cell* XFs and *Style* XFs. - //cellStyle/@xfId refers to an index into //cellStyleXfs, and I wasn't generating //cellStyleXfs. Thus, if //cellStyle was present, Excel yelled. - "Indexes" were *completely* wrong. BIFF only has a single set of indexes to track, nicely kept in XclExpXFBuffer::maXFIndexVec. OOXML has _two_ sets: //cellXfs and //cellStyleXfs, each of which are referenced "by index" from other XML parts (and from _this_ XML part, via //cellStyle/@xfId - above). - We needed to export builtin styles. So *now*, if you create an empty Calc document, set a cell background color, save, and load into Excel, it will load without error. You *still* won't see the proper cell background color in Excel, but at least it loads w/o error (which wasn't previously true). * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Add XclExpXFBuffer::GetXmlCellIndex(); lots of other changes (see above for the details). 2008-11-18 21:31:19 +0100 kendy r263941 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Er, yeah. 2008-11-18 21:30:54 +0100 kendy r263940 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Remove deliberate segfault-inducing code. 2008-11-18 21:30:29 +0100 kendy r263939 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Allow Excel to open a document that changes a cell background. Note: it still doesn't *work* yet (as we don't set the cell's @s property so Excel reads the appropriate style), but it does LOAD w/o error now. This is progress. * sc/source/filter/excel/xestyle.cxx: Lots 'o changes; - Exclude the <bgColor/> and <fgColor/> children of //patternFill if the colors aren't actually set. - Don't export //xf/@xfId, as I'm not sure wtf this is supposed to contain yet. - Enhance the Border/Fill lists created last time so it behaves properly: use custom predicates to check for equality (no idea what the default operator== does; it's probably wrong); don't use AddBorderAndFill() at all the "entry" points as this misses cells, instead process all cells within XclExpXFBuffer::Finalize() and add borders/fills there (thus ensuring we hit all cells); Assert that the border/fill id values are valid. - Add a default set of fills. Excel complains loudly if you're missing these fills, so make sure they're always present. - //borders/@count should contain the *Borders* count, not the Fills count. Oops. 2008-11-18 21:30:04 +0100 kendy r263938 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Continue style support. Excel can now (again!) open Calc-generated spreadsheets. Compared to other parts, this was a mess, mostly because (for the first time) the XML format did NOT closely match the pre-existing binary format. It's reasonably close, but some additional mapping is necessary. In particular, in BIFF the XF records contain "inline" the border and fill information. In OOXML this information is referred to "by-index"; consequently we need to create an internal table of borders & fills so that we can then determine the by-index value for borders and fills. :-( Furthermore, my previous `font support` commit was broken: it removed duplicate fonts. While this *sounds* like a good idea (look ma, smaller files!), it's not (currently) a good idea as the XclExpXF::mnXclFont value is an index into this font list (_with_ duplicate values). Removing the duplicates results in invalid /styleSheet/cellXfs/xf/@fontId values, which causes Excel to complain (and no end of grief for me). All told, this adds support for: /styleSheet/borders, /styleSheet/borders/border, /styleSheet/borders/border/bottom, /styleSheet/borders/border/diagonal, /styleSheet/borders/border/left, /styleSheet/borders/border/right, /styleSheet/borders/border/top, /styleSheet/cellXfs, /styleSheet/cellXfs/xf, /styleSheet/cellXfs/xf/alignment, /styleSheet/cellXfs/xf/protection, /styleSheet/fills, /styleSheet/fills/fill, /styleSheet/fills/fill/patternFill, /styleSheet/fills/fill/patternFill/bgColor, and /styleSheet/fills/fill/patternFill/fgColor. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Get xl/styles.xml into an actual Excel-loadable condition. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::ToOString(Color). 2008-11-18 21:29:41 +0100 kendy r263937 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /styleSheet/fonts/font. This generates: /styleSheet/fonts/font/b, /styleSheet/fonts/font/charset, /styleSheet/fonts/font/color, /styleSheet/fonts/font/condense, /styleSheet/fonts/font/extend, /styleSheet/fonts/font/family, /styleSheet/fonts/font/i, /styleSheet/fonts/font/name, /styleSheet/fonts/font/outline, /styleSheet/fonts/font/shadow, /styleSheet/fonts/font/strike, /styleSheet/fonts/font/sz, /styleSheet/fonts/font/u, and /styleSheet/fonts/font/vertAlign. Missing is: /styleSheet/fonts/font/scheme, * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Change WriteFontData() to take a `sal_Int32 nFontId' parameter, which is the element to write to contain the font name. This is necessary as the shared string table wants to use XML_rFont for the font name, while //fonts/font wants XML_name for the font name. * sc/source/filter/excel/xestring.cxx: WriteFontData() change. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Generate </styleSheet> element (oops), and generate /styleSheet/fonts/font/** for all unique fonts. 2008-11-18 21:29:12 +0100 kendy r263936 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Rename XclExpXmlStream::WriteCurrentStreamAttributes() to WriteAttributes(). Also adds XclExpXmlStream::WriteFontData(). The WriteCurrentStreamAttributes() to WriteAttributes() change was done so that method names would have a reasonable length, and adding WriteCurrentStreamFontData() was looking like an ugly pattern continuation. XclExpXmlStream::WriteFontData() is to support code sharing of XclFontData generation. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestring.cxx: s/WriteCurrentStreamAttributes/WriteAttributes/g, add WriteFontData() ("moved" from xestring.cxx). * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/excrecds.cxx, sc/source/filter/excel/xepage.cxx, sc/source/filter/excel/xerecord.cxx, sc/source/filter/excel/xestream.cxx, sc/source/filter/xcl97/xcl97rec.cxx: Deal with above changes. 2008-11-18 21:28:50 +0100 kendy r263935 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Begin style support. * sc/source/filter/excel/excdoc.cxx: For OOXML output, create an XclExpXmlStyleSheet instance instead of generating FONTLIST, FORMATLIST, XFLIST, and PALETTE separately, as these need to be written to a separate .zip part. * sc/source/filter/inc/xestyle.hxx, sc/source/filter/excel/xestyle.cxx: Begin generating the xl/styles.xml part. 2008-11-18 21:28:25 +0100 kendy r263934 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> =?utf-8?q?Partially=20implement=20Comments=20(=C2=A73.7).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit This generates the /xl/commentsN.xml files (N == sheet index number). This is only a partial generation because Excel requires that a drawing object be associated with the comment in order to display it. No drawing object, and instead Excel displays a dialog warning that the comments could not be displayed. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Create a XclExpComments object to generate the appropriate commentsN.xml file, as the commentsN.xml file needs to write information about *all* of the comments (author information), so we can't just write out the XclExpNotes individually. * sc/source/filter/xcl97/xcl97rec.cxx, * sc/source/filter/excel/xecontent.cxx: Cope with XclExpXmlStream::CreateOutputStream() changes. * sc/source/filter/inc/xeescher.hxx, sc/source/filter/excel/xeescher.cxx: Add and implement XclExpComments, and add XML generation to XclExpNote. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Change XclExpXmlStream::CreateOutputStream() to take full and relative paths (instead of trying to cosntruct a full/relative path based on the parameters). This was necessary because commentsN.xml needs to insert a relative path of e.g. "../comments1.xml", which the previous implementation would have made difficult. I think this makes things clearer and less magical as well. 2008-11-18 21:28:01 +0100 kendy r263933 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement most of the Shared String Table support. Previously we generated /sst/si/t, which supports non-formatted text. Now we support formatting within a cell -- AS LONG AS the formatting isn't applied to the first character/token. (The first character/token requires formal styles support, which is lacking; everything after character position 1 can be handled within the shared string table.) Now we have: /sst/si/r/rPr/b, /sst/si/r/rPr/charset, /sst/si/r/rPr/color, /sst/si/r/rPr/family, /sst/si/r/rPr/i, /sst/si/r/rPr/outline, /sst/si/r/rPr/rFont, /sst/si/r/rPr/scheme, /sst/si/r/rPr/shadow, /sst/si/r/rPr/strike, /sst/si/r/rPr/sz, /sst/si/r/rPr/u, /sst/si/r/rPr/vertAlign, and /sst/si/r/t. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/xecontent.cxx: Use XclExpString::WriteXml() to generate string values, instead of assuming everything is unformatted /sst/si/t elements. * sc/source/filter/inc/xestring.hxx, sc/source/filter/excel/xestring.cxx: Add and implement XclExpString::WriteXml(), which now handles formatted text runs. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Change XclXmlUtils::ToOUString(ScfUInt16Vec) to XclXmlUtils::ToOUString(ScfUInt16Vec,int,int) so that it can be easily used for substrings; add asserts to XclXmlUtils::To*String(XclExpString) to ensure that we're not dealing with formatted text there (as formatted text needs to go through XclExpString::WriteXml(), but these methods are often used for attribute values which cannot have formatted text). 2008-11-18 21:27:35 +0100 kendy r263932 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Update of TODO. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. 2008-11-18 21:27:14 +0100 kendy r263931 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Add /Relationships/Relationship/@TargetMode support. This also fixes Calc hyperlink export, allowing Excel to properly read documents containing a hyperlink. * sc/source/filter/excel/xecontent.cxx: Generate "External" for the hyperlink's TargetMode property, so that Excel will load the generated spreadsheet without error. 2008-11-18 21:26:39 +0100 kendy r263930 : #i96320# xlsx export From: Fridrich Strba <fstrba@novell.com> I think this was what was meant 2008-11-18 21:26:18 +0100 kendy r263929 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Allow Excel to open documents w/ all contents selected. Previously, if you selected all cells (Ctrl+A) then saved, the //selection/@sqref attribute would contain "A:IV", which Excel didn't like. * sc/source/filter/excel/xestream.cxx: Don't allow a MAXROW or MAXCOL value to hit ScRange::Format(), thus avoiding the "missing row numbers" issue. 2008-11-18 21:25:46 +0100 kendy r263928 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> (Mostly) Implement /worksheet/hyperlinks/hyperlink. The only piece missing is error-free Excel import, and in order for Excel to import a generated document error-free is for the sheetN.xml.rels document to contain a /Relationships/Relationship/@TargetMode attribute, e.g. <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="http://www.example.com/" TargetMode="External"/> I'm not sure how to add this functionality yet. * sc/source/filter/excel/excdoc.cxx: Generate the /worksheet/hyperlinks start and end elements, if appropriate. * sc/source/filter/inc/xecontent.hxx, sc/source/filter/excel/xecontent.cxx: Generate the /worksheet/hyperlinks/hyperlink element * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::ToOUString(XclExpString). 2008-11-18 21:25:24 +0100 kendy r263927 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement AutoFilter support. This includes /worksheet/autoFilter, /worksheet/autoFilter/filterColumn, /worksheet/autoFilter/filterColumn/top10, /worksheet/autofilter/filterColumn/customFilters, and /worksheet/autofilter/filterColumn/customFilter. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/excrecds.hxx, sc/source/filter/excel/excrecds.cxx: Generate //autoFilter/*. * sc/source/filter/excel/xename.cxx: Apparently adding an AutoFilter adds a "defined name" with an empty string (!), so change XclExpName::SaveXml() to skip entries with empty names. * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Declare and implement a specialization for XclExpValueRecord<double>::SaveXml(). This is necessary because Fridrich's change to XclExpValueRecord::SaveXml() (to case maValue to sal_Int32) broke double exports (as it cast the double to a sal_Int32, thus truncating the value). Since we don't want to re-add the ambiguity warning, we need to specialize so that `double' output uses the correct rtl::OString::valueOf() method. 2008-11-18 21:24:55 +0100 kendy r263926 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix OOXML Calc export so that documents containing > 1 feature work. While most previous features worked -- you could create a document using the feature, save it, and open it in Excel w/o issue -- they worked in isolation. So in trying to create a single test document to test as many features as possible, things (expectedly) broke, so this fixes things up. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/xepage.cxx, sc/source/filter/excel/excrecds.cxx: Reorder element output to conform to the OOXML XSD (and allow Excel to read features.xlsx). 2008-11-18 21:24:34 +0100 kendy r263925 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/autoFilter. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/excrecds.hxx, sc/source/filter/excel/excrecds.cxx: Generate the /worksheet/autoFilter element. 2008-11-18 21:24:07 +0100 kendy r263924 : #i96320# xlsx export From: Fridrich Strba <fstrba@novell.com> disambiguate OUString::valueOf calls 2008-11-18 21:23:45 +0100 kendy r263923 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> (Hopefully) Make Formula Export Locale-Independent. Nice as Kohei's patch was, it relied on formula export being in the same locale as the user's locale. So import into Excel would work for *me* (en-US user), but fail for ~everyone else (i.e. not very useful). This patch is a hack, but has the added benefit that it appears to work: create an ScCompiler::OpCodeMapPtr that's specific to OOXML output, and not cache the results. Not ideal, but enough to progress further... * sc/inc/grammar.hxx: Add GRAM_OOXML_A1, which is a locale-independent grammar value (forces ENGLISH, which is what Excel expects). * sc/source/core/tool/compiler.cxx: When dealing with GRAM_OOXML_A1, create a new/unique OpCodeMap that always uses ',' for SC_OPCODE_SEP. * sc/source/filter/excel/xestream.cxx: Use GRAM_OOXML_A1 for output. 2008-11-18 21:23:20 +0100 kendy r263922 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix formula export to use ',' to separate parameters instead of ';'. This is just Kohei's calc-formula-variable-separators-sc.diff patch, but it works quite nicely for this. :-) * sc/inc/compiler.hxx, sc/source/core/tool/compiler.cxx: Allow characters other than ';' to be used as the parameter separator within functions. We don't care so much about permitting people to *enter* such formulas, but this also gives us the ability to *export* such formulas using ',' instead of ';', which Excel requires. 2008-11-18 21:22:55 +0100 kendy r263921 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Finish initial support for /worksheet/sheetData/row/c. Support for some attributes is missing (such as those storing formatting information), but we now (almost completely) save cell values, errors, boolean cells, and formulas. The only missing feature is for > 1 formula argument, e.g. "SUM(A1;B1)". This needs to be exported as "SUM(A1,B1)" (note the comma). * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Add formula support for /worksheet/sheetData/row/c. Remove XclExpBlankCell::SaveXml(), as I can't think of anything it would actually need to do. 2008-11-18 21:22:30 +0100 kendy r263920 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement partial support for /worksheet/sheetData/row/c. This is take 1 of string and value support (//c[@t='s' or @t='n']). Boolean (//c[@t='b']) and error (//c[@t='e']) support is also there, but I have no idea how to test bool and error output without formula support. TESTING: Numbers have two serialization paths: - "RK" numbers, which go through XclExpRkCell. - non-RK numbers, which go thorugh XclExpNumberCell. RK numbers are integers or numbers evenly divisible by 100. All other floating point values (e.g. Pi) are non-RK values. Strings are, well, strings. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Generate /worksheet/sheetData/row/c for strings and numeric values, and stub out support for the other //c types (formulas, errors, boolean values, blank values...). 2008-11-18 21:22:08 +0100 kendy r263919 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/sheetData/row. * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Generate /worksheet/sheetData/row; generate <sheetData/> instead of <sheetData></sheetData> if there are no rows. 2008-11-18 21:21:40 +0100 kendy r263918 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> =?utf-8?q?Flush=20sc/source/filter/excel/ooxml-export-TODO.txt;=20completed=20first=20passs=20of=20=C2=A73.3.1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. 2008-11-18 21:21:15 +0100 kendy r263917 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/sheetViews/sheetView. * sc/source/filter/excel/xeview.cxx: Generate attributes for /worksheet/sheetViews/sheetView. 2008-11-18 21:20:54 +0100 kendy r263916 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/sheetPr/pageSetUpPr. This also partially implements /worksheet/sheetPr, but most of it is TODO. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Alter XclExpWsbool initialization for XML output so we can output additional information. * sc/source/filter/inc/excrecds.hxx, sc/source/filter/excel/excrecds.cxx: Generate /worksheet/sheetPr and /worksheet/sheetPtr/pageSetUpPr elements. 2008-11-18 21:20:28 +0100 kendy r263915 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Fix /worksheet/sheetViews/sheetView/selection/@sqref for multi-selection. When multiple cells are selected, //selection/@sqref needs to be space separated ("A1 A3 B2") not comma-separated ("A1,A3,B2"). * sc/source/filter/excel/xestream.cxx: Use space as the separator character between ScRanges. 2008-11-18 21:20:06 +0100 kendy r263914 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /workbook/sheetViews/sheetView/selection. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::ToOString(XclRangeList). * sc/source/filter/inc/xeview.hxx, sc/source/filter/excel/xeview.cxx: Generate /workbook/sheetViews/sheetView/selection. 2008-11-18 21:19:39 +0100 kendy r263913 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> *Actually* implement /worksheet/printOptions. Previously I was emitting /worksheet/printOptions, but neglected to actually emit any attributes for that element. Oops. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/xepage.cxx: Use the new 3-argument XclExpBoolRecord constructor to specify the OOXML attribute to generate from SaveXml(). * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Add a `nAttribute' parameter to the constructor (default is disabled) so that the caller can specify which attribute to generate instead of having a horrible special-case HACK in XclExpBoolRecord::SaveXml() (which wasn't a very scalable solution; this is much better). This isn't perfect, as XclExpBoolRecord::SaveXml() still has some special logic, but it's better than it was... 2008-11-18 21:19:17 +0100 kendy r263912 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/sheetViews/sheetView/pane. Slightly more complicated than you'd think, as //pane needs to be after //dimension but *before* //sheetData, and previously //dimension was being generated as part of the //sheetData processing (thus making it difficult to interrupt the generation for //sheetViews). * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/excdoc.hxx, sc/source/filter/excel/excdoc.cxx: Add FillAsXmlTable(); aRecList now gets filled either as a BINARY (FillAsXmlTable) or "XML" (FillAsXmlTable), because trying to juggle eBiff<= BIFF5, ==BIFF8, and GetOutput()!=EXC_OUTPUT_BINARY (XML) was straining my head, and OOXML record ordering is looking to be quite different from BIFF. "Create" a EXC_ID3_DIMENSIONS record so that //dimension is generated before //sheetViews. * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Add XclExpDelegatingRecord. This is needed because I need an ScfRef<XclExpRecordBase> (to insert the DIMENSION record into the correct location), but XclExpDimension is located within another object and thus can't be heap-allocated itself (at least not w/o changing how it works). Thus I instead create an XclExpDelegatingRecord instance which points to the XclExpDimension instance I care about w/o worrying about double freeing or `delete`ing non-`new`d memory... * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::ToOString(XclAddress). * sc/source/filter/inc/xetable.hxx, sc/source/filter/excel/xetable.cxx: Don't generate //dimension from XclExpRowBuffer::SaveXml(), as this needs to be done earlier; add XclExpRowBuffer::GetDimensions(), used by XclExpCellTable::CreateRecord() to return an XclExpRecordRef to the already existing XclExpDimensions instance; change XclExpCellTable::CreateRecord() to (a) make it non-const, and (b) return the appropriate XclExpDimension instance for the EXC_ID3_DIMENSIONS record type. * sc/source/filter/inc/xeview.hxx, sc/source/filter/excel/xeview.cxx: Implement /worksheet/sheetViews and /worksheet/sheetViews/sheetView/pane, and partially implement /worksheet/sheetViews/sheetView. * sc/source/filter/xcl97/xcl97rec.cxx: Don't emit the /workbook/workbookProtection/@revisionsPassword attribute, as this causes xmllint XSD Schema validation to fail. 2008-11-18 21:18:48 +0100 kendy r263911 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet[pageMargins and pageSetup and printOptions]. Note: this change alters the ordering of records in (binary) .xls files as well as .xlsx files. This change does not seem to cause any repercussions; Excel 2007 and Calc 2.4 still open generated .xls files w/o complaint. (The records were reordered to simplify generation of OOXML, as otherwise we'd either have a conditional mess or we'd have code duplication. This seems to work, but can be worked around if deemed necessary.) * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xepage.hxx, sc/source/filter/excel/xepage.cxx: Generate /worksheet/pageMargins, /worksheet/pageSetup, and /worksheet/printOptions elements. * sc/source/filter/inc/xerecord.hxx: Add ExlExpValueRecord<T>::SaveXml() and ExlExpValueRecord<T>::SetAttribute() (needed to generate attributes for some of the above elements). 2008-11-18 21:18:26 +0100 kendy r263910 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/mergeCells/mergeCell. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/inc/xecontent.hxx, sc/source/filter/excel/xecontent.cxx: Generate /worksheet/mergeCells and /worksheet/mergeCells/mergeCell elements. 2008-11-18 21:17:58 +0100 kendy r263909 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/scenarios, //scenario, //inputCells. "Minor" implementation difficulty (making this patch larger than would normally be required): Scenarios implicitly add a new invisible worksheet (as is noticable if you look at the Calc status bar after clicking Tools->Scenarios...->OK; status goes from "Sheet 1/3" to "Sheet 1/4"). This extra sheet foiled my (stupid) resource ID mapping which "just happened" to work, allowing rId1::sheet1 mappings. The problem was that it worked only by "luck" (and I'm not exporting too much), and it was bound to break at some point...like now. Consequently in addition to exporting //scenarios et. al, this also adds additional infrastructure to deal with creating and storing Resource Ids, in particular so that sheet's get valid resource Ids and Excel will still deign to open our files w/o generating errors. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Change the ordering of ExcEScenarioManager & FilterManager to follow the OOXML XSD; ExcTable::WriteXml() no longer creates the sheet stream (this is done by ExcBundlesheet8::SaveXml()), so lookup the correct stream to use instead. * sc/source/filter/excel/xepage.cxx: Flush comments. * sc/source/filter/excel/xetable.cxx: Cleanup. * sc/source/filter/inc/xcl97rec.hxx, sc/source/filter/xcl97/xcl97rec.cxx: Change ExcBundlesheet8::WriteXml() to open the appropriate sheet output stream (so that we can get a valid ResourceId for this output stream to use in //sheet[@r:id]); implement //scenarios, //scenario, and //inputCells for scenario generation. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::GetStreamName(), XclXmlUtils::ToOString(ScAddress), XclXmlUtils::ToOString(ScRange), XclXmlUtils::ToOString(XclExpString), XclExpXmlStream::GetIdForPath(), XclExpXmlStream::GetStreamForPath(). The XclXmlUtils methods are helper routines (code cleanup), while the XclExpXmlStream methods are to permit "registration" of a Path to both a RelationshipId and a FSHelperPtr for later output. This allows e.g. ExcBundlesheet8::SaveXml() to open the output stream, and have ExcTable::WriteXml() grab and use this output stream later. Changed CreateOutputStream() to (optionally) return the ResourceId as an output parameter. 2008-11-18 21:17:35 +0100 kendy r263908 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Move XML character escape logic into FastSerializerHelper. * sc/source/filter/excel/xename.cxx, sc/source/filter/excel/xepage.cxx, sc/source/filter/excel/xecontent.cxx: Use writeEscaped() instead of write() in places that require escaping. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Remove XclXmlUtils::Escape(). 2008-11-18 21:17:10 +0100 kendy r263907 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/headerFooter[oddHeader, oddFooter]. Excel distinguishes between left, right, and front page sets, while Calc doesn't (at least, the .xls output doesn't make that distinction). Consequently, we generate "all pages have these headers/footers" output. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Alter record ordering so that the //headerFooter element is inserted into the correct position to allow Excel to open generated documents. * sc/source/filter/inc/xepage.hxx, sc/source/filter/excel/xepage.cxx: Generate the /worksheet/headerFooter, /worksheet/headerFooter/oddHeader, and /worksheet/headerFooter/evenHeader elements. * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Extend the XclExpStartXmlElementRecord and XclExpStartSingleXmlElementRecord types to accept a callback function which is invoked after starting the element. This allows us to ~easily provide the /worksheet/headerFooter attributes w/o creating new XclExpRecordBase subclasses. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::Escape() functions which perform XML character escaping (e.g. s/</&lt;/g) so that we don't generate invalid XML. In particular, the header/footer contains a "formatting code" which contains '&', which must be escaped within the generated XML. 2008-11-18 21:16:47 +0100 kendy r263906 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/dimensions. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/xetable.cxx, sc/source/filter/inc/xetable.hxx: Implement /worksheet/dimensions. 2008-11-18 21:16:21 +0100 kendy r263905 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/dataValidations/dataValidation[formula1, formula2]. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/xecontent.cxx, sc/source/filter/inc/xecontent.hxx: Implement /worksheet/dataValidations, /worksheet/dataValidations/dataValidation, //formula1, //formula2. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add XESTRING_TO_PSZ(), XclXmlUtils::ToOString(ScRangeList), XclXmlUtils::ToOUString(ScDocument&,ScAddress,ScTokenArray*). 2008-11-18 21:15:58 +0100 kendy r263904 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/conditionalFormatting. Note that Excel will NOT currently open files containing this element, as the XML is incomplete: the XSD requires at least one nested /worksheet/conditionalFormatting/cfRule element, which we're not yet generating. We do properly generate //conditionalFormatting/@sqref. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/xecontent.cxx, sc/source/filter/inc/xecontent.hxx: Generate /worksheet/conditionalFormatting. 2008-11-18 21:15:31 +0100 kendy r263903 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/cols/col; unstub /worksheet/sheetData. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Remove <sheetData/> stub, as //col needs to come _before_ //sheetData, and emitting //sheetData here makes that impossible (and keeps Excel from loading our files). * sc/source/filter/excel/xetable.cxx, sc/source/filter/inc/xetable.hxx: Implement /worksheet/cols (XclExpColinfoBuffer), /worksheet/cols/col (XclExpColinfo), and stub out /worksheet/sheetData in the correct position to appease Excel. 2008-11-18 21:15:06 +0100 kendy r263902 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /worksheet/colBreaks, /worksheet/rowBreaks, and /worksheet//brk. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/xepage.cxx, sc/source/filter/inc/xepage.hxx: Add XclExpPageSettings::SaveXml() and XclExpPageBreaks::SaveXml() -- the former to call the latter, and the latter to generate /worksheet/colBreaks, /worksheet/rowBreaks, and /worksheet//brk. 2008-11-18 21:14:44 +0100 kendy r263901 : #i96320# xlsx export From: Fridrich Strba <fstrba@novell.com> disambiguate 2008-11-18 21:14:19 +0100 kendy r263900 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement (more-) proper /workbook/calcPr support. Cleanup. Previously, /workbook/calcPr was generated by filling a temporary XclExpXmlCalculationProperties instance, and generating the //calcPr element at the ~end of generation. This was not ideal, as it involved more code (the class to hold the intermediate values, etc.), and it could potentially place the //calcPr element into the wrong position (the XSD requires that it be before //oleSize, //customWorkbookViews, and //pivotCaches, while the previous approach would have placed it after ~everything). * sc/source/filter/excel/excdoc.cxx: Follow the pattern of //workbookProtection and insert the //calcPr BIFF records into the appropriate position based on file type. One minor quirk: the records move from the per-SHEET array into the workbook array. * sc/source/filter/excel/xestream.cxx, sc/source/filter/inc/xestream.hxx: Remove unnecessary code. * sc/source/filter/xcl97/xcl97rec.cxx: Directly emit the attributes instead of filling an intermediate object. 2008-11-18 21:13:56 +0100 kendy r263899 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Enable /workbook/workbookProtection. /workbook/workbookProtection was previously disabled as emitting it would cause Excel to generate an error message. The problem has been resolved: /workbook/workbookProtection *must* be before /workbook/bookviews (which in turn must be before /workbook/sheets), and this wasn't previously the case. Placing the element into the proper location makes Excel happy. * sc/source/filter/excel/excdoc.cxx: Place the workbookProtection-related BIFF records into the correct position to appease the Excel gods. * sc/source/filter/excel/excrecds.cxx, sc/source/filter/xcl97/xcl97rec.cxx: Enable output of the various /workbook/workbookProtection attributes. 2008-11-18 21:13:29 +0100 kendy r263898 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement /workbook/bookviews/workbookView. * sc/source/filter/excel/ooxml-export-TODO.txt: Remove implemented elements. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/excel.cxx, sc/source/filter/excel/xlroot.cxx, sc/source/filter/inc/xlroot.hxx, sc/source/filter/inc/xlconst.hxx: The WINDOW1 record needs to be in one of two different locations, depending on output format. Add a new XclOutput enumeration to contain the output format (we do NOT want to reuse XclBiff for this purpose, as otherwise XML output is a superset of BIFF8, and we don't want to update every existing check for BIFF8 to check for both BIFF8 and XML), and check for this flag so that the WINDOW1 record is created in the appropriate place. * sc/source/filter/excel/xestream.cxx, sc/source/filter/inc/xestream.hxx: Add GetRoot() method and change constructor to take a `const XclExpRoot&`, as XclExpWindow::SaveXml() requires this information. * sc/source/filter/excel/xeview.cxx, sc/source/filter/inc/xeview.hxx: XclExpWindow1::SaveXml() generates the //workbookView element. * sc/source/filter/xcl97/xcl97rec.cxx: Cleanup. 2008-11-18 21:13:04 +0100 kendy r263897 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Remove SIGILL from ExcBundlesheet8::SaveXml(). * sc/source/filter/excel/xestream.cxx: Add some asserts. * sc/source/filter/xcl97/xcl97rec.cxx: Non-POD types cause a SIGILL when passed as a "..." argument to a function. Doh! 2008-11-18 21:12:42 +0100 kendy r263896 : #i96320# xlsx export From: Fridrich Strba <fstrba@novell.com> disambiguate 2008-11-18 21:12:17 +0100 kendy r263895 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> /workbook/workbookProtection, mostly cancelled during rebase. This isn't actually implemented -- the ::SaveXml() methods are `#if 0`d out -- as Excel barfs when this element + attributes are emitted. Funnier, even <workbookProtection/> causes Excel to barf, so until all the semantics are worked out it all needs to be uncommented out. What is useful here is the mapping from BIFF record -> OOXML attribute. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/excrecds.cxx, sc/source/filter/inc/excrecds.hxx, sc/source/filter/inc/xcl97rec.hxx, sc/source/filter/xcl97/xcl97rec.cxx: Add method stubs to generate the /workbook/workbookProtection element & attributes. 2008-11-18 21:11:55 +0100 kendy r263894 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Initial /workbook/workbookPr implementation. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sc/source/filter/excel/excdoc.cxx: Add records to start/end the <workbookPr/> element; cleanup & document TODOs. * sc/source/filter/inc/excrecds.hxx, sc/source/filter/excel/excrecds.cxx: Declare & Implement Xcl1904::SaveXml(). * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Declare and implement XclExpXmlStartSingleElementRecord, XclExpXmlEndSingleElementRecord, both used to single-style XML elements instead of the "full" start/end XML created by XclExpXmlStartElementRecord and XclExpXmlEndElementRecord, and add XclExpBoolRecord::SaveXml(), which generates some <workbookPr/> attributes. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Declare & implement XclExpXmlStream::WriteCurrentStreamAttributes(). 2008-11-18 21:11:30 +0100 kendy r263893 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement (more-) proper /workbook/sheets support. Refactor. Instead of hacking around "limitations" in NameBuffer to generate /workbook/sheets/sheet elements, use ExcBundlesheet8 to generate the /workbook/sheets/sheet elements. This also allows us to emit the //sheet/@state attribute, which is private to ExcBundlesheet8. In order to generate the /workbook/sheets elements, XclExpXmlStartElementRecord and XclExpXmlEndElementRecord were added around the ExcBundlesheet8 record entries, so that the existing record-based infrastructure could automagically generate the structural XML tags. These records do nothing for existing BIFF output. Finally, XclExpXmlStream::GetWorkbook() has been replaced with XclExpXmlStream::GetCurrentStream(), and PushStream()/PopStream() methods were added. This is hoped to permit nesting of streams, and is currently being used to generate the xl/worksheets/sheetN.xml files (to no effect, as not enough records are generate XML for the results to be visible). * sc/source/filter/excel/excdoc.cxx: Undo the pTabNames/NameBuffer changes, as we no longer use pTabNames to generate //sheets/; add records to emit the <sheets/> element; place the sheet stream on top of the XclExpXmlStream stack. * sc/source/filter/inc/excrecds.hxx, sc/source/filter/excel/excrecds.cxx: Save the tab that ExcBundlesheetBase was constructed for -- needed for <sheet/> generation within ExcBundlesheet8. * sc/source/filter/excel/xecontent.cxx, sc/source/filter/excel/xename.cxx, sc/source/filter/excel/xepivot.cxx: s#GetWorkbook#GetCurrentStream#g; don't emit empty collections. * sc/source/filter/inc/xerecord.hxx, sc/source/filter/excel/xerecord.cxx: Declare and Implement XclExpXmlElementRecord, XclExpXmlStartElementRecord, XclExpXmlEndElementRecord. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Add stream stack methods; remove warning about unused parameter. * sc/source/filter/inc/xcl97rec.hxx, sc/source/filter/xcl97/xcl97rec.cxx: Add ExcBundlesheet8::SaveXml() and generate /workbook/sheets/sheet elements from it. 2008-11-18 21:11:08 +0100 kendy r263892 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Add Calc OOXML TODO list. * sc/source/filter/excel/ooxml-export-TODO.txt: Added. I'm going through ECMA-376 Part 4 Section 3 in a breadth-first fashion (i.e. top-down), and implementing each element as I'm able. I'm not always able to immediately implement an element (frequently because I can't find the equivalent binary export code) within a short period of time, so any such elements are recorded here for later passes. Just because an element isn't here doesn't mean it's been fully implemented; any elements with associated code will have OOXTODO comments specifying what's missing/needed for that particular code. 2008-11-18 21:10:36 +0100 kendy r263891 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Initial /workbook/pivotCaches/pivotCache implementation. * sc/source/filter/excel/xepivot.cxx, sc/source/filter/inc/xepivot.hxx: Declare and implement *Xml() methods so that PivotCaches are saved into xl/workbook.xml. 2008-11-18 21:10:09 +0100 kendy r263890 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Initial <definedName/> implementation. * sc/source/filter/excel/xename.cxx: Generate <definedName/>. * sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::ToPsz(bool). * sc/source/filter/inc/xename.hxx: Declare XclExpNameManager::SaveXml() so we can emit <definedName/> elements. * sc/source/filter/inc/xestream.hxx: Declare XclXmlUtils::ToPsz(bool). 2008-11-18 21:09:47 +0100 kendy r263889 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Initial <calcPr/> implementation; provide count, uniqueCount <sst/> attributes. * sc/source/filter/excel/excdoc.cxx: Initial /workbook/calcPr generation implementation. * sc/source/filter/excel/xecontent.cxx: Provide the count and uniqueCount attributes for the <sst/> element. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: Provide/implement a XclExpXmlStream::GetWorkbookCalculationProperties() method which keeps track of data used by excdoc.cxx for <calcPr/> generation. * sc/source/filter/inc/xcl97rec.hxx, sc/source/filter/xcl97/xcl97rec.cxx: Override SaveXml() for select types to cache the information needed to write <calcPr/>. 2008-11-18 21:09:22 +0100 kendy r263888 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Simplify addRelation/openOutputStream use within sc. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/xecontent.cxx: Use CreateOutputStream() to create sub-streams. * sc/source/filter/excel/xestream.cxx: Implement CreateOutputStream(); use CreateOutputStream() to create xl/workbook.xml. * sc/source/filter/inc/xestream.hxx: Add CreateOutputStream() methods which merge addRelation() w/ openOutputStreamWithSerializer(). 2008-11-18 21:08:59 +0100 kendy r263887 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Allow Excel to open an empty spreadsheet. * sc/source/filter/excel/excdoc.cxx: Use proper sheet names in the relations file so that correct relative paths are present within the .rels file; Use the correct content type when creating sheetN.xml; Insert a <sheetData/> element into the worksheet.xml files; insert the sheetN.xml relational data into the correct .rels file. * sc/source/filter/excel/xestream.cxx: Use the correct content type when creating xl/workbook.xml. 2008-11-18 21:08:28 +0100 kendy r263886 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> More Excel export cleanup. * sc/source/filter/excel/excdoc.cxx: Use addRelation(XOutputStream...) so that the added relation is (hopefully) inserted into the appropriate xl/_rels/workbook.xml.rels file; extra tracing. * sc/source/filter/excel/xecontent.cxx: Cleanup/simplification. * sc/source/filter/excel/xestream.cxx, sc/source/filter/inc/xestream.hxx: Add more ToOString() and ToOUString() helper methods. 2008-11-18 21:08:06 +0100 kendy r263885 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Current work-in-progress for minimal Excel support. * sc/source/filter/excel/excdoc.cxx: Implement ExcTable::WriteXml() to write xl/worksheets/sheetN.xml or the workbook.xml <sheets/> elements, depending on whether we're the header or not. Implement ExcDocument::WriteXml() to stub out xl/workbook.xml. * sc/source/filter/excel/xecontent.cxx: Use the XML Ids instead of strings to speed up XML creation. * sc/source/filter/excel/xestream.cxx: Add XclXmlUtils::To*String() helpers to simplify XML writing; open the xl/workbook.xml file so that it can be written to from multiple locations. * sc/source/filter/inc/xestream.hxx: Add XclXmlUtils class to hold various To*String() helpers; add XclExpXmlStream::GetWorkbook(). 2008-11-18 21:07:41 +0100 kendy r263884 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Generate a correct shared string table. * sc/source/filter/excel/xecontent.cxx: Write proper shared string table entries. * sc/source/filter/inc/xestream.hxx: Include <sax/fshelper.hxx> so we can easily use XmlFilterBase::openOutputStreamWithSerializer(). 2008-11-18 21:07:18 +0100 kendy r263883 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Write an actual ZIP package for .xlsx output, including a (stubbed) shared string table. * sc/prj/build.lst: We now depend on oox to build. * sc/source/filter/inc/xestream.hxx, sc/source/filter/excel/xestream.cxx: XclExpXmlStream how inherits from XmlFilterBase, which produces ZIP package files. This allows increased code sharing. * sc/source/filter/excel/excdoc.cxx: Update XclExpXmlStream construction. * sc/source/filter/excel/excel.cxx: Don't create a SotStorage() instance over pMedStrm (this makes ZipStorage very angry); don't call lcl_ExportExcelBiff(), as we want to preserve our generated file. * sc/source/filter/excel/xecontent.cxx: Write out the XML forr the shared string table (incomplete, as I need to find an easier/more elegant way of inserting strings into the XML, but it'll need updating anyway to use the FastSaxSerializer). * sc/util/makefile.mk: Link against $(OOXLIB) and $(FASTSAXLIB) as well. 2008-11-18 21:06:54 +0100 kendy r263882 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Trace output for the shared string table. This is step forward as we're hooking into the new XclExpRecordBase::SaveXml() to invoke the string table SaveXml() routine. It's still largely proof-of-concept, but we can actually invoke the appropriate code now. * oox/workben/ooxml-export-notes.txt: Flush. * sc/source/filter/inc/exp_op.hxx, sc/source/filter/excel/expop2.cxx: Add and implement the new ExportXml2007 type. * sc/source/filter/excel/excdoc.cxx, sc/source/filter/excel/excel.cxx, sc/source/filter/excel/xecontent.cxx, sc/source/filter/excel/xepivot.cxx, sc/source/filter/excel/xerecord.cxx, sc/source/filter/excel/xestream.cxx, sc/source/filter/inc/excdoc.hxx, sc/source/filter/inc/xecontent.hxx, sc/source/filter/inc/xepivot.hxx, sc/source/filter/inc/xerecord.hxx, sc/source/filter/inc/xestream.hxx, sc/source/filter/inc/xestring.hxx: Implement enough glue to allow XclExpSstImpl::SaveXml() to be invoked from the XML export context and print useful information to the screen. 2008-11-18 21:06:28 +0100 kendy r263881 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Implement support for writing .xlsx files. The .xlsx file written is still a BIFF8 (.xls) file, but a file is now written instead of generating an error message. * sc/inc/filter.hxx: Change the prototype of ScExportExcel5 so that we can specify Excel 2007 XML (Exp2007Xml) as a file format. * sc/source/filter/excel/excel.cxx: Refactor ScExportExcel5() so that Exp2007Xml is a supported format, and stub out Exp2007Xml support so that BIFF8 output is currently generated. * sc/source/ui/docshell/docsh.cxx: Add support for the "MS Excel 2007 XML" filter and the new ScExportExcel5() semantics. 2008-11-18 21:06:03 +0100 kendy r263880 : #i96320# xlsx export From: Jonathan Pryor <jpryor@novell.com> Make the filter names consistent with other filters used in sc/.../docsh.cxx. * filter/source/config/fragments/filters/calc_MS_Excel_2007_Binary.xcu, filter/source/config/fragments/filters/calc_MS_Excel_2007_Binary_ui.xcu, filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu, filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_Template.xcu, filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_Template_ui.xcu, filter/source/config/fragments/filters/calc_MS_Excel_2007_XML_ui.xcu, filter/source/config/fragments/types/MS_Excel_2007_Binary.xcu, filter/source/config/fragments/types/MS_Excel_2007_XML.xcu, filter/source/config/fragments/types/MS_Excel_2007_XML_Template.xcu: Remove 'Calc ' from the filter names (as none of the other filters mentioned in sc/source/ui/docshell.cxx use that convention), and remove 3RDPARTYFILTER from the filter's Flags property, as this flag causes objstor.cxx to use ExportTo() instead of ConvertTo(), and the existing Calc->Export logic is all within ConvertTo(). 2008-11-18 21:05:41 +0100 kendy r263879 : #i96320# xlsx export From: Radek Doulik <rodo@novell.com> Initial work on ooxml export (xlsx) * filter/source/config/fragments/filters/calc_MS_Excel_2007_XML.xcu: ditto * filter/source/config/fragments/types/MS_Excel_2007_XML.xcu: reverse extensions order so that xlsx is shown in Save dialog as default 2008-11-18 20:53:43 +0100 kendy r263877 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Deliver tablestylelist.hxx so that we can use xmlfilterbase.hxx. And also just do forward declaration of TableStyle instead of including the header - it includes too much in that case. 2008-11-18 20:53:21 +0100 kendy r263876 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Fix build break. * source/ppt/pptimport.cxx: getServiceFactory() was renamed to getGlobalFactory(). 2008-11-18 20:52:49 +0100 kendy r263875 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Add some namespaces so that sax builds again. 2008-11-18 20:52:27 +0100 kendy r263874 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Cleanup in sax (wrt. escaping attribute values). FastSaxSerializer::writeFastAttributeList() didn't properly escape attribute values, which broke number format export if the number format included e.g. '"' (double quote), e.g.: [$$-409]#,##0.00;[RED]-[$$-409]#,##0.00;"" which shows numbers with a currency type, negative numbers in red, and 0 values as the empty string. * sc/source/filter/excel/ooxml-export-TODO.txt: Flush. * sax/source/fastparser/fshelper.cxx, sax/source/fastparser/fastserializer.hxx, sax/source/fastparser/fastserializer.cxx: Move fshelper.cxx's lcl_Escape() to FastSaxSerializer::escapeXml(), and use escapeXml() when writing attribute values. 2008-11-18 20:51:59 +0100 kendy r263873 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Make a bit more obvious what's happenning with AttributeLists. 2008-11-18 20:51:37 +0100 kendy r263872 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> a from-scratch-build reveals some missed changes in include files :( 2008-11-18 20:51:11 +0100 kendy r263871 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> deliver the header too 2008-11-18 20:50:48 +0100 kendy r263870 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> public visibility of FastAttributeList class + some more convenience functions in fshelper 2008-11-18 20:50:26 +0100 kendy r263869 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Add /Relationships/Relationship/@TargetMode support. This also fixes Calc hyperlink export, allowing Excel to properly read documents containing a hyperlink. * oox/inc/oox/core/xmlfilterbase.hxx, oox/source/core/xmlfilterbase.cxx: Add a rTargetMode parameter to XmlFilterBase::addRelation(). 2008-11-18 20:50:04 +0100 kendy r263868 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> add string.h 2008-11-18 20:49:42 +0100 kendy r263867 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Explicitely default construct maMarkStack [to be safe ;-)]. 2008-11-18 20:49:13 +0100 kendy r263866 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Rename writeMarked() to mergeTopMarks() and improve the implementation. Just writing the top mark is not enough; in more complex scenarios it would destroy the order completely. This way we have better control over what's happening, and can nest the mark()/mergeTopMarks()/mergeTopMarks( true ) as necessary directly in the start/end tags. 2008-11-18 20:48:51 +0100 kendy r263865 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Add mark() and writeMarked() methods. These are to be able to change the order of the data being written. If you need to write eg. p, r, rPr, [something], /rPr, t, [text], /r, /p, but get it in order p, r, t, [text], /t, rPr, [something], /rPr, /r, /p, simply do p, r, mark(), t, [text], /t, mark(), rPr, [something], /rPr, writeMarked(), writeMarked(), /r, /p and you are done. 2008-11-18 20:48:24 +0100 kendy r263864 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Move XML character escape logic into FastSerializerHelper. * sax/inc/sax/fshelper.hxx, sax/source/fastparser/fshelper.cxx: Add and implement FastSerializerHelper::writeEscaped(), which escapes any XML characters within the string before writing. 2008-11-18 20:48:02 +0100 kendy r263863 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Introduce writeId(). * sax/inc/sax/fshelper.hxx sax/source/fastparser/fastserializer.cxx, sax/source/fastparser/fastserializer.hxx, sax/source/fastparser/fshelper.cxx: Add/implement FastSerializerHelper::writeId(), which does the "usual" sal_Int32->string conversion but manually, outside of any automatic context. This is done so that XclExpXmlStream::WriteCurrentStreamAttributes() can write element attributes "piecemeal"/on-demand, without needing to store the relevant information into a separate object to generate all the attributes at once. 2008-11-18 20:47:36 +0100 kendy r263862 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Change the semantics of startElement() and singleElement(). * sax/source/fastparser/fshelper.cxx: Change the semantics of startElement() and singleElement(), so that attributes with values that are NULL are _skipped_, instead of ending all attributes. This allows us to have "optional" attributes, in which the attribute won't be generated if the value is null. This is needed so that the //definedName/@localSheetId attribute is only emitted for non-global sheet-specific names. 2008-11-18 20:47:14 +0100 kendy r263861 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> call our pptx export filter from oox/pptimport when needed (yup, it is not only import filter from now ;-) 2008-11-18 20:46:51 +0100 kendy r263860 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> How to install the stuff. 2008-11-18 20:46:29 +0100 kendy r263859 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> Change 'core::addRelation' to 'static addRelation_impl'. To be better readable, and no symbol for that. 2008-11-18 20:46:04 +0100 kendy r263858 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> generate document wide unique Id's 2008-11-18 20:45:40 +0100 kendy r263857 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added standalone="yes" to xml document beginning removed unneccessary ::rtl:: prefix in one case 2008-11-18 20:45:18 +0100 kendy r263856 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added FSHelperPtr here as well 2008-11-18 20:44:56 +0100 kendy r263855 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> call commit on StorageBase substorages rather than only on XStorage of these substorages so that the commit propagates recursively to all substorages 2008-11-18 20:44:34 +0100 kendy r263854 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Implement getOutputStream(), some cleanup. * sax/inc/sax/fshelper.hxx: Add a getOutputStream() method so that excdoc.cxx can easily use the addRelation(XOutputStream, ...) method. * sax/source/fastparser/fastserializer.cxx: Code refactor to remove useless string duplication -- Sequence<byte>(ToString(s).getStr(), ToString(s).getLength()) == bad. * sax/source/fastparser/fastserializer.hxx: Add getOutputStream() (for use in fshelper.cxx); cleanupl. * sax/source/fastparser/fshelper.cxx: Implement getOutputStream(). 2008-11-18 20:44:12 +0100 kendy r263853 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Add write() methods to write inside elements. * sax/inc/sax/fshelper.hxx: Add write() methods to write content to the string inside of elements. * sax/source/fastparser/fshelper.cxx: Implement write() methods. 2008-11-18 20:43:50 +0100 kendy r263852 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> making singleUnknownElement and singleFastElement be a uno method 2008-11-18 20:43:27 +0100 kendy r263851 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added NS versions of fast methods 2008-11-18 20:43:05 +0100 kendy r263850 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> support namespaces in attribute names as well 2008-11-18 20:42:44 +0100 kendy r263849 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> fix content types writting after it got broken somewhere between m4 and m19 when Version was added to properties between MediaType and FullPath 2008-11-18 20:42:21 +0100 kendy r263848 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> fixed FastAttributeList::getUnknownAttributes where a std::for_each wasn't working properly (because of ++ in bind) 2008-11-18 20:41:55 +0100 kendy r263847 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> fix attributes list and its reference creation so that the instance can be freed in Reference::release 2008-11-18 20:41:33 +0100 kendy r263846 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> export tokens added xmlns to tokens 2008-11-18 20:41:08 +0100 kendy r263845 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> instantiate token handler support xml namespaces 2008-11-18 20:40:45 +0100 kendy r263844 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added method to XmlFilterBase which opens stream with media type and returns newly created fast serializer shared ptr 2008-11-18 20:40:23 +0100 kendy r263843 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> * oox/workben/ooxml-export-notes.txt: Flush. 2008-11-18 20:40:01 +0100 kendy r263842 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> beefing up the fshelper 2008-11-18 20:39:40 +0100 kendy r263841 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> export ChartConverterClass - it is now needed in XmlFilterBase 2008-11-18 20:39:17 +0100 kendy r263840 : #i96316# OPC for export filters From: Jan Holesovsky <kendy@suse.cz> fastsax.uno.so was renamed to libfastsaxlx.so 2008-11-18 20:38:54 +0100 kendy r263839 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> trying to do some useful stuff with the serializer 2008-11-18 20:38:26 +0100 kendy r263838 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> use relation id names similar to ms office 2008-11-18 20:38:03 +0100 kendy r263837 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> fixed typo in namespace url 2008-11-18 20:37:38 +0100 kendy r263836 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added 2 new methods to XmlFilterBase for adding relations to base storage and to output streams 2008-11-18 20:37:15 +0100 kendy r263835 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> let writable stream handle relation id's new id can be queried by asking for property "RelId" fixed another issue with writing relations of writable stream - the same one I fixed lately for storages - looks like another cut'n'pasted code :( 2008-11-18 20:36:48 +0100 kendy r263834 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> trying to avoid char* -> OUString and back conversions 2008-11-18 20:36:26 +0100 kendy r263833 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added commit methods to StorageBase and FilterBase to make things easier 2008-11-18 20:35:58 +0100 kendy r263832 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added new openOutputStream method to XmlFilterBase to open output stream of given mediat type (which is then saved to [Content_Types.xml] updated pptx export filter 2008-11-18 20:35:36 +0100 kendy r263831 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> some casts to make compiler happy 2008-11-18 20:35:13 +0100 kendy r263830 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> trying to make the fast serializer a bit less bloated 2008-11-18 20:34:51 +0100 kendy r263829 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> do not get out of bounds of sequence do not overwrite the id tag 2008-11-18 20:34:29 +0100 kendy r263828 : #i96316# OPC for export filters From: Jonathan Pryor <jpryor@novell.com> Notes for trace output for the shared string table. * oox/workben/ooxml-export-notes.txt: Flush. 2008-11-18 20:34:07 +0100 kendy r263827 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added ifdefs to fshelper.hxx to avoid problems when including more than once fixed the constructor namespace added export.map and made FastSerializerHelper class global 2008-11-18 20:33:44 +0100 kendy r263826 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> defined OOXLIB and FASTSAXLIB variables to be used in makefiles 2008-11-18 20:33:18 +0100 kendy r263825 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added constructor and added fshelper.obj to the makefile.mk 2008-11-18 20:32:56 +0100 kendy r263824 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> added fast serializer helper files (not implemented yet) make the fastsax a shared library (fastsax.uno.so --> libfastsaxlx.so) deliver the fast serializer header 2008-11-18 20:32:34 +0100 kendy r263823 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> add fast serializer to the uno component 2008-11-18 20:32:12 +0100 kendy r263822 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> moved uno service and implementation names to headers 2008-11-18 20:31:46 +0100 kendy r263821 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> split fastparser.cxx to fastparser.hxx with class declaration, fastparser.cxx with implementation and facreg.cxx with uno component implementation 2008-11-18 20:31:19 +0100 kendy r263820 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> export storage base class, remove old proof code from xml filter base 2008-11-18 20:30:57 +0100 kendy r263819 : #i96316# OPC for export filters From: Radek Doulik <rodo@novell.com> exported filter base and zipstorage to be used in other module's filters 2008-11-18 20:30:35 +0100 kendy r263818 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> make the FastSerializer as UNO service 2008-11-18 20:30:13 +0100 kendy r263817 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> write out the attributes too 2008-11-18 20:29:51 +0100 kendy r263816 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> some more changes to the fastserializer Originally this also duplicated the offapi changes in unoxml; but the unoxml files were removed recently ;-) 2008-11-18 20:29:24 +0100 kendy r263815 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> move the fastserializer from oox module to sax module 2008-11-18 20:29:01 +0100 kendy r263814 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> Adding a method to XFastAttributeList, in order to get the fast attributes along with unknown ones 2008-11-18 20:28:38 +0100 kendy r263813 : #i96316# OPC for export filters From: Fridrich Strba <fstrba@novell.com> refactor the serializer 2008-11-18 20:28:16 +0100 kendy r263812 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> stuffing the serializer a bit more 2008-11-18 20:25:31 +0100 kendy r263811 : #i95759# docx/xlsx/pptx export filters From: Jan Holesovsky <kendy@suse.cz> More explicit pointers to the export code. 2008-11-18 20:25:04 +0100 kendy r263810 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> adding and removing files up and down 2008-11-18 20:24:42 +0100 kendy r263809 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> adding fastserializer dummy inplementation 2008-11-18 20:24:19 +0100 kendy r263808 : #i95759# docx/xlsx/pptx export filters From: Jan Holesovsky <kendy@suse.cz> Escher pointers. 2008-11-18 20:23:56 +0100 kendy r263807 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> removing the unnecessary FastSerializer service 2008-11-18 20:23:34 +0100 kendy r263806 : #i95759# docx/xlsx/pptx export filters From: Radek Doulik <rodo@novell.com> XStream instead of XOutputStream for OOXML export filter. 2008-04-25 Radek Doulik <rodo@novell.com> * oox/workben/ooxml-export-notes.txt: added odp export trace * oox/source/core/xmlfilterbase.cxx (implCreateStorage): added test code to create test storage and stream, also committing changes here * oox/inc/oox/helper/olestorage.* (class OleStorage): as below * oox/inc/oox/helper/zipstorage.*: as below * oox/inc/oox/helper/storagebase.* (class StorageBase): let export constructor use XStream instead of XOutputStream, change member type as well * oox/inc/oox/core/xmlfilterbase.* (class XmlFilterBase): as below * oox/inc/oox/core/binaryfilterbase.* (class BinaryFilterBase): as below * oox/inc/oox/core/filterbase.*: changed implCreateStorage method to get XStream instead of XOutputStream * sfx2/source/doc/objstor.cxx (ExportTo): added StreamForOutput XStream to media descriptor properties for OOXML export filter * comphelper/source/misc/mediadescriptor.cxx (PROP_STREAMFOROUTPUT): added StreamForOutput property * oox/source/helper/zipstorage.cxx (ZipStorage): open storage with OFOPXMLFormat * oox/source/helper/zipstorage.cxx (implOpenSubStorage): added implementation for export * oox/source/core/filterbase.cxx (setMediaDescriptor): add input stream only on import 2008-11-18 20:23:07 +0100 kendy r263805 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> add FastSerializer Service 2008-11-18 20:22:45 +0100 kendy r263804 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> add FastSerializer service 2008-11-18 20:22:23 +0100 kendy r263803 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> adapting the makefile.mk to build the XFastSerializer 2008-11-18 20:22:02 +0100 kendy r263802 : #i95759# docx/xlsx/pptx export filters From: Fridrich Strba <fstrba@novell.com> Adding the XFastSerializer interface 2008-11-18 20:21:39 +0100 kendy r263801 : #i95759# docx/xlsx/pptx export filters From: Jan Holesovsky <kendy@suse.cz> Added pointers to export code of binary filters. 2008-11-18 20:21:13 +0100 kendy r263800 : #i95759# docx/xlsx/pptx export filters From: Jan Holesovsky <kendy@suse.cz> Implementation notes: affected modules. [Started the implementation notes by asking Fridrich ;-)] 2008-11-18 20:20:51 +0100 kendy r263799 : #i95759# docx/xlsx/pptx export filters From: Radek Doulik <rodo@novell.com> Initial work on ooxml export * oox/source/helper/zipstorage.cxx (implOpenOutputStream): added prototype implementation (ZipStorage): this constructor needs to be implemented (on output stream)
2009-01-06 12:16:56 +00:00
pAry[i] = ::ScColToAlpha( nStartCol + i );
2000-09-18 16:07:07 +00:00
return aSeq;
}
sal_Bool SAL_CALL ScTableColumnsObj::hasByName( const rtl::OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCCOL nCol = 0;
String aString(aName);
if ( ::AlphaToCol( nCol, aString) )
2000-09-18 16:07:07 +00:00
if ( pDocShell && nCol >= nStartCol && nCol <= nEndCol )
return sal_True;
2000-09-18 16:07:07 +00:00
return false; // nicht gefunden
2000-09-18 16:07:07 +00:00
}
2000-12-13 17:56:58 +00:00
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableColumnsObj::getPropertySetInfo()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
static uno::Reference<beans::XPropertySetInfo> aRef(
new SfxItemPropertySetInfo( lcl_GetColumnsPropertyMap() ));
2000-12-13 17:56:58 +00:00
return aRef;
}
void SAL_CALL ScTableColumnsObj::setPropertyValue(
const rtl::OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-12-13 17:56:58 +00:00
if (!pDocShell)
throw uno::RuntimeException();
SCCOLROW nColArr[2];
2000-12-13 17:56:58 +00:00
nColArr[0] = nStartCol;
nColArr[1] = nEndCol;
String aNameString(aPropertyName);
ScDocFunc& rFunc = pDocShell->GetDocFunc();
2000-12-13 17:56:58 +00:00
if ( aNameString.EqualsAscii( SC_UNONAME_CELLWID ) )
{
sal_Int32 nNewWidth = 0;
2000-12-13 17:56:58 +00:00
if ( aValue >>= nNewWidth )
rFunc.SetWidthOrHeight( sal_True, 1, nColArr, nTab, SC_SIZE_ORIGINAL,
(sal_uInt16)HMMToTwips(nNewWidth), sal_True, sal_True );
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
{
sal_Bool bVis = ScUnoHelpFunctions::GetBoolFromAny( aValue );
2000-12-13 17:56:58 +00:00
ScSizeMode eMode = bVis ? SC_SIZE_SHOW : SC_SIZE_DIRECT;
rFunc.SetWidthOrHeight( sal_True, 1, nColArr, nTab, eMode, 0, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
// SC_SIZE_DIRECT with size 0: hide
}
else if ( aNameString.EqualsAscii( SC_UNONAME_OWIDTH ) )
{
sal_Bool bOpt = ScUnoHelpFunctions::GetBoolFromAny( aValue );
2000-12-13 17:56:58 +00:00
if (bOpt)
rFunc.SetWidthOrHeight( sal_True, 1, nColArr, nTab,
SC_SIZE_OPTIMAL, STD_EXTRA_WIDTH, sal_True, sal_True );
// sal_False for columns currently has no effect
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) || aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
{
//! single function to set/remove all breaks?
sal_Bool bSet = ScUnoHelpFunctions::GetBoolFromAny( aValue );
for (SCCOL nCol=nStartCol; nCol<=nEndCol; nCol++)
2000-12-13 17:56:58 +00:00
if (bSet)
rFunc.InsertPageBreak( sal_True, ScAddress(nCol,0,nTab), sal_True, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
else
rFunc.RemovePageBreak( sal_True, ScAddress(nCol,0,nTab), sal_True, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
}
}
uno::Any SAL_CALL ScTableColumnsObj::getPropertyValue( const rtl::OUString& aPropertyName )
throw(beans::UnknownPropertyException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-12-13 17:56:58 +00:00
if (!pDocShell)
throw uno::RuntimeException();
ScDocument* pDoc = pDocShell->GetDocument();
String aNameString(aPropertyName);
2000-12-13 17:56:58 +00:00
uno::Any aAny;
//! loop over all columns for current state?
if ( aNameString.EqualsAscii( SC_UNONAME_CELLWID ) )
{
// for hidden column, return original height
sal_uInt16 nWidth = pDoc->GetOriginalWidth( nStartCol, nTab );
2000-12-13 17:56:58 +00:00
aAny <<= (sal_Int32)TwipsToHMM(nWidth);
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
{
bool bVis = !pDoc->ColHidden(nStartCol, nTab);
2000-12-13 17:56:58 +00:00
ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_OWIDTH ) )
{
sal_Bool bOpt = !(pDoc->GetColFlags( nStartCol, nTab ) & CR_MANUALSIZE);
2000-12-13 17:56:58 +00:00
ScUnoHelpFunctions::SetBoolInAny( aAny, bOpt );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) )
{
ScBreakType nBreak = pDoc->HasColBreak(nStartCol, nTab);
ScUnoHelpFunctions::SetBoolInAny( aAny, nBreak );
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
{
ScBreakType nBreak = pDoc->HasColBreak(nStartCol, nTab);
ScUnoHelpFunctions::SetBoolInAny( aAny, (nBreak & BREAK_MANUAL) );
2000-12-13 17:56:58 +00:00
}
return aAny;
}
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScTableColumnsObj )
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
ScTableRowsObj::ScTableRowsObj(ScDocShell* pDocSh, SCTAB nT, SCROW nSR, SCROW nER) :
2000-09-18 16:07:07 +00:00
pDocShell( pDocSh ),
nTab ( nT ),
nStartRow( nSR ),
nEndRow ( nER )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScTableRowsObj::~ScTableRowsObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScTableRowsObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
if ( rHint.ISA( ScUpdateRefHint ) )
{
//! Referenz-Update fuer Tab und Start/Ende
}
else if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XTableRows
ScTableRowObj* ScTableRowsObj::GetObjectByIndex_Impl(sal_Int32 nIndex) const
2000-09-18 16:07:07 +00:00
{
SCROW nRow = static_cast<SCROW>(nIndex) + nStartRow;
2000-09-18 16:07:07 +00:00
if ( pDocShell && nRow <= nEndRow )
return new ScTableRowObj( pDocShell, nRow, nTab );
return NULL; // falscher Index
}
void SAL_CALL ScTableRowsObj::insertByIndex( sal_Int32 nPosition, sal_Int32 nCount )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
if ( pDocShell && nCount > 0 && nPosition >= 0 && nStartRow+nPosition <= nEndRow &&
nStartRow+nPosition+nCount-1 <= MAXROW )
{
ScRange aRange( 0, (SCROW)(nStartRow+nPosition), nTab,
MAXCOL, (SCROW)(nStartRow+nPosition+nCount-1), nTab );
bDone = pDocShell->GetDocFunc().InsertCells( aRange, NULL, INS_INSROWS, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
void SAL_CALL ScTableRowsObj::removeByIndex( sal_Int32 nIndex, sal_Int32 nCount )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_Bool bDone = false;
2000-09-18 16:07:07 +00:00
// Der zu loeschende Bereich muss innerhalb des Objekts liegen
if ( pDocShell && nCount > 0 && nIndex >= 0 && nStartRow+nIndex+nCount-1 <= nEndRow )
{
ScRange aRange( 0, (SCROW)(nStartRow+nIndex), nTab,
MAXCOL, (SCROW)(nStartRow+nIndex+nCount-1), nTab );
bDone = pDocShell->GetDocFunc().DeleteCells( aRange, NULL, DEL_DELROWS, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
if (!bDone)
throw uno::RuntimeException(); // no other exceptions specified
}
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScTableRowsObj::createEnumeration()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
return new ScIndexEnumeration(this, rtl::OUString("com.sun.star.table.TableRowsEnumeration"));
2000-09-18 16:07:07 +00:00
}
// XIndexAccess
sal_Int32 SAL_CALL ScTableRowsObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return nEndRow - nStartRow + 1;
}
uno::Any SAL_CALL ScTableRowsObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<table::XCellRange> xRow(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xRow.is())
return uno::makeAny(xRow);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
}
uno::Type SAL_CALL ScTableRowsObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<table::XCellRange>*)0);
}
sal_Bool SAL_CALL ScTableRowsObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
2000-12-13 17:56:58 +00:00
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScTableRowsObj::getPropertySetInfo()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
static uno::Reference<beans::XPropertySetInfo> aRef(
new SfxItemPropertySetInfo( lcl_GetRowsPropertyMap() ));
2000-12-13 17:56:58 +00:00
return aRef;
}
void SAL_CALL ScTableRowsObj::setPropertyValue(
const rtl::OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-12-13 17:56:58 +00:00
if (!pDocShell)
throw uno::RuntimeException();
ScDocFunc& rFunc = pDocShell->GetDocFunc();
2000-12-13 17:56:58 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
SCCOLROW nRowArr[2];
2000-12-13 17:56:58 +00:00
nRowArr[0] = nStartRow;
nRowArr[1] = nEndRow;
String aNameString(aPropertyName);
2000-12-13 17:56:58 +00:00
CWS-TOOLING: integrate CWS dr70 2009-06-09 13:52:02 +0200 dr r272770 : #i101930# SXC import broken 2009-06-05 11:50:16 +0200 dr r272675 : #i10000# compiler warning 2009-06-05 11:24:39 +0200 dr r272674 : #i10000# compiler warning 2009-06-05 10:35:22 +0200 dr r272668 : #i10000# compiler warning 2009-06-04 16:53:32 +0200 dr r272646 : CWS-TOOLING: rebase CWS dr70 to trunk@272291 (milestone: DEV300:m49) 2009-06-04 14:50:45 +0200 dr r272633 : #i10000# compiler warning 2009-06-03 18:50:57 +0200 dr r272603 : #i101930# fix ODS export of uninit'ed notes, do not craete note captions in UpdatePendingRowHeights 2009-05-28 11:11:17 +0200 dr r272384 : #i101930# note captions must be created before changing row/column size 2009-05-27 15:48:44 +0200 iha r272356 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:46:44 +0200 iha r272355 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:06:58 +0200 iha r272349 : #i101928# superfluous paint calls while entering and editing charts 2009-05-27 15:01:08 +0200 iha r272348 : #i101928# superfluous paint calls while entering and editing charts 2009-05-26 14:43:39 +0200 dr r272303 : #i101930# import performance: invisible cell notes cache caption data 2009-05-22 18:44:19 +0200 dr r272205 : #i101930# preparations for uninitialized notes (performance), adapted ODF import filter 2009-05-14 19:50:43 +0200 dr r271918 : #i101930# 'recycle' the shapes already created while loading cell notes 2009-05-06 16:07:45 +0200 dr r271598 : #i100827# improve performance of HTML query filter, patch by mmeeks, slightly modified 2009-05-06 11:02:38 +0200 dr r271577 : #i100827# improve performance of HTML query filter, patch by mmeeks 2009-05-06 10:50:13 +0200 dr r271575 : #i86650# improve performance of HTML query filter 2009-05-05 10:09:44 +0200 nn r271502 : #i101428# better handling of non-existing view data 2009-04-29 16:42:57 +0200 nn r271384 : #i101428# after loading, update row heights per sheet on demand
2009-07-03 12:42:53 +00:00
if ( aNameString.EqualsAscii( SC_UNONAME_OHEIGHT ) )
{
sal_Int32 nNewHeight = 0;
if ( pDoc->IsImportingXML() && ( aValue >>= nNewHeight ) )
{
// used to set the stored row height for rows with optimal height when loading.
// TODO: It's probably cleaner to use a different property name
// for this.
pDoc->SetRowHeightOnly( nStartRow, nEndRow, nTab, (sal_uInt16)HMMToTwips(nNewHeight) );
CWS-TOOLING: integrate CWS dr70 2009-06-09 13:52:02 +0200 dr r272770 : #i101930# SXC import broken 2009-06-05 11:50:16 +0200 dr r272675 : #i10000# compiler warning 2009-06-05 11:24:39 +0200 dr r272674 : #i10000# compiler warning 2009-06-05 10:35:22 +0200 dr r272668 : #i10000# compiler warning 2009-06-04 16:53:32 +0200 dr r272646 : CWS-TOOLING: rebase CWS dr70 to trunk@272291 (milestone: DEV300:m49) 2009-06-04 14:50:45 +0200 dr r272633 : #i10000# compiler warning 2009-06-03 18:50:57 +0200 dr r272603 : #i101930# fix ODS export of uninit'ed notes, do not craete note captions in UpdatePendingRowHeights 2009-05-28 11:11:17 +0200 dr r272384 : #i101930# note captions must be created before changing row/column size 2009-05-27 15:48:44 +0200 iha r272356 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:46:44 +0200 iha r272355 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:06:58 +0200 iha r272349 : #i101928# superfluous paint calls while entering and editing charts 2009-05-27 15:01:08 +0200 iha r272348 : #i101928# superfluous paint calls while entering and editing charts 2009-05-26 14:43:39 +0200 dr r272303 : #i101930# import performance: invisible cell notes cache caption data 2009-05-22 18:44:19 +0200 dr r272205 : #i101930# preparations for uninitialized notes (performance), adapted ODF import filter 2009-05-14 19:50:43 +0200 dr r271918 : #i101930# 'recycle' the shapes already created while loading cell notes 2009-05-06 16:07:45 +0200 dr r271598 : #i100827# improve performance of HTML query filter, patch by mmeeks, slightly modified 2009-05-06 11:02:38 +0200 dr r271577 : #i100827# improve performance of HTML query filter, patch by mmeeks 2009-05-06 10:50:13 +0200 dr r271575 : #i86650# improve performance of HTML query filter 2009-05-05 10:09:44 +0200 nn r271502 : #i101428# better handling of non-existing view data 2009-04-29 16:42:57 +0200 nn r271384 : #i101428# after loading, update row heights per sheet on demand
2009-07-03 12:42:53 +00:00
}
else
{
sal_Bool bOpt = ScUnoHelpFunctions::GetBoolFromAny( aValue );
CWS-TOOLING: integrate CWS dr70 2009-06-09 13:52:02 +0200 dr r272770 : #i101930# SXC import broken 2009-06-05 11:50:16 +0200 dr r272675 : #i10000# compiler warning 2009-06-05 11:24:39 +0200 dr r272674 : #i10000# compiler warning 2009-06-05 10:35:22 +0200 dr r272668 : #i10000# compiler warning 2009-06-04 16:53:32 +0200 dr r272646 : CWS-TOOLING: rebase CWS dr70 to trunk@272291 (milestone: DEV300:m49) 2009-06-04 14:50:45 +0200 dr r272633 : #i10000# compiler warning 2009-06-03 18:50:57 +0200 dr r272603 : #i101930# fix ODS export of uninit'ed notes, do not craete note captions in UpdatePendingRowHeights 2009-05-28 11:11:17 +0200 dr r272384 : #i101930# note captions must be created before changing row/column size 2009-05-27 15:48:44 +0200 iha r272356 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:46:44 +0200 iha r272355 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:06:58 +0200 iha r272349 : #i101928# superfluous paint calls while entering and editing charts 2009-05-27 15:01:08 +0200 iha r272348 : #i101928# superfluous paint calls while entering and editing charts 2009-05-26 14:43:39 +0200 dr r272303 : #i101930# import performance: invisible cell notes cache caption data 2009-05-22 18:44:19 +0200 dr r272205 : #i101930# preparations for uninitialized notes (performance), adapted ODF import filter 2009-05-14 19:50:43 +0200 dr r271918 : #i101930# 'recycle' the shapes already created while loading cell notes 2009-05-06 16:07:45 +0200 dr r271598 : #i100827# improve performance of HTML query filter, patch by mmeeks, slightly modified 2009-05-06 11:02:38 +0200 dr r271577 : #i100827# improve performance of HTML query filter, patch by mmeeks 2009-05-06 10:50:13 +0200 dr r271575 : #i86650# improve performance of HTML query filter 2009-05-05 10:09:44 +0200 nn r271502 : #i101428# better handling of non-existing view data 2009-04-29 16:42:57 +0200 nn r271384 : #i101428# after loading, update row heights per sheet on demand
2009-07-03 12:42:53 +00:00
if (bOpt)
rFunc.SetWidthOrHeight( false, 1, nRowArr, nTab, SC_SIZE_OPTIMAL, 0, sal_True, sal_True );
CWS-TOOLING: integrate CWS dr70 2009-06-09 13:52:02 +0200 dr r272770 : #i101930# SXC import broken 2009-06-05 11:50:16 +0200 dr r272675 : #i10000# compiler warning 2009-06-05 11:24:39 +0200 dr r272674 : #i10000# compiler warning 2009-06-05 10:35:22 +0200 dr r272668 : #i10000# compiler warning 2009-06-04 16:53:32 +0200 dr r272646 : CWS-TOOLING: rebase CWS dr70 to trunk@272291 (milestone: DEV300:m49) 2009-06-04 14:50:45 +0200 dr r272633 : #i10000# compiler warning 2009-06-03 18:50:57 +0200 dr r272603 : #i101930# fix ODS export of uninit'ed notes, do not craete note captions in UpdatePendingRowHeights 2009-05-28 11:11:17 +0200 dr r272384 : #i101930# note captions must be created before changing row/column size 2009-05-27 15:48:44 +0200 iha r272356 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:46:44 +0200 iha r272355 : #i101925# metafile creation is requested superfluously during inplace editing 2009-05-27 15:06:58 +0200 iha r272349 : #i101928# superfluous paint calls while entering and editing charts 2009-05-27 15:01:08 +0200 iha r272348 : #i101928# superfluous paint calls while entering and editing charts 2009-05-26 14:43:39 +0200 dr r272303 : #i101930# import performance: invisible cell notes cache caption data 2009-05-22 18:44:19 +0200 dr r272205 : #i101930# preparations for uninitialized notes (performance), adapted ODF import filter 2009-05-14 19:50:43 +0200 dr r271918 : #i101930# 'recycle' the shapes already created while loading cell notes 2009-05-06 16:07:45 +0200 dr r271598 : #i100827# improve performance of HTML query filter, patch by mmeeks, slightly modified 2009-05-06 11:02:38 +0200 dr r271577 : #i100827# improve performance of HTML query filter, patch by mmeeks 2009-05-06 10:50:13 +0200 dr r271575 : #i86650# improve performance of HTML query filter 2009-05-05 10:09:44 +0200 nn r271502 : #i101428# better handling of non-existing view data 2009-04-29 16:42:57 +0200 nn r271384 : #i101428# after loading, update row heights per sheet on demand
2009-07-03 12:42:53 +00:00
else
{
//! manually set old heights again?
}
}
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLHGT ) )
2000-12-13 17:56:58 +00:00
{
sal_Int32 nNewHeight = 0;
2000-12-13 17:56:58 +00:00
if ( aValue >>= nNewHeight )
{
if (pDoc->IsImportingXML())
{
// TODO: This is a band-aid fix. Eventually we need to
// re-work ods' style import to get it to set styles to
// ScDocument directly.
pDoc->SetRowHeightOnly( nStartRow, nEndRow, nTab, (sal_uInt16)HMMToTwips(nNewHeight) );
pDoc->SetManualHeight( nStartRow, nEndRow, nTab, true );
}
else
rFunc.SetWidthOrHeight( false, 1, nRowArr, nTab, SC_SIZE_ORIGINAL,
(sal_uInt16)HMMToTwips(nNewHeight), sal_True, sal_True );
}
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
{
sal_Bool bVis = ScUnoHelpFunctions::GetBoolFromAny( aValue );
2000-12-13 17:56:58 +00:00
ScSizeMode eMode = bVis ? SC_SIZE_SHOW : SC_SIZE_DIRECT;
rFunc.SetWidthOrHeight( false, 1, nRowArr, nTab, eMode, 0, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
// SC_SIZE_DIRECT with size 0: hide
}
else if ( aNameString.EqualsAscii( SC_UNONAME_VISFLAG ) )
{
// #i116460# Shortcut to only set the flag, without drawing layer update etc.
// Should only be used from import filters.
pDoc->SetRowHidden(nStartRow, nEndRow, nTab, !ScUnoHelpFunctions::GetBoolFromAny( aValue ));
}
2000-12-13 17:56:58 +00:00
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLFILT ) )
{
//! undo etc.
if (ScUnoHelpFunctions::GetBoolFromAny( aValue ))
pDoc->SetRowFiltered(nStartRow, nEndRow, nTab, true);
else
pDoc->SetRowFiltered(nStartRow, nEndRow, nTab, false);
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE) || aNameString.EqualsAscii( SC_UNONAME_MANPAGE) )
{
//! single function to set/remove all breaks?
sal_Bool bSet = ScUnoHelpFunctions::GetBoolFromAny( aValue );
for (SCROW nRow=nStartRow; nRow<=nEndRow; nRow++)
2000-12-13 17:56:58 +00:00
if (bSet)
rFunc.InsertPageBreak( false, ScAddress(0,nRow,nTab), sal_True, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
else
rFunc.RemovePageBreak( false, ScAddress(0,nRow,nTab), sal_True, sal_True, sal_True );
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLBACK ) || aNameString.EqualsAscii( SC_UNONAME_CELLTRAN ) )
{
// #i57867# Background color is specified for row styles in the file format,
// so it has to be supported along with the row properties (import only).
// Use ScCellRangeObj to set the property for all cells in the rows
// (this means, the "row attribute" must be set before individual cell attributes).
ScRange aRange( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab );
uno::Reference<beans::XPropertySet> xRangeObj = new ScCellRangeObj( pDocShell, aRange );
xRangeObj->setPropertyValue( aPropertyName, aValue );
}
2000-12-13 17:56:58 +00:00
}
uno::Any SAL_CALL ScTableRowsObj::getPropertyValue( const rtl::OUString& aPropertyName )
throw(beans::UnknownPropertyException, lang::WrappedTargetException,
uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-12-13 17:56:58 +00:00
if (!pDocShell)
throw uno::RuntimeException();
ScDocument* pDoc = pDocShell->GetDocument();
String aNameString(aPropertyName);
2000-12-13 17:56:58 +00:00
uno::Any aAny;
//! loop over all rows for current state?
if ( aNameString.EqualsAscii( SC_UNONAME_CELLHGT ) )
{
// for hidden row, return original height
sal_uInt16 nHeight = pDoc->GetOriginalHeight( nStartRow, nTab );
2000-12-13 17:56:58 +00:00
aAny <<= (sal_Int32)TwipsToHMM(nHeight);
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLVIS ) )
{
SCROW nLastRow;
bool bVis = !pDoc->RowHidden(nStartRow, nTab, NULL, &nLastRow);
2000-12-13 17:56:58 +00:00
ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLFILT ) )
{
bool bVis = pDoc->RowFiltered(nStartRow, nTab);
2000-12-13 17:56:58 +00:00
ScUnoHelpFunctions::SetBoolInAny( aAny, bVis );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_OHEIGHT ) )
{
sal_Bool bOpt = !(pDoc->GetRowFlags( nStartRow, nTab ) & CR_MANUALSIZE);
2000-12-13 17:56:58 +00:00
ScUnoHelpFunctions::SetBoolInAny( aAny, bOpt );
}
else if ( aNameString.EqualsAscii( SC_UNONAME_NEWPAGE ) )
{
ScBreakType nBreak = pDoc->HasRowBreak(nStartRow, nTab);
ScUnoHelpFunctions::SetBoolInAny( aAny, nBreak );
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_MANPAGE ) )
{
ScBreakType nBreak = pDoc->HasRowBreak(nStartRow, nTab);
ScUnoHelpFunctions::SetBoolInAny( aAny, (nBreak & BREAK_MANUAL) );
2000-12-13 17:56:58 +00:00
}
else if ( aNameString.EqualsAscii( SC_UNONAME_CELLBACK ) || aNameString.EqualsAscii( SC_UNONAME_CELLTRAN ) )
{
// Use ScCellRangeObj to get the property from the cell range
// (for completeness only, this is not used by the XML filter).
ScRange aRange( 0, nStartRow, nTab, MAXCOL, nEndRow, nTab );
uno::Reference<beans::XPropertySet> xRangeObj = new ScCellRangeObj( pDocShell, aRange );
aAny = xRangeObj->getPropertyValue( aPropertyName );
}
2000-12-13 17:56:58 +00:00
return aAny;
}
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScTableRowsObj )
2000-09-18 16:07:07 +00:00
//------------------------------------------------------------------------
ScSpreadsheetSettingsObj::~ScSpreadsheetSettingsObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScSpreadsheetSettingsObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
// Referenz-Update interessiert hier nicht
if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScSpreadsheetSettingsObj::getPropertySetInfo()
throw(uno::RuntimeException)
{
//! muss noch
return NULL;
}
void SAL_CALL ScSpreadsheetSettingsObj::setPropertyValue(
const rtl::OUString& /* aPropertyName */, const uno::Any& /* aValue */ )
2000-09-18 16:07:07 +00:00
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException)
{
//! muss noch
}
uno::Any SAL_CALL ScSpreadsheetSettingsObj::getPropertyValue( const rtl::OUString& /* aPropertyName */ )
2000-09-18 16:07:07 +00:00
throw(beans::UnknownPropertyException, lang::WrappedTargetException,
uno::RuntimeException)
{
//! muss noch
return uno::Any();
}
SC_IMPL_DUMMY_PROPERTY_LISTENER( ScSpreadsheetSettingsObj )
//------------------------------------------------------------------------
ScAnnotationsObj::ScAnnotationsObj(ScDocShell* pDocSh, SCTAB nT) :
2000-09-18 16:07:07 +00:00
pDocShell( pDocSh ),
nTab( nT )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScAnnotationsObj::~ScAnnotationsObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScAnnotationsObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
//! nTab bei Referenz-Update anpassen!!!
if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
bool ScAnnotationsObj::GetAddressByIndex_Impl( sal_Int32 nIndex, ScAddress& rPos ) const
2000-09-18 16:07:07 +00:00
{
if (pDocShell)
{
sal_Int32 nFound = 0;
2000-09-18 16:07:07 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
2012-02-23 23:36:49 +01:00
const ScNotes* pNotes = pDoc->GetNotes(nTab);
for (ScNotes::const_iterator itr = pNotes->begin(); itr != pNotes->end(); ++itr)
2000-09-18 16:07:07 +00:00
{
2012-02-23 23:36:49 +01:00
if (nFound == nIndex)
2000-09-18 16:07:07 +00:00
{
2012-02-23 23:36:49 +01:00
rPos = ScAddress( itr->first.first, itr->first.second, nTab );
return true;
2000-09-18 16:07:07 +00:00
}
2012-02-23 23:36:49 +01:00
++nFound;
2000-09-18 16:07:07 +00:00
}
}
return false;
2000-09-18 16:07:07 +00:00
}
ScAnnotationObj* ScAnnotationsObj::GetObjectByIndex_Impl( sal_Int32 nIndex ) const
2000-09-18 16:07:07 +00:00
{
if (pDocShell)
{
ScAddress aPos;
if ( GetAddressByIndex_Impl( nIndex, aPos ) )
return new ScAnnotationObj( pDocShell, aPos );
}
return NULL;
}
// XSheetAnnotations
void SAL_CALL ScAnnotationsObj::insertNew(
const table::CellAddress& aPosition, const ::rtl::OUString& rText )
2000-09-18 16:07:07 +00:00
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
OSL_ENSURE( aPosition.Sheet == nTab, "addAnnotation mit falschem Sheet" );
ScAddress aPos( (SCCOL)aPosition.Column, (SCROW)aPosition.Row, nTab );
pDocShell->GetDocFunc().ReplaceNote( aPos, rText, 0, 0, sal_True );
2000-09-18 16:07:07 +00:00
}
}
void SAL_CALL ScAnnotationsObj::removeByIndex( sal_Int32 nIndex ) throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
ScAddress aPos;
if ( GetAddressByIndex_Impl( nIndex, aPos ) )
{
ScMarkData aMarkData;
aMarkData.SelectTable( aPos.Tab(), sal_True );
2000-09-18 16:07:07 +00:00
aMarkData.SetMultiMarkArea( ScRange(aPos) );
pDocShell->GetDocFunc().DeleteContents( aMarkData, IDF_NOTE, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
}
}
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScAnnotationsObj::createEnumeration()
throw(uno::RuntimeException)
{
//! iterate directly (more efficiently)?
SolarMutexGuard aGuard;
return new ScIndexEnumeration(this, rtl::OUString("com.sun.star.sheet.CellAnnotationsEnumeration"));
2000-09-18 16:07:07 +00:00
}
// XIndexAccess
sal_Int32 SAL_CALL ScAnnotationsObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
sal_uLong nCount = 0;
2000-09-18 16:07:07 +00:00
if (pDocShell)
{
2012-02-23 23:36:49 +01:00
ScDocument* pDoc = pDocShell->GetDocument();
nCount = pDoc->GetNotes(nTab)->size();
2000-09-18 16:07:07 +00:00
}
return nCount;
}
uno::Any SAL_CALL ScAnnotationsObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<sheet::XSheetAnnotation> xAnnotation(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xAnnotation.is())
return uno::makeAny(xAnnotation);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
}
uno::Type SAL_CALL ScAnnotationsObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<sheet::XSheetAnnotation>*)0);
}
sal_Bool SAL_CALL ScAnnotationsObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
//------------------------------------------------------------------------
ScScenariosObj::ScScenariosObj(ScDocShell* pDocSh, SCTAB nT) :
2000-09-18 16:07:07 +00:00
pDocShell( pDocSh ),
nTab ( nT )
{
pDocShell->GetDocument()->AddUnoObject(*this);
}
ScScenariosObj::~ScScenariosObj()
{
if (pDocShell)
pDocShell->GetDocument()->RemoveUnoObject(*this);
}
void ScScenariosObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
2000-09-18 16:07:07 +00:00
{
if ( rHint.ISA( ScUpdateRefHint ) )
{
//! Referenz-Update fuer Tab und Start/Ende
}
else if ( rHint.ISA( SfxSimpleHint ) &&
((const SfxSimpleHint&)rHint).GetId() == SFX_HINT_DYING )
{
pDocShell = NULL; // ungueltig geworden
}
}
// XScenarios
sal_Bool ScScenariosObj::GetScenarioIndex_Impl( const rtl::OUString& rName, SCTAB& rIndex )
2000-09-18 16:07:07 +00:00
{
//! Case-insensitiv ????
if ( pDocShell )
{
2011-08-26 19:33:59 -04:00
rtl::OUString aTabName;
2000-09-18 16:07:07 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
SCTAB nCount = (SCTAB)getCount();
for (SCTAB i=0; i<nCount; i++)
2000-09-18 16:07:07 +00:00
if (pDoc->GetName( nTab+i+1, aTabName ))
2011-08-26 19:33:59 -04:00
if (aTabName.equals(rName))
2000-09-18 16:07:07 +00:00
{
rIndex = i;
return sal_True;
2000-09-18 16:07:07 +00:00
}
}
return false;
2000-09-18 16:07:07 +00:00
}
ScTableSheetObj* ScScenariosObj::GetObjectByIndex_Impl(sal_Int32 nIndex)
2000-09-18 16:07:07 +00:00
{
sal_uInt16 nCount = (sal_uInt16)getCount();
if ( pDocShell && nIndex >= 0 && nIndex < nCount )
return new ScTableSheetObj( pDocShell, nTab+static_cast<SCTAB>(nIndex)+1 );
2000-09-18 16:07:07 +00:00
return NULL; // kein Dokument oder falscher Index
}
ScTableSheetObj* ScScenariosObj::GetObjectByName_Impl(const rtl::OUString& aName)
{
SCTAB nIndex;
2000-09-18 16:07:07 +00:00
if ( pDocShell && GetScenarioIndex_Impl( aName, nIndex ) )
return new ScTableSheetObj( pDocShell, nTab+nIndex+1 );
return NULL; // nicht gefunden
}
void SAL_CALL ScScenariosObj::addNewByName( const rtl::OUString& aName,
const uno::Sequence<table::CellRangeAddress>& aRanges,
const rtl::OUString& aComment )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
if ( pDocShell )
{
ScMarkData aMarkData;
aMarkData.SelectTable( nTab, sal_True );
2000-09-18 16:07:07 +00:00
sal_uInt16 nRangeCount = (sal_uInt16)aRanges.getLength();
2000-09-18 16:07:07 +00:00
if (nRangeCount)
{
const table::CellRangeAddress* pAry = aRanges.getConstArray();
for (sal_uInt16 i=0; i<nRangeCount; i++)
2000-09-18 16:07:07 +00:00
{
OSL_ENSURE( pAry[i].Sheet == nTab, "addScenario mit falscher Tab" );
ScRange aRange( (SCCOL)pAry[i].StartColumn, (SCROW)pAry[i].StartRow, nTab,
(SCCOL)pAry[i].EndColumn, (SCROW)pAry[i].EndRow, nTab );
2000-09-18 16:07:07 +00:00
aMarkData.SetMultiMarkArea( aRange );
}
}
String aNameStr(aName);
String aCommStr(aComment);
2000-09-18 16:07:07 +00:00
Color aColor( COL_LIGHTGRAY ); // Default
sal_uInt16 nFlags = SC_SCENARIO_SHOWFRAME | SC_SCENARIO_PRINTFRAME | SC_SCENARIO_TWOWAY | SC_SCENARIO_PROTECT;
2000-09-18 16:07:07 +00:00
pDocShell->MakeScenario( nTab, aNameStr, aCommStr, aColor, nFlags, aMarkData );
}
}
void SAL_CALL ScScenariosObj::removeByName( const rtl::OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCTAB nIndex;
2000-09-18 16:07:07 +00:00
if ( pDocShell && GetScenarioIndex_Impl( aName, nIndex ) )
pDocShell->GetDocFunc().DeleteTable( nTab+nIndex+1, sal_True, sal_True );
2000-09-18 16:07:07 +00:00
}
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScScenariosObj::createEnumeration()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
return new ScIndexEnumeration(this, rtl::OUString("com.sun.star.sheet.ScenariosEnumeration"));
2000-09-18 16:07:07 +00:00
}
// XIndexAccess
sal_Int32 SAL_CALL ScScenariosObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCTAB nCount = 0;
2000-09-18 16:07:07 +00:00
if ( pDocShell )
{
ScDocument* pDoc = pDocShell->GetDocument();
if (!pDoc->IsScenario(nTab))
{
SCTAB nTabCount = pDoc->GetTableCount();
SCTAB nNext = nTab + 1;
2000-09-18 16:07:07 +00:00
while (nNext < nTabCount && pDoc->IsScenario(nNext))
{
++nCount;
++nNext;
}
}
}
return nCount;
}
uno::Any SAL_CALL ScScenariosObj::getByIndex( sal_Int32 nIndex )
throw(lang::IndexOutOfBoundsException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<sheet::XScenario> xScen(GetObjectByIndex_Impl(nIndex));
2000-09-18 16:07:07 +00:00
if (xScen.is())
return uno::makeAny(xScen);
2000-09-18 16:07:07 +00:00
else
throw lang::IndexOutOfBoundsException();
}
uno::Type SAL_CALL ScScenariosObj::getElementType() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return getCppuType((uno::Reference<sheet::XScenario>*)0);
}
sal_Bool SAL_CALL ScScenariosObj::hasElements() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
2000-09-18 16:07:07 +00:00
return ( getCount() != 0 );
}
uno::Any SAL_CALL ScScenariosObj::getByName( const rtl::OUString& aName )
throw(container::NoSuchElementException,
lang::WrappedTargetException, uno::RuntimeException)
{
SolarMutexGuard aGuard;
uno::Reference<sheet::XScenario> xScen(GetObjectByName_Impl(aName));
2000-09-18 16:07:07 +00:00
if (xScen.is())
return uno::makeAny(xScen);
2000-09-18 16:07:07 +00:00
else
throw container::NoSuchElementException();
}
uno::Sequence<rtl::OUString> SAL_CALL ScScenariosObj::getElementNames()
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCTAB nCount = (SCTAB)getCount();
2000-09-18 16:07:07 +00:00
uno::Sequence<rtl::OUString> aSeq(nCount);
if ( pDocShell ) // sonst ist auch Count = 0
{
2011-08-26 19:33:59 -04:00
rtl::OUString aTabName;
2000-09-18 16:07:07 +00:00
ScDocument* pDoc = pDocShell->GetDocument();
rtl::OUString* pAry = aSeq.getArray();
for (SCTAB i=0; i<nCount; i++)
2000-09-18 16:07:07 +00:00
if (pDoc->GetName( nTab+i+1, aTabName ))
pAry[i] = aTabName;
}
return aSeq;
}
sal_Bool SAL_CALL ScScenariosObj::hasByName( const rtl::OUString& aName )
throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
SCTAB nIndex;
2000-09-18 16:07:07 +00:00
return GetScenarioIndex_Impl( aName, nIndex );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */