diff options
author | Philipp Lohmann [pl] <Philipp.Lohmann@Sun.COM> | 2010-01-14 19:11:13 +0100 |
---|---|---|
committer | Philipp Lohmann [pl] <Philipp.Lohmann@Sun.COM> | 2010-01-14 19:11:13 +0100 |
commit | 7d3f9d117854eecde1f6627cc1656353be46a7ca (patch) | |
tree | f90344f1fe8dfd968f40882ed4b356c59fc29b9c /sw/source/ui | |
parent | 680ebbec1520b6df42264a450932d779edc07c3c (diff) | |
parent | 3a66e8444c9086c53a27159a1a0edad3b6e85ff5 (diff) |
rebase to DEV300_m69
Diffstat (limited to 'sw/source/ui')
308 files changed, 13729 insertions, 802 deletions
diff --git a/sw/source/ui/app/app.src b/sw/source/ui/app/app.src index 961e8bdc57a0..e217bd06bf67 100644 --- a/sw/source/ui/app/app.src +++ b/sw/source/ui/app/app.src @@ -30,7 +30,7 @@ -#include <svtools/style.hrc> +#include <svl/style.hrc> #include <sfx2/sfx.hrc> #include <svx/dialogs.hrc> #include <svx/globlmn.hrc> diff --git a/sw/source/ui/app/apphdl.cxx b/sw/source/ui/app/apphdl.cxx index 7fe0d349e8a7..2d4615bba585 100644 --- a/sw/source/ui/app/apphdl.cxx +++ b/sw/source/ui/app/apphdl.cxx @@ -37,10 +37,10 @@ #include <tools/link.hxx> #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/undoopt.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/svstdarr.hxx> +#include <svl/urihelper.hxx> +#include <unotools/undoopt.hxx> +#include <unotools/pathoptions.hxx> #include <svtools/accessibilityoptions.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/event.hxx> @@ -48,15 +48,15 @@ #include <svx/dataaccessdescriptor.hxx> #include <svx/srchitem.hxx> #include <svtools/colorcfg.hxx> -#include <svtools/eitem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/isethint.hxx> +#include <svl/eitem.hxx> +#include <svl/whiter.hxx> +#include <svl/isethint.hxx> #include <svx/hyprlink.hxx> #include <sfx2/request.hxx> #include <sfx2/fcontnr.hxx> -#include <svtools/stritem.hxx> -#include <svtools/ctloptions.hxx> -#include <svtools/useroptions.hxx> +#include <svl/stritem.hxx> +#include <svl/ctloptions.hxx> +#include <unotools/useroptions.hxx> #include <vcl/msgbox.hxx> #include <vcl/wrkwin.hxx> #include <svx/insctrl.hxx> @@ -753,82 +753,8 @@ void SwModule::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) } else if(rHint.ISA(SfxSimpleHint)) { - ULONG nHintId = ((SfxSimpleHint&)rHint).GetId(); - if(SFX_HINT_COLORS_CHANGED == nHintId || - SFX_HINT_ACCESSIBILITY_CHANGED == nHintId ) - { - sal_Bool bAccessibility = sal_False; - if(SFX_HINT_COLORS_CHANGED == nHintId) - SwViewOption::ApplyColorConfigValues(*pColorConfig); - else - bAccessibility = sal_True; - - //invalidate all edit windows - const TypeId aSwViewTypeId = TYPE(SwView); - const TypeId aSwPreViewTypeId = TYPE(SwPagePreView); - const TypeId aSwSrcViewTypeId = TYPE(SwSrcView); - SfxViewShell* pViewShell = SfxViewShell::GetFirst(); - while(pViewShell) - { - if(pViewShell->GetWindow()) - { - if((pViewShell->IsA(aSwViewTypeId) || - pViewShell->IsA(aSwPreViewTypeId) || - pViewShell->IsA(aSwSrcViewTypeId))) - { - if(bAccessibility) - { - if(pViewShell->IsA(aSwViewTypeId)) - ((SwView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); - else if(pViewShell->IsA(aSwPreViewTypeId)) - ((SwPagePreView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); - } - pViewShell->GetWindow()->Invalidate(); - } - } - pViewShell = SfxViewShell::GetNext( *pViewShell ); - } - } - else if( SFX_HINT_CTL_SETTINGS_CHANGED == nHintId ) - { - const SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); - while( pObjSh ) - { - if( pObjSh->IsA(TYPE(SwDocShell)) ) - { - const SwDoc* pDoc = ((SwDocShell*)pObjSh)->GetDoc(); - ViewShell* pVSh = 0; - pDoc->GetEditShell( &pVSh ); - if ( pVSh ) - pVSh->ChgNumberDigits(); - } - pObjSh = SfxObjectShell::GetNext(*pObjSh); - } - } - else if(SFX_HINT_USER_OPTIONS_CHANGED == nHintId) - { - bAuthorInitialised = FALSE; - } - else if(SFX_HINT_UNDO_OPTIONS_CHANGED == nHintId) - { - const int nNew = GetUndoOptions().GetUndoCount(); - const int nOld = SwEditShell::GetUndoActionCount(); - if(!nNew || !nOld) - { - sal_Bool bUndo = nNew != 0; - //ueber DocShells iterieren und Undo umschalten - - TypeId aType(TYPE(SwDocShell)); - SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType); - while( pDocShell ) - { - pDocShell->GetDoc()->DoUndo( bUndo ); - pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType); - } - } - SwEditShell::SetUndoActionCount( static_cast< USHORT >(nNew)); - } - else if(SFX_HINT_DEINITIALIZING == nHintId) + USHORT nHintId = ((SfxSimpleHint&)rHint).GetId(); + if(SFX_HINT_DEINITIALIZING == nHintId) { DELETEZ(pWebUsrPref); DELETEZ(pUsrPref) ; @@ -842,20 +768,98 @@ void SwModule::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) DELETEZ(pWebToolbarConfig) ; DELETEZ(pAuthorNames) ; DELETEZ(pDBConfig); - EndListening(*pColorConfig); + pColorConfig->RemoveListener(this); DELETEZ(pColorConfig); - EndListening(*pAccessibilityOptions); + pAccessibilityOptions->RemoveListener(this); DELETEZ(pAccessibilityOptions); - EndListening(*pCTLOptions); + pCTLOptions->RemoveListener(this); DELETEZ(pCTLOptions); - EndListening(*pUserOptions); + pUserOptions->RemoveListener(this); DELETEZ(pUserOptions); - EndListening(*pUndoOptions); + pUndoOptions->RemoveListener(this); DELETEZ(pUndoOptions); } } } +void SwModule::ConfigurationChanged( utl::ConfigurationBroadcaster* pBrdCst, sal_uInt32 ) +{ + if( pBrdCst == pUserOptions ) + { + bAuthorInitialised = FALSE; + } + else if( pBrdCst == pUndoOptions ) + { + const int nNew = GetUndoOptions().GetUndoCount(); + const int nOld = SwEditShell::GetUndoActionCount(); + if(!nNew || !nOld) + { + sal_Bool bUndo = nNew != 0; + //ueber DocShells iterieren und Undo umschalten + + TypeId aType(TYPE(SwDocShell)); + SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType); + while( pDocShell ) + { + pDocShell->GetDoc()->DoUndo( bUndo ); + pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType); + } + } + SwEditShell::SetUndoActionCount( static_cast< USHORT >(nNew)); + } + else if ( pBrdCst == pColorConfig || pBrdCst == pAccessibilityOptions ) + { + sal_Bool bAccessibility = sal_False; + if( pBrdCst == pColorConfig ) + SwViewOption::ApplyColorConfigValues(*pColorConfig); + else + bAccessibility = sal_True; + + //invalidate all edit windows + const TypeId aSwViewTypeId = TYPE(SwView); + const TypeId aSwPreViewTypeId = TYPE(SwPagePreView); + const TypeId aSwSrcViewTypeId = TYPE(SwSrcView); + SfxViewShell* pViewShell = SfxViewShell::GetFirst(); + while(pViewShell) + { + if(pViewShell->GetWindow()) + { + if((pViewShell->IsA(aSwViewTypeId) || + pViewShell->IsA(aSwPreViewTypeId) || + pViewShell->IsA(aSwSrcViewTypeId))) + { + if(bAccessibility) + { + if(pViewShell->IsA(aSwViewTypeId)) + ((SwView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); + else if(pViewShell->IsA(aSwPreViewTypeId)) + ((SwPagePreView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); + } + pViewShell->GetWindow()->Invalidate(); + } + } + pViewShell = SfxViewShell::GetNext( *pViewShell ); + } + } + else if( pBrdCst == pCTLOptions ) + { + const SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); + while( pObjSh ) + { + if( pObjSh->IsA(TYPE(SwDocShell)) ) + { + const SwDoc* pDoc = ((SwDocShell*)pObjSh)->GetDoc(); + ViewShell* pVSh = 0; + pDoc->GetEditShell( &pVSh ); + if ( pVSh ) + pVSh->ChgNumberDigits(); + } + pObjSh = SfxObjectShell::GetNext(*pObjSh); + } + } + +} + /* -----------------------------20.02.01 12:43-------------------------------- ---------------------------------------------------------------------------*/ @@ -874,7 +878,7 @@ svtools::ColorConfig& SwModule::GetColorConfig() { pColorConfig = new svtools::ColorConfig; SwViewOption::ApplyColorConfigValues(*pColorConfig); - StartListening(*pColorConfig); + pColorConfig->AddListener(this); } return *pColorConfig; } @@ -886,7 +890,7 @@ SvtAccessibilityOptions& SwModule::GetAccessibilityOptions() if(!pAccessibilityOptions) { pAccessibilityOptions = new SvtAccessibilityOptions; - StartListening(*pAccessibilityOptions); + pAccessibilityOptions->AddListener(this); } return *pAccessibilityOptions; } @@ -898,7 +902,7 @@ SvtCTLOptions& SwModule::GetCTLOptions() if(!pCTLOptions) { pCTLOptions = new SvtCTLOptions; - StartListening(*pCTLOptions); + pCTLOptions->AddListener(this); } return *pCTLOptions; } @@ -910,7 +914,7 @@ SvtUserOptions& SwModule::GetUserOptions() if(!pUserOptions) { pUserOptions = new SvtUserOptions; - StartListening(*pUserOptions); + pUserOptions->AddListener(this); } return *pUserOptions; } @@ -922,7 +926,7 @@ SvtUndoOptions& SwModule::GetUndoOptions() if(!pUndoOptions) { pUndoOptions = new SvtUndoOptions; - StartListening(*pUndoOptions); + pUndoOptions->AddListener(this); } return *pUndoOptions; } diff --git a/sw/source/ui/app/appopt.cxx b/sw/source/ui/app/appopt.cxx index 7698fe58c580..9f04942e04bf 100644 --- a/sw/source/ui/app/appopt.cxx +++ b/sw/source/ui/app/appopt.cxx @@ -38,12 +38,12 @@ #include <com/sun/star/i18n/ScriptType.hpp> #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/request.hxx> #include <sfx2/app.hxx> #include <sfx2/printer.hxx> @@ -87,14 +87,14 @@ #include <glosdoc.hxx> #include <uiitems.hxx> #include <svx/langitem.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <svx/unolingu.hxx> #ifndef _GLOBALS_HRC #include <globals.hrc> #endif #include <globals.h> // globale Konstanten z.B. -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include "swabstdlg.hxx" #include <swwrtshitem.hxx> @@ -151,7 +151,7 @@ SfxItemSet* SwModule::CreateItemSet( USHORT nId ) SID_ATTR_LANGUAGE, SID_ATTR_LANGUAGE, SID_ATTR_CHAR_CJK_LANGUAGE, SID_ATTR_CHAR_CJK_LANGUAGE, SID_ATTR_CHAR_CTL_LANGUAGE, SID_ATTR_CHAR_CTL_LANGUAGE, -#ifndef PRODUCT +#ifdef DBG_UTIL FN_PARAM_SWTEST, FN_PARAM_SWTEST, #endif 0); @@ -285,7 +285,7 @@ SfxItemSet* SwModule::CreateItemSet( USHORT nId ) pRet->Put(SvxBrushItem(aViewOpt.GetRetoucheColor(), RES_BACKGROUND)); } -#ifndef PRODUCT +#ifdef DBG_UTIL /*-----------------01.02.97 13.02------------------- Test-Optionen --------------------------------------------------*/ @@ -491,7 +491,7 @@ void SwModule::ApplyItemSet( USHORT nId, const SfxItemSet& rSet ) } -#ifndef PRODUCT +#ifdef DBG_UTIL /*-------------------------------------------------------------------------- Writer Testseite auswerten ----------------------------------------------------------------------------*/ @@ -614,7 +614,7 @@ SfxTabPage* SwModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItemS } } break; -#ifndef PRODUCT +#ifdef DBG_UTIL case RID_SW_TP_OPTTEST_PAGE: { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); diff --git a/sw/source/ui/app/docsh.cxx b/sw/source/ui/app/docsh.cxx index 06289c10f38a..8a119ddd5140 100644 --- a/sw/source/ui/app/docsh.cxx +++ b/sw/source/ui/app/docsh.cxx @@ -38,16 +38,15 @@ #include <vcl/wrkwin.hxx> #include <vcl/jobset.hxx> #include <tools/urlobj.hxx> -#include <svtools/whiter.hxx> -#include <svtools/zforlist.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/whiter.hxx> +#include <svl/zforlist.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <svx/adjitem.hxx> #include <basic/sbx.hxx> -#include <svtools/moduleoptions.hxx> -#include <sfx2/app.hxx> +#include <unotools/moduleoptions.hxx> +#include <unotools/misccfg.hxx> #include <sfx2/request.hxx> -#include <svtools/misccfg.hxx> #include <sfx2/passwd.hxx> #include <sfx2/bindings.hxx> #include <sfx2/docfile.hxx> @@ -58,7 +57,6 @@ #include <svx/srchitem.hxx> #include <svx/flstitem.hxx> #include <svx/htmlmode.hxx> -#include <svx/svxmsbas.hxx> #include <svtools/soerr.hxx> #include <sot/clsids.hxx> #include <basic/basmgr.hxx> @@ -111,8 +109,8 @@ #include "warnpassword.hxx" #include <cfgid.h> -#include <svtools/moduleoptions.hxx> -#include <svtools/fltrcfg.hxx> +#include <unotools/moduleoptions.hxx> +#include <unotools/fltrcfg.hxx> #include <svx/htmlcfg.hxx> #include <sfx2/fcontnr.hxx> #include <sfx2/objface.hxx> @@ -382,8 +380,7 @@ BOOL SwDocShell::Save() //SvxImportMSVBasic aTmp( *this, pIo->GetStorage() ); //aTmp.SaveOrDelMSVBAStorage( FALSE, aEmptyStr ); if( SvtFilterOptions::Get()->IsLoadWordBasicStorage() ) - nVBWarning = SvxImportMSVBasic:: - GetSaveWarningOfMSVBAStorage( *this ); + nVBWarning = GetSaveWarningOfMSVBAStorage( (SfxObjectShell&) (*this) ); pDoc->SetContainsMSVBasic( FALSE ); } @@ -501,8 +498,7 @@ sal_Bool SwDocShell::SaveAs( SfxMedium& rMedium ) //SvxImportMSVBasic aTmp( *this, pIo->GetStorage() ); //aTmp.SaveOrDelMSVBAStorage( FALSE, aEmptyStr ); if( SvtFilterOptions::Get()->IsLoadWordBasicStorage() ) - nVBWarning = SvxImportMSVBasic:: - GetSaveWarningOfMSVBAStorage( *this ); + nVBWarning = GetSaveWarningOfMSVBAStorage( (SfxObjectShell&) *this ); pDoc->SetContainsMSVBasic( FALSE ); } @@ -599,8 +595,7 @@ BOOL SwDocShell::ConvertTo( SfxMedium& rMedium ) DBG_ASSERT( !xStg->GetError(), "No storage available for storing VBA macros!" ); if ( !xStg->GetError() ) { - SvxImportMSVBasic aTmp( *this, *xStg ); - nVBWarning = aTmp.SaveOrDelMSVBAStorage( bSave, String::CreateFromAscii("Macros") ); + nVBWarning = SaveOrDelMSVBAStorage( (SfxObjectShell&) *this, *xStg, bSave, String::CreateFromAscii("Macros") ); xStg->Commit(); pDoc->SetContainsMSVBasic( TRUE ); } @@ -1134,7 +1129,7 @@ void SwDocShell::GetState(SfxItemSet& rSet) rSet.Put( SfxUInt16Item( nWhich, static_cast< sal_uInt16 >( pFmtr ? pFmtr->GetYear2000() - : SFX_APP()->GetMiscConfig()->GetYear2000() ))); + : ::utl::MiscCfg().GetYear2000() ))); } break; case SID_ATTR_CHAR_FONTLIST: diff --git a/sw/source/ui/app/docsh2.cxx b/sw/source/ui/app/docsh2.cxx index 3fd1e879b063..84c2ae9b9a95 100644 --- a/sw/source/ui/app/docsh2.cxx +++ b/sw/source/ui/app/docsh2.cxx @@ -49,14 +49,14 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/lckbitem.hxx> -#include <svtools/eitem.hxx> +#include <svl/lckbitem.hxx> +#include <svl/eitem.hxx> /* -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> */ -#include <svtools/zforlist.hxx> -#include <svtools/zformat.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/zforlist.hxx> +#include <svl/zformat.hxx> +#include <unotools/pathoptions.hxx> #include <svtools/transfer.hxx> #ifndef _SFXSIDS_HRC //autogen #include <sfx2/dialogs.hrc> @@ -180,8 +180,6 @@ SfxDocumentInfoDialog* SwDocShell::CreateDocumentInfoDialog( Window *pParent, const SfxItemSet &rSet) { SfxDocumentInfoDialog* pDlg = new SfxDocumentInfoDialog(pParent, rSet); -// const SfxDocumentInfoItem& rItem = (const SfxDocumentInfoItem&)rSet.Get(SID_DOCINFO); -// if(rItem.IsOwnFormat()) //nur mit Statistik, wenn dieses Doc auch angezeigt wird, nicht //aus dem Doc-Manager SwDocShell* pDocSh = (SwDocShell*) SfxObjectShell::Current(); diff --git a/sw/source/ui/app/docshdrw.cxx b/sw/source/ui/app/docshdrw.cxx index 25c9f5113d6f..acaf15c45501 100644 --- a/sw/source/ui/app/docshdrw.cxx +++ b/sw/source/ui/app/docshdrw.cxx @@ -45,7 +45,7 @@ -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svx/drawitem.hxx> #include <svx/svdmodel.hxx> #include <svx/svdoutl.hxx> diff --git a/sw/source/ui/app/docshini.cxx b/sw/source/ui/app/docshini.cxx index 630d836c785b..5f0f0db7dbfd 100644 --- a/sw/source/ui/app/docshini.cxx +++ b/sw/source/ui/app/docshini.cxx @@ -40,19 +40,16 @@ #include <i18npool/mslangid.hxx> #include <sot/storinfo.hxx> #include <sot/storage.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <svtools/ctrltool.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <sfx2/docfile.hxx> -#ifndef _OFA_MISCCFG_HXX //autogen -#include <svtools/misccfg.hxx> -#endif #include <sfx2/printer.hxx> #include <sfx2/bindings.hxx> #include <svx/asiancfg.hxx> #include <svx/unolingu.hxx> #include <sfx2/request.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/adjitem.hxx> #ifndef _SVX_AKRNTEM_HXX #include <svx/akrnitem.hxx> @@ -655,7 +652,7 @@ sal_Bool SwDocShell::Load( SfxMedium& rMedium ) pDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true); } } -#ifndef PRODUCT +#ifdef DBG_UTIL else ASSERT( !this, "ohne Sw3Reader geht nichts" ); #endif diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx index 9d624c2f5179..8d723f64f28e 100644 --- a/sw/source/ui/app/docst.cxx +++ b/sw/source/ui/app/docst.cxx @@ -36,17 +36,17 @@ #include <hintids.hxx> #include <sfx2/app.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/templdlg.hxx> #include <sfx2/tplpitem.hxx> #include <sfx2/request.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/newstyle.hxx> #include <sfx2/printer.hxx> -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> #include <svx/brshitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/stritem.hxx> +#include <svl/languageoptions.hxx> #include <svx/eeitem.hxx> #include <svx/htmlmode.hxx> #include <swmodule.hxx> diff --git a/sw/source/ui/app/docstyle.cxx b/sw/source/ui/app/docstyle.cxx index 7841176d47e1..a69a7f921c13 100644 --- a/sw/source/ui/app/docstyle.cxx +++ b/sw/source/ui/app/docstyle.cxx @@ -33,11 +33,11 @@ #define _SVSTDARR_USHORTS -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include <hintids.hxx> -#include <svtools/itemiter.hxx> -#include <svtools/eitem.hxx> -#include <svtools/syslocale.hxx> +#include <svl/itemiter.hxx> +#include <svl/eitem.hxx> +#include <unotools/syslocale.hxx> #include <svx/boxitem.hxx> #include <svx/numitem.hxx> // --> OD 2008-02-13 #newlistlevelattrs# @@ -68,7 +68,7 @@ #endif #include <paratr.hxx> #include <SwStyleNameMapper.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <comphelper/processfactory.hxx> #include <unotools/localedatawrapper.hxx> #include <unotools/intlwrapper.hxx> diff --git a/sw/source/ui/app/mainwn.cxx b/sw/source/ui/app/mainwn.cxx index 815269e82044..d20c60df78cd 100644 --- a/sw/source/ui/app/mainwn.cxx +++ b/sw/source/ui/app/mainwn.cxx @@ -37,7 +37,7 @@ #include <tools/shl.hxx> #include <tools/string.hxx> #ifndef _SVARRAY_HXX -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <sfx2/progress.hxx> #ifndef _RESID_HXX //autogen diff --git a/sw/source/ui/app/swdll.cxx b/sw/source/ui/app/swdll.cxx index 57f983a3852d..965708ca1579 100644 --- a/sw/source/ui/app/swdll.cxx +++ b/sw/source/ui/app/swdll.cxx @@ -51,7 +51,7 @@ #include <dobjfac.hxx> #include <cfgid.h> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #ifndef _FM_FMOBJFAC_HXX #include <svx/fmobjfac.hxx> diff --git a/sw/source/ui/app/swmodul1.cxx b/sw/source/ui/app/swmodul1.cxx index 863ef3c22f76..13bef2aa4cc2 100644 --- a/sw/source/ui/app/swmodul1.cxx +++ b/sw/source/ui/app/swmodul1.cxx @@ -36,7 +36,7 @@ #include <sfx2/request.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/childwin.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include <cppuhelper/weak.hxx> #include <com/sun/star/frame/FrameSearchFlag.hpp> #include <com/sun/star/view/XSelectionSupplier.hpp> diff --git a/sw/source/ui/app/swmodule.cxx b/sw/source/ui/app/swmodule.cxx index c84273770667..d5b54c1ca846 100644 --- a/sw/source/ui/app/swmodule.cxx +++ b/sw/source/ui/app/swmodule.cxx @@ -154,7 +154,7 @@ #include <svtools/colorcfg.hxx> #include <svx/acorrcfg.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #ifndef _AVMEDIA_MEDIAPPLAYER_HXX #include <avmedia/mediaplayer.hxx> diff --git a/sw/source/ui/chrdlg/break.cxx b/sw/source/ui/chrdlg/break.cxx index d2d07d81e368..6b3882bf7860 100644 --- a/sw/source/ui/chrdlg/break.cxx +++ b/sw/source/ui/chrdlg/break.cxx @@ -37,7 +37,7 @@ #include <sfx2/request.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif diff --git a/sw/source/ui/chrdlg/ccoll.cxx b/sw/source/ui/chrdlg/ccoll.cxx index 25276c2cc4bc..e0e4826a93d4 100644 --- a/sw/source/ui/chrdlg/ccoll.cxx +++ b/sw/source/ui/chrdlg/ccoll.cxx @@ -209,11 +209,7 @@ int SwCondCollItem::operator==( const SfxPoolItem& rItem) const const String& SwCondCollItem::GetStyle(USHORT nPos) const { -#ifndef IRIX return nPos < COND_COMMAND_COUNT ? sStyles[nPos] : aEmptyStr; -#else - return nPos < COND_COMMAND_COUNT ? (String)sStyles[nPos] : aEmptyStr; -#endif } /**************************************************************************** @@ -224,11 +220,7 @@ const String& SwCondCollItem::GetStyle(USHORT nPos) const void SwCondCollItem::SetStyle(const String* pStyle, USHORT nPos) { if( nPos < COND_COMMAND_COUNT ) -#ifndef IRIX sStyles[nPos] = pStyle ? *pStyle : aEmptyStr; -#else - sStyles[nPos] = pStyle ? (String)*pStyle : aEmptyStr; -#endif } diff --git a/sw/source/ui/chrdlg/chardlg.cxx b/sw/source/ui/chrdlg/chardlg.cxx index 2aff6e0cf4d1..8c7fd302df81 100644 --- a/sw/source/ui/chrdlg/chardlg.cxx +++ b/sw/source/ui/chrdlg/chardlg.cxx @@ -41,11 +41,11 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/urihelper.hxx> -#include <svtools/stritem.hxx> +#include <svl/urihelper.hxx> +#include <svl/stritem.hxx> #include <svx/flstitem.hxx> #include <svx/htmlmode.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #ifndef _CMDID_H #include <cmdid.h> diff --git a/sw/source/ui/chrdlg/drpcps.cxx b/sw/source/ui/chrdlg/drpcps.cxx index cc4d15664cf7..4a7803d88cf2 100644 --- a/sw/source/ui/chrdlg/drpcps.cxx +++ b/sw/source/ui/chrdlg/drpcps.cxx @@ -39,7 +39,7 @@ #include <hintids.hxx> #define _SVSTDARR_STRINGSDTOR #define _SVSTDARR_STRINGSISORTDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include "cmdid.h" #include "swmodule.hxx" @@ -51,7 +51,7 @@ #ifndef _METRIC_HXX //autogen #include <vcl/metric.hxx> #endif -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svx/fontitem.hxx> #include <svx/htmlmode.hxx> #include <sfx2/objsh.hxx> @@ -68,7 +68,7 @@ #define _SVSTDARR_XUB_STRLEN #define _SVSTDARR_USHORTS #define _SVSTDARR_ULONGS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include "charatr.hxx" #include "viewopt.hxx" diff --git a/sw/source/ui/chrdlg/numpara.cxx b/sw/source/ui/chrdlg/numpara.cxx index 26f146e628f0..2039c997097d 100644 --- a/sw/source/ui/chrdlg/numpara.cxx +++ b/sw/source/ui/chrdlg/numpara.cxx @@ -47,9 +47,9 @@ #ifndef _SVX_SVXIDS_HRC #include <svx/svxids.hrc> #endif -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/intitem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/intitem.hxx> #include <fmtline.hxx> #include <numpara.hxx> #include <numpara.hrc> diff --git a/sw/source/ui/chrdlg/pardlg.cxx b/sw/source/ui/chrdlg/pardlg.cxx index e095c7b79085..19bed390802a 100644 --- a/sw/source/ui/chrdlg/pardlg.cxx +++ b/sw/source/ui/chrdlg/pardlg.cxx @@ -38,15 +38,15 @@ #include "hintids.hxx" #include <svx/htmlmode.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <svx/htmlcfg.hxx> #ifndef _SVSTDARR_STRINGSSORTDTOR #define _SVSTDARR_STRINGSSORTDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include "docsh.hxx" #include "wrtsh.hxx" #include "frmatr.hxx" @@ -62,8 +62,8 @@ #include "chrdlg.hrc" #include "poolfmt.hrc" #include <svx/svxids.hrc> -#include <svtools/eitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/eitem.hxx> +#include <svl/intitem.hxx> #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> #include <svx/flagsdef.hxx> diff --git a/sw/source/ui/chrdlg/tblnumfm.cxx b/sw/source/ui/chrdlg/tblnumfm.cxx index 1024c8a6bff6..2ffc9e8a8ae5 100644 --- a/sw/source/ui/chrdlg/tblnumfm.cxx +++ b/sw/source/ui/chrdlg/tblnumfm.cxx @@ -51,7 +51,7 @@ #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <sfx2/tabdlg.hxx> SwNumFmtDlg::SwNumFmtDlg(Window* pParent, const SfxItemSet& rSet) diff --git a/sw/source/ui/config/barcfg.cxx b/sw/source/ui/config/barcfg.cxx index 4859c59499e3..3222852f33ce 100644 --- a/sw/source/ui/config/barcfg.cxx +++ b/sw/source/ui/config/barcfg.cxx @@ -151,3 +151,5 @@ void SwToolbarConfigItem::Commit() PutProperties(aNames, aValues); } +void SwToolbarConfigItem::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + diff --git a/sw/source/ui/config/cfgitems.cxx b/sw/source/ui/config/cfgitems.cxx index 1ca465678def..cf74d3eaec52 100644 --- a/sw/source/ui/config/cfgitems.cxx +++ b/sw/source/ui/config/cfgitems.cxx @@ -407,7 +407,7 @@ void SwShadowCursorItem::FillViewOptions( SwViewOption& rVOpt ) const rVOpt.SetShdwCrsrFillMode( eMode ); } -#ifndef PRODUCT +#ifdef DBG_UTIL /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ diff --git a/sw/source/ui/config/dbconfig.cxx b/sw/source/ui/config/dbconfig.cxx index 52a06b389643..cc0f24d8442b 100644 --- a/sw/source/ui/config/dbconfig.cxx +++ b/sw/source/ui/config/dbconfig.cxx @@ -140,5 +140,7 @@ const SwDBData& SwDBConfig::GetBibliographySource() return *pBibImpl; } +void SwDBConfig::Commit() {} +void SwDBConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} diff --git a/sw/source/ui/config/fontcfg.cxx b/sw/source/ui/config/fontcfg.cxx index 34ffa8f215b9..af185d53e58b 100644 --- a/sw/source/ui/config/fontcfg.cxx +++ b/sw/source/ui/config/fontcfg.cxx @@ -35,7 +35,7 @@ #include <fontcfg.hxx> #include <i18npool/mslangid.hxx> #include <vcl/outdev.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/i18n/ScriptType.hpp> @@ -358,3 +358,5 @@ sal_Int32 SwStdFontConfig::GetFontHeight( sal_uInt8 nFont, sal_uInt8 nScriptType return nRet; } +void SwStdFontConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + diff --git a/sw/source/ui/config/mailconfigpage.cxx b/sw/source/ui/config/mailconfigpage.cxx index f17af2f8061a..00219b8d9cdf 100644 --- a/sw/source/ui/config/mailconfigpage.cxx +++ b/sw/source/ui/config/mailconfigpage.cxx @@ -295,7 +295,7 @@ SwTestAccountSettingsDialog::SwTestAccountSettingsDialog(SwMailConfigPage* pPare #ifdef MSC #pragma warning (default : 4355) #endif - m_aImageList( SW_RES( GetSettings().GetStyleSettings().GetWindowColor().IsDark() ? ILIST_HC : ILIST) ), + m_aImageList( SW_RES( GetSettings().GetStyleSettings().GetHighContrastMode() ? ILIST_HC : ILIST) ), m_sTask( SW_RES( ST_TASK )), m_sStatus( SW_RES( ST_STATUS )), m_sEstablish( SW_RES( ST_ESTABLISH )), diff --git a/sw/source/ui/config/modcfg.cxx b/sw/source/ui/config/modcfg.cxx index dab5e97cc2e8..a89684ccee98 100644 --- a/sw/source/ui/config/modcfg.cxx +++ b/sw/source/ui/config/modcfg.cxx @@ -50,7 +50,7 @@ #include <modcfg.hxx> #endif #include <fldupde.hxx> -#include <svtools/syslocaleoptions.hxx> +#include <unotools/syslocaleoptions.hxx> #include <caption.hxx> #include <com/sun/star/uno/Any.hxx> @@ -336,6 +336,8 @@ sal_Int32 lcl_ConvertAttrToCfg(const AuthorCharAttr& rAttr) return nRet; } //----------------------------------------------------------------------------- +void SwRevisionConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwRevisionConfig::Commit() { const Sequence<OUString>& aNames = GetPropertyNames(); @@ -691,6 +693,8 @@ void lcl_WriteOpt(const InsCaptionOpt& rOpt, Any* pValues, sal_Int32 nProp, sal_ } } //----------------------------------------------------------------------------- +void SwInsertConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwInsertConfig::Commit() { const Sequence<OUString>& aNames = GetPropertyNames(); @@ -1207,6 +1211,8 @@ SwTableConfig::~SwTableConfig() /*-- 10.10.00 16:22:56--------------------------------------------------- -----------------------------------------------------------------------*/ +void SwTableConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwTableConfig::Commit() { const Sequence<OUString>& aNames = GetPropertyNames(); @@ -1318,6 +1324,8 @@ const Sequence<OUString>& SwMiscConfig::GetPropertyNames() /*-- 18.01.01 17:02:47--------------------------------------------------- -----------------------------------------------------------------------*/ +void SwMiscConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwMiscConfig::Commit() { const Sequence<OUString>& aNames = GetPropertyNames(); diff --git a/sw/source/ui/config/optload.cxx b/sw/source/ui/config/optload.cxx index 70db2cdf008b..e836790b5d50 100644 --- a/sw/source/ui/config/optload.cxx +++ b/sw/source/ui/config/optload.cxx @@ -76,7 +76,7 @@ #include <SwNodeNum.hxx> #include <doc.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> using namespace ::com::sun::star; diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx index 0777ac3c3325..84e8958fa977 100755 --- a/sw/source/ui/config/optpage.cxx +++ b/sw/source/ui/config/optpage.cxx @@ -42,11 +42,11 @@ #include <vcl/svapp.hxx> #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <svtools/ctrltool.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/htmlmode.hxx> #include <sfx2/printer.hxx> #include <sfx2/bindings.hxx> @@ -97,10 +97,10 @@ #include <optdlg.hrc> #endif #include <svx/strarray.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <sfx2/request.hxx> #include <swwrtshitem.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <unomid.h> @@ -1776,7 +1776,7 @@ void SwMarkPreview::InitColors( void ) const StyleSettings& rSettings = GetSettings().GetStyleSettings(); m_aBgCol = Color( rSettings.GetWindowColor() ); - BOOL bHC = m_aBgCol.IsDark(); + BOOL bHC = rSettings.GetHighContrastMode(); m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK ); m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor(); m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY ); @@ -2458,7 +2458,7 @@ void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin) } -#ifndef PRODUCT +#ifdef DBG_UTIL /******************************************************* ******************************************************/ /*----------------- OS 11.01.95 ----------------------- diff --git a/sw/source/ui/config/prtopt.cxx b/sw/source/ui/config/prtopt.cxx index 1f8f04f54d65..68f86cae4639 100644 --- a/sw/source/ui/config/prtopt.cxx +++ b/sw/source/ui/config/prtopt.cxx @@ -151,6 +151,9 @@ SwPrintOptions::~SwPrintOptions() /* -----------------------------06.09.00 16:43-------------------------------- ---------------------------------------------------------------------------*/ + +void SwPrintOptions::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwPrintOptions::Commit() { Sequence<OUString> aNames = GetPropertyNames(); diff --git a/sw/source/ui/config/uinums.cxx b/sw/source/ui/config/uinums.cxx index bfe68b3d6b3a..8dbfceb0e9c8 100644 --- a/sw/source/ui/config/uinums.cxx +++ b/sw/source/ui/config/uinums.cxx @@ -35,13 +35,13 @@ #include <hintids.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/urihelper.hxx> +#include <unotools/pathoptions.hxx> #include <tools/stream.hxx> #ifndef _SFX_INIMGR_HXX #endif #include <sfx2/docfile.hxx> -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #include <svx/brshitem.hxx> diff --git a/sw/source/ui/config/usrpref.cxx b/sw/source/ui/config/usrpref.cxx index 1170f3506b31..21abc0f60090 100644 --- a/sw/source/ui/config/usrpref.cxx +++ b/sw/source/ui/config/usrpref.cxx @@ -33,7 +33,7 @@ #include <tools/stream.hxx> -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include "swtypes.hxx" #include "hintids.hxx" @@ -427,6 +427,9 @@ void SwLayoutViewConfig::Load() } } } + +void SwLayoutViewConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /* -----------------------------19.01.01 13:07-------------------------------- ---------------------------------------------------------------------------*/ @@ -531,6 +534,8 @@ void SwGridConfig::Load() } } +void SwGridConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /* -----------------------------19.01.01 13:07-------------------------------- ---------------------------------------------------------------------------*/ @@ -621,6 +626,9 @@ void SwCursorConfig::Load() } } + +void SwCursorConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /*-- 28.09.00 09:55:33--------------------------------------------------- -----------------------------------------------------------------------*/ @@ -654,6 +662,9 @@ void SwWebColorConfig::Commit() } PutProperties(aPropNames, aValues); } + +void SwWebColorConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /*-- 28.09.00 09:55:34--------------------------------------------------- -----------------------------------------------------------------------*/ diff --git a/sw/source/ui/config/viewopt.cxx b/sw/source/ui/config/viewopt.cxx index 661a73f312ad..1c3e6b2aafc6 100644 --- a/sw/source/ui/config/viewopt.cxx +++ b/sw/source/ui/config/viewopt.cxx @@ -58,11 +58,11 @@ #include <crstate.hxx> #include <svtools/colorcfg.hxx> #include <svtools/accessibilityoptions.hxx> -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include <svx/acorrcfg.hxx> -#ifndef PRODUCT +#ifdef DBG_UTIL BOOL SwViewOption::bTest9 = FALSE; //DrawingLayerNotLoading #endif Color SwViewOption::aDocBoundColor(COL_LIGHTGRAY); @@ -115,7 +115,7 @@ BOOL SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const && bFormView == rOpt.IsFormView() && mbViewLayoutBookMode == rOpt.mbViewLayoutBookMode && bShowPlaceHolderFields == rOpt.bShowPlaceHolderFields -#ifndef PRODUCT +#ifdef DBG_UTIL // korrespondieren zu den Angaben in ui/config/cfgvw.src && bTest1 == rOpt.IsTest1() && bTest2 == rOpt.IsTest2() @@ -246,7 +246,7 @@ SwViewOption::SwViewOption() : bSelectionInReadonly = SW_MOD()->GetAccessibilityOptions().IsSelectionInReadonly(); -#ifndef PRODUCT +#ifdef DBG_UTIL // korrespondieren zu den Angaben in ui/config/cfgvw.src bTest1 = bTest2 = bTest3 = bTest4 = bTest5 = bTest6 = bTest7 = bTest8 = bTest10 = FALSE; @@ -281,7 +281,7 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt) mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; -#ifndef PRODUCT +#ifdef DBG_UTIL bTest1 = rVOpt.bTest1 ; bTest2 = rVOpt.bTest2 ; bTest3 = rVOpt.bTest3 ; @@ -321,7 +321,7 @@ SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt ) mbViewLayoutBookMode = rVOpt.mbViewLayoutBookMode; bShowPlaceHolderFields = rVOpt.bShowPlaceHolderFields; -#ifndef PRODUCT +#ifdef DBG_UTIL bTest1 = rVOpt.bTest1 ; bTest2 = rVOpt.bTest2 ; bTest3 = rVOpt.bTest3 ; diff --git a/sw/source/ui/dbui/addresslistdialog.cxx b/sw/source/ui/dbui/addresslistdialog.cxx index 91248fa1e422..ec8ad0dc1473 100644 --- a/sw/source/ui/dbui/addresslistdialog.cxx +++ b/sw/source/ui/dbui/addresslistdialog.cxx @@ -67,8 +67,8 @@ #include <com/sun/star/frame/XStorable.hpp> #include <swunohelper.hxx> #include <vcl/waitobj.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/urihelper.hxx> +#include <unotools/pathoptions.hxx> +#include <svl/urihelper.hxx> #include <addresslistdialog.hrc> #include <dbui.hrc> diff --git a/sw/source/ui/dbui/createaddresslistdialog.cxx b/sw/source/ui/dbui/createaddresslistdialog.cxx index 3f7484932010..dc96002db759 100644 --- a/sw/source/ui/dbui/createaddresslistdialog.cxx +++ b/sw/source/ui/dbui/createaddresslistdialog.cxx @@ -42,7 +42,7 @@ #ifndef _SVT_CONTROLDIMS_HRC_ #include <svtools/controldims.hrc> #endif -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <sfx2/filedlghelper.hxx> #include <sfx2/docfilt.hxx> #include <sfx2/fcontnr.hxx> diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx index cb815a93f1a6..30e886008da7 100644 --- a/sw/source/ui/dbui/dbinsdlg.cxx +++ b/sw/source/ui/dbui/dbinsdlg.cxx @@ -64,19 +64,19 @@ #include <com/sun/star/sdbc/XRowSet.hpp> #include <comphelper/processfactory.hxx> #include <svx/langitem.hxx> -#include <svtools/numuno.hxx> -#include <svtools/stritem.hxx> +#include <svl/numuno.hxx> +#include <svl/stritem.hxx> #include <vcl/msgbox.hxx> #include <vcl/svapp.hxx> #ifndef __SV_MNEMONIC_HXX #include <vcl/mnemonic.hxx> #endif -#include <svtools/style.hxx> -#include <svtools/zformat.hxx> +#include <svl/style.hxx> +#include <svl/zformat.hxx> #include <svx/htmlmode.hxx> #include <svx/unolingu.hxx> #include <sfx2/app.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/brshitem.hxx> #include <svx/boxitem.hxx> #include <svx/rulritem.hxx> @@ -1651,6 +1651,8 @@ static rtl::OUString lcl_CreateUniqueName(const Sequence<rtl::OUString>& aNames) /* -----------------------------05.12.00 15:00-------------------------------- ---------------------------------------------------------------------------*/ +void SwInsertDBColAutoPilot::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwInsertDBColAutoPilot::Commit() { Sequence <rtl::OUString> aNames = GetNodeNames(rtl::OUString()); diff --git a/sw/source/ui/dbui/dbmgr.cxx b/sw/source/ui/dbui/dbmgr.cxx index 1eb661a83148..07ba1564c5ef 100644 --- a/sw/source/ui/dbui/dbmgr.cxx +++ b/sw/source/ui/dbui/dbmgr.cxx @@ -63,18 +63,17 @@ #include <pagedesc.hxx> #include <vcl/lstbox.hxx> #include <unotools/tempfile.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/urihelper.hxx> +#include <unotools/pathoptions.hxx> +#include <svl/urihelper.hxx> #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/zforlist.hxx> -#include <svtools/zformat.hxx> -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/zforlist.hxx> +#include <svl/zformat.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <vcl/oldprintadaptor.hxx> -//#include <sfx2/printer.hxx> #include <sfx2/docfile.hxx> #include <sfx2/progress.hxx> #include <sfx2/dispatch.hxx> @@ -121,7 +120,7 @@ #include <i18npool/mslangid.hxx> #include <com/sun/star/util/XNumberFormatTypes.hpp> #include <svx/langitem.hxx> -#include <svtools/numuno.hxx> +#include <svl/numuno.hxx> #include <unomailmerge.hxx> #include <sfx2/event.hxx> @@ -2967,7 +2966,7 @@ sal_Int32 SwNewDBMgr::MergeDocuments( SwMailMergeConfigItem& rMMConfig, } if(nDocNo == 1 || bPageStylesWithHeaderFooter) { - pTargetView->GetDocShell()->_LoadStyles( *pWorkView->GetDocShell(), sal_True ); + pTargetView->GetDocShell()->_LoadStyles( *rSourceView.GetDocShell(), sal_True ); } if(nDocNo > 1) { diff --git a/sw/source/ui/dbui/maildispatcher.cxx b/sw/source/ui/dbui/maildispatcher.cxx index e49c5c68fccb..81dabd052042 100644 --- a/sw/source/ui/dbui/maildispatcher.cxx +++ b/sw/source/ui/dbui/maildispatcher.cxx @@ -110,8 +110,7 @@ namespace /* private */ MailDispatcher::MailDispatcher(uno::Reference<mail::XSmtpService> mailserver) : mailserver_ (mailserver), run_(false), - shutdown_requested_(false), - bIsInRun(false) + shutdown_requested_(false) { wakening_call_.reset(); mail_dispatcher_active_.reset(); @@ -206,12 +205,6 @@ bool MailDispatcher::isStarted() const return run_; } -bool MailDispatcher::isRunning() const -{ - return bIsInRun; -} - - void MailDispatcher::addListener(::rtl::Reference<IMailDispatcherListener> listener) { OSL_PRECOND(!shutdown_requested_, "MailDispatcher thread is shuting down already"); @@ -267,7 +260,6 @@ void MailDispatcher::run() // signal that the mail dispatcher thread is now alive mail_dispatcher_active_.set(); - bIsInRun = true; for(;;) { wakening_call_.wait(); @@ -295,7 +287,6 @@ void MailDispatcher::run() std::for_each(listeners_cloned.begin(), listeners_cloned.end(), GenericEventNotifier(&IMailDispatcherListener::idle, this)); } } // end for SSH ALI - bIsInRun = false; } /*-- 27.08.2004 12:04:46--------------------------------------------------- diff --git a/sw/source/ui/dbui/mailmergechildwindow.cxx b/sw/source/ui/dbui/mailmergechildwindow.cxx index ca3489b99776..d70dea638297 100644 --- a/sw/source/ui/dbui/mailmergechildwindow.cxx +++ b/sw/source/ui/dbui/mailmergechildwindow.cxx @@ -103,7 +103,7 @@ SwMailMergeChildWin::SwMailMergeChildWin( SfxBindings* _pBindings, m_aBackTB(this, SW_RES( TB_BACK )) { m_aBackTB.SetSelectHdl(LINK(this, SwMailMergeChildWin, BackHdl)); - sal_uInt16 nIResId = GetSettings().GetStyleSettings().GetWindowColor().IsDark() ? + sal_uInt16 nIResId = GetSettings().GetStyleSettings().GetHighContrastMode() ? ILIST_TBX_HC : ILIST_TBX; ResId aResId( nIResId, *pSwResMgr ); ImageList aIList(aResId); @@ -639,7 +639,7 @@ void SwSendMailDialog::IterateMails() { if(!SwMailMergeHelper::CheckMailAddress( pCurrentMailDescriptor->sEMail )) { - ImageList& rImgLst = GetSettings().GetStyleSettings().GetWindowColor().IsDark() ? + ImageList& rImgLst = GetSettings().GetStyleSettings().GetHighContrastMode() ? m_aImageListHC : m_aImageList; Image aInsertImg = rImgLst.GetImage( FN_FORMULA_CANCEL ); @@ -747,7 +747,7 @@ void SwSendMailDialog::DocumentSent( uno::Reference< mail::XMailMessage> xMessag Application::PostUserEvent( STATIC_LINK( this, SwSendMailDialog, StopSendMails ), this ); } - ImageList& rImgLst = GetSettings().GetStyleSettings().GetWindowColor().IsDark() ? + ImageList& rImgLst = GetSettings().GetStyleSettings().GetHighContrastMode() ? m_aImageListHC : m_aImageList; Image aInsertImg = rImgLst.GetImage( bResult ? FN_FORMULA_APPLY : FN_FORMULA_CANCEL ); diff --git a/sw/source/ui/dbui/mmaddressblockpage.hxx b/sw/source/ui/dbui/mmaddressblockpage.hxx index 7d6c3ae81718..c56b5535bfa4 100644 --- a/sw/source/ui/dbui/mmaddressblockpage.hxx +++ b/sw/source/ui/dbui/mmaddressblockpage.hxx @@ -43,7 +43,7 @@ #include <svtools/headbar.hxx> #include <svtools/svtreebx.hxx> #include <vcl/combobox.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> class SwMailMergeWizard; class SwMailMergeConfigItem; /*-- 13.04.2004 15:50:37--------------------------------------------------- diff --git a/sw/source/ui/dbui/mmconfigitem.cxx b/sw/source/ui/dbui/mmconfigitem.cxx index 7438988a88fd..b4e4eb06e75e 100644 --- a/sw/source/ui/dbui/mmconfigitem.cxx +++ b/sw/source/ui/dbui/mmconfigitem.cxx @@ -63,7 +63,7 @@ #include <unomid.h> #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> using namespace utl; using ::rtl::OUString; @@ -183,8 +183,8 @@ public: SwMailMergeConfigItem_Impl(); ~SwMailMergeConfigItem_Impl(); - virtual void Commit(); - + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); const Sequence< ::rtl::OUString> GetAddressBlocks(sal_Bool bConvertToConfig = sal_False) const; void SetAddressBlocks( @@ -538,6 +538,8 @@ const Sequence<OUString>& SwMailMergeConfigItem_Impl::GetPropertyNames() /*-- 15.04.2004 08:48:39--------------------------------------------------- -----------------------------------------------------------------------*/ +void SwMailMergeConfigItem_Impl::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwMailMergeConfigItem_Impl::Commit() { Sequence<OUString> aNames = GetPropertyNames(); diff --git a/sw/source/ui/dbui/mmdocselectpage.cxx b/sw/source/ui/dbui/mmdocselectpage.cxx index 7bef5c752be6..423185fb0ba3 100644 --- a/sw/source/ui/dbui/mmdocselectpage.cxx +++ b/sw/source/ui/dbui/mmdocselectpage.cxx @@ -35,7 +35,7 @@ #endif -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <sfx2/filedlghelper.hxx> #include <sfx2/new.hxx> #include <sfx2/docfilt.hxx> diff --git a/sw/source/ui/dbui/mmlayoutpage.cxx b/sw/source/ui/dbui/mmlayoutpage.cxx index ddb37e3c8eeb..958b9497a08a 100644 --- a/sw/source/ui/dbui/mmlayoutpage.cxx +++ b/sw/source/ui/dbui/mmlayoutpage.cxx @@ -47,7 +47,7 @@ #endif #include <swundo.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/docfilt.hxx> #include <com/sun/star/text/XParagraphCursor.hpp> #include <com/sun/star/view/XViewSettingsSupplier.hpp> @@ -67,7 +67,7 @@ #include <fmtornt.hxx> #include <fmtfsize.hxx> #include <svx/boxitem.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <shellio.hxx> #include <osl/file.hxx> #include <unoprnms.hxx> diff --git a/sw/source/ui/dbui/mmmergepage.cxx b/sw/source/ui/dbui/mmmergepage.cxx index d6083d1fc712..74a647f755bd 100644 --- a/sw/source/ui/dbui/mmmergepage.cxx +++ b/sw/source/ui/dbui/mmmergepage.cxx @@ -44,7 +44,7 @@ #include <mmmergepage.hrc> #include <svx/srchitem.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <swabstdlg.hxx> /*-- 02.04.2004 16:38:45--------------------------------------------------- diff --git a/sw/source/ui/dbui/mmoutputpage.cxx b/sw/source/ui/dbui/mmoutputpage.cxx index f6bbf47002b2..331589570246 100644 --- a/sw/source/ui/dbui/mmoutputpage.cxx +++ b/sw/source/ui/dbui/mmoutputpage.cxx @@ -53,8 +53,8 @@ #include <hintids.hxx> #include <svx/scripttypeitem.hxx> #include <svx/langitem.hxx> -#include <svtools/itemset.hxx> -#include <svtools/stritem.hxx> +#include <svl/itemset.hxx> +#include <svl/stritem.hxx> #include <svtools/ehdl.hxx> #include <svtools/sfxecode.hxx> #include <vcl/msgbox.hxx> @@ -68,7 +68,7 @@ //#include <sfx2/docfilt.hxx> //#endif #include <tools/urlobj.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #ifndef _VCL_PRINT_HXX #include <vcl/print.hxx> #endif diff --git a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx index 8dca8ef1abf0..ae783c991799 100644 --- a/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx +++ b/sw/source/ui/dialog/SwSpellDialogChildWindow.cxx @@ -47,8 +47,8 @@ #include <svx/svdview.hxx> #include <svx/svditer.hxx> #include <svx/svdogrp.hxx> -#include <svtools/linguprops.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> #include <doc.hxx> #ifndef _DOCSH_HXX #include <docsh.hxx> diff --git a/sw/source/ui/dialog/ascfldlg.cxx b/sw/source/ui/dialog/ascfldlg.cxx index 585151383893..e2313d54c87f 100644 --- a/sw/source/ui/dialog/ascfldlg.cxx +++ b/sw/source/ui/dialog/ascfldlg.cxx @@ -37,7 +37,7 @@ #include <rtl/textenc.h> #include <i18npool/mslangid.hxx> #include <com/sun/star/i18n/ScriptType.hpp> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <fontcfg.hxx> #include <swmodule.hxx> #include <svx/unolingu.hxx> diff --git a/sw/source/ui/dialog/macassgn.cxx b/sw/source/ui/dialog/macassgn.cxx index 0c052223abcf..b1e24df519c0 100644 --- a/sw/source/ui/dialog/macassgn.cxx +++ b/sw/source/ui/dialog/macassgn.cxx @@ -39,7 +39,7 @@ #include "hintids.hxx" #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <svx/htmlmode.hxx> #ifndef _SVX_SVXIDS_HRC //autogen #include <svx/svxids.hrc> diff --git a/sw/source/ui/dialog/regionsw.cxx b/sw/source/ui/dialog/regionsw.cxx index 47936697a20d..7d387a2f5943 100644 --- a/sw/source/ui/dialog/regionsw.cxx +++ b/sw/source/ui/dialog/regionsw.cxx @@ -34,13 +34,13 @@ #include <hintids.hxx> #include <uitool.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/PasswordHelper.hxx> +#include <svl/urihelper.hxx> +#include <svl/PasswordHelper.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <sot/formats.hxx> #ifndef _PASSWD_HXX //autogen #include <sfx2/passwd.hxx> diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index ab2a1d8e3d3c..25581e6a3110 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -36,7 +36,7 @@ #endif #include "swdlgfact.hxx" -#include <svtools/style.hxx> +#include <svl/style.hxx> #ifndef _SVX_SVXIDS_HRC #include <svx/svxids.hrc> #endif @@ -1698,7 +1698,7 @@ CreateTabPage SwAbstractDialogFactory_Impl::GetTabPageCreatorFunc( USHORT nId ) break; case RID_SW_TP_OPTTEST_PAGE : case TP_OPTTEST_PAGE : -#ifndef PRODUCT +#ifdef DBG_UTIL pRet = SwTestTabPage::Create; #endif break; diff --git a/sw/source/ui/dialog/uiregionsw.cxx b/sw/source/ui/dialog/uiregionsw.cxx index 9626f5104db9..2a37f6911b02 100644 --- a/sw/source/ui/dialog/uiregionsw.cxx +++ b/sw/source/ui/dialog/uiregionsw.cxx @@ -36,12 +36,12 @@ #include <hintids.hxx> #include <regionsw.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/PasswordHelper.hxx> +#include <svl/urihelper.hxx> +#include <svl/PasswordHelper.hxx> #include <vcl/svapp.hxx> #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <sfx2/passwd.hxx> #include <sfx2/docfilt.hxx> #include <sfx2/request.hxx> @@ -1480,14 +1480,16 @@ static void lcl_ReadSections( SfxMedium& rMedium, ComboBox& rBox ) uno::Reference < embed::XStorage > xStg; if( rMedium.IsStorage() && (xStg = rMedium.GetStorage()).is() ) { - SvStringsDtor aArr( 10, 10 ); + SvStrings aArr( 10, 10 ); sal_uInt32 nFormat = SotStorage::GetFormatID( xStg ); if ( nFormat == SOT_FORMATSTR_ID_STARWRITER_60 || nFormat == SOT_FORMATSTR_ID_STARWRITERGLOB_60 || nFormat == SOT_FORMATSTR_ID_STARWRITER_8 || nFormat == SOT_FORMATSTR_ID_STARWRITERGLOB_8) - SwGetReaderXML()->GetSectionList( rMedium, (SvStrings&) aArr ); + SwGetReaderXML()->GetSectionList( rMedium, aArr ); for( USHORT n = 0; n < aArr.Count(); ++n ) rBox.InsertEntry( *aArr[ n ] ); + + aArr.DeleteAndDestroy(0, aArr.Count()); } } /* -----------------21.05.99 10:16------------------- diff --git a/sw/source/ui/dochdl/gloshdl.cxx b/sw/source/ui/dochdl/gloshdl.cxx index 8d716d6420a9..95e5dea9b9c9 100644 --- a/sw/source/ui/dochdl/gloshdl.cxx +++ b/sw/source/ui/dochdl/gloshdl.cxx @@ -44,12 +44,12 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> #include <sfx2/fcontnr.hxx> #include <sfx2/docfile.hxx> #define _SVSTDARR_STRINGS -#include <svtools/svstdarr.hxx> -#include <svtools/urihelper.hxx> +#include <svl/svstdarr.hxx> +#include <svl/urihelper.hxx> #include <unotools/transliterationwrapper.hxx> #include <poolfmt.hxx> #include <fmtcol.hxx> diff --git a/sw/source/ui/dochdl/swdtflvr.cxx b/sw/source/ui/dochdl/swdtflvr.cxx index f3dc55f26f4d..64d894acfdb2 100644 --- a/sw/source/ui/dochdl/swdtflvr.cxx +++ b/sw/source/ui/dochdl/swdtflvr.cxx @@ -60,13 +60,13 @@ #include <vcl/msgbox.hxx> #endif #include <sfx2/dispatch.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svtools/imap.hxx> #include <sot/storage.hxx> #ifndef _GRAPH_HXX #include <vcl/graph.hxx> #endif -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/svdmodel.hxx> #include <svx/xexch.hxx> #include <svx/xmlexchg.hxx> @@ -75,7 +75,7 @@ #include <sfx2/mieclip.hxx> #include <svx/svdetc.hxx> #include <svx/xoutbmp.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <svtools/htmlout.hxx> #include <svx/hlnkitem.hxx> #include <svtools/inetimg.hxx> diff --git a/sw/source/ui/docvw/PostItMgr.cxx b/sw/source/ui/docvw/PostItMgr.cxx index 6bea77137ac6..8b275c0a6447 100644 --- a/sw/source/ui/docvw/PostItMgr.cxx +++ b/sw/source/ui/docvw/PostItMgr.cxx @@ -70,9 +70,9 @@ #include <sfx2/srchitem.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svtools/langtab.hxx> -#include <svtools/smplhint.hxx> +#include <svl/smplhint.hxx> #include <svx/svdview.hxx> #include <svx/eeitem.hxx> @@ -1941,9 +1941,14 @@ void SwPostItMgr::AssureStdModeAtShell() { mpWrtShell->UnSelectFrm(); mpWrtShell->LeaveSelFrmMode(); + mpWrtShell->GetView().LeaveDrawCreate(); mpWrtShell->EnterStdMode(); mpWrtShell->DrawSelChanged(); mpView->StopShellTimer(); } } + +void SwNoteProps::Commit() {} +void SwNoteProps::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index 7d8e38443ca0..5bef2edb398f 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -48,15 +48,15 @@ #include <vcl/msgbox.hxx> #include <vcl/cmdevt.h> #include <sot/storage.hxx> -#include <svtools/macitem.hxx> -#include <svtools/securityoptions.hxx> +#include <svl/macitem.hxx> +#include <unotools/securityoptions.hxx> #ifndef __SBX_SBXVARIABLE_HXX //autogen #include <basic/sbxvar.hxx> #endif -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <basic/sbx.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #ifndef _SFX_CLIENTSH_HXX #include <sfx2/ipclient.hxx> #endif @@ -64,7 +64,7 @@ #include <sfx2/request.hxx> #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/ptitem.hxx> +#include <svl/ptitem.hxx> #include <svx/sizeitem.hxx> #include <svx/langitem.hxx> #include <svx/htmlmode.hxx> @@ -156,7 +156,7 @@ #include "postit.hxx" //JP 11.10.2001: enable test code for bug fix 91313 -#if !defined( PRODUCT ) && (OSL_DEBUG_LEVEL > 1) +#if defined(DBG_UTIL) && (OSL_DEBUG_LEVEL > 1) //#define TEST_FOR_BUG91313 #endif @@ -1503,7 +1503,7 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) case KS_CheckKey: eKeyState = KS_KeyToView; // default weiter zur View -#ifndef PRODUCT +#ifdef DBG_UTIL //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // JP 19.01.99: zum Umschalten des Cursor Verhaltens in ReadOnly // Bereichen diff --git a/sw/source/ui/docvw/edtwin2.cxx b/sw/source/ui/docvw/edtwin2.cxx index 13f832acfccf..5562932956e8 100644 --- a/sw/source/ui/docvw/edtwin2.cxx +++ b/sw/source/ui/docvw/edtwin2.cxx @@ -34,26 +34,26 @@ #include <hintids.hxx> #include <doc.hxx> -#ifndef PRODUCT +#ifdef DBG_UTIL #include <stdio.h> #endif #ifndef _HELP_HXX //autogen #include <vcl/help.hxx> #endif -#include <svtools/stritem.hxx> -#include <svtools/securityoptions.hxx> +#include <svl/stritem.hxx> +#include <unotools/securityoptions.hxx> #include <tools/urlobj.hxx> #include <txtrfmrk.hxx> #include <fmtrfmrk.hxx> #include <svx/flditem.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <svx/svdotext.hxx> #ifndef _OUTLINER_HXX //autogen #define _EEITEMID_HXX #include <svx/outliner.hxx> #endif -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #include <svx/svdview.hxx> #include <svx/svdpagv.hxx> #include <swmodule.hxx> @@ -162,7 +162,7 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt) SwContentAtPos::SW_TOXMARK | SwContentAtPos::SW_REFMARK | SwContentAtPos::SW_SMARTTAG | -#ifndef PRODUCT +#ifdef DBG_UTIL SwContentAtPos::SW_TABLEBOXVALUE | ( bBalloon ? SwContentAtPos::SW_CURR_ATTRS : 0) | #endif @@ -176,7 +176,7 @@ void SwEditWin::RequestHelp(const HelpEvent &rEvt) sTxt.AssignAscii( RTL_CONSTASCII_STRINGPARAM( "= " )); sTxt += ((SwTblBoxFormula*)aCntntAtPos.aFnd.pAttr)->GetFormula(); break; -#ifndef PRODUCT +#ifdef DBG_UTIL case SwContentAtPos::SW_TABLEBOXVALUE: { sTxt = UniString( diff --git a/sw/source/ui/docvw/postit.cxx b/sw/source/ui/docvw/postit.cxx index e693f87e7a35..77ded3905220 100644 --- a/sw/source/ui/docvw/postit.cxx +++ b/sw/source/ui/docvw/postit.cxx @@ -68,11 +68,11 @@ #include <svx/unolingu.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> -#include <svtools/securityoptions.hxx> -#include <svtools/useroptions.hxx> -#include <svtools/languageoptions.hxx> -#include <svtools/zforlist.hxx> +#include <svl/slstitm.hxx> +#include <unotools/securityoptions.hxx> +#include <unotools/useroptions.hxx> +#include <svl/languageoptions.hxx> +#include <svl/zforlist.hxx> #include <svtools/svmedit.hxx> #include <linguistic/lngprops.hxx> @@ -1953,7 +1953,7 @@ private: ShadowState maShadowState; protected: - virtual drawinglayer::primitive2d::Primitive2DSequence createLocalDecomposition( + virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& rViewInformation) const; public: @@ -1977,7 +1977,7 @@ public: DeclPrimitrive2DIDBlock() }; -drawinglayer::primitive2d::Primitive2DSequence SwPostItShadowPrimitive::createLocalDecomposition( +drawinglayer::primitive2d::Primitive2DSequence SwPostItShadowPrimitive::create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const { // get logic sizes in object coordinate system @@ -2140,7 +2140,7 @@ private: bool mbLineSolid : 1; protected: - virtual drawinglayer::primitive2d::Primitive2DSequence createLocalDecomposition( + virtual drawinglayer::primitive2d::Primitive2DSequence create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& rViewInformation) const; public: @@ -2179,7 +2179,7 @@ public: DeclPrimitrive2DIDBlock() }; -drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkorPrimitive::createLocalDecomposition( +drawinglayer::primitive2d::Primitive2DSequence SwPostItAnkorPrimitive::create2DDecomposition( const drawinglayer::geometry::ViewInformation2D& /*rViewInformation*/) const { drawinglayer::primitive2d::Primitive2DSequence aRetval; diff --git a/sw/source/ui/docvw/romenu.cxx b/sw/source/ui/docvw/romenu.cxx index 50776ef80f11..313604be962e 100644 --- a/sw/source/ui/docvw/romenu.cxx +++ b/sw/source/ui/docvw/romenu.cxx @@ -37,9 +37,9 @@ #include <vcl/graph.hxx> #include <vcl/msgbox.hxx> #include <sot/formats.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> +#include <unotools/pathoptions.hxx> #include <svtools/filter.hxx> #include <svtools/imap.hxx> #include <svtools/inetimg.hxx> diff --git a/sw/source/ui/docvw/srcedtw.cxx b/sw/source/ui/docvw/srcedtw.cxx index 19ba5aefdf25..12288d1e8619 100644 --- a/sw/source/ui/docvw/srcedtw.cxx +++ b/sw/source/ui/docvw/srcedtw.cxx @@ -49,7 +49,7 @@ #include <sfx2/app.hxx> #include <svtools/htmltokn.h> #include <svtools/txtattr.hxx> -#include <svtools/sourceviewconfig.hxx> +#include <unotools/sourceviewconfig.hxx> #include <svtools/colorcfg.hxx> #include <svx/flstitem.hxx> #include <vcl/metric.hxx> @@ -248,7 +248,7 @@ SwSrcEditWindow::SwSrcEditWindow( Window* pParent, SwSrcView* pParentView ) : pVScrollbar(0), pSrcView(pParentView), - pSourceViewConfig(new svt::SourceViewConfig), + pSourceViewConfig(new utl::SourceViewConfig), nCurTextWidth(0), nStartLine(USHRT_MAX), @@ -258,14 +258,14 @@ SwSrcEditWindow::SwSrcEditWindow( Window* pParent, SwSrcView* pParentView ) : { SetHelpId(HID_SOURCE_EDITWIN); CreateTextEngine(); - StartListening(*pSourceViewConfig); + pSourceViewConfig->AddListener(this); } /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ SwSrcEditWindow::~SwSrcEditWindow() { - EndListening(*pSourceViewConfig); + pSourceViewConfig->RemoveListener(this); delete pSourceViewConfig; aSyntaxIdleTimer.Stop(); if ( pTextEngine ) @@ -819,7 +819,7 @@ void SwSrcEditWindow::ImpDoHighlight( const String& rSource, USHORT nLineOff ) --------------------------------------------------*/ -void SwSrcEditWindow::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) +void SwSrcEditWindow::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) { if ( rHint.ISA( TextHint ) ) { @@ -842,7 +842,11 @@ void SwSrcEditWindow::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) DoDelayedSyntaxHighlight( (USHORT)rTextHint.GetValue() ); } } - else if(&rBC == pSourceViewConfig) +} + +void SwSrcEditWindow::ConfigurationChanged( utl::ConfigurationBroadcaster* pBrdCst, sal_uInt32 ) +{ + if( pBrdCst == pSourceViewConfig) SetFont(); } diff --git a/sw/source/ui/envelp/envfmt.cxx b/sw/source/ui/envelp/envfmt.cxx index f6fb3f596a35..379a0f4f7004 100644 --- a/sw/source/ui/envelp/envfmt.cxx +++ b/sw/source/ui/envelp/envfmt.cxx @@ -44,7 +44,7 @@ #define _SVSTDARR_LONGSSORT #define _SVSTDARR_LONGS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <svx/paperinf.hxx> #ifndef _SVX_TSTPITEM_HXX //autogen #include <svx/tstpitem.hxx> diff --git a/sw/source/ui/envelp/envfmt.hxx b/sw/source/ui/envelp/envfmt.hxx index 16d77e4bccd2..fcb449839d53 100644 --- a/sw/source/ui/envelp/envfmt.hxx +++ b/sw/source/ui/envelp/envfmt.hxx @@ -33,7 +33,7 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_USHORTS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <svtools/stdctrl.hxx> #ifndef _FIELD_HXX //autogen diff --git a/sw/source/ui/envelp/envimg.cxx b/sw/source/ui/envelp/envimg.cxx index fa1744ca1ae5..0bbc713d145c 100644 --- a/sw/source/ui/envelp/envimg.cxx +++ b/sw/source/ui/envelp/envimg.cxx @@ -38,7 +38,7 @@ #include <sfx2/app.hxx> #include <svx/paperinf.hxx> #include <com/sun/star/uno/Sequence.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include <tools/shl.hxx> #include <swmodule.hxx> #include <errhdl.hxx> @@ -293,6 +293,9 @@ void SwEnvCfgItem::Commit() } PutProperties(aNames, aValues); } + +void SwEnvCfgItem::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /* -----------------------------26.09.00 14:04-------------------------------- ---------------------------------------------------------------------------*/ diff --git a/sw/source/ui/envelp/envprt.cxx b/sw/source/ui/envelp/envprt.cxx index 01b6bc394b5c..c54911294912 100644 --- a/sw/source/ui/envelp/envprt.cxx +++ b/sw/source/ui/envelp/envprt.cxx @@ -107,7 +107,7 @@ SwEnvPrtPage::~SwEnvPrtPage() IMPL_LINK( SwEnvPrtPage, ClickHdl, Button *, EMPTYARG ) { - sal_Bool bHC = GetDisplayBackground().GetColor().IsDark(); + sal_Bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); if (aBottomButton.IsChecked()) { // Briefumschlaege von unten diff --git a/sw/source/ui/envelp/labelcfg.cxx b/sw/source/ui/envelp/labelcfg.cxx index 76a971c60db6..e0731a0836f4 100644 --- a/sw/source/ui/envelp/labelcfg.cxx +++ b/sw/source/ui/envelp/labelcfg.cxx @@ -65,6 +65,9 @@ void SwLabelConfig::Commit() { // the config item is not writable yet } + +void SwLabelConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + /* -----------------------------15.01.01 11:42-------------------------------- ---------------------------------------------------------------------------*/ diff --git a/sw/source/ui/envelp/labimg.cxx b/sw/source/ui/envelp/labimg.cxx index 6406861f114b..7ebb06bf5e8b 100644 --- a/sw/source/ui/envelp/labimg.cxx +++ b/sw/source/ui/envelp/labimg.cxx @@ -38,7 +38,7 @@ #endif #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Sequence.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include <tools/shl.hxx> #include <swmodule.hxx> #include "labimg.hxx" @@ -410,6 +410,8 @@ SwLabCfgItem::SwLabCfgItem(sal_Bool bLabel) : /* -----------------------------25.09.00 16:26-------------------------------- ---------------------------------------------------------------------------*/ +void SwLabCfgItem::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + void SwLabCfgItem::Commit() { Sequence<OUString> aNames = GetPropertyNames(); diff --git a/sw/source/ui/envelp/labprt.cxx b/sw/source/ui/envelp/labprt.cxx index de5197af2622..75afb901425a 100644 --- a/sw/source/ui/envelp/labprt.cxx +++ b/sw/source/ui/envelp/labprt.cxx @@ -37,7 +37,7 @@ #include <svtools/prnsetup.hxx> -#include <svtools/cmdoptions.hxx> +#include <unotools/cmdoptions.hxx> #include <vcl/print.hxx> #include <wrtsh.hxx> #include <label.hxx> @@ -137,7 +137,7 @@ IMPL_LINK( SwLabPrtPage, CountHdl, Button *, pButton ) if ( bEnable ) aColField.GrabFocus(); -#ifndef PRODUCT +#ifdef DBG_UTIL else ASSERT( pButton == &aPageButton, "NewButton?" ); #endif diff --git a/sw/source/ui/envelp/mailmrge.cxx b/sw/source/ui/envelp/mailmrge.cxx index 97c5a208ec45..4b9fb14d0500 100644 --- a/sw/source/ui/envelp/mailmrge.cxx +++ b/sw/source/ui/envelp/mailmrge.cxx @@ -38,8 +38,8 @@ #include <vcl/msgbox.hxx> #include <vcl/svapp.hxx> #include <tools/urlobj.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/urihelper.hxx> +#include <unotools/pathoptions.hxx> #include <goodies/mailenum.hxx> #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> @@ -873,7 +873,7 @@ IMPL_LINK( SwMailMergeDlg, AttachFileHdl, PushButton *, EMPTYARG ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - AbstractSvxMultiFileDialog* pFileDlg = pFact->CreateSvxMultiFileDialog( this, RID_SVXDLG_MULTIPATH); + AbstractSvxMultiFileDialog* pFileDlg = pFact->CreateSvxMultiFileDialog( this ); DBG_ASSERT(pFileDlg, "Dialogdiet fail!"); pFileDlg->SetFiles(aAttachED.GetText()); pFileDlg->SetHelpId(HID_FILEDLG_MAILMRGE2); diff --git a/sw/source/ui/fldui/flddinf.cxx b/sw/source/ui/fldui/flddinf.cxx index e368340314fc..4bdb5dc005db 100644 --- a/sw/source/ui/fldui/flddinf.cxx +++ b/sw/source/ui/fldui/flddinf.cxx @@ -38,15 +38,12 @@ #include <sfx2/request.hxx> #include <sfx2/frame.hxx> #include <vcl/svapp.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> +#include <svl/zformat.hxx> -#ifndef _HELPID_H #include <helpid.h> -#endif #include <swtypes.hxx> -#ifndef _GLOBALS_HRC #include <globals.hrc> -#endif #include <fldbas.hxx> #include <docufld.hxx> #include <wrtsh.hxx> @@ -63,13 +60,16 @@ #ifndef _VIEW_HXX #include <view.hxx> #endif -#include <svtools/zformat.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/util/Time.hpp> +#include <com/sun/star/util/DateTime.hpp> +#include <com/sun/star/util/Date.hpp> #define USER_DATA_VERSION_1 "1" #define USER_DATA_VERSION USER_DATA_VERSION_1 using namespace nsSwDocInfoSubType; - +using namespace com::sun::star; /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ @@ -103,7 +103,7 @@ SwFldDokInfPage::SwFldDokInfPage(Window* pWindow, const SfxItemSet& rCoreSet ) : SFX_ITEMSET_ARG( &rCoreSet, pItem, SfxUnoAnyItem, SID_DOCINFO, FALSE ); if ( pItem ) - pItem->GetValue() >>= aPropertyNames; + pItem->GetValue() >>= xCustomPropertySet; } /*-------------------------------------------------------------------- @@ -168,24 +168,31 @@ void __EXPORT SwFldDokInfPage::Reset(const SfxItemSet& ) { if (DI_CUSTOM == i) { - if (aPropertyNames.getLength() ) + if(xCustomPropertySet.is() ) { + uno::Reference< beans::XPropertySetInfo > xSetInfo = xCustomPropertySet->getPropertySetInfo(); + const uno::Sequence< beans::Property > rProperties = xSetInfo->getProperties(); +// uno::Sequence< ::rtl::OUString > aPropertyNames(rProperties.getLength()); +// for (sal_Int32 i = 0; i < rProperties.getLength(); ++i) { +// aPropertyNames[i] = rProperties[i].Name; +// } //if ( !IsFldEdit() ) + if( rProperties.getLength() ) { pInfo = aTypeTLB.InsertEntry( String(SW_RES( STR_CUSTOM )) ); pInfo->SetUserData(reinterpret_cast<void*>(USHRT_MAX)); - } - for (sal_Int32 n=0; n<aPropertyNames.getLength(); n++) - { - rtl::OUString sEntry = aPropertyNames[n]; - pEntry = aTypeTLB.InsertEntry(sEntry, pInfo); - if(m_sOldCustomFieldName.equals( sEntry )) + for (sal_Int32 n=0; n < rProperties.getLength(); n++) { - pSelEntry = pEntry; - aTypeTLB.Expand( pInfo ); + rtl::OUString sEntry = rProperties[n].Name; + pEntry = aTypeTLB.InsertEntry(sEntry, pInfo); + if(m_sOldCustomFieldName.equals( sEntry )) + { + pSelEntry = pEntry; + aTypeTLB.Expand( pInfo ); + } + pEntry->SetUserData(reinterpret_cast<void*>(i)); } - pEntry->SetUserData(reinterpret_cast<void*>(i)); } } } @@ -263,12 +270,12 @@ IMPL_LINK( SwFldDokInfPage, TypeHdl, ListBox *, EMPTYARG ) /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ - IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) { USHORT nSubType = (USHORT)(ULONG)pSelEntry->GetUserData(); USHORT nPos = aSelectionLB.GetSelectEntryPos(); USHORT nExtSubType; + USHORT nNewType = 0; if (nSubType != DI_EDIT) { @@ -279,7 +286,33 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) aFormatLB.Clear(); aFormatLB.Enable(FALSE); aFormatFT.Enable(FALSE); - return 0; + if( nSubType == DI_CUSTOM ) + { + //find out which type the custom field has - for a start set to DATE format + ::rtl::OUString sName = aTypeTLB.GetEntryText(pSelEntry); + try + { + uno::Any aVal = xCustomPropertySet->getPropertyValue( sName ); + const uno::Type& rValueType = aVal.getValueType(); + if( rValueType == ::getCppuType( (util::DateTime*)0 )) + { + nNewType = NUMBERFORMAT_DATETIME; + } + else if( rValueType == ::getCppuType( (util::Date*)0 )) + { + nNewType = NUMBERFORMAT_DATE; + } + else if( rValueType == ::getCppuType( (util::Time*)0 )) + { + nNewType = NUMBERFORMAT_TIME; + } + } + catch( const uno::Exception& ) + { + } + } + else + return 0; } nPos = 0; } @@ -290,7 +323,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) nExtSubType = DI_SUB_TIME; USHORT nOldType = 0; - USHORT nNewType = 0; BOOL bEnable = FALSE; BOOL bOneArea = FALSE; @@ -312,7 +344,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) bOneArea = TRUE; break; } - if (!nNewType) { aFormatLB.Clear(); @@ -334,7 +365,7 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) if (IsFldEdit()) { nPos = aSelectionLB.GetSelectEntryPos(); - if (nPos != LISTBOX_ENTRY_NOTFOUND) + if (nPos != LISTBOX_ENTRY_NOTFOUND ) { nSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos); @@ -346,7 +377,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) SwWrtShell *pSh = GetWrtShell(); if(pSh) { - SvNumberFormatter* pFormatter = pSh->GetNumberFormatter(); LanguageType eLang = aFormatLB.GetCurLanguage(); if (nNewType == NUMBERFORMAT_DATE) @@ -358,6 +388,10 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) aFormatLB.SetDefFormat(nFormat); } } + else if( (nSubType == DI_CUSTOM) && (nNewType != 0) ) + { + aFormatLB.SetDefFormat(nFormat); + } } aFormatLB.Enable(bEnable); diff --git a/sw/source/ui/fldui/flddinf.hxx b/sw/source/ui/fldui/flddinf.hxx index 2b72b1aec33a..0d46c873f342 100644 --- a/sw/source/ui/fldui/flddinf.hxx +++ b/sw/source/ui/fldui/flddinf.hxx @@ -33,15 +33,16 @@ #include <sfx2/tabdlg.hxx> #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> -#ifndef _SV_BUTTON_HXX //autogen #include <vcl/button.hxx> -#endif #include <vcl/group.hxx> #include <svtools/svtreebx.hxx> #include "numfmtlb.hxx" #include "fldpage.hxx" +namespace com{namespace sun{ namespace star{ namespace beans{ + class XPropertySet; +}}}} /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ @@ -57,7 +58,7 @@ class SwFldDokInfPage : public SwFldPage CheckBox aFixedCB; SvLBoxEntry* pSelEntry; - com::sun::star::uno::Sequence < ::rtl::OUString > aPropertyNames; + com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > xCustomPropertySet; String aInfoStr; diff --git a/sw/source/ui/fldui/flddok.cxx b/sw/source/ui/fldui/flddok.cxx index f2c22682690a..8c35fb55823e 100644 --- a/sw/source/ui/fldui/flddok.cxx +++ b/sw/source/ui/fldui/flddok.cxx @@ -56,7 +56,7 @@ #include <view.hxx> #endif #include <wrtsh.hxx> -#include <svtools/zformat.hxx> +#include <svl/zformat.hxx> #include <index.hrc> diff --git a/sw/source/ui/fldui/fldedt.cxx b/sw/source/ui/fldui/fldedt.cxx index c0ee8f2e0a98..318ca160c670 100644 --- a/sw/source/ui/fldui/fldedt.cxx +++ b/sw/source/ui/fldui/fldedt.cxx @@ -226,15 +226,15 @@ SfxTabPage* SwFldEditDlg::CreatePage(USHORT nGroup) uno::Reference< beans::XPropertySet > xUDProps( xDocProps->getUserDefinedProperties(), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySetInfo > xSetInfo - = xUDProps->getPropertySetInfo(); - const uno::Sequence< beans::Property > props - = xSetInfo->getProperties(); - uno::Sequence< ::rtl::OUString > names(props.getLength()); - for (sal_Int32 i = 0; i < props.getLength(); ++i) { - names[i] = props[i].Name; - } - pSet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(names) ) ); +// uno::Reference< beans::XPropertySetInfo > xSetInfo +// = xUDProps->getPropertySetInfo(); +// const uno::Sequence< beans::Property > props +// = xSetInfo->getProperties(); +// uno::Sequence< ::rtl::OUString > names(props.getLength()); +// for (sal_Int32 i = 0; i < props.getLength(); ++i) { +// names[i] = props[i].Name; +// } + pSet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(xUDProps) ) ); pTabPage = SwFldDokInfPage::Create(this, *pSet); nHelpId = HID_EDIT_FLD_DOKINF; break; diff --git a/sw/source/ui/fldui/fldfunc.cxx b/sw/source/ui/fldui/fldfunc.cxx index 1531df836622..8603497ecaca 100644 --- a/sw/source/ui/fldui/fldfunc.cxx +++ b/sw/source/ui/fldui/fldfunc.cxx @@ -460,7 +460,7 @@ IMPL_LINK( SwFldFuncPage, ListModifyHdl, Control*, pControl) { aListItemsLB.SetUpdateMode(FALSE); if(pControl == &aListAddPB || - pControl == &aListItemED && aListAddPB.IsEnabled()) + (pControl == &aListItemED && aListAddPB.IsEnabled())) { String sEntry(aListItemED.GetText()); aListItemsLB.InsertEntry(sEntry); diff --git a/sw/source/ui/fldui/fldmgr.cxx b/sw/source/ui/fldui/fldmgr.cxx index dfb7823a1216..d55a77294c75 100644 --- a/sw/source/ui/fldui/fldmgr.cxx +++ b/sw/source/ui/fldui/fldmgr.cxx @@ -33,7 +33,7 @@ #include <cmdid.h> #include <hintids.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/text/XDefaultNumberingProvider.hpp> @@ -53,13 +53,13 @@ #include <sfx2/app.hxx> #include <basic/basmgr.hxx> #include <svx/langitem.hxx> -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> #include <basic/sbmod.hxx> #include <fmtrfmrk.hxx> #include <basic/sbmeth.hxx> #include <basic/sbx.hxx> -#include <svtools/zforlist.hxx> -#include <svtools/zformat.hxx> +#include <svl/zforlist.hxx> +#include <svl/zformat.hxx> #include <vcl/mnemonic.hxx> #include <view.hxx> #include <wrtsh.hxx> // Actives Fenster diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx index a13f2d6b5806..b44c1deb2209 100644 --- a/sw/source/ui/fldui/fldpage.cxx +++ b/sw/source/ui/fldui/fldpage.cxx @@ -37,7 +37,7 @@ #include <vcl/lstbox.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <svx/htmlmode.hxx> #include <dbfld.hxx> diff --git a/sw/source/ui/fldui/fldtdlg.cxx b/sw/source/ui/fldui/fldtdlg.cxx index 0de17286fcad..31388cd2e51e 100644 --- a/sw/source/ui/fldui/fldtdlg.cxx +++ b/sw/source/ui/fldui/fldtdlg.cxx @@ -48,47 +48,23 @@ #include <vcl/msgbox.hxx> #include <svx/htmlmode.hxx> #include <viewopt.hxx> -#ifndef _DOCSH_HXX #include <docsh.hxx> -#endif #include <fldwrap.hxx> -#ifndef _FLDDB_HXX #include <flddb.hxx> -#endif -#ifndef _FLDDINF_HXX #include <flddinf.hxx> -#endif -#ifndef _FLDVAR_HXX #include <fldvar.hxx> -#endif -#ifndef _FLDDOK_HXX #include <flddok.hxx> -#endif -#ifndef _FLDFUNC_HXX #include <fldfunc.hxx> -#endif -#ifndef _FLDREF_HXX #include <fldref.hxx> -#endif #include <wrtsh.hxx> #include <view.hxx> -#ifndef _FLDTDLG_HXX #include <fldtdlg.hxx> -#endif #include <swmodule.hxx> -#ifndef _HELPID_H #include <helpid.h> -#endif -#ifndef _FLDUI_HRC #include <fldui.hrc> -#endif -#ifndef _GLOBALS_HRC #include <globals.hrc> -#endif -#ifndef _FLDTDLG_HRC #include <fldtdlg.hrc> -#endif #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> @@ -245,15 +221,7 @@ SfxItemSet* SwFldDlg::CreateInputItemSet( USHORT nID ) uno::Reference< beans::XPropertySet > xUDProps( xDocProps->getUserDefinedProperties(), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySetInfo > xSetInfo - = xUDProps->getPropertySetInfo(); - const uno::Sequence< beans::Property > props - = xSetInfo->getProperties(); - uno::Sequence< ::rtl::OUString > names(props.getLength()); - for (sal_Int32 i = 0; i < props.getLength(); ++i) { - names[i] = props[i].Name; - } - pISet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(names) ) ); + pISet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(xUDProps) ) ); return pISet; } else diff --git a/sw/source/ui/fldui/fldvar.cxx b/sw/source/ui/fldui/fldvar.cxx index fac8f7943317..a54257e683cf 100644 --- a/sw/source/ui/fldui/fldvar.cxx +++ b/sw/source/ui/fldui/fldvar.cxx @@ -52,7 +52,7 @@ #include <fldvar.hxx> #endif #include <calc.hxx> -#include <svtools/zformat.hxx> +#include <svl/zformat.hxx> #ifndef _GLOBALS_HRC #include <globals.hrc> #endif diff --git a/sw/source/ui/fldui/javaedit.cxx b/sw/source/ui/fldui/javaedit.cxx index 14cc6e4f540e..545a7aa77033 100644 --- a/sw/source/ui/fldui/javaedit.cxx +++ b/sw/source/ui/fldui/javaedit.cxx @@ -46,7 +46,7 @@ #include <vcl/msgbox.hxx> #endif #include <vcl/svapp.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #ifndef _VIEW_HXX #include <view.hxx> #endif diff --git a/sw/source/ui/fldui/makefile.mk b/sw/source/ui/fldui/makefile.mk index a94fdaef17e7..23160cf80fb8 100644 --- a/sw/source/ui/fldui/makefile.mk +++ b/sw/source/ui/fldui/makefile.mk @@ -80,6 +80,7 @@ SLOFILES = \ EXCEPTIONSFILES = \ $(SLO)$/fldtdlg.obj \ $(SLO)$/fldedt.obj \ + $(SLO)$/flddinf.obj \ $(SLO)$/xfldui.obj LIB1TARGET = $(SLB)$/$(TARGET).lib diff --git a/sw/source/ui/fmtui/tmpdlg.cxx b/sw/source/ui/fmtui/tmpdlg.cxx index 4c6f35341e30..ef33935f1b6f 100644 --- a/sw/source/ui/fmtui/tmpdlg.cxx +++ b/sw/source/ui/fmtui/tmpdlg.cxx @@ -40,7 +40,7 @@ #ifndef _SVSTDARR_STRINGSSORTDTOR #define _SVSTDARR_STRINGSSORTDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <vcl/msgbox.hxx> #include <sfx2/viewfrm.hxx> @@ -48,7 +48,7 @@ #include <svx/flstitem.hxx> #include <svx/htmlmode.hxx> #include <svx/htmlcfg.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <numpara.hxx> #include <fmtclds.hxx> #include <swtypes.hxx> @@ -95,11 +95,11 @@ #endif #include <SwStyleNameMapper.hxx> #include <svx/svxids.hrc> -#include <svtools/stritem.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/slstitm.hxx> -#include <svtools/eitem.hxx> -#include <svtools/intitem.hxx> +#include <svl/stritem.hxx> +#include <svl/aeitem.hxx> +#include <svl/slstitm.hxx> +#include <svl/eitem.hxx> +#include <svl/intitem.hxx> #include <svx/svxdlg.hxx> #include <svx/dialogs.hrc> #include <svx/flagsdef.hxx> diff --git a/sw/source/ui/frmdlg/colex.cxx b/sw/source/ui/frmdlg/colex.cxx index 4b7a12868328..a382edf1aa5c 100644 --- a/sw/source/ui/frmdlg/colex.cxx +++ b/sw/source/ui/frmdlg/colex.cxx @@ -39,7 +39,7 @@ #include <algorithm> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/lrspitem.hxx> #include <svx/ulspitem.hxx> #include <svx/sizeitem.hxx> diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx index a9df9762ad92..44eb80358ac6 100644 --- a/sw/source/ui/frmdlg/column.cxx +++ b/sw/source/ui/frmdlg/column.cxx @@ -44,7 +44,7 @@ #include <svx/lrspitem.hxx> #include <svx/sizeitem.hxx> #include "svx/frmdiritem.hxx" -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <sfx2/dispatch.hxx> #include <vcl/msgbox.hxx> #include <swmodule.hxx> diff --git a/sw/source/ui/frmdlg/frmmgr.cxx b/sw/source/ui/frmdlg/frmmgr.cxx index bd1e98b37b9e..0443074c2cd5 100644 --- a/sw/source/ui/frmdlg/frmmgr.cxx +++ b/sw/source/ui/frmdlg/frmmgr.cxx @@ -37,7 +37,7 @@ #include "hintids.hxx" -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svx/protitem.hxx> #include <svx/boxitem.hxx> #include <svx/opaqitem.hxx> diff --git a/sw/source/ui/frmdlg/frmpage.cxx b/sw/source/ui/frmdlg/frmpage.cxx index 3225e120248a..eeb58d83c7fd 100644 --- a/sw/source/ui/frmdlg/frmpage.cxx +++ b/sw/source/ui/frmdlg/frmpage.cxx @@ -46,8 +46,8 @@ #include <hintids.hxx> #include <vcl/msgbox.hxx> #include <vcl/mnemonic.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/stritem.hxx> +#include <svl/urihelper.hxx> +#include <svl/stritem.hxx> #include <svx/impgrf.hxx> #include <svx/htmlmode.hxx> #include <svx/sizeitem.hxx> @@ -2641,8 +2641,8 @@ void BmpWindow::Paint( const Rectangle& ) aGraphic.Draw( this, aPntPos, aPntSz ); else { - bool bIsDark = ( GetSettings().GetStyleSettings().GetWindowColor().IsDark() != FALSE ); - DrawBitmapEx( aPntPos, aPntSz, bIsDark ? aBmpHC : aBmp ); + bool bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); + DrawBitmapEx( aPntPos, aPntSz, bHC ? aBmpHC : aBmp ); } } diff --git a/sw/source/ui/frmdlg/uiborder.cxx b/sw/source/ui/frmdlg/uiborder.cxx index fe1733b34fcc..a6baebe4d366 100644 --- a/sw/source/ui/frmdlg/uiborder.cxx +++ b/sw/source/ui/frmdlg/uiborder.cxx @@ -38,10 +38,10 @@ #include <svx/svxdlg.hxx> #include <svx/svxids.hrc> #include <svx/dialogs.hrc> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/flagsdef.hxx> #include <sfx2/tabdlg.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include "swtypes.hxx" #include "uiborder.hxx" diff --git a/sw/source/ui/frmdlg/wrap.cxx b/sw/source/ui/frmdlg/wrap.cxx index f73d977969ab..3dfad685f732 100644 --- a/sw/source/ui/frmdlg/wrap.cxx +++ b/sw/source/ui/frmdlg/wrap.cxx @@ -41,7 +41,7 @@ #include <vcl/graph.hxx> #include <svx/htmlmode.hxx> #include <sfx2/objsh.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <svx/opaqitem.hxx> #include <svx/ulspitem.hxx> #include <svx/lrspitem.hxx> @@ -748,7 +748,7 @@ void SwWrapTabPage::DataChanged( const DataChangedEvent& rDCEvt ) ---------------------------------------------------------------------------*/ void SwWrapTabPage::ApplyImageList() { - ImageList& rImgLst = GetDisplayBackground().GetColor().IsDark() ? + ImageList& rImgLst = GetSettings().GetStyleSettings().GetHighContrastMode() ? aWrapILH : aWrapIL; aWrapThroughRB.SetModeRadioImage(rImgLst.GetImage(IMG_THROUGH)); diff --git a/sw/source/ui/globdoc/globdoc.cxx b/sw/source/ui/globdoc/globdoc.cxx index ae2c98507bbe..993c65d5d7b7 100644 --- a/sw/source/ui/globdoc/globdoc.cxx +++ b/sw/source/ui/globdoc/globdoc.cxx @@ -34,7 +34,7 @@ #include <sot/clsids.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <unomid.h> diff --git a/sw/source/ui/inc/barcfg.hxx b/sw/source/ui/inc/barcfg.hxx index 05b92671ba77..96d8f76d4b92 100644 --- a/sw/source/ui/inc/barcfg.hxx +++ b/sw/source/ui/inc/barcfg.hxx @@ -41,7 +41,8 @@ public: SwToolbarConfigItem( sal_Bool bWeb ); ~SwToolbarConfigItem(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); void SetTopToolbar( sal_Int32 nSelType, sal_Int32 nBarId ); }; diff --git a/sw/source/ui/inc/basesh.hxx b/sw/source/ui/inc/basesh.hxx index b5ecd678d380..ffca3315acbd 100644 --- a/sw/source/ui/inc/basesh.hxx +++ b/sw/source/ui/inc/basesh.hxx @@ -39,7 +39,7 @@ #include <vcl/timer.hxx> #include <sfx2/module.hxx> #include <sfx2/shell.hxx> -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <mdiexp.hxx> diff --git a/sw/source/ui/inc/cfgitems.hxx b/sw/source/ui/inc/cfgitems.hxx index bb301283a005..913191ea7c3b 100644 --- a/sw/source/ui/inc/cfgitems.hxx +++ b/sw/source/ui/inc/cfgitems.hxx @@ -31,7 +31,7 @@ #define _CFGITEMS_HXX #include <tools/color.hxx> -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include "swdllapi.h" #include <printdata.hxx> @@ -39,7 +39,7 @@ class SwWriterApp; class SwModule; -#ifndef PRODUCT +#ifdef DBG_UTIL class SwTestTabPage; #endif class SwAddPrinterTabPage; @@ -207,7 +207,7 @@ public: void SetOn( BOOL bFlag ) { bOn = bFlag; } }; -#ifndef PRODUCT +#ifdef DBG_UTIL /*--------OS 12.01.95 ----------------------------------- Item fuer Einstellungsdialog - Testeinstellungen --------------------------------------------------------- */ diff --git a/sw/source/ui/inc/dbconfig.hxx b/sw/source/ui/inc/dbconfig.hxx index 9661472115f3..86fcc17b5595 100644 --- a/sw/source/ui/inc/dbconfig.hxx +++ b/sw/source/ui/inc/dbconfig.hxx @@ -49,6 +49,8 @@ public: void Load(); const SwDBData& GetAddressSource(); const SwDBData& GetBibliographySource(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); }; #endif diff --git a/sw/source/ui/inc/dbinsdlg.hxx b/sw/source/ui/inc/dbinsdlg.hxx index 20a3e9f5e51a..709866681f51 100644 --- a/sw/source/ui/inc/dbinsdlg.hxx +++ b/sw/source/ui/inc/dbinsdlg.hxx @@ -47,7 +47,7 @@ #include <vcl/lstbox.hxx> #include <svtools/svmedit.hxx> #include <sfx2/basedlgs.hxx> -#include <svtools/svarray.hxx> +#include <svl/svarray.hxx> #include <unotools/configitem.hxx> #include <numfmtlb.hxx> #include <swdbdata.hxx> @@ -165,8 +165,8 @@ class SwInsertDBColAutoPilot : public SfxModalDialog, public utl::ConfigItem DECL_LINK( HeaderHdl, Button* ); BOOL SplitTextToColArr( const String& rTxt, _DB_Columns& rColArr, BOOL bInsField ); - - + using SfxModalDialog::Notify; + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); virtual void Commit(); void Load(); diff --git a/sw/source/ui/inc/edtwin.hxx b/sw/source/ui/inc/edtwin.hxx index 2b39b928bca6..fe6589dc1521 100644 --- a/sw/source/ui/inc/edtwin.hxx +++ b/sw/source/ui/inc/edtwin.hxx @@ -38,7 +38,7 @@ #include <swevent.hxx> #define _SVSTDARR_STRINGSISORTDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> class SwWrtShell; class SwView; diff --git a/sw/source/ui/inc/envimg.hxx b/sw/source/ui/inc/envimg.hxx index ce7d3ffcc927..c864d05d41aa 100644 --- a/sw/source/ui/inc/envimg.hxx +++ b/sw/source/ui/inc/envimg.hxx @@ -30,7 +30,7 @@ #ifndef _ENVIMG_HXX #define _ENVIMG_HXX -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <unotools/configitem.hxx> #include "swdllapi.h" @@ -97,6 +97,7 @@ public: SwEnvItem& GetItem() {return aEnvItem;} virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); }; #endif diff --git a/sw/source/ui/inc/fldmgr.hxx b/sw/source/ui/inc/fldmgr.hxx index 6919e636fc58..a9cd07224cd9 100644 --- a/sw/source/ui/inc/fldmgr.hxx +++ b/sw/source/ui/inc/fldmgr.hxx @@ -31,7 +31,7 @@ #define _FLDMGR_HXX #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <tools/string.hxx> #include "swdllapi.h" diff --git a/sw/source/ui/inc/fontcfg.hxx b/sw/source/ui/inc/fontcfg.hxx index 1f5eed01b371..58e8d46b0845 100644 --- a/sw/source/ui/inc/fontcfg.hxx +++ b/sw/source/ui/inc/fontcfg.hxx @@ -87,6 +87,7 @@ public: ~SwStdFontConfig(); virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); const String& GetFontStandard(sal_uInt8 nFontGroup) const {return sDefaultFonts[FONT_STANDARD + FONT_PER_GROUP * nFontGroup];} const String& GetFontOutline(sal_uInt8 nFontGroup) const {return sDefaultFonts[FONT_OUTLINE + FONT_PER_GROUP * nFontGroup];} diff --git a/sw/source/ui/inc/formatclipboard.hxx b/sw/source/ui/inc/formatclipboard.hxx index 4eabd66b606c..b9009f2e88c7 100644 --- a/sw/source/ui/inc/formatclipboard.hxx +++ b/sw/source/ui/inc/formatclipboard.hxx @@ -34,9 +34,9 @@ // header for class SwWrtShell #include <wrtsh.hxx> // header for class SfxItemSet -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> // header for class SfxStyleSheetBasePool -#include <svtools/style.hxx> +#include <svl/style.hxx> //----------------------------------------------------------------------------- /** This class acts as data container and execution class for the format paintbrush feature in writer. diff --git a/sw/source/ui/inc/glosdoc.hxx b/sw/source/ui/inc/glosdoc.hxx index eef305546754..4ae564ace5d0 100644 --- a/sw/source/ui/inc/glosdoc.hxx +++ b/sw/source/ui/inc/glosdoc.hxx @@ -31,7 +31,7 @@ #define _GLOSDOC_HXX #include <tools/string.hxx> -#include <svtools/svarray.hxx> +#include <svl/svarray.hxx> #include <com/sun/star/text/XAutoTextGroup.hpp> class SwTextBlocks; diff --git a/sw/source/ui/inc/gloslst.hxx b/sw/source/ui/inc/gloslst.hxx index 085b5fa703fd..b968573348a5 100644 --- a/sw/source/ui/inc/gloslst.hxx +++ b/sw/source/ui/inc/gloslst.hxx @@ -35,7 +35,7 @@ #include <tools/datetime.hxx> #include <tools/string.hxx> #include <vcl/timer.hxx> -#include <svtools/svarray.hxx> +#include <svl/svarray.hxx> class SwGlossaries; class SvStringsISortDtor; diff --git a/sw/source/ui/inc/label.hxx b/sw/source/ui/inc/label.hxx index 2fecfbf4dcb2..72575620231d 100644 --- a/sw/source/ui/inc/label.hxx +++ b/sw/source/ui/inc/label.hxx @@ -33,7 +33,7 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR #define _SVSTDARR_USHORTS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <sfx2/tabdlg.hxx> #include <com/sun/star/frame/XModel.hpp> diff --git a/sw/source/ui/inc/labelcfg.hxx b/sw/source/ui/inc/labelcfg.hxx index 10b55fca21e4..60c1d7a37ae4 100644 --- a/sw/source/ui/inc/labelcfg.hxx +++ b/sw/source/ui/inc/labelcfg.hxx @@ -46,7 +46,8 @@ public: SwLabelConfig(); virtual ~SwLabelConfig(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); void FillLabels(const rtl::OUString& rManufacturer, SwLabRecs& rLabArr); const com::sun::star::uno::Sequence<rtl::OUString>& diff --git a/sw/source/ui/inc/labimg.hxx b/sw/source/ui/inc/labimg.hxx index 1a0adf19d735..e45b2a0d3403 100644 --- a/sw/source/ui/inc/labimg.hxx +++ b/sw/source/ui/inc/labimg.hxx @@ -31,7 +31,7 @@ #ifndef _LABIMG_HXX #define _LABIMG_HXX -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include <unotools/configitem.hxx> #include "swdllapi.h" @@ -126,7 +126,8 @@ public: SwLabItem& GetItem() {return aItem;} - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); }; #endif diff --git a/sw/source/ui/inc/maildispatcher.hxx b/sw/source/ui/inc/maildispatcher.hxx index 4a0ad7239116..44cb3b2a4707 100644 --- a/sw/source/ui/inc/maildispatcher.hxx +++ b/sw/source/ui/inc/maildispatcher.hxx @@ -131,7 +131,6 @@ public: /** returns if the thread is still running */ using osl::Thread::isRunning; - bool isRunning() const; /** returns if shutdown has already been called */ @@ -167,7 +166,6 @@ private: ::rtl::Reference<MailDispatcher> m_xSelfReference; bool run_; bool shutdown_requested_; - bool bIsInRun; }; #endif // INCLUDED_MAILDISPATCHER_HXX diff --git a/sw/source/ui/inc/navicfg.hxx b/sw/source/ui/inc/navicfg.hxx index 124758a773b1..a1c5beb6007b 100644 --- a/sw/source/ui/inc/navicfg.hxx +++ b/sw/source/ui/inc/navicfg.hxx @@ -50,7 +50,8 @@ public: SwNavigationConfig(); ~SwNavigationConfig(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); sal_Int32 GetRootType()const {return nRootType;} void SetRootType(sal_Int32 nSet){ diff --git a/sw/source/ui/inc/navipi.hxx b/sw/source/ui/inc/navipi.hxx index 479ed1329ea8..70e03b4570ad 100644 --- a/sw/source/ui/inc/navipi.hxx +++ b/sw/source/ui/inc/navipi.hxx @@ -35,7 +35,7 @@ #ifndef _LSTBOX_HXX //autogen #include <vcl/lstbox.hxx> #endif -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> #include <svtools/transfer.hxx> #include <sfx2/childwin.hxx> #include <sfx2/ctrlitem.hxx> diff --git a/sw/source/ui/inc/numfmtlb.hxx b/sw/source/ui/inc/numfmtlb.hxx index 1a768d98fac2..891b6dc9009c 100644 --- a/sw/source/ui/inc/numfmtlb.hxx +++ b/sw/source/ui/inc/numfmtlb.hxx @@ -31,7 +31,7 @@ #define _SWNUMFMTLB_HXX #include <vcl/lstbox.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include "swdllapi.h" class SwView; diff --git a/sw/source/ui/inc/optcomp.hxx b/sw/source/ui/inc/optcomp.hxx index b72f9f8d21e9..2742a97efd85 100644 --- a/sw/source/ui/inc/optcomp.hxx +++ b/sw/source/ui/inc/optcomp.hxx @@ -33,7 +33,7 @@ #include <sfx2/tabdlg.hxx> #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> -#include <svtools/compatibility.hxx> +#include <unotools/compatibility.hxx> #include <svx/checklbx.hxx> // class SwCompatibilityOptPage ------------------------------------------ diff --git a/sw/source/ui/inc/optpage.hxx b/sw/source/ui/inc/optpage.hxx index b2fe407964c4..52611a703447 100644 --- a/sw/source/ui/inc/optpage.hxx +++ b/sw/source/ui/inc/optpage.hxx @@ -466,7 +466,7 @@ public: TabPage Testeinstellungen fuer SW --------------------------------------------------------- */ -#ifndef PRODUCT +#ifdef DBG_UTIL class SwTestTabPage : public SfxTabPage { diff --git a/sw/source/ui/inc/prtopt.hxx b/sw/source/ui/inc/prtopt.hxx index 7fa3d66dd6cc..f6abda7f3df6 100644 --- a/sw/source/ui/inc/prtopt.hxx +++ b/sw/source/ui/inc/prtopt.hxx @@ -42,7 +42,8 @@ public: SwPrintOptions(sal_Bool bWeb); virtual ~SwPrintOptions(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); virtual void doSetModified( ) { bModified = sal_True; SetModified();} SwPrintOptions& operator=(const SwPrintData& rData) diff --git a/sw/source/ui/inc/redlndlg.hxx b/sw/source/ui/inc/redlndlg.hxx index 9325aa7ae640..2edc9583d523 100644 --- a/sw/source/ui/inc/redlndlg.hxx +++ b/sw/source/ui/inc/redlndlg.hxx @@ -35,9 +35,9 @@ #include <tools/datetime.hxx> #include <vcl/msgbox.hxx> #ifndef _SVSTDARR_HXX -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/basedlgs.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> diff --git a/sw/source/ui/inc/srcedtw.hxx b/sw/source/ui/inc/srcedtw.hxx index 9dbb5ba6fe31..66d3af9b902a 100644 --- a/sw/source/ui/inc/srcedtw.hxx +++ b/sw/source/ui/inc/srcedtw.hxx @@ -31,7 +31,8 @@ #define _SRCEDTW_HXX #include <vcl/window.hxx> -#include <svtools/lstner.hxx> +#include <svl/lstner.hxx> +#include <unotools/options.hxx> #include <vcl/timer.hxx> #ifndef _TABLE_HXX //autogen @@ -46,6 +47,11 @@ class TextEngine; class ExtTextView; class DataChangedEvent; +namespace utl +{ + class SourceViewConfig; +} + class TextViewOutWin : public Window { ExtTextView* pTextView; @@ -69,7 +75,7 @@ public: //------------------------------------------------------------ namespace svt{ class SourceViewConfig;} -class SwSrcEditWindow : public Window, public SfxListener +class SwSrcEditWindow : public Window, public SfxListener, public utl::ConfigurationListener { private: ExtTextView* pTextView; @@ -80,7 +86,7 @@ private: *pVScrollbar; SwSrcView* pSrcView; - svt::SourceViewConfig* pSourceViewConfig; + utl::SourceViewConfig* pSourceViewConfig; long nCurTextWidth; USHORT nStartLine; @@ -114,6 +120,7 @@ protected: void DoSyntaxHighlight( USHORT nPara ); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, sal_uInt32 ); DECL_LINK(ScrollHdl, ScrollBar*); diff --git a/sw/source/ui/inc/swlbox.hxx b/sw/source/ui/inc/swlbox.hxx index c774faca9d79..492f6559cdfb 100644 --- a/sw/source/ui/inc/swlbox.hxx +++ b/sw/source/ui/inc/swlbox.hxx @@ -30,7 +30,7 @@ #ifndef _SWLBOX_HXX #define _SWLBOX_HXX -#include <svtools/svarray.hxx> +#include <svl/svarray.hxx> #ifndef _LSTBOX_HXX //autogen #include <vcl/lstbox.hxx> diff --git a/sw/source/ui/inc/swwrtshitem.hxx b/sw/source/ui/inc/swwrtshitem.hxx index cf46f3ea6ef3..625d78c81a52 100644 --- a/sw/source/ui/inc/swwrtshitem.hxx +++ b/sw/source/ui/inc/swwrtshitem.hxx @@ -29,7 +29,7 @@ ************************************************************************/ #ifndef _SW_WRTSHELLITEM_HXX #define _SW_WRTSHELLITEM_HXX -#include <svtools/poolitem.hxx> +#include <svl/poolitem.hxx> #include "swdllapi.h" class SwWrtShell; diff --git a/sw/source/ui/inc/uiitems.hxx b/sw/source/ui/inc/uiitems.hxx index 1f94219fa71d..3ecbfd49f5d3 100644 --- a/sw/source/ui/inc/uiitems.hxx +++ b/sw/source/ui/inc/uiitems.hxx @@ -30,7 +30,7 @@ #ifndef _UIITEMS_HXX #define _UIITEMS_HXX -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include "swdllapi.h" #include "cmdid.h" #include "pagedesc.hxx" diff --git a/sw/source/ui/inc/uinums.hxx b/sw/source/ui/inc/uinums.hxx index 72b30c753cc3..a6dba21205cb 100644 --- a/sw/source/ui/inc/uinums.hxx +++ b/sw/source/ui/inc/uinums.hxx @@ -30,7 +30,7 @@ #ifndef _UINUMS_HXX #define _UINUMS_HXX -#include <svtools/svarray.hxx> +#include <svl/svarray.hxx> #include <numrule.hxx> #include "swdllapi.h" diff --git a/sw/source/ui/inc/unotxvw.hxx b/sw/source/ui/inc/unotxvw.hxx index 4db18720cf87..43dc420915ef 100644 --- a/sw/source/ui/inc/unotxvw.hxx +++ b/sw/source/ui/inc/unotxvw.hxx @@ -47,7 +47,7 @@ #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/datatransfer/XTransferableSupplier.hpp> #include <cppuhelper/implbase8.hxx> // helper for implementations -#include <svtools/itemprop.hxx> +#include <svl/itemprop.hxx> #include "calbck.hxx" #include "TextCursorHelper.hxx" #include <comphelper/uno3.hxx> diff --git a/sw/source/ui/inc/usrpref.hxx b/sw/source/ui/inc/usrpref.hxx index 812873626ced..8c8f949bf803 100644 --- a/sw/source/ui/inc/usrpref.hxx +++ b/sw/source/ui/inc/usrpref.hxx @@ -71,6 +71,7 @@ class SwLayoutViewConfig : public utl::ConfigItem SwLayoutViewConfig(BOOL bWeb, SwMasterUsrPref& rParent); ~SwLayoutViewConfig(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); virtual void Commit(); void Load(); void SetModified(){ConfigItem::SetModified();} @@ -88,7 +89,8 @@ class SwGridConfig : public utl::ConfigItem SwGridConfig(BOOL bWeb, SwMasterUsrPref& rParent); ~SwGridConfig(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); void Load(); void SetModified(){ConfigItem::SetModified();} }; @@ -104,7 +106,8 @@ class SwCursorConfig : public utl::ConfigItem SwCursorConfig(SwMasterUsrPref& rParent); ~SwCursorConfig(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); void Load(); void SetModified(){ConfigItem::SetModified();} }; @@ -120,7 +123,8 @@ class SwWebColorConfig : public utl::ConfigItem SwWebColorConfig(SwMasterUsrPref& rParent); ~SwWebColorConfig(); - virtual void Commit(); + virtual void Commit(); + virtual void Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); void Load(); void SetModified(){ConfigItem::SetModified();} }; diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index 9eeaa42ccaa4..a670139687e5 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -38,9 +38,9 @@ #include <rsc/rscsfx.hxx> #include <vcl/msgbox.hxx> #include <vcl/help.hxx> -#include <svtools/stritem.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/stritem.hxx> +#include <svl/urihelper.hxx> +#include <unotools/pathoptions.hxx> #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> diff --git a/sw/source/ui/index/idxmrk.cxx b/sw/source/ui/index/idxmrk.cxx index 866ecd82ee4e..259110a888d8 100644 --- a/sw/source/ui/index/idxmrk.cxx +++ b/sw/source/ui/index/idxmrk.cxx @@ -37,7 +37,7 @@ #include <helpid.h> #endif #define _SVSTDARR_STRINGSSORT -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <comphelper/processfactory.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/beans/PropertyValue.hpp> @@ -45,15 +45,15 @@ #include <com/sun/star/util/SearchOptions.hpp> #include <com/sun/star/util/SearchFlags.hpp> #include <com/sun/star/i18n/TransliterationModules.hpp> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif #include <sfx2/dispatch.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svtools/txtcmp.hxx> #include <svx/scripttypeitem.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/langitem.hxx> #include <swtypes.hxx> #include <idxmrk.hxx> @@ -78,7 +78,7 @@ #include <fldbas.hxx> #include <utlui.hrc> #include <swcont.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <ndtxt.hxx> #include <breakit.hxx> diff --git a/sw/source/ui/index/swuiidxmrk.cxx b/sw/source/ui/index/swuiidxmrk.cxx index 9b26818d028f..b5082f14c485 100644 --- a/sw/source/ui/index/swuiidxmrk.cxx +++ b/sw/source/ui/index/swuiidxmrk.cxx @@ -40,7 +40,7 @@ #include <helpid.h> #endif #define _SVSTDARR_STRINGSSORT -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <comphelper/processfactory.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/beans/PropertyValue.hpp> @@ -48,15 +48,15 @@ #include <com/sun/star/util/SearchOptions.hpp> #include <com/sun/star/util/SearchFlags.hpp> #include <com/sun/star/i18n/TransliterationModules.hpp> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif #include <sfx2/dispatch.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svtools/txtcmp.hxx> #include <svx/scripttypeitem.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/langitem.hxx> #include "svx/unolingu.hxx" #include <swtypes.hxx> @@ -82,7 +82,7 @@ #include <fldbas.hxx> #include <utlui.hrc> #include <swcont.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/cjkoptions.hxx> #include <ndtxt.hxx> #include <breakit.hxx> #include <SwRewriter.hxx> diff --git a/sw/source/ui/lingu/olmenu.cxx b/sw/source/ui/lingu/olmenu.cxx index 865908568cd6..be469f14db1b 100644 --- a/sw/source/ui/lingu/olmenu.cxx +++ b/sw/source/ui/lingu/olmenu.cxx @@ -35,10 +35,10 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/lingucfg.hxx> -#include <svtools/linguprops.hxx> +#include <unotools/lingucfg.hxx> +#include <unotools/linguprops.hxx> #include <svtools/filter.hxx> #include <svx/impgrf.hxx> #include <svx/svxacorr.hxx> @@ -64,12 +64,12 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/i18n/ScriptType.hpp> #include <svx/dlgutil.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <svx/langitem.hxx> #include <svx/splwrap.hxx> #include <vcl/svapp.hxx> #include <vcl/settings.hxx> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <svx/acorrcfg.hxx> #include <swmodule.hxx> #include <cmdid.h> @@ -92,7 +92,7 @@ // <- #111827# #include <unomid.h> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <map> #include <svtools/langtab.hxx> #include <com/sun/star/document/XDocumentLanguages.hpp> @@ -101,7 +101,7 @@ #include "swabstdlg.hxx" #include "chrdlg.hrc" #include <svx/brshitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <viewopt.hxx> #include <uitool.hxx> @@ -428,7 +428,7 @@ bGrammarResults(false) sal_Int16 nStringCount = static_cast< sal_Int16 >( aSuggestions.getLength() ); SvtLinguConfig aCfg; - const bool bIsDark = Application::GetSettings().GetStyleSettings().GetWindowColor().IsDark(); + const bool bHC = Application::GetSettings().GetStyleSettings().GetHighContrastMode(); PopupMenu *pMenu = GetPopupMenu(MN_AUTOCORR); pMenu->SetMenuFlags(MENU_FLAG_NOAUTOMNEMONICS); @@ -440,7 +440,7 @@ bGrammarResults(false) uno::Reference< container::XNamed > xNamed( xSpellAlt, uno::UNO_QUERY ); if (xNamed.is()) { - aSuggestionImageUrl = aCfg.GetSpellAndGrammarContextSuggestionImage( xNamed->getName(), bIsDark ); + aSuggestionImageUrl = aCfg.GetSpellAndGrammarContextSuggestionImage( xNamed->getName(), bHC ); aImage = Image( lcl_GetImageFromPngUrl( aSuggestionImageUrl ) ); } @@ -529,7 +529,7 @@ bGrammarResults(false) if (xSvcInfo.is()) { OUString aDictionaryImageUrl( aCfg.GetSpellAndGrammarContextDictionaryImage( - xSvcInfo->getImplementationName(), bIsDark) ); + xSvcInfo->getImplementationName(), bHC) ); if (aDictionaryImageUrl.getLength() > 0) { Image aImage( lcl_GetImageFromPngUrl( aDictionaryImageUrl ) ); @@ -583,7 +583,7 @@ bGrammarResults(false) uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface(); Image rImg = ::GetImage( xFrame, ::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False, - Application::GetSettings().GetStyleSettings().GetWindowColor().IsDark() ); + Application::GetSettings().GetStyleSettings().GetHighContrastMode() ); SetItemImage( MN_SPELLING, rImg ); ////////////////////////////////////////////////////////////////////////////////// @@ -717,7 +717,7 @@ aInfo16( SW_RES(IMG_INFO_16) ) uno::Reference< frame::XFrame > xFrame = pWrtSh->GetView().GetViewFrame()->GetFrame()->GetFrameInterface(); Image rImg = ::GetImage( xFrame, ::rtl::OUString::createFromAscii(".uno:SpellingAndGrammarDialog"), sal_False, - Application::GetSettings().GetStyleSettings().GetWindowColor().IsDark() ); + Application::GetSettings().GetStyleSettings().GetHighContrastMode() ); SetItemImage( MN_SPELLING, rImg ); ////////////////////////////////////////////////////////////////////////////////// diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx index f7eace73f06e..3915d6918f33 100644 --- a/sw/source/ui/misc/bookmark.cxx +++ b/sw/source/ui/misc/bookmark.cxx @@ -37,7 +37,7 @@ #include <sfx2/request.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <vcl/msgbox.hxx> diff --git a/sw/source/ui/misc/docfnote.cxx b/sw/source/ui/misc/docfnote.cxx index 44a3e0750890..d56ac7c593b6 100644 --- a/sw/source/ui/misc/docfnote.cxx +++ b/sw/source/ui/misc/docfnote.cxx @@ -36,7 +36,7 @@ #endif -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <errhdl.hxx> #include <wrtsh.hxx> #ifndef _VIEW_HXX diff --git a/sw/source/ui/misc/glosbib.cxx b/sw/source/ui/misc/glosbib.cxx index e5269a6f7dd7..206c4ea900d7 100644 --- a/sw/source/ui/misc/glosbib.cxx +++ b/sw/source/ui/misc/glosbib.cxx @@ -46,8 +46,8 @@ #include <unotools/transliterationwrapper.hxx> #include <unotools/tempfile.hxx> -#include <svtools/svstdarr.hxx> -#include <svtools/pathoptions.hxx> +#include <svl/svstdarr.hxx> +#include <unotools/pathoptions.hxx> #include <swtypes.hxx> #include <glosbib.hxx> #include <gloshdl.hxx> diff --git a/sw/source/ui/misc/glosdoc.cxx b/sw/source/ui/misc/glosdoc.cxx index 94d2f04a9b0e..f9db3c82fcba 100644 --- a/sw/source/ui/misc/glosdoc.cxx +++ b/sw/source/ui/misc/glosdoc.cxx @@ -38,17 +38,17 @@ #define _SVSTDARR_STRINGS #include <unotools/transliterationwrapper.hxx> -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #ifndef __RSC //autogen #include <tools/errinf.hxx> #endif #include <tools/debug.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #ifndef SVTOOLS_FSTATHELPER_HXX -#include <svtools/fstathelper.hxx> +#include <svl/fstathelper.hxx> #endif -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <unotools/tempfile.hxx> #include <swtypes.hxx> #include <errhdl.hxx> // ASSERT diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index ef368f680378..17afbfb31578 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -50,11 +50,11 @@ #include <vcl/help.hxx> #endif #ifndef _SVSTDARR_HXX -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/stritem.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/lingucfg.hxx> +#include <svl/stritem.hxx> +#include <unotools/pathoptions.hxx> +#include <unotools/lingucfg.hxx> #include <sfx2/request.hxx> #include <sfx2/fcontnr.hxx> @@ -70,7 +70,7 @@ #include <com/sun/star/ui/dialogs/XFilePicker.hpp> #include <com/sun/star/ui/dialogs/XFilterManager.hpp> #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <unotools/charclass.hxx> #include <swwait.hxx> #include <swtypes.hxx> @@ -1216,7 +1216,7 @@ IMPL_LINK( SwGlossaryDlg, PathHdl, Button *, pBtn ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - AbstractSvxMultiPathDialog* pDlg = pFact->CreateSvxMultiPathDialog( pBtn, RID_SVXDLG_MULTIPATH); + AbstractSvxMultiPathDialog* pDlg = pFact->CreateSvxMultiPathDialog( pBtn ); DBG_ASSERT(pDlg, "Dialogdiet fail!"); SvtPathOptions aPathOpt; String sGlosPath( aPathOpt.GetAutoTextPath() ); diff --git a/sw/source/ui/misc/glshell.cxx b/sw/source/ui/misc/glshell.cxx index a79e67eec31c..12befeaeb194 100644 --- a/sw/source/ui/misc/glshell.cxx +++ b/sw/source/ui/misc/glshell.cxx @@ -34,13 +34,13 @@ #include <com/sun/star/frame/XTitle.hpp> #include <tools/list.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/printer.hxx> #include <sfx2/request.hxx> #include <sfx2/sfxsids.hrc> #include <svx/srchitem.hxx> -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> #include <gloshdl.hxx> #include <svx/acorrcfg.hxx> diff --git a/sw/source/ui/misc/insfnote.cxx b/sw/source/ui/misc/insfnote.cxx index d659ceb0b6f1..a91953e24148 100644 --- a/sw/source/ui/misc/insfnote.cxx +++ b/sw/source/ui/misc/insfnote.cxx @@ -36,8 +36,8 @@ #endif #include <hintids.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> #include <svx/fontitem.hxx> #include <vcl/msgbox.hxx> diff --git a/sw/source/ui/misc/insrule.cxx b/sw/source/ui/misc/insrule.cxx index b2d38797222f..117590728c88 100644 --- a/sw/source/ui/misc/insrule.cxx +++ b/sw/source/ui/misc/insrule.cxx @@ -43,7 +43,7 @@ #include <vcl/msgbox.hxx> #endif #include <svx/brshitem.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <vcl/graph.hxx> #include "swtypes.hxx" diff --git a/sw/source/ui/misc/linenum.cxx b/sw/source/ui/misc/linenum.cxx index 58babb639807..8707cac36fb6 100644 --- a/sw/source/ui/misc/linenum.cxx +++ b/sw/source/ui/misc/linenum.cxx @@ -37,7 +37,7 @@ #include <sfx2/viewfrm.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <vcl/msgbox.hxx> #include <view.hxx> #include <wrtsh.hxx> diff --git a/sw/source/ui/misc/num.cxx b/sw/source/ui/misc/num.cxx index c1e46a1b4dfb..94a8ea847781 100644 --- a/sw/source/ui/misc/num.cxx +++ b/sw/source/ui/misc/num.cxx @@ -93,9 +93,9 @@ #include <SwStyleNameMapper.hxx> #include <svx/svxids.hrc> #include <svx/dialogs.hrc> -#include <svtools/stritem.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/slstitm.hxx> +#include <svl/stritem.hxx> +#include <svl/aeitem.hxx> +#include <svl/slstitm.hxx> static BOOL bLastRelative = FALSE; diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx index 9fd448fcb210..27eabd673750 100644 --- a/sw/source/ui/misc/outline.cxx +++ b/sw/source/ui/misc/outline.cxx @@ -65,7 +65,7 @@ #include <uinums.hxx> #include <poolfmt.hxx> #include <shellres.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #include <charfmt.hxx> #include <docstyle.hxx> #include <viewopt.hxx> diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx index 3f0c634f2b24..75c72d6b3f66 100644 --- a/sw/source/ui/misc/pgfnote.cxx +++ b/sw/source/ui/misc/pgfnote.cxx @@ -48,10 +48,10 @@ #include <vcl/field.hxx> #include <vcl/svapp.hxx> #include <unotools/localedatawrapper.hxx> -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include <svx/sizeitem.hxx> #include <svx/pageitem.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/ulspitem.hxx> #include <uitool.hxx> #include <pagedesc.hxx> diff --git a/sw/source/ui/misc/redlndlg.cxx b/sw/source/ui/misc/redlndlg.cxx index a0da69f942e5..483340b63585 100644 --- a/sw/source/ui/misc/redlndlg.cxx +++ b/sw/source/ui/misc/redlndlg.cxx @@ -41,9 +41,9 @@ #include <tools/datetime.hxx> #include <vcl/msgbox.hxx> #ifndef _SVSTDARR_HXX -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> #include <svx/ctredlin.hxx> @@ -1281,7 +1281,7 @@ IMPL_LINK( SwRedlineAcceptDlg, CommandHdl, void*, EMPTYARG ) rRedline.GetRedlineData().GetTimeStamp() ), SID_ATTR_POSTIT_DATE )); - AbstractSvxPostItDialog* pDlg = pFact->CreateSvxPostItDialog( pParentDlg, aSet, RID_SVXDLG_POSTIT, FALSE ); + AbstractSvxPostItDialog* pDlg = pFact->CreateSvxPostItDialog( pParentDlg, aSet, FALSE ); DBG_ASSERT(pDlg, "Dialogdiet fail!"); pDlg->HideAuthor(); diff --git a/sw/source/ui/misc/srtdlg.cxx b/sw/source/ui/misc/srtdlg.cxx index 0b2ff55c7c41..6000632ef3f8 100644 --- a/sw/source/ui/misc/srtdlg.cxx +++ b/sw/source/ui/misc/srtdlg.cxx @@ -39,8 +39,8 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/intitem.hxx> -#include <svtools/eitem.hxx> +#include <svl/intitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/dispatch.hxx> #include <svx/svxids.hrc> #include <svx/unolingu.hxx> diff --git a/sw/source/ui/misc/swmodalredlineacceptdlg.cxx b/sw/source/ui/misc/swmodalredlineacceptdlg.cxx index 6039600d037c..6a6dff99c9bc 100644 --- a/sw/source/ui/misc/swmodalredlineacceptdlg.cxx +++ b/sw/source/ui/misc/swmodalredlineacceptdlg.cxx @@ -45,9 +45,9 @@ #include <tools/datetime.hxx> #include <vcl/msgbox.hxx> #ifndef _SVSTDARR_HXX -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> #include <svx/ctredlin.hxx> diff --git a/sw/source/ui/ribbar/concustomshape.cxx b/sw/source/ui/ribbar/concustomshape.cxx index 809b593dec0c..3fc2ff816dfe 100644 --- a/sw/source/ui/ribbar/concustomshape.cxx +++ b/sw/source/ui/ribbar/concustomshape.cxx @@ -61,7 +61,7 @@ #ifndef _FM_FMMODEL_HXX #include <svx/fmmodel.hxx> #endif -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/svdpage.hxx> #include <svx/svdoashp.hxx> #include <svx/adjitem.hxx> diff --git a/sw/source/ui/ribbar/drawbase.cxx b/sw/source/ui/ribbar/drawbase.cxx index f6a48d36cd68..764090080aeb 100644 --- a/sw/source/ui/ribbar/drawbase.cxx +++ b/sw/source/ui/ribbar/drawbase.cxx @@ -34,7 +34,7 @@ #include <tools/list.hxx> #include <svx/svdview.hxx> #include <svx/svdobj.hxx> -#include <svtools/ptitem.hxx> +#include <svl/ptitem.hxx> #include <svx/sizeitem.hxx> #include <sfx2/request.hxx> #include <sfx2/bindings.hxx> diff --git a/sw/source/ui/ribbar/inputwin.cxx b/sw/source/ui/ribbar/inputwin.cxx index 07745f3c01bb..005f9e019cf3 100644 --- a/sw/source/ui/ribbar/inputwin.cxx +++ b/sw/source/ui/ribbar/inputwin.cxx @@ -37,8 +37,8 @@ #include <sfx2/viewfrm.hxx> #include <sfx2/dispatch.hxx> #include <svx/ruler.hxx> -#include <svtools/zforlist.hxx> -#include <svtools/stritem.hxx> +#include <svl/zforlist.hxx> +#include <svl/stritem.hxx> #include "swtypes.hxx" #include "cmdid.h" @@ -95,10 +95,10 @@ SwInputWindow::SwInputWindow( Window* pParent, SfxBindings* pBind ) InsertWindow( ED_FORMULA, &aEdit); SetHelpId(ED_FORMULA, HID_EDIT_FORMULA); - BOOL bDark = GetSettings().GetStyleSettings().GetFaceColor().IsDark(); - SetItemImage( FN_FORMULA_CALC, pManager->GetImage(FN_FORMULA_CALC, bDark )); - SetItemImage( FN_FORMULA_CANCEL, pManager->GetImage(FN_FORMULA_CANCEL, bDark )); - SetItemImage( FN_FORMULA_APPLY, pManager->GetImage(FN_FORMULA_APPLY, bDark )); + BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); + SetItemImage( FN_FORMULA_CALC, pManager->GetImage(FN_FORMULA_CALC, bHC )); + SetItemImage( FN_FORMULA_CANCEL, pManager->GetImage(FN_FORMULA_CANCEL, bHC )); + SetItemImage( FN_FORMULA_APPLY, pManager->GetImage(FN_FORMULA_APPLY, bHC )); SetItemBits( FN_FORMULA_CALC, GetItemBits( FN_FORMULA_CALC ) | TIB_DROPDOWNONLY ); SetDropdownClickHdl( LINK( this, SwInputWindow, DropdownClickHdl )); @@ -156,12 +156,11 @@ void SwInputWindow::DataChanged( const DataChangedEvent& rDCEvt ) // update item images SwModule *pMod = SW_MOD(); SfxImageManager *pImgMgr = SfxImageManager::GetImageManager( pMod ); - //!! Don't use display-background to check for IsDark !! - BOOL bDark = GetSettings().GetStyleSettings().GetFaceColor().IsDark(); + BOOL bHC = GetSettings().GetStyleSettings().GetHighContrastMode(); // - SetItemImage( FN_FORMULA_CALC, pImgMgr->GetImage(FN_FORMULA_CALC, bDark )); - SetItemImage( FN_FORMULA_CANCEL, pImgMgr->GetImage(FN_FORMULA_CANCEL, bDark )); - SetItemImage( FN_FORMULA_APPLY, pImgMgr->GetImage(FN_FORMULA_APPLY, bDark )); + SetItemImage( FN_FORMULA_CALC, pImgMgr->GetImage(FN_FORMULA_CALC, bHC )); + SetItemImage( FN_FORMULA_CANCEL, pImgMgr->GetImage(FN_FORMULA_CANCEL, bHC )); + SetItemImage( FN_FORMULA_APPLY, pImgMgr->GetImage(FN_FORMULA_APPLY, bHC )); } ToolBox::DataChanged( rDCEvt ); diff --git a/sw/source/ui/ribbar/tblctrl.cxx b/sw/source/ui/ribbar/tblctrl.cxx index 5441943c126f..741fd4509b81 100644 --- a/sw/source/ui/ribbar/tblctrl.cxx +++ b/sw/source/ui/ribbar/tblctrl.cxx @@ -32,7 +32,7 @@ #include "precompiled_sw.hxx" -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <vcl/toolbox.hxx> #include <sfx2/app.hxx> diff --git a/sw/source/ui/ribbar/tbxanchr.cxx b/sw/source/ui/ribbar/tbxanchr.cxx index fc086a1143c2..5ca8c504229a 100644 --- a/sw/source/ui/ribbar/tbxanchr.cxx +++ b/sw/source/ui/ribbar/tbxanchr.cxx @@ -37,7 +37,7 @@ #include <vcl/timer.hxx> #include <sfx2/app.hxx> #include <svx/htmlmode.hxx> -#include <svtools/intitem.hxx> +#include <svl/intitem.hxx> #include <sfx2/dispatch.hxx> #ifndef _TOOLBOX_HXX //autogen #include <vcl/toolbox.hxx> diff --git a/sw/source/ui/ribbar/workctrl.cxx b/sw/source/ui/ribbar/workctrl.cxx index c0f248dfcd66..dea86994f2d3 100644 --- a/sw/source/ui/ribbar/workctrl.cxx +++ b/sw/source/ui/ribbar/workctrl.cxx @@ -34,7 +34,7 @@ #include <string> // HACK: prevent conflict between STLPORT and Workshop headers -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/htmlmode.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/bindings.hxx> @@ -65,7 +65,7 @@ #include <helpid.h> #endif #include <wrtsh.hxx> -#include <svtools/imageitm.hxx> +#include <svl/imageitm.hxx> #include <vcl/lstbox.hxx> #include <rtl/ustring.hxx> #include "swabstdlg.hxx" @@ -115,7 +115,7 @@ void SAL_CALL SwTbxInsertCtrl::update() throw (uno::RuntimeException) Image aImage = GetImage( m_xFrame, aSlotURL, hasBigImages(), - rTbx.GetDisplayBackground().GetColor().IsDark() ); + rTbx.GetSettings().GetStyleSettings().GetHighContrastMode() ); rTbx.SetItemImage(GetId(), aImage); rTbx.Invalidate(); @@ -146,11 +146,11 @@ void SwTbxInsertCtrl::StateChanged( USHORT /*nSID*/, rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" )); aSlotURL += rtl::OUString::valueOf( sal_Int32( nId )); + ToolBox& rBox = GetToolBox(); Image aImage = GetImage( m_xFrame, aSlotURL, hasBigImages(), - GetToolBox().GetDisplayBackground().GetColor().IsDark() ); - ToolBox& rBox = GetToolBox(); + rBox.GetSettings().GetStyleSettings().GetHighContrastMode() ); rBox.SetItemImage(GetId(), aImage); rBox.SetItemImageMirrorMode( GetId(), FALSE ); rBox.SetItemImageAngle( GetId(), pItem->GetRotation() ); @@ -572,7 +572,7 @@ void SwScrollNaviPopup::DataChanged( const DataChangedEvent& rDCEvt ) ---------------------------------------------------------------------------*/ void SwScrollNaviPopup::ApplyImageList() { - ImageList& rImgLst = aToolBox.GetDisplayBackground().GetColor().IsDark() ? + ImageList& rImgLst = aToolBox.GetSettings().GetStyleSettings().GetHighContrastMode() ? aIListH : aIList; for(USHORT i = 0; i < NID_COUNT; i++) { @@ -746,7 +746,7 @@ SwNaviImageButton::SwNaviImageButton( FreeResource(); SetStyle(GetStyle()|WB_NOPOINTERFOCUS); SetQuickHelpText(sQuickText); - SetModeImage( GetDisplayBackground().GetColor().IsDark() ? aImageH : aImage); + SetModeImage( GetSettings().GetStyleSettings().GetHighContrastMode() ? aImageH : aImage); } /* -----------------------------2002/07/05 9:41------------------------------- @@ -755,7 +755,7 @@ void SwNaviImageButton::DataChanged( const DataChangedEvent& rDCEvt ) { if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) - SetModeImage( GetDisplayBackground().GetColor().IsDark() ? aImageH : aImage); + SetModeImage( GetSettings().GetStyleSettings().GetHighContrastMode() ? aImageH : aImage); Window::DataChanged( rDCEvt ); } diff --git a/sw/source/ui/shells/annotsh.cxx b/sw/source/ui/shells/annotsh.cxx index 1a34e2972956..023936ffa5d6 100755 --- a/sw/source/ui/shells/annotsh.cxx +++ b/sw/source/ui/shells/annotsh.cxx @@ -57,18 +57,18 @@ #include <svx/fontitem.hxx> #include <svx/fhgtitem.hxx> #include <svx/clipfmtitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/slstitm.hxx> +#include <svl/stritem.hxx> +#include <svl/slstitm.hxx> #include <svx/colritem.hxx> #include <svx/wghtitem.hxx> #include <svx/cntritem.hxx> #include <svx/postitem.hxx> #include <svx/frmdiritem.hxx> #include <svx/svdoutl.hxx> -#include <svtools/whiter.hxx> -#include <svtools/cjkoptions.hxx> -#include <svtools/ctloptions.hxx> -#include <svtools/useroptions.hxx> +#include <svl/whiter.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/ctloptions.hxx> +#include <unotools/useroptions.hxx> #include <vcl/msgbox.hxx> #include <svx/flditem.hxx> #include <svx/editstat.hxx> @@ -108,18 +108,18 @@ #include <svx/dialogs.hrc> #include <svx/svxids.hrc> -#include <svtools/itempool.hxx> +#include <svl/itempool.hxx> #include <svx/outliner.hxx> #include <svx/editeng.hxx> #include <svx/editview.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svx/langitem.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <docsh.hxx> -#include <svtools/undo.hxx> +#include <svl/undo.hxx> #include "swabstdlg.hxx" //CHINA001 #include "chrdlg.hrc" //CHINA001 #include "misc.hrc" diff --git a/sw/source/ui/shells/basesh.cxx b/sw/source/ui/shells/basesh.cxx index 9f5ee6195e81..9b38981abbb3 100644 --- a/sw/source/ui/shells/basesh.cxx +++ b/sw/source/ui/shells/basesh.cxx @@ -32,8 +32,8 @@ #include "precompiled_sw.hxx" #include <sot/factory.hxx> #include <hintids.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/urihelper.hxx> +#include <svl/languageoptions.hxx> #ifndef _SVX_SVXIDS_HRC #include <svx/svxids.hrc> @@ -45,8 +45,8 @@ #include <sfx2/docfile.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/request.hxx> -#include <svtools/whiter.hxx> -#include <svtools/visitem.hxx> +#include <svl/whiter.hxx> +#include <svl/visitem.hxx> #include <sfx2/objitem.hxx> #include <svtools/filter.hxx> #include <svx/gallery.hxx> @@ -55,11 +55,11 @@ #include <svx/contdlg.hxx> #include <vcl/graph.hxx> #include <svx/impgrf.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <vcl/msgbox.hxx> -#include <svtools/ptitem.hxx> -#include <svtools/itemiter.hxx> -#include <svtools/stritem.hxx> +#include <svl/ptitem.hxx> +#include <svl/itemiter.hxx> +#include <svl/stritem.hxx> #include <svx/colritem.hxx> #include <svx/shaditem.hxx> #include <svx/boxitem.hxx> @@ -517,6 +517,9 @@ void SwBaseShell::ExecUndo(SfxRequest &rReq) if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nId, FALSE, &pItem )) nCnt = ((SfxUInt16Item*)pItem)->GetValue(); + // #i106349#: save pointer: undo/redo may delete the shell, i.e., this! + SfxViewFrame *const pViewFrame( GetView().GetViewFrame() ); + switch( nId ) { case SID_UNDO: @@ -538,7 +541,7 @@ void SwBaseShell::ExecUndo(SfxRequest &rReq) DBG_ERROR("falscher Dispatcher"); } - GetView().GetViewFrame()->GetBindings().InvalidateAll(sal_False); + if (pViewFrame) { pViewFrame->GetBindings().InvalidateAll(sal_False); } } /*-------------------------------------------------------------------- diff --git a/sw/source/ui/shells/beziersh.cxx b/sw/source/ui/shells/beziersh.cxx index cc3493fe5120..919531e84fb7 100644 --- a/sw/source/ui/shells/beziersh.cxx +++ b/sw/source/ui/shells/beziersh.cxx @@ -35,8 +35,8 @@ #include "cmdid.h" #include <svx/svdview.hxx> #include <svx/srchitem.hxx> -#include <svtools/eitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/whiter.hxx> #include <svx/svdopath.hxx> #include <sfx2/request.hxx> #include <sfx2/dispatch.hxx> diff --git a/sw/source/ui/shells/drawdlg.cxx b/sw/source/ui/shells/drawdlg.cxx index 8cad5be21ccb..329465421dd4 100644 --- a/sw/source/ui/shells/drawdlg.cxx +++ b/sw/source/ui/shells/drawdlg.cxx @@ -83,7 +83,7 @@ void SwDrawShell::ExecDrawDlg(SfxRequest& rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if ( pFact ) { - SfxAbstractTabDialog *pDlg = pFact->CreateTextTabDialog( NULL, &aNewAttr, RID_SVXDLG_TEXT, pView ); + SfxAbstractTabDialog *pDlg = pFact->CreateTextTabDialog( NULL, &aNewAttr, pView ); USHORT nResult = pDlg->Execute(); if (nResult == RET_OK) @@ -111,7 +111,6 @@ void SwDrawShell::ExecDrawDlg(SfxRequest& rReq) AbstractSvxAreaTabDialog * pDlg = pFact->CreateSvxAreaTabDialog( NULL, &aNewAttr, pDoc, - RID_SVXDLG_AREA, pView); DBG_ASSERT(pDlg, "Dialogdiet fail!"); const SvxColorTableItem* pColorItem = (const SvxColorTableItem*) @@ -154,7 +153,6 @@ void SwDrawShell::ExecDrawDlg(SfxRequest& rReq) SfxAbstractTabDialog * pDlg = pFact->CreateSvxLineTabDialog( NULL, &aNewAttr, pDoc, - RID_SVXDLG_LINE, pObj, bHasMarked); DBG_ASSERT(pDlg, "Dialogdiet fail!"); diff --git a/sw/source/ui/shells/drawsh.cxx b/sw/source/ui/shells/drawsh.cxx index 4da015e2d586..8e5b20c67dd2 100644 --- a/sw/source/ui/shells/drawsh.cxx +++ b/sw/source/ui/shells/drawsh.cxx @@ -35,12 +35,12 @@ #include <tools/shl.hxx> #include <svx/svdview.hxx> #include <svx/svdotext.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/fontwork.hxx> #include <sfx2/request.hxx> #include <sfx2/bindings.hxx> #include <sfx2/objface.hxx> -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #include <svx/srchitem.hxx> #include <svx/xftsfit.hxx> #include <svx/extrusionbar.hxx> diff --git a/sw/source/ui/shells/drformsh.cxx b/sw/source/ui/shells/drformsh.cxx index 97cac7006b98..d15c0b697e12 100644 --- a/sw/source/ui/shells/drformsh.cxx +++ b/sw/source/ui/shells/drformsh.cxx @@ -36,7 +36,7 @@ #include <hintids.hxx> #include <svx/hlnkitem.hxx> #include <svx/svdview.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/request.hxx> #include <sfx2/objface.hxx> #include <sfx2/app.hxx> @@ -59,7 +59,7 @@ #include "shells.hrc" #include "drwbassh.hxx" #include "drformsh.hxx" -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <view.hxx> #include <sfx2/docfile.hxx> #include <docsh.hxx> diff --git a/sw/source/ui/shells/drwbassh.cxx b/sw/source/ui/shells/drwbassh.cxx index 339c332c9135..3f5bb4fe6d77 100644 --- a/sw/source/ui/shells/drwbassh.cxx +++ b/sw/source/ui/shells/drwbassh.cxx @@ -39,11 +39,11 @@ #include <sfx2/objface.hxx> #include <sfx2/request.hxx> #include <sfx2/bindings.hxx> -#include <svtools/aeitem.hxx> +#include <svl/aeitem.hxx> #include <svx/svdview.hxx> #include <vcl/msgbox.hxx> #include <svx/srchitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/swframevalidation.hxx> #include <svx/anchorid.hxx> #include <svx/htmlmode.hxx> @@ -238,7 +238,7 @@ void SwDrawBaseShell::Execute(SfxRequest &rReq) if ( pFact ) { AbstractSvxCaptionDialog* pCaptionDlg = - pFact->CreateCaptionDialog( NULL, pSdrView, RID_SVXDLG_CAPTION, nAllowedAnchors ); + pFact->CreateCaptionDialog( NULL, pSdrView, nAllowedAnchors ); pCaptionDlg->SetValidateFramePosLink( LINK(this, SwDrawBaseShell, ValidatePosition) ); pDlg = pCaptionDlg; DBG_ASSERT(pDlg, "Dialogdiet fail!"); @@ -251,7 +251,7 @@ void SwDrawBaseShell::Execute(SfxRequest &rReq) { AbstractSvxTransformTabDialog* pTransform = - pFact->CreateSvxTransformTabDialog( NULL, NULL, pSdrView, RID_SVXDLG_TRANSFORM, nAllowedAnchors ); + pFact->CreateSvxTransformTabDialog( NULL, NULL, pSdrView, nAllowedAnchors ); pTransform->SetValidateFramePosLink( LINK(this, SwDrawBaseShell, ValidatePosition) ); pDlg = pTransform; DBG_ASSERT(pDlg, "Dialogdiet fail!"); @@ -567,7 +567,7 @@ void SwDrawBaseShell::Execute(SfxRequest &rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialogdiet fail!"); - AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName, RID_SVXDLG_OBJECT_NAME); + AbstractSvxObjectNameDialog* pDlg = pFact->CreateSvxObjectNameDialog(NULL, aName); OSL_ENSURE(pDlg, "Dialogdiet fail!"); pDlg->SetCheckNameHdl(LINK(this, SwDrawBaseShell, CheckGroupShapeNameHdl)); @@ -599,7 +599,7 @@ void SwDrawBaseShell::Execute(SfxRequest &rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); OSL_ENSURE(pFact, "Dialogdiet fail!"); - AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription, RID_SVXDLG_OBJECT_TITLE_DESC); + AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog(NULL, aTitle, aDescription); OSL_ENSURE(pDlg, "Dialogdiet fail!"); if(RET_OK == pDlg->Execute()) diff --git a/sw/source/ui/shells/drwtxtex.cxx b/sw/source/ui/shells/drwtxtex.cxx index 11874ca5b151..da71d364f6a3 100644 --- a/sw/source/ui/shells/drwtxtex.cxx +++ b/sw/source/ui/shells/drwtxtex.cxx @@ -59,9 +59,9 @@ #include <svx/frmdiritem.hxx> #include <svx/svdoutl.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/whiter.hxx> -#include <svtools/cjkoptions.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/whiter.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/ctloptions.hxx> #include <sfx2/bindings.hxx> #include <vcl/msgbox.hxx> #include <sfx2/dispatch.hxx> @@ -99,10 +99,10 @@ #include "misc.hrc" //modified on Jul. 30th -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svx/langitem.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <string.h> #include <svx/eeitem.hxx> diff --git a/sw/source/ui/shells/drwtxtsh.cxx b/sw/source/ui/shells/drwtxtsh.cxx index 9f1d49ebe067..59e4bc01c5e3 100644 --- a/sw/source/ui/shells/drwtxtsh.cxx +++ b/sw/source/ui/shells/drwtxtsh.cxx @@ -32,8 +32,8 @@ #include "precompiled_sw.hxx" #include <hintids.hxx> #include <i18npool/lang.h> -#include <svtools/slstitm.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/slstitm.hxx> +#include <svl/cjkoptions.hxx> #include <svx/fontitem.hxx> #include <svx/langitem.hxx> #include <svx/svdview.hxx> @@ -49,7 +49,7 @@ #include <sfx2/bindings.hxx> #include <svx/fontwork.hxx> #include <sfx2/request.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/outliner.hxx> #include <svx/editstat.hxx> #include <svx/svdoutl.hxx> @@ -577,7 +577,7 @@ void SwDrawTextShell::ExecDraw(SfxRequest &rReq) { SfxAbstractTabDialog *pDlg = pFact->CreateTextTabDialog( &(GetView().GetViewFrame()->GetWindow()), - &aNewAttr, RID_SVXDLG_TEXT, pSdrView ); + &aNewAttr, pSdrView ); USHORT nResult = pDlg->Execute(); if (nResult == RET_OK) diff --git a/sw/source/ui/shells/frmsh.cxx b/sw/source/ui/shells/frmsh.cxx index f7957a66077a..4bd22a2c5822 100644 --- a/sw/source/ui/shells/frmsh.cxx +++ b/sw/source/ui/shells/frmsh.cxx @@ -33,15 +33,15 @@ #include <hintids.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svtools/imapobj.hxx> #include <svx/srchitem.hxx> #include <svtools/imap.hxx> #include <sfx2/viewfrm.hxx> #include <basic/sbstar.hxx> -#include <svtools/rectitem.hxx> -#include <svtools/ptitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/rectitem.hxx> +#include <svl/ptitem.hxx> +#include <svl/stritem.hxx> #include <svx/colritem.hxx> #include <svx/bolnitem.hxx> #include <svx/boxitem.hxx> @@ -618,8 +618,7 @@ void SwFrameShell::Execute(SfxRequest &rReq) AbstractSvxObjectTitleDescDialog* pDlg = pFact->CreateSvxObjectTitleDescDialog( NULL, aTitle, - aDescription, - RID_SVXDLG_OBJECT_TITLE_DESC ); + aDescription ); OSL_ENSURE(pDlg, "Dialogdiet fail!"); if ( pDlg->Execute() == RET_OK ) diff --git a/sw/source/ui/shells/grfsh.cxx b/sw/source/ui/shells/grfsh.cxx index 7203d9c91ebb..4a34d39588fe 100644 --- a/sw/source/ui/shells/grfsh.cxx +++ b/sw/source/ui/shells/grfsh.cxx @@ -40,9 +40,9 @@ #include <hintids.hxx> #include <tools/urlobj.hxx> #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/urihelper.hxx> +#include <svl/stritem.hxx> +#include <svl/whiter.hxx> +#include <svl/urihelper.hxx> #include <sfx2/docfile.hxx> #include <sfx2/dispatch.hxx> diff --git a/sw/source/ui/shells/grfshex.cxx b/sw/source/ui/shells/grfshex.cxx index ccf9d006c26f..9ee02b74e591 100644 --- a/sw/source/ui/shells/grfshex.cxx +++ b/sw/source/ui/shells/grfshex.cxx @@ -51,7 +51,7 @@ #endif #include <caption.hxx> #define _SVSTDARR_STRINGSSORTDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <svtools/filter.hxx> #include <svx/impgrf.hxx> #include <svx/htmlmode.hxx> @@ -81,7 +81,7 @@ #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <avmedia/mediawindow.hxx> #include <vcl/svapp.hxx> diff --git a/sw/source/ui/shells/langhelper.cxx b/sw/source/ui/shells/langhelper.cxx index e5e4dbe81b29..fa27f72b36d7 100755 --- a/sw/source/ui/shells/langhelper.cxx +++ b/sw/source/ui/shells/langhelper.cxx @@ -48,11 +48,11 @@ #include <svx/scripttypeitem.hxx> #include <svx/langitem.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> -#include <svtools/svstdarr.hxx> -#include <svtools/stritem.hxx> +#include <svl/slstitm.hxx> +#include <svl/svstdarr.hxx> +#include <svl/stritem.hxx> #include <ndtxt.hxx> #include <pam.hxx> diff --git a/sw/source/ui/shells/listsh.cxx b/sw/source/ui/shells/listsh.cxx index 34f349befbc9..e0d6bdcc4228 100644 --- a/sw/source/ui/shells/listsh.cxx +++ b/sw/source/ui/shells/listsh.cxx @@ -40,11 +40,11 @@ #include <sfx2/request.hxx> #include <sfx2/objface.hxx> #include <sfx2/bindings.hxx> -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <tools/urlobj.hxx> -#include <svtools/whiter.hxx> -#include <svtools/intitem.hxx> +#include <svl/whiter.hxx> +#include <svl/intitem.hxx> #include <tools/shl.hxx> #include <svx/srchitem.hxx> diff --git a/sw/source/ui/shells/mediash.cxx b/sw/source/ui/shells/mediash.cxx index ae1ed883cb8b..d0e3a94c970e 100644 --- a/sw/source/ui/shells/mediash.cxx +++ b/sw/source/ui/shells/mediash.cxx @@ -40,9 +40,9 @@ #include <hintids.hxx> #include <tools/urlobj.hxx> #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/urihelper.hxx> +#include <svl/stritem.hxx> +#include <svl/whiter.hxx> +#include <svl/urihelper.hxx> #include <sfx2/dispatch.hxx> #include <svx/sizeitem.hxx> #include <svx/protitem.hxx> diff --git a/sw/source/ui/shells/slotadd.cxx b/sw/source/ui/shells/slotadd.cxx index 333128a18db9..94c74122bdec 100644 --- a/sw/source/ui/shells/slotadd.cxx +++ b/sw/source/ui/shells/slotadd.cxx @@ -35,12 +35,12 @@ #include "uiitems.hxx" #include "cmdid.h" -#include <svtools/globalnameitem.hxx> +#include <svl/globalnameitem.hxx> -#include <svtools/imageitm.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/rectitem.hxx> +#include <svl/imageitm.hxx> +#include <svl/aeitem.hxx> +#include <svl/rectitem.hxx> #include <sfx2/objitem.hxx> #include <sfx2/objsh.hxx> #include <svx/rulritem.hxx> @@ -49,7 +49,7 @@ #include <svx/zoomslideritem.hxx> #include <svx/hlnkitem.hxx> #include <svx/SmartTagItem.hxx> -#include <svtools/ptitem.hxx> +#include <svl/ptitem.hxx> #include <svx/pageitem.hxx> #include <svx/srchitem.hxx> #include <sfx2/tplpitem.hxx> @@ -130,7 +130,7 @@ #include "fmtline.hxx" #include <svx/clipfmtitem.hxx> #include <svx/blnkitem.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <svx/paravertalignitem.hxx> #include <svx/charreliefitem.hxx> #include <svx/charrotateitem.hxx> diff --git a/sw/source/ui/shells/tabsh.cxx b/sw/source/ui/shells/tabsh.cxx index 7ba4d0b8e954..20b548efaf91 100644 --- a/sw/source/ui/shells/tabsh.cxx +++ b/sw/source/ui/shells/tabsh.cxx @@ -34,11 +34,11 @@ #ifndef _ZFORLIST_HXX #define _ZFORLIST_DECLARE_TABLE -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #endif -#include <svtools/stritem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/moduleoptions.hxx> +#include <svl/stritem.hxx> +#include <svl/whiter.hxx> +#include <unotools/moduleoptions.hxx> #include <svx/rulritem.hxx> #include <svx/srchitem.hxx> #include <svx/lrspitem.hxx> @@ -55,7 +55,7 @@ #include <svx/numinf.hxx> #include <svx/svddef.hxx> #include <svx/svxdlg.hxx> -#include <svtools/zformat.hxx> +#include <svl/zformat.hxx> #include <sfx2/bindings.hxx> #include <vcl/msgbox.hxx> #include <sfx2/request.hxx> diff --git a/sw/source/ui/shells/textdrw.cxx b/sw/source/ui/shells/textdrw.cxx index 1d10c885bc17..ee714ee6ff55 100644 --- a/sw/source/ui/shells/textdrw.cxx +++ b/sw/source/ui/shells/textdrw.cxx @@ -57,7 +57,7 @@ #include <docsh.hxx> #endif #include <sfx2/docfile.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <avmedia/mediawindow.hxx> #include <unomid.h> diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx index 0dedb918aaf5..2e65b5a5ce48 100644 --- a/sw/source/ui/shells/textfld.cxx +++ b/sw/source/ui/shells/textfld.cxx @@ -38,11 +38,11 @@ #include <fmtfld.hxx> #include <tools/urlobj.hxx> #include <vcl/msgbox.hxx> -#include <svtools/itempool.hxx> -#include <svtools/useroptions.hxx> -#include <svtools/whiter.hxx> -#include <svtools/eitem.hxx> -#include <svtools/macitem.hxx> +#include <svl/itempool.hxx> +#include <unotools/useroptions.hxx> +#include <svl/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/macitem.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/request.hxx> #include <svx/postattr.hxx> @@ -463,7 +463,7 @@ void SwTextShell::ExecField(SfxRequest &rReq) SvxAbstractDialogFactory* pFact2 = SvxAbstractDialogFactory::Create(); DBG_ASSERT(pFact2, "Dialogdiet fail!"); - AbstractSvxPostItDialog* pDlg = pFact2->CreateSvxPostItDialog( pMDI, aSet, RID_SVXDLG_POSTIT, bTravel, TRUE ); + AbstractSvxPostItDialog* pDlg = pFact2->CreateSvxPostItDialog( pMDI, aSet, bTravel, TRUE ); DBG_ASSERT(pDlg, "Dialogdiet fail!"); pDlg->HideAuthor(); diff --git a/sw/source/ui/shells/textglos.cxx b/sw/source/ui/shells/textglos.cxx index 076697ac08ff..6eab16a31141 100644 --- a/sw/source/ui/shells/textglos.cxx +++ b/sw/source/ui/shells/textglos.cxx @@ -33,8 +33,8 @@ #include <sfx2/request.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include "errhdl.hxx" #include "view.hxx" diff --git a/sw/source/ui/shells/textidx.cxx b/sw/source/ui/shells/textidx.cxx index 3eb67f725acd..62eeb00dcb20 100644 --- a/sw/source/ui/shells/textidx.cxx +++ b/sw/source/ui/shells/textidx.cxx @@ -37,8 +37,8 @@ #endif #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <svx/sizeitem.hxx> #include <fmtfsize.hxx> #include <fldbas.hxx> diff --git a/sw/source/ui/shells/textsh.cxx b/sw/source/ui/shells/textsh.cxx index 7e38c1297d0b..9dd27b760064 100644 --- a/sw/source/ui/shells/textsh.cxx +++ b/sw/source/ui/shells/textsh.cxx @@ -35,7 +35,7 @@ #define _SW_FRMVALID_HXX #include <hintids.hxx> -#include <svtools/globalnameitem.hxx> +#include <svl/globalnameitem.hxx> #include <sfx2/objface.hxx> #include <sfx2/lnkbase.hxx> @@ -43,18 +43,18 @@ #include <tools/errinf.hxx> #endif #include <svx/svdview.hxx> -#include <svtools/ptitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/moduleoptions.hxx> +#include <svl/ptitem.hxx> +#include <svl/stritem.hxx> +#include <unotools/moduleoptions.hxx> #include <vcl/msgbox.hxx> #include <sfx2/fcontnr.hxx> #include <svx/hlnkitem.hxx> #include <svx/srchitem.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/docfile.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <basic/sbxvar.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/request.hxx> #include <svx/opaqitem.hxx> #include <svx/fontitem.hxx> diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx index 977dc77c98d3..0dac20c78933 100644 --- a/sw/source/ui/shells/textsh1.cxx +++ b/sw/source/ui/shells/textsh1.cxx @@ -38,30 +38,30 @@ #include <helpid.h> #include <i18npool/mslangid.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svx/langitem.hxx> #include <svtools/langtab.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <string.h> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svx/htmlmode.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/bindings.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/objitem.hxx> #include <vcl/msgbox.hxx> #include <vcl/unohelp2.hxx> #include <sfx2/request.hxx> -#include <svtools/eitem.hxx> -#include <svtools/macitem.hxx> +#include <svl/eitem.hxx> +#include <svl/macitem.hxx> #include <svx/lrspitem.hxx> #include <svx/ulspitem.hxx> #include <svx/colritem.hxx> #include <svx/tstpitem.hxx> #include <svx/brshitem.hxx> #include <svx/svxacorr.hxx> -#include <svtools/cjkoptions.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/ctloptions.hxx> #include <IDocumentSettingAccess.hxx> #include <charfmt.hxx> #include <svx/fontitem.hxx> @@ -116,13 +116,13 @@ #include <IDocumentStatistics.hxx> #include <sfx2/sfxdlg.hxx> -#include <svtools/languageoptions.hxx> -#include <svtools/lingucfg.hxx> +#include <svl/languageoptions.hxx> +#include <unotools/lingucfg.hxx> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/util/XChangesBatch.hpp> #include <com/sun/star/uno/Any.hxx> #include <svx/unolingu.hxx> -#include <svtools/syslocaleoptions.hxx> +#include <unotools/syslocaleoptions.hxx> #include <doc.hxx> #include <view.hxx> #include <ndtxt.hxx> diff --git a/sw/source/ui/shells/textsh2.cxx b/sw/source/ui/shells/textsh2.cxx index e3ba958d9e1a..417f235c190d 100644 --- a/sw/source/ui/shells/textsh2.cxx +++ b/sw/source/ui/shells/textsh2.cxx @@ -38,16 +38,16 @@ #endif #include <svtools/svmedit.hxx> -#include <svtools/eitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/whiter.hxx> #include <sfx2/event.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/stritem.hxx> -#include <svtools/itemset.hxx> +#include <svl/stritem.hxx> +#include <svl/itemset.hxx> #include <sfx2/request.hxx> #include <com/sun/star/sdb/CommandType.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> diff --git a/sw/source/ui/shells/txtattr.cxx b/sw/source/ui/shells/txtattr.cxx index 8e30123a192b..a88f5c996f65 100644 --- a/sw/source/ui/shells/txtattr.cxx +++ b/sw/source/ui/shells/txtattr.cxx @@ -37,10 +37,10 @@ #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/whiter.hxx> -#include <svtools/stritem.hxx> -#include <svtools/itemiter.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/whiter.hxx> +#include <svl/stritem.hxx> +#include <svl/itemiter.hxx> +#include <svl/ctloptions.hxx> #include <swmodule.hxx> #include <sfx2/bindings.hxx> #include <sfx2/request.hxx> diff --git a/sw/source/ui/shells/txtcrsr.cxx b/sw/source/ui/shells/txtcrsr.cxx index 19b36367d49f..9c3a95e2006b 100644 --- a/sw/source/ui/shells/txtcrsr.cxx +++ b/sw/source/ui/shells/txtcrsr.cxx @@ -33,7 +33,7 @@ #include <sfx2/request.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #ifndef __SBX_SBXVARIABLE_HXX //autogen #include <basic/sbxvar.hxx> #endif diff --git a/sw/source/ui/shells/txtnum.cxx b/sw/source/ui/shells/txtnum.cxx index 3bbee6762431..6b4be8da6e14 100644 --- a/sw/source/ui/shells/txtnum.cxx +++ b/sw/source/ui/shells/txtnum.cxx @@ -37,8 +37,8 @@ #include <vcl/msgbox.hxx> #endif #include <sfx2/request.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <svx/numitem.hxx> #include <svx/brshitem.hxx> #include <numrule.hxx> diff --git a/sw/source/ui/smartmenu/stmenu.cxx b/sw/source/ui/smartmenu/stmenu.cxx index a2f37ac801f9..977f63681410 100644 --- a/sw/source/ui/smartmenu/stmenu.cxx +++ b/sw/source/ui/smartmenu/stmenu.cxx @@ -34,7 +34,7 @@ #include "precompiled_sw.hxx" #include <stmenu.hxx> #include <com/sun/star/uno/Sequence.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/dispatch.hxx> #include <SwSmartTagMgr.hxx> diff --git a/sw/source/ui/table/convert.cxx b/sw/source/ui/table/convert.cxx index 63f8ac8a2e00..ce8e62e3990d 100644 --- a/sw/source/ui/table/convert.cxx +++ b/sw/source/ui/table/convert.cxx @@ -38,7 +38,7 @@ #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/viewfrm.hxx> #include <modcfg.hxx> #include <svx/htmlmode.hxx> diff --git a/sw/source/ui/table/convert.src b/sw/source/ui/table/convert.src index 44a8923d9e48..983cf90dac08 100644 --- a/sw/source/ui/table/convert.src +++ b/sw/source/ui/table/convert.src @@ -177,7 +177,7 @@ ModalDialog DLG_CONV_TEXT_TABLE PushButton BT_AUTOFORMAT { Pos = MAP_APPFONT ( 12 , 152 ) ; - Size = MAP_APPFONT ( 66 , 14 ) ; + Size = MAP_APPFONT ( 86 , 14 ) ; TabStop = TRUE ; Hide = TRUE ; Text [ en-US ] = "Auto~Format..." ; diff --git a/sw/source/ui/table/instable.src b/sw/source/ui/table/instable.src index ca5680ebf494..ebe03f5f364b 100644 --- a/sw/source/ui/table/instable.src +++ b/sw/source/ui/table/instable.src @@ -159,7 +159,7 @@ ModalDialog DLG_INSERT_TABLE PushButton BT_AUTOFORMAT { Pos = MAP_APPFONT ( 12 , 146 ) ; - Size = MAP_APPFONT ( 66 , 14 ) ; + Size = MAP_APPFONT ( 86 , 14 ) ; TabStop = TRUE ; Text [ en-US ] = "Auto~Format..." ; }; diff --git a/sw/source/ui/table/rowht.cxx b/sw/source/ui/table/rowht.cxx index 46e0a1828538..95c9fb5db81c 100644 --- a/sw/source/ui/table/rowht.cxx +++ b/sw/source/ui/table/rowht.cxx @@ -36,8 +36,8 @@ #endif -#include <svtools/intitem.hxx> -#include <svtools/eitem.hxx> +#include <svl/intitem.hxx> +#include <svl/eitem.hxx> #include <sfx2/dispatch.hxx> #include <svx/dlgutil.hxx> diff --git a/sw/source/ui/table/swtablerep.cxx b/sw/source/ui/table/swtablerep.cxx index c6a2d93cf423..dea9ae75e021 100644 --- a/sw/source/ui/table/swtablerep.cxx +++ b/sw/source/ui/table/swtablerep.cxx @@ -35,14 +35,14 @@ #include <hintids.hxx> #include <tools/list.hxx> #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> -#include <svtools/intitem.hxx> +#include <svl/stritem.hxx> +#include <svl/intitem.hxx> #include <svx/htmlmode.hxx> #include <svx/keepitem.hxx> #include <svx/brkitem.hxx> #include <svx/ulspitem.hxx> #include <svx/frmdiritem.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <swmodule.hxx> #include <fmtornt.hxx> #include <fmtpdsc.hxx> diff --git a/sw/source/ui/table/tabledlg.cxx b/sw/source/ui/table/tabledlg.cxx index c18d7b6f7d07..8a831a60d9ff 100644 --- a/sw/source/ui/table/tabledlg.cxx +++ b/sw/source/ui/table/tabledlg.cxx @@ -39,14 +39,14 @@ #include <hintids.hxx> #include <tools/list.hxx> #include <vcl/msgbox.hxx> -#include <svtools/stritem.hxx> -#include <svtools/intitem.hxx> +#include <svl/stritem.hxx> +#include <svl/intitem.hxx> #include <svx/htmlmode.hxx> #include <svx/keepitem.hxx> #include <svx/brkitem.hxx> #include <svx/ulspitem.hxx> #include <svx/frmdiritem.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/ctloptions.hxx> #include <swmodule.hxx> #include <fmtornt.hxx> #include <fmtpdsc.hxx> diff --git a/sw/source/ui/table/tautofmt.cxx b/sw/source/ui/table/tautofmt.cxx index de8ea6e3e62b..7b8fac2526c0 100644 --- a/sw/source/ui/table/tautofmt.cxx +++ b/sw/source/ui/table/tautofmt.cxx @@ -45,7 +45,7 @@ #include <vcl/msgbox.hxx> #endif #include <vcl/svapp.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/i18n/XBreakIterator.hpp> #include <comphelper/processfactory.hxx> diff --git a/sw/source/ui/uiview/pview.cxx b/sw/source/ui/uiview/pview.cxx index 3480b6ac77f1..801a5fa68f6a 100644 --- a/sw/source/ui/uiview/pview.cxx +++ b/sw/source/ui/uiview/pview.cxx @@ -41,9 +41,9 @@ #include <vcl/cmdevt.hxx> #include <vcl/button.hxx> #include <svtools/printdlg.hxx> -#include <svtools/whiter.hxx> -#include <svtools/stritem.hxx> -#include <svtools/eitem.hxx> +#include <svl/whiter.hxx> +#include <svl/stritem.hxx> +#include <svl/eitem.hxx> #include <sfx2/printer.hxx> #include <sfx2/progress.hxx> #include <sfx2/app.hxx> @@ -1377,7 +1377,7 @@ void SwPagePreView::Execute( SfxRequest &rReq ) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - pDlg = pFact->CreateSvxZoomDialog(&GetViewFrame()->GetWindow(), aCoreSet, RID_SVXDLG_ZOOM); + pDlg = pFact->CreateSvxZoomDialog(&GetViewFrame()->GetWindow(), aCoreSet); DBG_ASSERT(pDlg, "Dialogdiet fail!"); } @@ -2460,7 +2460,7 @@ USHORT SwPagePreView::SetPrinter( SfxPrinter *pNew, USHORT nDiffFlags, bool ) SID_ATTR_LONG_ULSPACE, SID_ATTR_LONG_LRSPACE, SID_RULER_BORDERS, SID_RULER_PAGE_POS, 0 }; -#ifndef PRODUCT +#ifdef DBG_UTIL { const USHORT* pPtr = aInval + 1; do { diff --git a/sw/source/ui/uiview/srcview.cxx b/sw/source/ui/uiview/srcview.cxx index a238710a0acc..050f5c9d3057 100644 --- a/sw/source/ui/uiview/srcview.cxx +++ b/sw/source/ui/uiview/srcview.cxx @@ -43,14 +43,14 @@ #include <vcl/wrkwin.hxx> #include <vcl/metric.hxx> #include <svtools/ctrltool.hxx> -#include <svtools/intitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/pathoptions.hxx> -#include <svtools/undo.hxx> +#include <svl/intitem.hxx> +#include <svl/stritem.hxx> +#include <unotools/pathoptions.hxx> +#include <svl/undo.hxx> #include <svtools/txtcmp.hxx> -#include <svtools/eitem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/saveopt.hxx> +#include <svl/eitem.hxx> +#include <svl/whiter.hxx> +#include <unotools/saveopt.hxx> #include <svtools/transfer.hxx> #include <svx/htmlcfg.hxx> @@ -717,6 +717,7 @@ USHORT SwSrcView::StartSearchAndReplace(const SvxSearchItem& rSearchItem, if(!bApi) + { if(bNotFoundMessage) { InfoBox( 0, SW_RES(MSG_NOT_FOUND)).Execute(); @@ -728,6 +729,7 @@ USHORT SwSrcView::StartSearchAndReplace(const SvxSearchItem& rSearchItem, pTextView->SetSelection( TextSelection( aPaM, aPaM ) ); StartSearchAndReplace( rSearchItem, FALSE, FALSE, TRUE ); } + } } return nFound; } diff --git a/sw/source/ui/uiview/view.cxx b/sw/source/ui/uiview/view.cxx index bde87a79bf1b..3d9062b14684 100644 --- a/sw/source/ui/uiview/view.cxx +++ b/sw/source/ui/uiview/view.cxx @@ -40,11 +40,11 @@ #include <vcl/graph.hxx> #include <vcl/inputctx.hxx> #include <basic/sbxobj.hxx> -#include <svtools/eitem.hxx> -#include <svtools/undoopt.hxx> -#include <svtools/lingucfg.hxx> +#include <svl/eitem.hxx> +#include <unotools/undoopt.hxx> +#include <unotools/lingucfg.hxx> #include <svtools/printdlg.hxx> -#include <svtools/useroptions.hxx> +#include <unotools/useroptions.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/request.hxx> #include <sfx2/docfile.hxx> diff --git a/sw/source/ui/uiview/view0.cxx b/sw/source/ui/uiview/view0.cxx index 38f885657450..73c401f2bcb6 100644 --- a/sw/source/ui/uiview/view0.cxx +++ b/sw/source/ui/uiview/view0.cxx @@ -38,14 +38,14 @@ #include <svx/galbrws.hxx> #include <svx/srchitem.hxx> #include <SwSpellDialogChildWindow.hxx> -#include <svtools/eitem.hxx> -#include <svtools/linguprops.hxx> -#include <svtools/lingucfg.hxx> +#include <svl/eitem.hxx> +#include <unotools/linguprops.hxx> +#include <unotools/lingucfg.hxx> #include <viewopt.hxx> #include <globals.h> #include <sfx2/app.hxx> #include <sfx2/request.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <svx/srchdlg.hxx> #include <sfx2/templdlg.hxx> #include <uivwimp.hxx> @@ -99,7 +99,7 @@ using namespace ::com::sun::star; using ::rtl::OUString; -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <IDocumentSettingAccess.hxx> diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx index 77c06f44c494..33acb232821a 100644 --- a/sw/source/ui/uiview/view2.cxx +++ b/sw/source/ui/uiview/view2.cxx @@ -46,8 +46,8 @@ #define _SVSTDARR_STRINGSSORTDTOR -#include <svtools/svstdarr.hxx> -#include <svtools/aeitem.hxx> +#include <svl/svstdarr.hxx> +#include <svl/aeitem.hxx> // #ifndef _FILTER_HXX // #include <svtools/filter.hxx> @@ -59,8 +59,8 @@ #include <undobj.hxx> #include <swundo.hxx> #include <caption.hxx> -#include <svtools/PasswordHelper.hxx> -#include <svtools/urihelper.hxx> +#include <svl/PasswordHelper.hxx> +#include <svl/urihelper.hxx> #include <sfx2/passwd.hxx> #include <sfx2/sfxdlg.hxx> #include <sfx2/filedlghelper.hxx> @@ -91,8 +91,8 @@ #include <svx/sizeitem.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/topfrm.hxx> -#include <svtools/whiter.hxx> -#include <svtools/ptitem.hxx> +#include <svl/whiter.hxx> +#include <svl/ptitem.hxx> #include <svx/linkmgr.hxx> #ifndef __RSC //autogen #include <tools/errinf.hxx> @@ -1624,7 +1624,7 @@ void SwView::ExecuteStatusLine(SfxRequest &rReq) SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); if(pFact) { - pDlg = pFact->CreateSvxZoomDialog(&GetViewFrame()->GetWindow(), aCoreSet, RID_SVXDLG_ZOOM); + pDlg = pFact->CreateSvxZoomDialog(&GetViewFrame()->GetWindow(), aCoreSet); DBG_ASSERT(pDlg, "Dialogdiet fail!"); } diff --git a/sw/source/ui/uiview/viewcoll.cxx b/sw/source/ui/uiview/viewcoll.cxx index d1bd291e917c..92937b2f1746 100644 --- a/sw/source/ui/uiview/viewcoll.cxx +++ b/sw/source/ui/uiview/viewcoll.cxx @@ -39,7 +39,7 @@ #include <vcl/window.hxx> #include <sfx2/request.hxx> #include <sfx2/viewfrm.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <rsc/rscsfx.hxx> diff --git a/sw/source/ui/uiview/viewdlg.cxx b/sw/source/ui/uiview/viewdlg.cxx index c7f3f2373c8f..04370478c796 100644 --- a/sw/source/ui/uiview/viewdlg.cxx +++ b/sw/source/ui/uiview/viewdlg.cxx @@ -36,7 +36,7 @@ #include "hintids.hxx" #include <sfx2/viewfrm.hxx> #include <svx/tstpitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/request.hxx> diff --git a/sw/source/ui/uiview/viewdraw.cxx b/sw/source/ui/uiview/viewdraw.cxx index 4fb7746db4d7..328b5a3d06ca 100644 --- a/sw/source/ui/uiview/viewdraw.cxx +++ b/sw/source/ui/uiview/viewdraw.cxx @@ -33,8 +33,8 @@ #include "hintids.hxx" -#include <svtools/aeitem.hxx> -#include <svtools/itempool.hxx> +#include <svl/aeitem.hxx> +#include <svl/itempool.hxx> #include <svx/svdobj.hxx> #include <svx/svdview.hxx> #include <svx/svdpage.hxx> diff --git a/sw/source/ui/uiview/viewling.cxx b/sw/source/ui/uiview/viewling.cxx index 588c30a9844d..09014ea3afcf 100644 --- a/sw/source/ui/uiview/viewling.cxx +++ b/sw/source/ui/uiview/viewling.cxx @@ -36,7 +36,7 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <com/sun/star/lang/Locale.hpp> #include <com/sun/star/linguistic2/XThesaurus.hpp> @@ -47,7 +47,7 @@ #include <toolkit/helper/vclunohelper.hxx> #include <vcl/msgbox.hxx> #include <svtools/ehdl.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/request.hxx> #include <svx/dlgutil.hxx> diff --git a/sw/source/ui/uiview/viewprt.cxx b/sw/source/ui/uiview/viewprt.cxx index 2f78c63b285b..4d46407d3f15 100644 --- a/sw/source/ui/uiview/viewprt.cxx +++ b/sw/source/ui/uiview/viewprt.cxx @@ -43,13 +43,13 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #include <sfx2/request.hxx> #include <sfx2/progress.hxx> #include <sfx2/app.hxx> -#include <svtools/flagitem.hxx> +#include <svl/flagitem.hxx> #include <vcl/msgbox.hxx> #include <vcl/oldprintadaptor.hxx> #include <svtools/printdlg.hxx> @@ -57,13 +57,13 @@ #include <sfx2/prnmon.hxx> #include <svx/paperinf.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/misccfg.hxx> +#include <unotools/misccfg.hxx> #include <svx/prtqry.hxx> #include <svx/svdview.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> -#include <svtools/intitem.hxx> -#include <svtools/flagitem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/flagitem.hxx> #include <svx/linkmgr.hxx> #include <modcfg.hxx> @@ -87,10 +87,10 @@ #include <globals.hrc> #include <view.hrc> #include <app.hrc> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <swwrtshitem.hxx> #include "swabstdlg.hxx" -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <unomid.h> @@ -360,17 +360,17 @@ void SetAppPrintOptions( ViewShell* pSh, BOOL bWeb ) SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC, 0 ); - SfxMiscCfg* pMisc = SFX_APP()->GetMiscConfig(); + utl::MiscCfg aMisc; if(bWeb) aSet.Put(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(((SwWrtShell*)pSh)->GetView().GetDocShell()))); aSet.Put(SfxBoolItem(SID_PRINTER_NOTFOUND_WARN, - pMisc->IsNotFoundWarning() )); + aMisc.IsNotFoundWarning() )); aSet.Put(aAddPrinterItem); aSet.Put( SfxFlagItem( SID_PRINTER_CHANGESTODOC, - (pMisc->IsPaperSizeWarning() ? SFX_PRINTER_CHG_SIZE : 0) | - (pMisc->IsPaperOrientationWarning() ? SFX_PRINTER_CHG_ORIENTATION : 0 ))); + (aMisc.IsPaperSizeWarning() ? SFX_PRINTER_CHG_SIZE : 0) | + (aMisc.IsPaperOrientationWarning() ? SFX_PRINTER_CHG_ORIENTATION : 0 ))); pIDDA->getPrinter( true )->SetOptions( aSet ); } diff --git a/sw/source/ui/uiview/viewsrch.cxx b/sw/source/ui/uiview/viewsrch.cxx index 690a1900749e..d55975eaa190 100644 --- a/sw/source/ui/uiview/viewsrch.cxx +++ b/sw/source/ui/uiview/viewsrch.cxx @@ -35,17 +35,17 @@ #include <string> // HACK: prevent conflict between STLPORT and Workshop headers #include <hintids.hxx> #include <com/sun/star/util/SearchOptions.hpp> -#include <svtools/cjkoptions.hxx> -#include <svtools/ctloptions.hxx> +#include <svl/cjkoptions.hxx> +#include <svl/ctloptions.hxx> #include <svx/pageitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/whiter.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #ifndef _T2XTCMP_HXX //autogen #include <svtools/txtcmp.hxx> #endif -#include <svtools/itempool.hxx> -#include <svtools/eitem.hxx> +#include <svl/itempool.hxx> +#include <svl/eitem.hxx> #include <svx/srchitem.hxx> #include <sfx2/request.hxx> #include <svx/srchdlg.hxx> @@ -428,7 +428,7 @@ void SwView::ExecSearch(SfxRequest& rReq, BOOL bNoMessage) } break; default: -#ifndef PRODUCT +#ifdef DBG_UTIL if(nSlot) { ByteString sStr( "nSlot: " ); diff --git a/sw/source/ui/uiview/viewstat.cxx b/sw/source/ui/uiview/viewstat.cxx index 7563a7b5e779..3824f5f10723 100644 --- a/sw/source/ui/uiview/viewstat.cxx +++ b/sw/source/ui/uiview/viewstat.cxx @@ -33,14 +33,14 @@ #include <hintids.hxx> #include <com/sun/star/linguistic2/XThesaurus.hpp> #include <com/sun/star/uno/Sequence.hxx> -#include <svtools/aeitem.hxx> -#include <svtools/whiter.hxx> -#include <svtools/cjkoptions.hxx> +#include <svl/aeitem.hxx> +#include <svl/whiter.hxx> +#include <svl/cjkoptions.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/objitem.hxx> -#include <svtools/imageitm.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/imageitm.hxx> +#include <svl/languageoptions.hxx> #include <svx/protitem.hxx> #include <svx/linkmgr.hxx> #include <svx/langitem.hxx> @@ -67,9 +67,9 @@ #include <wview.hxx> #endif #include <globdoc.hxx> -#include <svtools/stritem.hxx> -#include <svtools/moduleoptions.hxx> -#include <svtools/visitem.hxx> +#include <svl/stritem.hxx> +#include <unotools/moduleoptions.hxx> +#include <svl/visitem.hxx> #ifndef _CMDID_H #include <cmdid.h> diff --git a/sw/source/ui/uiview/viewtab.cxx b/sw/source/ui/uiview/viewtab.cxx index 6223d1d0234a..316156d0112d 100644 --- a/sw/source/ui/uiview/viewtab.cxx +++ b/sw/source/ui/uiview/viewtab.cxx @@ -44,11 +44,11 @@ #include <svx/ulspitem.hxx> #include <svx/boxitem.hxx> #include <svx/frmdiritem.hxx> -#include <svtools/eitem.hxx> -#include <svtools/whiter.hxx> +#include <svl/eitem.hxx> +#include <svl/whiter.hxx> #include <svx/ruler.hxx> #include <svx/protitem.hxx> -#include <svtools/rectitem.hxx> +#include <svl/rectitem.hxx> #include <sfx2/bindings.hxx> #include <fmtfsize.hxx> #include <fmthdft.hxx> diff --git a/sw/source/ui/uno/SwXDocumentSettings.cxx b/sw/source/ui/uno/SwXDocumentSettings.cxx index 055dfab0c7f0..c850f77b6011 100644 --- a/sw/source/ui/uno/SwXDocumentSettings.cxx +++ b/sw/source/ui/uno/SwXDocumentSettings.cxx @@ -49,7 +49,7 @@ #include <sfx2/printer.hxx> #include <editsh.hxx> #include <drawdoc.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <unoobj.hxx> #include <unotxdoc.hxx> #include <cmdid.h> diff --git a/sw/source/ui/uno/dlelstnr.cxx b/sw/source/ui/uno/dlelstnr.cxx index 3b066a66ce08..c883a03f23ee 100644 --- a/sw/source/ui/uno/dlelstnr.cxx +++ b/sw/source/ui/uno/dlelstnr.cxx @@ -41,7 +41,7 @@ #include <com/sun/star/linguistic2/XProofreadingIterator.hpp> #include <com/sun/star/linguistic2/LinguServiceEventFlags.hpp> -#include <svtools/lingucfg.hxx> +#include <unotools/lingucfg.hxx> #include <com/sun/star/uno/Reference.h> #include <comphelper/processfactory.hxx> diff --git a/sw/source/ui/uno/swdet2.cxx b/sw/source/ui/uno/swdet2.cxx index aedd6e0f6c68..4d369d2b7ee2 100644 --- a/sw/source/ui/uno/swdet2.cxx +++ b/sw/source/ui/uno/swdet2.cxx @@ -49,7 +49,7 @@ #include <web.hrc> #include <globdoc.hrc> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <unomid.h> diff --git a/sw/source/ui/uno/swdetect.cxx b/sw/source/ui/uno/swdetect.cxx index 82da0914124a..d0fcf366ee15 100644 --- a/sw/source/ui/uno/swdetect.cxx +++ b/sw/source/ui/uno/swdetect.cxx @@ -53,10 +53,10 @@ #include <ucbhelper/simpleinteractionrequest.hxx> #include <rtl/ustring.h> #include <rtl/logfile.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <vcl/window.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <tools/urlobj.hxx> #include <vos/mutex.hxx> #include <svtools/sfxecode.hxx> @@ -72,7 +72,7 @@ #include <sfx2/brokenpackageint.hxx> #include <svx/impgrf.hxx> #include <svtools/FilterConfigItem.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <com/sun/star/util/XArchiver.hpp> #include <comphelper/ihwrapnofilter.hxx> diff --git a/sw/source/ui/uno/unoatxt.cxx b/sw/source/ui/uno/unoatxt.cxx index 2b302245f53b..b877b9aac7f5 100644 --- a/sw/source/ui/uno/unoatxt.cxx +++ b/sw/source/ui/uno/unoatxt.cxx @@ -41,9 +41,9 @@ #include <vos/mutex.hxx> #include <tools/debug.hxx> #include <vcl/svapp.hxx> -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <svtools/unoevent.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <sfx2/event.hxx> #include <swtypes.hxx> #include <glosdoc.hxx> @@ -61,8 +61,8 @@ #include <docsh.hxx> #include <swunodef.hxx> #include <swmodule.hxx> -#include <svtools/smplhint.hxx> -#include <svtools/macitem.hxx> +#include <svl/smplhint.hxx> +#include <svl/macitem.hxx> #include <svx/acorrcfg.hxx> diff --git a/sw/source/ui/uno/unomailmerge.cxx b/sw/source/ui/uno/unomailmerge.cxx index 7ffa962dd7bb..5d0b03a4eaad 100644 --- a/sw/source/ui/uno/unomailmerge.cxx +++ b/sw/source/ui/uno/unomailmerge.cxx @@ -35,8 +35,8 @@ #include <vcl/svapp.hxx> #include <vos/mutex.hxx> #include <osl/mutex.hxx> -#include <svtools/itemprop.hxx> -#include <svtools/urihelper.hxx> +#include <svl/itemprop.hxx> +#include <svl/urihelper.hxx> #include <svx/dataaccessdescriptor.hxx> #include <tools/shl.hxx> // GetAppData #include <tools/tempfile.hxx> diff --git a/sw/source/ui/uno/unomod.cxx b/sw/source/ui/uno/unomod.cxx index b701edd514e0..75711a414620 100644 --- a/sw/source/ui/uno/unomod.cxx +++ b/sw/source/ui/uno/unomod.cxx @@ -576,17 +576,17 @@ void SwXPrintSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, break; case HANDLE_PRINTSET_PROSPECT_RTL: { - rValue <<= mpPrtOpt->IsPrintProspectRTL(); + bBoolVal = mpPrtOpt->IsPrintProspectRTL(); } break; case HANDLE_PRINTSET_PLACEHOLDER: { - rValue <<= mpPrtOpt->IsPrintTextPlaceholder(); + bBoolVal = mpPrtOpt->IsPrintTextPlaceholder(); } break; case HANDLE_PRINTSET_HIDDEN_TEXT: { - rValue <<= mpPrtOpt->IsPrintHiddenText(); + bBoolVal = mpPrtOpt->IsPrintHiddenText(); } break; default: diff --git a/sw/source/ui/uno/unotxdoc.cxx b/sw/source/ui/uno/unotxdoc.cxx index 6c6194555559..4b519bc747fd 100755..100644 --- a/sw/source/ui/uno/unotxdoc.cxx +++ b/sw/source/ui/uno/unotxdoc.cxx @@ -50,9 +50,9 @@ #include <viewsh.hxx> #include <pvprtdat.hxx> #include <swprtopt.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <unotxdoc.hxx> -#include <svtools/numuno.hxx> +#include <svl/numuno.hxx> #include <unoobj.hxx> #include <unosett.hxx> #include <unocoll.hxx> @@ -64,7 +64,7 @@ #include <unoprnms.hxx> #include <unostyle.hxx> #include <unodraw.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <pagedesc.hxx> #include <svtools/txtcmp.hxx> #include <unocrsr.hxx> @@ -109,7 +109,7 @@ #include <SwXPrintPreviewSettings.hxx> #include <doc.hxx> #include <svx/forbiddencharacterstable.hxx> -#include <svtools/zforlist.hxx> +#include <svl/zforlist.hxx> #include <drawdoc.hxx> #include <SwStyleNameMapper.hxx> #include <osl/file.hxx> @@ -133,7 +133,7 @@ #include <unostyle.hxx> //SwAutoStyleFamily #include <istyleaccess.hxx> // handling of automatic styles -#include <svtools/stylepool.hxx> +#include <svl/stylepool.hxx> #include <swatrset.hxx> #include <view.hxx> #include <srcview.hxx> @@ -147,7 +147,7 @@ #include <svx/eeitem.hxx> #include <svx/editeng.hxx> #include <svx/svdoutl.hxx> -#include <svtools/languageoptions.hxx> +#include <svl/languageoptions.hxx> #include <svx/svdview.hxx> // @@ -3771,7 +3771,7 @@ Any lcl_GetDisplayBitmap(String sLinkSuffix) if(USHRT_MAX != nImgId) { nImgId += 20000; - BOOL bHighContrast = Application::GetSettings().GetStyleSettings().GetWindowColor().IsDark(); + BOOL bHighContrast = Application::GetSettings().GetStyleSettings().GetHighContrastMode(); ImageList aEntryImages( SW_RES(bHighContrast ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP) ); const Image& rImage = aEntryImages.GetImage( nImgId ); Bitmap aBitmap( rImage.GetBitmapEx().GetBitmap() ); @@ -4059,12 +4059,12 @@ void SwXDocumentPropertyHelper::onChange() /*****************************************************************************/ -SwViewOptionAdjust_Impl::SwViewOptionAdjust_Impl( SwWrtShell& rSh, const SwViewOption &rViewOptions ) :
+SwViewOptionAdjust_Impl::SwViewOptionAdjust_Impl( SwWrtShell& rSh, const SwViewOption &rViewOptions ) : m_rShell( rSh ), m_aOldViewOptions( rViewOptions ) -{
-}
-
+{ +} + SwViewOptionAdjust_Impl::~SwViewOptionAdjust_Impl() { diff --git a/sw/source/ui/uno/warnpassword.cxx b/sw/source/ui/uno/warnpassword.cxx index 8523d69de823..600256cf05db 100644 --- a/sw/source/ui/uno/warnpassword.cxx +++ b/sw/source/ui/uno/warnpassword.cxx @@ -33,7 +33,7 @@ // ============================================================================ #include "warnpassword.hxx" #include <com/sun/star/task/XInteractionHandler.hpp> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <sfx2/docfile.hxx> #include <sfx2/sfxsids.hrc> #include <ucbhelper/simpleinteractionrequest.hxx> diff --git a/sw/source/ui/utlui/attrdesc.cxx b/sw/source/ui/utlui/attrdesc.cxx index 14c27c19b137..076f7aa7bdb8 100644 --- a/sw/source/ui/utlui/attrdesc.cxx +++ b/sw/source/ui/utlui/attrdesc.cxx @@ -32,7 +32,7 @@ #include "precompiled_sw.hxx" -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #include <vcl/svapp.hxx> #include <svx/itemtype.hxx> #include <goodies/grfmgr.hxx> diff --git a/sw/source/ui/utlui/bookctrl.cxx b/sw/source/ui/utlui/bookctrl.cxx index 1de7b99a2b66..b4fb0d6e1b5c 100644 --- a/sw/source/ui/utlui/bookctrl.cxx +++ b/sw/source/ui/utlui/bookctrl.cxx @@ -35,10 +35,10 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_USHORTS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/intitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/intitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/dispatch.hxx> #ifndef _EVENT_HXX //autogen #include <vcl/event.hxx> diff --git a/sw/source/ui/utlui/content.cxx b/sw/source/ui/utlui/content.cxx index e86270c55e12..28c340b63cd3 100644 --- a/sw/source/ui/utlui/content.cxx +++ b/sw/source/ui/utlui/content.cxx @@ -33,9 +33,9 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif -#include <svtools/urlbmk.hxx> +#include <svl/urlbmk.hxx> #include <tools/urlobj.hxx> #include <sfx2/docfile.hxx> #include <sfx2/dispatch.hxx> @@ -1354,7 +1354,7 @@ void SwContentTree::Display( sal_Bool bActive ) { if(!bIsImageListInitialized) { - USHORT nResId = GetDisplayBackground().GetColor().IsDark() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; + USHORT nResId = GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; aEntryImages = ImageList(SW_RES(nResId)); bIsImageListInitialized = sal_True; } @@ -3257,7 +3257,7 @@ void SwContentTree::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) { - USHORT nResId = GetDisplayBackground().GetColor().IsDark() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; + USHORT nResId = GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; aEntryImages = ImageList(SW_RES(nResId)); FindActiveTypeAndRemoveUserData(); Display(sal_True); diff --git a/sw/source/ui/utlui/glbltree.cxx b/sw/source/ui/utlui/glbltree.cxx index 613bbac403b2..20bb340218b2 100644 --- a/sw/source/ui/utlui/glbltree.cxx +++ b/sw/source/ui/utlui/glbltree.cxx @@ -33,23 +33,23 @@ #ifndef _SVSTDARR_HXX #define _SVSTDARR_STRINGSDTOR -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #endif #ifndef _MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/fcontnr.hxx> #include <svx/linkmgr.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <sfx2/docfile.hxx> #ifndef _HELP_HXX //autogen #include <vcl/help.hxx> #endif #include <sot/filelist.hxx> -#include <svtools/eitem.hxx> -#include <svtools/urlbmk.hxx> +#include <svl/eitem.hxx> +#include <svl/urlbmk.hxx> #include <svtools/filter.hxx> #include <sfx2/docinsert.hxx> #include <sfx2/filedlghelper.hxx> @@ -728,7 +728,7 @@ void SwGlobalTree::Display(BOOL bOnlyUpdateUserData) { if(!bIsImageListInitialized) { - USHORT nResId = GetDisplayBackground().GetColor().IsDark() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; + USHORT nResId = GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; aEntryImages = ImageList(SW_RES(nResId)); bIsImageListInitialized = TRUE; } @@ -1396,7 +1396,7 @@ void SwGlobalTree::DataChanged( const DataChangedEvent& rDCEvt ) if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) ) { - USHORT nResId = GetDisplayBackground().GetColor().IsDark() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; + USHORT nResId = GetSettings().GetStyleSettings().GetHighContrastMode() ? IMG_NAVI_ENTRYBMPH : IMG_NAVI_ENTRYBMP; aEntryImages = ImageList(SW_RES(nResId)); Update(sal_True); } diff --git a/sw/source/ui/utlui/gloslst.cxx b/sw/source/ui/utlui/gloslst.cxx index 7072cb254274..5430c783acc7 100644 --- a/sw/source/ui/utlui/gloslst.cxx +++ b/sw/source/ui/utlui/gloslst.cxx @@ -36,7 +36,7 @@ #define _SVSTDARR_STRINGSDTOR #define _SVSTDARR_STRINGSISORTDTOR #define _SVSTDARR_STRINGS -#include <svtools/svstdarr.hxx> +#include <svl/svstdarr.hxx> #include <tools/urlobj.hxx> #include <vcl/dialog.hxx> #include <vcl/msgbox.hxx> @@ -48,9 +48,9 @@ #endif #include <vcl/lstbox.hxx> #ifndef SVTOOLS_FSTATHELPER_HXX -#include <svtools/fstathelper.hxx> +#include <svl/fstathelper.hxx> #endif -#include <svtools/pathoptions.hxx> +#include <unotools/pathoptions.hxx> #include <unotools/transliterationwrapper.hxx> #include <swtypes.hxx> #include <swmodule.hxx> diff --git a/sw/source/ui/utlui/initui.cxx b/sw/source/ui/utlui/initui.cxx index 275b49a4c9e4..ec3328676d2b 100644 --- a/sw/source/ui/utlui/initui.cxx +++ b/sw/source/ui/utlui/initui.cxx @@ -54,7 +54,7 @@ #ifndef _DBMGR_HXX #include <dbmgr.hxx> #endif -#include <svtools/syslocale.hxx> +#include <unotools/syslocale.hxx> #include <unomid.h> @@ -169,6 +169,7 @@ ShellResource::ShellResource() aStrAllPageHeadFoot( SW_RES( STR_ALLPAGE_HEADFOOT ) ), aStrNone( SW_RES( STR_TEMPLATE_NONE )), aFixedStr( SW_RES( STR_FIELD_FIXED )), + sDurationFormat( SW_RES( STR_DURATION_FORMAT )), aTOXIndexName( SW_RES(STR_TOI)), aTOXUserName( SW_RES(STR_TOU)), diff --git a/sw/source/ui/utlui/initui.hrc b/sw/source/ui/utlui/initui.hrc index 5e0c5092d6f6..6c3c0302dbbd 100644 --- a/sw/source/ui/utlui/initui.hrc +++ b/sw/source/ui/utlui/initui.hrc @@ -64,5 +64,6 @@ #define STR_PAGEDESC_FOLLOWNAME 27 #define STR_HYPERLINK_CLICK 28 #define STR_GETREFFLD_REFITEMNOTFOUND 29 +#define STR_DURATION_FORMAT 30 #endif diff --git a/sw/source/ui/utlui/initui.src b/sw/source/ui/utlui/initui.src index d8ebdfc7e64e..26b10dcd0804 100644 --- a/sw/source/ui/utlui/initui.src +++ b/sw/source/ui/utlui/initui.src @@ -112,6 +112,10 @@ Resource RID_SW_SHELLRES { Text [ en-US ] = "(fixed)" ; }; + String STR_DURATION_FORMAT + { + Text [en-US] = " Y: %1 M: %2 D: %3 H: %4 M: %5 S: %6"; + }; String STR_TOI { Text [ en-US ] = "Alphabetical Index" ; diff --git a/sw/source/ui/utlui/navicfg.cxx b/sw/source/ui/utlui/navicfg.cxx index 68383d7d28c2..e9ad48b6d6ea 100644 --- a/sw/source/ui/utlui/navicfg.cxx +++ b/sw/source/ui/utlui/navicfg.cxx @@ -139,3 +139,6 @@ void SwNavigationConfig::Commit() PutProperties(aNames, aValues); } +void SwNavigationConfig::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} + + diff --git a/sw/source/ui/utlui/navipi.cxx b/sw/source/ui/utlui/navipi.cxx index eb3500ea59c4..96fe31edd500 100644 --- a/sw/source/ui/utlui/navipi.cxx +++ b/sw/source/ui/utlui/navipi.cxx @@ -37,10 +37,10 @@ #include <string> // HACK: prevent conflict between STLPORT and Workshop headers #include <tools/list.hxx> -#include <svtools/urlbmk.hxx> -#include <svtools/stritem.hxx> +#include <svl/urlbmk.hxx> +#include <svl/stritem.hxx> #include <svtools/filter.hxx> -#include <svtools/urihelper.hxx> +#include <svl/urihelper.hxx> #include <sot/formats.hxx> #include <sot/filelist.hxx> #include <sfx2/event.hxx> @@ -1034,8 +1034,8 @@ void SwNavigationPI::StateChanged( USHORT nSID, SfxItemState /*eState*/, aContentTree.SetActiveShell(pWrtShell); BOOL bGlobal = IsGlobalDoc(); aContentToolBox.EnableItem(FN_GLOBAL_SWITCH, bGlobal); - if(!bGlobal && IsGlobalMode() || - !IsGlobalMode() && pConfig->IsGlobalActive()) + if( (!bGlobal && IsGlobalMode()) || + (!IsGlobalMode() && pConfig->IsGlobalActive()) ) { ToggleTree(); } @@ -1375,7 +1375,7 @@ void SwNavigationPI::SetRegionDropMode(USHORT nNewMode) else if(nRegionMode == REGION_MODE_EMBEDDED) nDropId = FN_DROP_REGION_COPY; - ImageList& rImgLst = aContentToolBox.GetDisplayBackground().GetColor().IsDark() + ImageList& rImgLst = aContentToolBox.GetSettings().GetStyleSettings().GetHighContrastMode() ? aContentImageListH : aContentImageList; aContentToolBox.SetItemImage( FN_DROP_REGION, @@ -1531,7 +1531,7 @@ void SwNavigationPI::InitImageList() { USHORT k; - ImageList& rImgLst = aContentToolBox.GetDisplayBackground().GetColor().IsDark() ? + ImageList& rImgLst = aContentToolBox.GetSettings().GetStyleSettings().GetHighContrastMode() ? aContentImageListH : aContentImageList; for( k = 0; k < aContentToolBox.GetItemCount(); k++) aContentToolBox.SetItemImage(aContentToolBox.GetItemId(k), diff --git a/sw/source/ui/utlui/numfmtlb.cxx b/sw/source/ui/utlui/numfmtlb.cxx index 5a0030d9dd85..4581330ab393 100644 --- a/sw/source/ui/utlui/numfmtlb.cxx +++ b/sw/source/ui/utlui/numfmtlb.cxx @@ -40,14 +40,14 @@ #include <i18npool/lang.h> #ifndef _ZFORMAT_HXX //autogen #define _ZFORLIST_DECLARE_TABLE -#include <svtools/zformat.hxx> +#include <svl/zformat.hxx> #endif -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/svxids.hrc> #include <svx/numinf.hxx> #include <vcl/msgbox.hxx> #include <svx/flagsdef.hxx> -#include <svtools/itemset.hxx> +#include <svl/itemset.hxx> #include <docsh.hxx> #include <swtypes.hxx> #include <swmodule.hxx> diff --git a/sw/source/ui/utlui/swrenamexnameddlg.cxx b/sw/source/ui/utlui/swrenamexnameddlg.cxx index 85d8aa2cf7a6..283da9eaa129 100644 --- a/sw/source/ui/utlui/swrenamexnameddlg.cxx +++ b/sw/source/ui/utlui/swrenamexnameddlg.cxx @@ -57,7 +57,7 @@ #include <com/sun/star/container/XNameContainer.hpp> #include <comphelper/processfactory.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <shellio.hxx> #include <docsh.hxx> #include <view.hxx> diff --git a/sw/source/ui/utlui/tmplctrl.cxx b/sw/source/ui/utlui/tmplctrl.cxx index 0ba8740fb5b2..af89104265b3 100644 --- a/sw/source/ui/utlui/tmplctrl.cxx +++ b/sw/source/ui/utlui/tmplctrl.cxx @@ -34,11 +34,11 @@ // include --------------------------------------------------------------- -#include <svtools/style.hxx> +#include <svl/style.hxx> #ifndef _MENU_HXX //autogen #include <vcl/menu.hxx> #endif -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <sfx2/dispatch.hxx> #ifndef _STATUS_HXX //autogen #include <vcl/status.hxx> diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx index cb6a3888d45f..4bd54affeed9 100644 --- a/sw/source/ui/utlui/uitool.cxx +++ b/sw/source/ui/utlui/uitool.cxx @@ -37,9 +37,9 @@ #include <tools/datetime.hxx> #include <vcl/svapp.hxx> #include <unotools/collatorwrapper.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/stritem.hxx> -#include <svtools/syslocale.hxx> +#include <svl/urihelper.hxx> +#include <svl/stritem.hxx> +#include <unotools/syslocale.hxx> #include <sfx2/app.hxx> #include <sfx2/docfile.hxx> #include <sfx2/docfilt.hxx> @@ -51,7 +51,7 @@ #include <svx/sizeitem.hxx> #include <svx/pageitem.hxx> #include <svx/lrspitem.hxx> -#include <svtools/style.hxx> +#include <svl/style.hxx> #ifndef _VCL_LSTBOX_HXX //autogen #include <vcl/lstbox.hxx> #endif diff --git a/sw/source/ui/utlui/unotools.cxx b/sw/source/ui/utlui/unotools.cxx index f2efc1d85a00..a7d06416b443 100644 --- a/sw/source/ui/utlui/unotools.cxx +++ b/sw/source/ui/utlui/unotools.cxx @@ -53,7 +53,7 @@ #include <com/sun/star/frame/XLayoutManager.hpp> #include <comphelper/processfactory.hxx> #include <sfx2/dispatch.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <shellio.hxx> #include <docsh.hxx> #include <view.hxx> diff --git a/sw/source/ui/utlui/viewlayoutctrl.cxx b/sw/source/ui/utlui/viewlayoutctrl.cxx index 2741b668844b..b7a4fdb033d6 100644 --- a/sw/source/ui/utlui/viewlayoutctrl.cxx +++ b/sw/source/ui/utlui/viewlayoutctrl.cxx @@ -38,7 +38,7 @@ #include <vcl/status.hxx> #endif #include <vcl/image.hxx> -#include <svtools/eitem.hxx> +#include <svl/eitem.hxx> #include <svx/viewlayoutitem.hxx> #ifndef _UTLUI_HRC #include <utlui.hrc> @@ -78,13 +78,13 @@ SwViewLayoutControl::SwViewLayoutControl( USHORT _nSlotId, USHORT _nId, StatusBa { mpImpl->mnState = 0; - const sal_Bool bIsDark = GetStatusBar().GetBackground().GetColor().IsDark(); - mpImpl->maImageSingleColumn = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_HC) : SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN) ); - mpImpl->maImageSingleColumn_Active = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_ACTIVE) ); - mpImpl->maImageAutomatic = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_HC) : SW_RES(IMG_VIEWLAYOUT_AUTOMATIC) ); - mpImpl->maImageAutomatic_Active = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_ACTIVE) ); - mpImpl->maImageBookMode = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_BOOKMODE_HC) : SW_RES(IMG_VIEWLAYOUT_BOOKMODE) ); - mpImpl->maImageBookMode_Active = Image( bIsDark ? SW_RES(IMG_VIEWLAYOUT_BOOKMODE_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_BOOKMODE_ACTIVE) ); + const sal_Bool bHC = GetStatusBar().GetSettings().GetStyleSettings().GetHighContrastMode(); + mpImpl->maImageSingleColumn = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_HC) : SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN) ); + mpImpl->maImageSingleColumn_Active = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_SINGLECOLUMN_ACTIVE) ); + mpImpl->maImageAutomatic = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_HC) : SW_RES(IMG_VIEWLAYOUT_AUTOMATIC) ); + mpImpl->maImageAutomatic_Active = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_AUTOMATIC_ACTIVE) ); + mpImpl->maImageBookMode = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_BOOKMODE_HC) : SW_RES(IMG_VIEWLAYOUT_BOOKMODE) ); + mpImpl->maImageBookMode_Active = Image( bHC ? SW_RES(IMG_VIEWLAYOUT_BOOKMODE_ACTIVE_HC) : SW_RES(IMG_VIEWLAYOUT_BOOKMODE_ACTIVE) ); } // ----------------------------------------------------------------------- diff --git a/sw/source/ui/utlui/zoomctrl.cxx b/sw/source/ui/utlui/zoomctrl.cxx index 1a76e5bc5ecc..08e552efee7f 100644 --- a/sw/source/ui/utlui/zoomctrl.cxx +++ b/sw/source/ui/utlui/zoomctrl.cxx @@ -39,7 +39,7 @@ #include <vcl/status.hxx> #endif #include <sfx2/app.hxx> -#include <svtools/stritem.hxx> +#include <svl/stritem.hxx> #include <svx/zoomitem.hxx> #include "swtypes.hxx" diff --git a/sw/source/ui/vba/makefile.mk b/sw/source/ui/vba/makefile.mk new file mode 100644 index 000000000000..f4c604f5d4eb --- /dev/null +++ b/sw/source/ui/vba/makefile.mk @@ -0,0 +1,111 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2008 by Sun Microsystems, Inc. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.6 $ +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=sw +TARGET=vbaswobj +ENABLE_EXCEPTIONS=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE : settings.mk +DLLPRE = + +.IF "$(ENABLE_VBA)"!="YES" +dummy: + @echo "not building vba..." +.ENDIF + +INCPRE=$(INCCOM)$/$(TARGET) +CDEFS+=-DVBA_OOBUILD_HACK +# ------------------------------------------------------------------ + +SLOFILES= \ + $(SLO)$/vbaglobals.obj \ + $(SLO)$/vbaapplication.obj \ + $(SLO)$/vbadocument.obj \ + $(SLO)$/vbawindow.obj \ + $(SLO)$/vbasystem.obj \ + $(SLO)$/vbarangehelper.obj \ + $(SLO)$/vbarange.obj \ + $(SLO)$/vbabookmark.obj \ + $(SLO)$/vbabookmarks.obj \ + $(SLO)$/vbavariable.obj \ + $(SLO)$/vbavariables.obj \ + $(SLO)$/vbaview.obj \ + $(SLO)$/wordvbahelper.obj \ + $(SLO)$/service.obj \ + $(SLO)$/vbadocumentproperties.obj \ + $(SLO)$/vbapane.obj \ + $(SLO)$/vbapanes.obj \ + $(SLO)$/vbaoptions.obj \ + $(SLO)$/vbaselection.obj \ + $(SLO)$/vbatemplate.obj \ + $(SLO)$/vbaparagraphformat.obj \ + $(SLO)$/vbaautotextentry.obj \ + $(SLO)$/vbaparagraph.obj \ + $(SLO)$/vbafind.obj \ + $(SLO)$/vbareplacement.obj \ + $(SLO)$/vbastyle.obj \ + $(SLO)$/vbastyles.obj \ + $(SLO)$/vbafont.obj \ + $(SLO)$/vbapalette.obj \ + $(SLO)$/vbainformationhelper.obj \ + $(SLO)$/vbatable.obj \ + $(SLO)$/vbatables.obj \ + $(SLO)$/vbafield.obj \ + $(SLO)$/vbaborders.obj \ + $(SLO)$/vbadocuments.obj \ + $(SLO)$/vbaheaderfooter.obj \ + $(SLO)$/vbaheaderfooterhelper.obj \ + $(SLO)$/vbaaddin.obj \ + $(SLO)$/vbaaddins.obj \ + $(SLO)$/vbadialogs.obj \ + $(SLO)$/vbadialog.obj \ + $(SLO)$/vbawrapformat.obj \ + $(SLO)$/vbapagesetup.obj \ + $(SLO)$/vbasection.obj \ + $(SLO)$/vbasections.obj \ + +# --- Targets ------------------------------------------------------ + +.INCLUDE : target.mk + +ALLTAR : \ + $(MISC)$/$(TARGET).don \ + +$(SLOFILES) : $(MISC)$/$(TARGET).don + +$(MISC)$/$(TARGET).don : $(SOLARBINDIR)$/oovbaapi.rdb + +$(CPPUMAKER) -O$(INCCOM)$/$(TARGET) -BUCR $(SOLARBINDIR)$/oovbaapi.rdb -X$(SOLARBINDIR)$/types.rdb && echo > $@ + echo $@ + diff --git a/sw/source/ui/vba/service.cxx b/sw/source/ui/vba/service.cxx new file mode 100644 index 000000000000..20b93a45a2ce --- /dev/null +++ b/sw/source/ui/vba/service.cxx @@ -0,0 +1,87 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: service.cxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "cppuhelper/implementationentry.hxx" +#include "com/sun/star/lang/XMultiServiceFactory.hpp" +#include "com/sun/star/registry/XRegistryKey.hpp" +#include "comphelper/servicedecl.hxx" + +// ============================================================================= +// component exports +// ============================================================================= +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; + +namespace sdecl = comphelper::service_decl; + +namespace globals +{ +extern sdecl::ServiceDecl const serviceDecl; +} + +namespace document +{ +extern sdecl::ServiceDecl const serviceDecl; +} + +namespace wrapformat +{ +extern sdecl::ServiceDecl const serviceDecl; +} + +extern "C" +{ + void SAL_CALL component_getImplementationEnvironment( + const sal_Char ** ppEnvTypeName, uno_Environment ** /*ppEnv*/ ) + { + OSL_TRACE("In component_getImplementationEnv"); + *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; + } + + sal_Bool SAL_CALL component_writeInfo( + lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey ) + { + OSL_TRACE("In component_writeInfo"); + + // Component registration + return component_writeInfoHelper( pServiceManager, pRegistryKey, + globals::serviceDecl, document::serviceDecl, wrapformat::serviceDecl ); + } + + void * SAL_CALL component_getFactory( + const sal_Char * pImplName, lang::XMultiServiceFactory * pServiceManager, + registry::XRegistryKey * pRegistryKey ) + { + OSL_TRACE("In component_getFactory for %s", pImplName ); + void* pRet = component_getFactoryHelper( + pImplName, pServiceManager, pRegistryKey, globals::serviceDecl, document::serviceDecl, wrapformat::serviceDecl ); + OSL_TRACE("Ret is 0x%x", pRet); + return pRet; + } +} diff --git a/sw/source/ui/vba/vbaaddin.cxx b/sw/source/ui/vba/vbaaddin.cxx new file mode 100644 index 000000000000..beac56b63cb6 --- /dev/null +++ b/sw/source/ui/vba/vbaaddin.cxx @@ -0,0 +1,107 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaaddin.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include <tools/urlobj.hxx> +#include <osl/file.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaAddin::SwVbaAddin( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const rtl::OUString& rFileURL, sal_Bool bAutoload ) throw ( uno::RuntimeException ) : + SwVbaAddin_BASE( rParent, rContext ), msFileURL( rFileURL ), mbAutoload( bAutoload ), mbInstalled( bAutoload ) +{ +} + +SwVbaAddin::~SwVbaAddin() +{ +} + +::rtl::OUString SAL_CALL SwVbaAddin::getName() throw (uno::RuntimeException) +{ + rtl::OUString sName; + INetURLObject aURL( msFileURL ); + ::osl::File::getSystemPathFromFileURL( aURL.GetLastName(), sName ); + return sName; +} + +void SAL_CALL +SwVbaAddin::setName( const rtl::OUString& ) throw ( css::uno::RuntimeException ) +{ + throw uno::RuntimeException( rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(" Fail to set name")), uno::Reference< uno::XInterface >() ); +} + +::rtl::OUString SAL_CALL SwVbaAddin::getPath() throw (uno::RuntimeException) +{ + INetURLObject aURL( msFileURL ); + aURL.CutLastName(); + return aURL.GetURLPath(); +} + +::sal_Bool SAL_CALL SwVbaAddin::getAutoload() throw (uno::RuntimeException) +{ + return mbAutoload; +} + +::sal_Bool SAL_CALL SwVbaAddin::getInstalled() throw (uno::RuntimeException) +{ + return mbInstalled; +} + +void SAL_CALL SwVbaAddin::setInstalled( ::sal_Bool _installed ) throw (uno::RuntimeException) +{ + if( _installed != mbInstalled ) + { + mbInstalled = _installed; + // TODO: should call AutoExec and AutoExit etc. + } +} + +rtl::OUString& +SwVbaAddin::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaAddin") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaAddin::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Addin" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbaaddin.hxx b/sw/source/ui/vba/vbaaddin.hxx new file mode 100644 index 000000000000..753d9584cc6d --- /dev/null +++ b/sw/source/ui/vba/vbaaddin.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_ADDIN_HXX +#define SW_VBA_ADDIN_HXX + +#include <ooo/vba/word/XAddin.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XAddin > SwVbaAddin_BASE; + +class SwVbaAddin : public SwVbaAddin_BASE +{ +private: + rtl::OUString msFileURL; + sal_Bool mbAutoload; + sal_Bool mbInstalled; + +public: + SwVbaAddin( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const rtl::OUString& rFileURL, sal_Bool bAutoload ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaAddin(); + + // Attributes + virtual ::rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); + virtual void SAL_CALL setName( const rtl::OUString& _name ) throw (css::uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getPath() throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoload() throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getInstalled() throw (css::uno::RuntimeException); + virtual void SAL_CALL setInstalled( ::sal_Bool _installed ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_ADDIN_HXX */ diff --git a/sw/source/ui/vba/vbaaddins.cxx b/sw/source/ui/vba/vbaaddins.cxx new file mode 100644 index 000000000000..0457388af1de --- /dev/null +++ b/sw/source/ui/vba/vbaaddins.cxx @@ -0,0 +1,110 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaaddins.hxx" +#include "vbaaddin.hxx" +#include <cppuhelper/implbase3.hxx> +#include <unotools/pathoptions.hxx> +#include <com/sun/star/lang/XMultiComponentFactory.hpp> +#include <com/sun/star/ucb/XSimpleFileAccess.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +uno::Reference< container::XIndexAccess > lcl_getAddinCollection( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext ) +{ + XNamedObjectCollectionHelper< word::XAddin >::XNamedVec maAddins; + + // first get the autoload addins in the directory STARTUP + uno::Reference< lang::XMultiComponentFactory > xMCF( xContext->getServiceManager(), uno::UNO_QUERY_THROW ); + uno::Reference< ucb::XSimpleFileAccess > xSFA( xMCF->createInstanceWithContext( rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ), xContext), uno::UNO_QUERY_THROW ); + SvtPathOptions aPathOpt; + // FIXME: temporary the STARTUP path is located in $OO/basic3.1/program/addin + String aAddinPath = aPathOpt.GetAddinPath(); + OSL_TRACE("lcl_getAddinCollection: %s", rtl::OUStringToOString( aAddinPath, RTL_TEXTENCODING_UTF8 ).getStr() ); + if( xSFA->isFolder( aAddinPath ) ) + { + uno::Sequence< rtl::OUString > sEntries = xSFA->getFolderContents( aAddinPath, sal_False ); + sal_Int32 nEntry = sEntries.getLength(); + for( sal_Int32 index = 0; index < nEntry; ++index ) + { + rtl::OUString sUrl = sEntries[ index ]; + if( !xSFA->isFolder( sUrl ) && sUrl.endsWithIgnoreAsciiCaseAsciiL( ".dot", 4 ) ) + { + maAddins.push_back( uno::Reference< word::XAddin >( new SwVbaAddin( xParent, xContext, sUrl, sal_True ) ) ); + } + } + } + + // TODO: second get the customize addins in the org.openoffice.Office.Writer/GlobalTemplateList + + uno::Reference< container::XIndexAccess > xAddinsAccess( new XNamedObjectCollectionHelper< word::XAddin >( maAddins ) ); + return xAddinsAccess; +} + +SwVbaAddins::SwVbaAddins( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext ) throw (uno::RuntimeException): SwVbaAddins_BASE( xParent, xContext, lcl_getAddinCollection( xParent,xContext ) ) +{ +} +// XEnumerationAccess +uno::Type +SwVbaAddins::getElementType() throw (uno::RuntimeException) +{ + return word::XAddin::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaAddins::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumerationAccess->createEnumeration(); +} + +uno::Any +SwVbaAddins::createCollectionObject( const css::uno::Any& aSource ) +{ + return aSource; +} + +rtl::OUString& +SwVbaAddins::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaAddins") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaAddins::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Addins") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbaaddins.hxx b/sw/source/ui/vba/vbaaddins.hxx new file mode 100644 index 000000000000..a78b3a6d32d0 --- /dev/null +++ b/sw/source/ui/vba/vbaaddins.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_ADDINS_HXX +#define SW_VBA_ADDINS_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XAddins.hpp> +#include <vbahelper/vbahelperinterface.hxx> + +typedef CollTestImplHelper< ooo::vba::word::XAddins > SwVbaAddins_BASE; + +class SwVbaAddins : public SwVbaAddins_BASE +{ +public: + SwVbaAddins( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext ) throw (css::uno::RuntimeException); + virtual ~SwVbaAddins() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaAddins_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_ADDINS_HXX */ diff --git a/sw/source/ui/vba/vbaapplication.cxx b/sw/source/ui/vba/vbaapplication.cxx new file mode 100644 index 000000000000..1ad6539c86aa --- /dev/null +++ b/sw/source/ui/vba/vbaapplication.cxx @@ -0,0 +1,206 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaapplication.cxx,v $ + * $Revision: 1.7 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <stdio.h> +#include "vbaapplication.hxx" +#include "vbadocument.hxx" +#include <osl/file.hxx> +#include <vbahelper/vbahelper.hxx> +#include "vbawindow.hxx" +#include "vbasystem.hxx" +#include "vbaoptions.hxx" +#include "vbaselection.hxx" +#include "vbadocuments.hxx" +#include "vbaaddins.hxx" +#include "vbadialogs.hxx" +#include <ooo/vba/word/WdEnableCancelKey.hpp> +#include <svx/acorrcfg.hxx> +#include "wordvbahelper.hxx" +#include <docsh.hxx> + +using namespace ::ooo; +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::UNO_QUERY_THROW; +using ::com::sun::star::uno::UNO_QUERY; +using ::rtl::OUString; + +// Enable our own join detection for Intersection and Union +// should be more efficient than using ScRangeList::Join ( because +// we already are testing the same things ) + +#define OWN_JOIN 1 + +// #TODO is this defined somewhere else? +#if ( defined UNX ) || ( defined OS2 ) //unix +#define FILE_PATH_SEPERATOR "/" +#else // windows +#define FILE_PATH_SEPERATOR "\\" +#endif + +#define EXCELVERSION "11.0" + +uno::Any sbxToUnoValue( SbxVariable* pVar ); + +SwVbaApplication::SwVbaApplication( uno::Reference<uno::XComponentContext >& xContext ): SwVbaApplication_BASE( xContext ) +{ +} + +SwVbaApplication::~SwVbaApplication() +{ +} + +SfxObjectShell* SwVbaApplication::GetDocShell( const uno::Reference< frame::XModel >& xModel ) throw (uno::RuntimeException) +{ + return static_cast< SfxObjectShell* >( word::getDocShell( xModel ) ); +} + +rtl::OUString SAL_CALL +SwVbaApplication::getName() throw (uno::RuntimeException) +{ + static rtl::OUString appName( RTL_CONSTASCII_USTRINGPARAM("Microsoft Word" ) ); + return appName; +} + +uno::Reference< word::XDocument > SAL_CALL +SwVbaApplication::getActiveDocument() throw (uno::RuntimeException) +{ + return new SwVbaDocument( this, mxContext, getCurrentDocument() ); +} + +uno::Reference< word::XWindow > SAL_CALL +SwVbaApplication::getActiveWindow() throw (uno::RuntimeException) +{ + // #FIXME sofar can't determine Parent + return new SwVbaWindow( uno::Reference< XHelperInterface >(), mxContext, getCurrentDocument() ); +} + +uno::Reference<word::XSystem > SAL_CALL +SwVbaApplication::getSystem() throw (uno::RuntimeException) +{ + return uno::Reference< word::XSystem >( new SwVbaSystem( mxContext ) ); +} + +uno::Reference<word::XOptions > SAL_CALL +SwVbaApplication::getOptions() throw (uno::RuntimeException) +{ + return uno::Reference< word::XOptions >( new SwVbaOptions( mxContext ) ); +} + +uno::Any SAL_CALL +SwVbaApplication::CommandBars( const uno::Any& aIndex ) throw (uno::RuntimeException) +{ + return VbaApplicationBase::CommandBars( aIndex ); +} + +uno::Reference< word::XSelection > SAL_CALL +SwVbaApplication::getSelection() throw (uno::RuntimeException) +{ + return new SwVbaSelection( this, mxContext, getCurrentDocument() ); +} + +uno::Any SAL_CALL +SwVbaApplication::Documents( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaDocuments( this, mxContext ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaApplication::Addins( const uno::Any& index ) throw (uno::RuntimeException) +{ + static uno::Reference< XCollection > xCol( new SwVbaAddins( this, mxContext ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaApplication::Dialogs( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< word::XDialogs > xCol( new SwVbaDialogs( this, mxContext, getCurrentDocument() )); + if ( index.hasValue() ) + return xCol->Item( index ); + return uno::makeAny( xCol ); +} + +sal_Bool SAL_CALL SwVbaApplication::getDisplayAutoCompleteTips() throw (css::uno::RuntimeException) +{ + return SvxAutoCorrCfg::Get()->IsAutoTextTip(); +} + +void SAL_CALL SwVbaApplication::setDisplayAutoCompleteTips( sal_Bool _displayAutoCompleteTips ) throw (css::uno::RuntimeException) +{ + SvxAutoCorrCfg::Get()->SetAutoTextTip( _displayAutoCompleteTips ); +} + +sal_Int32 SAL_CALL SwVbaApplication::getEnableCancelKey() throw (css::uno::RuntimeException) +{ + // the default value is wdCancelInterrupt in Word + return word::WdEnableCancelKey::wdCancelInterrupt; +} + +void SAL_CALL SwVbaApplication::setEnableCancelKey( sal_Int32/* _enableCancelKey */) throw (css::uno::RuntimeException) +{ + // seems not supported in Writer +} + +float SAL_CALL SwVbaApplication::CentimetersToPoints( float _Centimeters ) throw (uno::RuntimeException) +{ + return VbaApplicationBase::CentimetersToPoints( _Centimeters ); +} + +uno::Reference< frame::XModel > +SwVbaApplication::getCurrentDocument() throw (css::uno::RuntimeException) +{ + return getCurrentWordDoc( mxContext ); +} + +rtl::OUString& +SwVbaApplication::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaApplication") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaApplication::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Application" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbaapplication.hxx b/sw/source/ui/vba/vbaapplication.hxx new file mode 100644 index 000000000000..c563cf99b965 --- /dev/null +++ b/sw/source/ui/vba/vbaapplication.hxx @@ -0,0 +1,77 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaapplication.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_APPLICATION_HXX +#define SW_VBA_APPLICATION_HXX + +#include <ooo/vba/word/XApplication.hpp> +#include <ooo/vba/word/XDocument.hpp> +#include <ooo/vba/word/XWindow.hpp> +#include <ooo/vba/word/XSystem.hpp> +#include <ooo/vba/word/XOptions.hpp> +#include <ooo/vba/word/XSelection.hpp> +#include <ooo/vba/word/XAddins.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbaapplicationbase.hxx> +#include <cppuhelper/implbase1.hxx> + +//typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XApplication > SwVbaApplication_BASE; +typedef cppu::ImplInheritanceHelper1< VbaApplicationBase, ooo::vba::word::XApplication > SwVbaApplication_BASE; + +class SwVbaApplication : public SwVbaApplication_BASE +{ +public: + SwVbaApplication( css::uno::Reference< css::uno::XComponentContext >& m_xContext ); + virtual ~SwVbaApplication(); + + virtual SfxObjectShell* GetDocShell( const css::uno::Reference< css::frame::XModel >& xModel ) throw (css::uno::RuntimeException); + + // XApplication + virtual ::rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XSystem > SAL_CALL getSystem() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ov::word::XDocument > SAL_CALL getActiveDocument() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ov::word::XWindow > SAL_CALL getActiveWindow() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XOptions > SAL_CALL getOptions() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XSelection > SAL_CALL getSelection() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL CommandBars( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Documents( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Addins( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Dialogs( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual sal_Bool SAL_CALL getDisplayAutoCompleteTips() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDisplayAutoCompleteTips( sal_Bool _displayAutoCompleteTips ) throw (css::uno::RuntimeException); + virtual sal_Int32 SAL_CALL getEnableCancelKey() throw (css::uno::RuntimeException); + virtual void SAL_CALL setEnableCancelKey( sal_Int32 _enableCancelKey ) throw (css::uno::RuntimeException); + virtual float SAL_CALL CentimetersToPoints( float _Centimeters ) throw (css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +protected: + virtual css::uno::Reference< css::frame::XModel > getCurrentDocument() throw (css::uno::RuntimeException); +}; +#endif /* SW_VBA_APPLICATION_HXX */ diff --git a/sw/source/ui/vba/vbaautotextentry.cxx b/sw/source/ui/vba/vbaautotextentry.cxx new file mode 100644 index 000000000000..5d604f47bbf9 --- /dev/null +++ b/sw/source/ui/vba/vbaautotextentry.cxx @@ -0,0 +1,129 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaautotextentry.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbarange.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaAutoTextEntry::SwVbaAutoTextEntry( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XAutoTextEntry >& xEntry ) throw ( uno::RuntimeException ) : + SwVbaAutoTextEntry_BASE( rParent, rContext ), mxEntry( xEntry ) +{ +} + +SwVbaAutoTextEntry::~SwVbaAutoTextEntry() +{ +} + +uno::Reference< word::XRange > SAL_CALL SwVbaAutoTextEntry::Insert( const uno::Reference< word::XRange >& _where, const uno::Any& /*_richtext*/ ) throw ( uno::RuntimeException ) +{ + SwVbaRange* pWhere = dynamic_cast<SwVbaRange*>( _where.get() ); + if( pWhere ) + { + uno::Reference< text::XTextRange > xTextRange = pWhere->getXTextRange(); + xTextRange->setString( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("x") ) ); // set marker + uno::Reference< text::XTextRange > xEndMarker = xTextRange->getEnd(); + xEndMarker->setString( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("x") ) ); // set marker + uno::Reference< text::XText > xText = pWhere->getXText(); + mxEntry->applyTo( xEndMarker->getStart() ); + uno::Reference< text::XTextCursor > xTC = xText->createTextCursorByRange( xTextRange->getStart() ); + xTC->goRight( 1, sal_True ); + xTC->setString( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("") ) ); // remove marker + xEndMarker->setString( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("") ) ); // remove marker + xTC->gotoRange( xEndMarker, sal_True ); + pWhere->setXTextCursor( xTC ); + } + return uno::Reference< word::XRange >( pWhere ); +} + +rtl::OUString& +SwVbaAutoTextEntry::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaAutoTextEntry") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaAutoTextEntry::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.AutoTextEntry" ) ); + } + return aServiceNames; +} + + +SwVbaAutoTextEntries::SwVbaAutoTextEntries( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext, const uno::Reference< container::XIndexAccess >& xIndexAccess ) throw (uno::RuntimeException) : SwVbaAutoTextEntries_BASE( xParent, xContext, xIndexAccess ), mxAutoTextEntryAccess( xIndexAccess ) +{ +} + +// XEnumerationAccess +uno::Type +SwVbaAutoTextEntries::getElementType() throw (uno::RuntimeException) +{ + return word::XAutoTextEntry::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaAutoTextEntries::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumerationAccess->createEnumeration(); +} + +uno::Any +SwVbaAutoTextEntries::createCollectionObject( const css::uno::Any& aSource ) +{ + uno::Reference< text::XAutoTextEntry > xEntry( aSource, uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XAutoTextEntry >( new SwVbaAutoTextEntry( this, mxContext, xEntry ) ) ); +} + +rtl::OUString& +SwVbaAutoTextEntries::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaAutoTextEntries") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaAutoTextEntries::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.AutoTextEntries") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbaautotextentry.hxx b/sw/source/ui/vba/vbaautotextentry.hxx new file mode 100644 index 000000000000..f86f5a4d657d --- /dev/null +++ b/sw/source/ui/vba/vbaautotextentry.hxx @@ -0,0 +1,83 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_AUTOTEXTENTRY_HXX +#define SW_VBA_AUTOTEXTENTRY_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XAutoTextEntries.hpp> +#include <ooo/vba/word/XAutoTextEntry.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <ooo/vba/word/XRange.hpp> +#include <com/sun/star/text/XAutoTextEntry.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XAutoTextEntry > SwVbaAutoTextEntry_BASE; + +class SwVbaAutoTextEntry : public SwVbaAutoTextEntry_BASE +{ +private: + css::uno::Reference< css::text::XAutoTextEntry > mxEntry; + +public: + SwVbaAutoTextEntry( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XAutoTextEntry >& xEntry ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaAutoTextEntry(); + + // XAutoTextEntry + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL Insert( const css::uno::Reference< ooo::vba::word::XRange >& _where, const css::uno::Any& _richtext ) throw ( css::uno::RuntimeException ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + + +/* class SwVbaAutoTextEntries */ +typedef CollTestImplHelper< ooo::vba::word::XAutoTextEntries > SwVbaAutoTextEntries_BASE; + +class SwVbaAutoTextEntries : public SwVbaAutoTextEntries_BASE +{ +private: + css::uno::Reference< css::container::XIndexAccess > mxAutoTextEntryAccess; + +public: + SwVbaAutoTextEntries( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::container::XIndexAccess >& xIndexAccess ) throw (css::uno::RuntimeException); + virtual ~SwVbaAutoTextEntries() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaAutoTextEntries_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_AUTOTEXTENTRY_HXX */ diff --git a/sw/source/ui/vba/vbabookmark.cxx b/sw/source/ui/vba/vbabookmark.cxx new file mode 100644 index 000000000000..d5737a040cdc --- /dev/null +++ b/sw/source/ui/vba/vbabookmark.cxx @@ -0,0 +1,112 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbabookmark.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextContent.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include "vbarange.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaBookmark::SwVbaBookmark( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, + const css::uno::Reference< frame::XModel >& rModel, const rtl::OUString& rName ) throw ( css::uno::RuntimeException ) : + SwVbaBookmark_BASE( rParent, rContext ), mxModel( rModel ), maName( rName ), mbValid( sal_True ) +{ + uno::Reference< text::XBookmarksSupplier > xBookmarksSupplier( mxModel, uno::UNO_QUERY_THROW ); + mxBookmark.set( xBookmarksSupplier->getBookmarks()->getByName( maName ), uno::UNO_QUERY_THROW ); +} + +SwVbaBookmark::~SwVbaBookmark() +{ +} + +void SwVbaBookmark::checkVality() throw ( uno::RuntimeException ) +{ + if( !mbValid ) + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("The bookmark is not valid" ) ), uno::Reference< uno::XInterface >() ); +} + +void SAL_CALL SwVbaBookmark::Delete() throw ( uno::RuntimeException ) +{ + checkVality(); + uno::Reference< text::XTextDocument > xTextDocument( mxModel, uno::UNO_QUERY_THROW ); + xTextDocument->getText()->removeTextContent( mxBookmark ); + mbValid = sal_False; +} + +void SAL_CALL SwVbaBookmark::Select() throw ( uno::RuntimeException ) +{ + checkVality(); + uno::Reference< text::XTextViewCursorSupplier > xViewCursorSupplier( mxModel->getCurrentController(), uno::UNO_QUERY_THROW ); + xViewCursorSupplier->getViewCursor()->gotoRange( mxBookmark->getAnchor(),sal_False ); +} + +rtl::OUString SAL_CALL SwVbaBookmark::getName() throw ( uno::RuntimeException ) +{ + return maName; +} + +void SAL_CALL SwVbaBookmark::setName( const rtl::OUString& _name ) throw ( uno::RuntimeException ) +{ + uno::Reference< container::XNamed > xNamed( mxBookmark, uno::UNO_QUERY_THROW ); + xNamed->setName( _name ); +} + +uno::Any SAL_CALL SwVbaBookmark::Range() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextContent > xTextContent( mxBookmark, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextDocument > xTextDocument( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextRange > xTextRange( xTextContent->getAnchor(), uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XRange>( new SwVbaRange( this, mxContext, xTextDocument, xTextRange->getStart(), xTextRange->getEnd(), xTextRange->getText() ) ) ); +} + +rtl::OUString& +SwVbaBookmark::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBookmark") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaBookmark::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Bookmark" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbabookmark.hxx b/sw/source/ui/vba/vbabookmark.hxx new file mode 100644 index 000000000000..76220ab3ccbe --- /dev/null +++ b/sw/source/ui/vba/vbabookmark.hxx @@ -0,0 +1,68 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_BOOKMARK_HXX +#define SW_VBA_BOOKMARK_HXX + +#include <ooo/vba/word/XBookmark.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/text/XBookmarksSupplier.hpp> +#include <com/sun/star/text/XTextContent.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XBookmark > SwVbaBookmark_BASE; + +class SwVbaBookmark : public SwVbaBookmark_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::text::XTextContent > mxBookmark; + rtl::OUString maName; + sal_Bool mbValid; + +private: + void checkVality() throw ( css::uno::RuntimeException ); + +public: + SwVbaBookmark( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, + const css::uno::Reference< css::frame::XModel >& rModel, const rtl::OUString& rName ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaBookmark(); + + // Methods + virtual rtl::OUString SAL_CALL getName() throw ( css::uno::RuntimeException ); + virtual void SAL_CALL setName( const rtl::OUString& ) throw ( css::uno::RuntimeException ); + virtual void SAL_CALL Delete() throw ( css::uno::RuntimeException ); + virtual void SAL_CALL Select() throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL Range() throw ( css::uno::RuntimeException ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_BOOKMARK_HXX */ diff --git a/sw/source/ui/vba/vbabookmarks.cxx b/sw/source/ui/vba/vbabookmarks.cxx new file mode 100644 index 000000000000..f54460f75435 --- /dev/null +++ b/sw/source/ui/vba/vbabookmarks.cxx @@ -0,0 +1,240 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbabookmarks.hxx" +#include "vbabookmark.hxx" +#include <com/sun/star/container/XNamed.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <ooo/vba/word/WdBookmarkSortBy.hpp> +#include "vbarange.hxx" +#include "wordvbahelper.hxx" +#include <cppuhelper/implbase2.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +class BookmarksEnumeration : public EnumerationHelperImpl +{ + uno::Reference< frame::XModel > mxModel; + uno::WeakReference< XHelperInterface > mxParent; +public: + BookmarksEnumeration( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< container::XEnumeration >& xEnumeration, const uno::Reference< frame::XModel >& xModel ) throw ( uno::RuntimeException ) : EnumerationHelperImpl( xContext, xEnumeration ), mxModel( xModel ), mxParent( xParent ) {} + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + uno::Reference< container::XNamed > xNamed( m_xEnumeration->nextElement(), uno::UNO_QUERY_THROW ); + rtl::OUString aName = xNamed->getName(); + return uno::makeAny( uno::Reference< word::XBookmark > ( new SwVbaBookmark( mxParent, m_xContext, mxModel, aName ) ) ); + } + +}; + +// Bookmarks use case-insensitive name lookup in MS Word. +typedef ::cppu::WeakImplHelper2< container::XNameAccess, container::XIndexAccess > BookmarkCollectionHelper_BASE; +class BookmarkCollectionHelper : public BookmarkCollectionHelper_BASE +{ +private: + uno::Reference< container::XNameAccess > mxNameAccess; + uno::Reference< container::XIndexAccess > mxIndexAccess; + uno::Any cachePos; +public: + BookmarkCollectionHelper( const uno::Reference< container::XIndexAccess >& xIndexAccess ) throw (uno::RuntimeException) : mxIndexAccess( xIndexAccess ) + { + mxNameAccess.set( mxIndexAccess, uno::UNO_QUERY_THROW ); + } + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) { return mxIndexAccess->getElementType(); } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) { return mxIndexAccess->hasElements(); } + // XNameAcess + virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasByName(aName) ) + throw container::NoSuchElementException(); + return cachePos; + } + virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) + { + return mxNameAccess->getElementNames(); + } + virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (uno::RuntimeException) + { + if( mxNameAccess->hasByName( aName ) ) + { + cachePos = mxNameAccess->getByName( aName ); + return sal_True; + } + else + { + for( sal_Int32 nIndex = 0; nIndex < mxIndexAccess->getCount(); nIndex++ ) + { + uno::Reference< container::XNamed > xNamed( mxIndexAccess->getByIndex( nIndex ), uno::UNO_QUERY_THROW ); + rtl::OUString aBookmarkName = xNamed->getName(); + if( aName.equalsIgnoreAsciiCase( aBookmarkName ) ) + { + cachePos <<= xNamed; + return sal_True; + } + } + } + return sal_False; + } + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return mxIndexAccess->getCount(); + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) + { + return mxIndexAccess->getByIndex( Index ); + } +}; + +SwVbaBookmarks::SwVbaBookmarks( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext, const uno::Reference< container::XIndexAccess >& xBookmarks, const uno::Reference< frame::XModel >& xModel ): SwVbaBookmarks_BASE( xParent, xContext, uno::Reference< container::XIndexAccess >( new BookmarkCollectionHelper( xBookmarks ) ) ), mxModel( xModel ) +{ + mxBookmarksSupplier.set( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextDocument > xDocument( mxModel, uno::UNO_QUERY_THROW ); + // use view cursor to insert bookmark, or it will fail if insert bookmark in table + // mxText = xDocument->getText(); + mxText = word::getXTextViewCursor( mxModel )->getText(); +} +// XEnumerationAccess +uno::Type +SwVbaBookmarks::getElementType() throw (uno::RuntimeException) +{ + return word::XBookmark::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaBookmarks::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return new BookmarksEnumeration( getParent(), mxContext,xEnumAccess->createEnumeration(), mxModel ); +} + +uno::Any +SwVbaBookmarks::createCollectionObject( const css::uno::Any& aSource ) +{ + uno::Reference< container::XNamed > xNamed( aSource, uno::UNO_QUERY_THROW ); + rtl::OUString aName = xNamed->getName(); + return uno::makeAny( uno::Reference< word::XBookmark > ( new SwVbaBookmark( getParent(), mxContext, mxModel, aName ) ) ); +} + +void SwVbaBookmarks::removeBookmarkByName( const rtl::OUString& rName ) throw (uno::RuntimeException) +{ + uno::Reference< text::XTextContent > xBookmark( m_xNameAccess->getByName( rName ), uno::UNO_QUERY_THROW ); + mxText->removeTextContent( xBookmark ); +} + +void SwVbaBookmarks::addBookmarkByName( const rtl::OUString& rName, const uno::Reference< text::XTextRange >& rTextRange ) throw (uno::RuntimeException) +{ + uno::Reference< lang::XMultiServiceFactory > xDocMSF( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextContent > xBookmark( xDocMSF->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Bookmark")) ), uno::UNO_QUERY_THROW ); + uno::Reference< container::XNamed > xNamed( xBookmark, uno::UNO_QUERY_THROW ); + xNamed->setName( rName ); + mxText->insertTextContent( rTextRange, xBookmark, sal_False ); +} + +uno::Any SAL_CALL +SwVbaBookmarks::Add( const rtl::OUString& rName, const uno::Any& rRange ) throw (uno::RuntimeException) +{ + uno::Reference< text::XTextRange > xTextRange; + uno::Reference< word::XRange > xRange; + if( rRange >>= xRange ) + { + SwVbaRange* pRange = dynamic_cast< SwVbaRange* >( xRange.get() ); + if( pRange ) + xTextRange = pRange->getXTextRange(); + } + else + { + // FIXME: insert the bookmark into current view cursor + xTextRange.set( word::getXTextViewCursor( mxModel ), uno::UNO_QUERY_THROW ); + } + + // remove the exist bookmark + // rtl::OUString aName = rName.toAsciiLowerCase(); + rtl::OUString aName = rName; + if( m_xNameAccess->hasByName( aName ) ) + removeBookmarkByName( aName ); + + addBookmarkByName( aName, xTextRange ); + + return uno::makeAny( uno::Reference< word::XBookmark >( new SwVbaBookmark( getParent(), mxContext, mxModel, aName ) ) ); +} + +sal_Int32 SAL_CALL +SwVbaBookmarks::getDefaultSorting() throw (css::uno::RuntimeException) +{ + return word::WdBookmarkSortBy::wdSortByName; +} + +void SAL_CALL +SwVbaBookmarks::setDefaultSorting( sal_Int32/* _type*/ ) throw (css::uno::RuntimeException) +{ + // not support in Writer +} + +sal_Bool SAL_CALL +SwVbaBookmarks::getShowHidden() throw (css::uno::RuntimeException) +{ + return sal_True; +} + +void SAL_CALL +SwVbaBookmarks::setShowHidden( sal_Bool /*_hidden*/ ) throw (css::uno::RuntimeException) +{ + // not support in Writer +} + +sal_Bool SAL_CALL +SwVbaBookmarks::Exists( const rtl::OUString& rName ) throw (css::uno::RuntimeException) +{ + sal_Bool bExist = m_xNameAccess->hasByName( rName ); + return bExist; +} + +rtl::OUString& +SwVbaBookmarks::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBookmarks") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaBookmarks::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Bookmarks") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbabookmarks.hxx b/sw/source/ui/vba/vbabookmarks.hxx new file mode 100644 index 000000000000..f9bbc18903be --- /dev/null +++ b/sw/source/ui/vba/vbabookmarks.hxx @@ -0,0 +1,78 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_BOOKMARKS_HXX +#define SW_VBA_BOOKMARKS_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XBookmarks.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XBookmarksSupplier.hpp> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XText.hpp> + +typedef CollTestImplHelper< ooo::vba::word::XBookmarks > SwVbaBookmarks_BASE; + +class SwVbaBookmarks : public SwVbaBookmarks_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::text::XBookmarksSupplier > mxBookmarksSupplier; + css::uno::Reference< css::text::XText > mxText; + +private: + void removeBookmarkByName( const rtl::OUString& rName ) throw (css::uno::RuntimeException); + void addBookmarkByName( const rtl::OUString& rName, const css::uno::Reference< css::text::XTextRange >& rTextRange ) throw (css::uno::RuntimeException); + +public: + SwVbaBookmarks( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::container::XIndexAccess >& xBookmarks, const css::uno::Reference< css::frame::XModel >& xModel ); + virtual ~SwVbaBookmarks() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaBookmarks_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); + + // XBookmarks + virtual sal_Int32 SAL_CALL getDefaultSorting() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDefaultSorting( sal_Int32 _type ) throw (css::uno::RuntimeException); + virtual sal_Bool SAL_CALL getShowHidden() throw (css::uno::RuntimeException); + virtual void SAL_CALL setShowHidden( sal_Bool _hidden ) throw (css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL Add( const rtl::OUString& rName, const css::uno::Any& rRange ) throw (css::uno::RuntimeException); + virtual sal_Bool SAL_CALL Exists( const rtl::OUString& rName ) throw (css::uno::RuntimeException); +}; + +#endif /* SW_VBA_BOOKMARKS_HXX */ diff --git a/sw/source/ui/vba/vbaborders.cxx b/sw/source/ui/vba/vbaborders.cxx new file mode 100644 index 000000000000..e02c64b3284e --- /dev/null +++ b/sw/source/ui/vba/vbaborders.cxx @@ -0,0 +1,381 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaborders.cxx,v $ + * $Revision: 1.6 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaborders.hxx" +#include <ooo/vba/word/XBorder.hpp> +#include <ooo/vba/word/WdBorderType.hpp> +#include <ooo/vba/word/WdLineStyle.hpp> +#include <cppuhelper/implbase3.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/table/TableBorder.hpp> +#include <com/sun/star/table/ShadowFormat.hpp> +#include <com/sun/star/table/ShadowLocation.hpp> +#include "vbapalette.hxx" + +using namespace ::com::sun::star; +using namespace ::ooo::vba; + + +typedef ::cppu::WeakImplHelper1<container::XIndexAccess > RangeBorders_Base; +typedef InheritedHelperInterfaceImpl1<word::XBorder > SwVbaBorder_Base; + +// #TODO sort these indexes to match the order in which Word iterates over the +// borders, the enumeration will match the order in this list +static const sal_Int16 supportedIndexTable[] = { word::WdBorderType::wdBorderBottom, word::WdBorderType::wdBorderDiagonalDown, word::WdBorderType::wdBorderDiagonalUp, word::WdBorderType::wdBorderHorizontal, word::WdBorderType::wdBorderLeft, word::WdBorderType::wdBorderRight, word::WdBorderType::wdBorderTop, word::WdBorderType::wdBorderVertical }; + +const static rtl::OUString sTableBorder( RTL_CONSTASCII_USTRINGPARAM("TableBorder") ); + +// Equiv widths in in 1/100 mm +const static sal_Int32 OOLineThin = 35; +const static sal_Int32 OOLineMedium = 88; +const static sal_Int32 OOLineThick = 141; +const static sal_Int32 OOLineHairline = 2; + +class SwVbaBorder : public SwVbaBorder_Base +{ +private: + uno::Reference< beans::XPropertySet > m_xProps; + sal_Int32 m_LineType; + VbaPalette m_Palette; + bool setBorderLine( table::BorderLine& rBorderLine ) + { + table::TableBorder aTableBorder; + m_xProps->getPropertyValue( sTableBorder ) >>= aTableBorder; + + switch ( m_LineType ) + { + case word::WdBorderType::wdBorderLeft: + aTableBorder.IsLeftLineValid = sal_True; + aTableBorder.LeftLine= rBorderLine; + break; + case word::WdBorderType::wdBorderTop: + aTableBorder.IsTopLineValid = sal_True; + aTableBorder.TopLine = rBorderLine; + break; + + case word::WdBorderType::wdBorderBottom: + aTableBorder.IsBottomLineValid = sal_True; + aTableBorder.BottomLine = rBorderLine; + break; + case word::WdBorderType::wdBorderRight: + aTableBorder.IsRightLineValid = sal_True; + aTableBorder.RightLine = rBorderLine; + break; + case word::WdBorderType::wdBorderVertical: + aTableBorder.IsVerticalLineValid = sal_True; + aTableBorder.VerticalLine = rBorderLine; + break; + case word::WdBorderType::wdBorderHorizontal: + aTableBorder.IsHorizontalLineValid = sal_True; + aTableBorder.HorizontalLine = rBorderLine; + break; + case word::WdBorderType::wdBorderDiagonalDown: + case word::WdBorderType::wdBorderDiagonalUp: + // #TODO have to ignore at the momement, would be + // nice to investigate what we can do here + break; + default: + return false; + } + m_xProps->setPropertyValue( sTableBorder, uno::makeAny(aTableBorder) ); + return true; + } + + bool getBorderLine( table::BorderLine& rBorderLine ) + { + table::TableBorder aTableBorder; + m_xProps->getPropertyValue( sTableBorder ) >>= aTableBorder; + switch ( m_LineType ) + { + case word::WdBorderType::wdBorderLeft: + if ( aTableBorder.IsLeftLineValid ) + rBorderLine = aTableBorder.LeftLine; + break; + case word::WdBorderType::wdBorderTop: + if ( aTableBorder.IsTopLineValid ) + rBorderLine = aTableBorder.TopLine; + break; + case word::WdBorderType::wdBorderBottom: + if ( aTableBorder.IsBottomLineValid ) + rBorderLine = aTableBorder.BottomLine; + break; + case word::WdBorderType::wdBorderRight: + if ( aTableBorder.IsRightLineValid ) + rBorderLine = aTableBorder.RightLine; + break; + case word::WdBorderType::wdBorderVertical: + if ( aTableBorder.IsVerticalLineValid ) + rBorderLine = aTableBorder.VerticalLine; + break; + case word::WdBorderType::wdBorderHorizontal: + if ( aTableBorder.IsHorizontalLineValid ) + rBorderLine = aTableBorder.HorizontalLine; + break; + + case word::WdBorderType::wdBorderDiagonalDown: + case word::WdBorderType::wdBorderDiagonalUp: + // #TODO have to ignore at the momement, would be + // nice to investigate what we can do here + break; + default: + return false; + } + return true; + } + SwVbaBorder(); // no impl +protected: + virtual rtl::OUString& getServiceImplName() + { + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBorder") ); + return sImplName; + } + virtual css::uno::Sequence<rtl::OUString> getServiceNames() + { + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Border" ) ); + } + return aServiceNames; + } +public: + SwVbaBorder( const uno::Reference< beans::XPropertySet > & xProps, const uno::Reference< uno::XComponentContext >& xContext, sal_Int32 lineType, VbaPalette& rPalette) : SwVbaBorder_Base( uno::Reference< XHelperInterface >( xProps, uno::UNO_QUERY ), xContext ), m_xProps( xProps ), m_LineType( lineType ), m_Palette( rPalette ) {} + + uno::Any SAL_CALL getLineStyle() throw (uno::RuntimeException) + { + sal_Int32 nLineStyle = word::WdLineStyle::wdLineStyleNone; + table::BorderLine aBorderLine; + if ( getBorderLine( aBorderLine ) ) + { + if( aBorderLine.InnerLineWidth !=0 && aBorderLine.OuterLineWidth !=0 ) + { + nLineStyle = word::WdLineStyle::wdLineStyleDouble; + } + else if( aBorderLine.InnerLineWidth !=0 || aBorderLine.OuterLineWidth !=0 ) + { + nLineStyle = word::WdLineStyle::wdLineStyleSingle; + } + else + { + nLineStyle = word::WdLineStyle::wdLineStyleNone; + } + } + return uno::makeAny( nLineStyle ); + } + void SAL_CALL setLineStyle( const uno::Any& _linestyle ) throw (uno::RuntimeException) + { + // Urk no choice but to silently ignore we don't support this attribute + // #TODO would be nice to support the word line styles + sal_Int32 nLineStyle = 0; + _linestyle >>= nLineStyle; + table::BorderLine aBorderLine; + if ( getBorderLine( aBorderLine ) ) + { + switch ( nLineStyle ) + { + case word::WdLineStyle::wdLineStyleNone: + { + aBorderLine.InnerLineWidth = 0; + aBorderLine.OuterLineWidth = 0; + break; + } + case word::WdLineStyle::wdLineStyleDashDot: + case word::WdLineStyle::wdLineStyleDashDotDot: + case word::WdLineStyle::wdLineStyleDashDotStroked: + case word::WdLineStyle::wdLineStyleDashLargeGap: + case word::WdLineStyle::wdLineStyleDashSmallGap: + case word::WdLineStyle::wdLineStyleDot: + case word::WdLineStyle::wdLineStyleDouble: + case word::WdLineStyle::wdLineStyleDoubleWavy: + case word::WdLineStyle::wdLineStyleEmboss3D: + case word::WdLineStyle::wdLineStyleEngrave3D: + case word::WdLineStyle::wdLineStyleInset: + case word::WdLineStyle::wdLineStyleOutset: + case word::WdLineStyle::wdLineStyleSingle: + case word::WdLineStyle::wdLineStyleSingleWavy: + case word::WdLineStyle::wdLineStyleThickThinLargeGap: + case word::WdLineStyle::wdLineStyleThickThinMedGap: + case word::WdLineStyle::wdLineStyleThickThinSmallGap: + case word::WdLineStyle::wdLineStyleThinThickLargeGap: + case word::WdLineStyle::wdLineStyleThinThickMedGap: + case word::WdLineStyle::wdLineStyleThinThickSmallGap: + case word::WdLineStyle::wdLineStyleThinThickThinLargeGap: + case word::WdLineStyle::wdLineStyleThinThickThinMedGap: + case word::WdLineStyle::wdLineStyleThinThickThinSmallGap: + case word::WdLineStyle::wdLineStyleTriple: + { + aBorderLine.InnerLineWidth = 0; + aBorderLine.OuterLineWidth = OOLineHairline; + break; + } + default: + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Bad param" ) ), uno::Reference< uno::XInterface >() ); + } + setBorderLine( aBorderLine ); + } + else + throw uno::RuntimeException( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Method failed" ) ), uno::Reference< uno::XInterface >() ); + } +}; + +class RangeBorders : public RangeBorders_Base +{ +private: + uno::Reference< table::XCellRange > m_xRange; + uno::Reference< uno::XComponentContext > m_xContext; + VbaPalette m_Palette; + sal_Int32 getTableIndex( sal_Int32 nConst ) + { + // hokay return position of the index in the table + sal_Int32 nIndexes = getCount(); + sal_Int32 realIndex = 0; + const sal_Int16* pTableEntry = supportedIndexTable; + for ( ; realIndex < nIndexes; ++realIndex, ++pTableEntry ) + { + if ( *pTableEntry == nConst ) + return realIndex; + } + return getCount(); // error condition + } +public: + RangeBorders( const uno::Reference< table::XCellRange >& xRange, const uno::Reference< uno::XComponentContext > & xContext, VbaPalette& rPalette ) : m_xRange( xRange ), m_xContext( xContext ), m_Palette( rPalette ) + { + } + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return sizeof( supportedIndexTable ) / sizeof( supportedIndexTable[0] ); + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) + { + + sal_Int32 nIndex = getTableIndex( Index ); + if ( nIndex >= 0 && nIndex < getCount() ) + { + uno::Reference< beans::XPropertySet > xProps( m_xRange, uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XBorder >( new SwVbaBorder( xProps, m_xContext, supportedIndexTable[ nIndex ], m_Palette )) ); + } + throw lang::IndexOutOfBoundsException(); + } + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) + { + return word::XBorder::static_type(0); + } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + return sal_True; + } +}; + +uno::Reference< container::XIndexAccess > +rangeToBorderIndexAccess( const uno::Reference< table::XCellRange >& xRange, const uno::Reference< uno::XComponentContext > & xContext, VbaPalette& rPalette ) +{ + return new RangeBorders( xRange, xContext, rPalette ); +} + +class RangeBorderEnumWrapper : public EnumerationHelper_BASE +{ + uno::Reference<container::XIndexAccess > m_xIndexAccess; + sal_Int32 nIndex; +public: + RangeBorderEnumWrapper( const uno::Reference< container::XIndexAccess >& xIndexAccess ) : m_xIndexAccess( xIndexAccess ), nIndex( 0 ) {} + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return ( nIndex < m_xIndexAccess->getCount() ); + } + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( nIndex < m_xIndexAccess->getCount() ) + return m_xIndexAccess->getByIndex( nIndex++ ); + throw container::NoSuchElementException(); + } +}; + +// for Table borders +SwVbaBorders::SwVbaBorders( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< table::XCellRange >& xRange, VbaPalette& rPalette ): SwVbaBorders_BASE( xParent, xContext, rangeToBorderIndexAccess( xRange ,xContext, rPalette ) ) +{ + m_xProps.set( xRange, uno::UNO_QUERY_THROW ); +} + +uno::Reference< container::XEnumeration > +SwVbaBorders::createEnumeration() throw (uno::RuntimeException) +{ + return new RangeBorderEnumWrapper( m_xIndexAccess ); +} + +uno::Any +SwVbaBorders::createCollectionObject( const css::uno::Any& aSource ) +{ + return aSource; // its already a Border object +} + +uno::Type +SwVbaBorders::getElementType() throw (uno::RuntimeException) +{ + return word::XBorders::static_type(0); +} + +uno::Any +SwVbaBorders::getItemByIntIndex( const sal_Int32 nIndex ) throw (uno::RuntimeException) +{ + return createCollectionObject( m_xIndexAccess->getByIndex( nIndex ) ); +} + +sal_Bool SAL_CALL SwVbaBorders::getShadow() throw (uno::RuntimeException) +{ + table::ShadowFormat aShadowFormat; + m_xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShadowFormat") ) ) >>= aShadowFormat; + return ( aShadowFormat.Location != table::ShadowLocation_NONE ); +} + +void SAL_CALL SwVbaBorders::setShadow( sal_Bool /*_shadow*/ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +rtl::OUString& +SwVbaBorders::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBorders") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaBorders::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Borders" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbaborders.hxx b/sw/source/ui/vba/vbaborders.hxx new file mode 100644 index 000000000000..a9915574199e --- /dev/null +++ b/sw/source/ui/vba/vbaborders.hxx @@ -0,0 +1,66 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaborders.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_BORDERS_HXX +#define SW_VBA_BORDERS_HXX + +#include <cppuhelper/implbase1.hxx> +#include <ooo/vba/word/XBorders.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/table/XCellRange.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <vbahelper/vbacollectionimpl.hxx> + +typedef CollTestImplHelper< ov::word::XBorders > SwVbaBorders_BASE; +class VbaPalette; +class SwVbaBorders : public SwVbaBorders_BASE +{ + // XEnumerationAccess + virtual css::uno::Any getItemByIntIndex( const sal_Int32 nIndex ) throw (css::uno::RuntimeException); + css::uno::Reference< css::beans::XPropertySet > m_xProps; +public: + SwVbaBorders( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::table::XCellRange >& xRange, VbaPalette& rPalette ); + virtual ~SwVbaBorders() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaCollectionBaseImpl + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + + virtual sal_Bool SAL_CALL getShadow() throw (css::uno::RuntimeException); + virtual void SAL_CALL setShadow( sal_Bool _shadow ) throw (css::uno::RuntimeException); + + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif //SW_VBA_BORDERS_HXX + diff --git a/sw/source/ui/vba/vbadialog.cxx b/sw/source/ui/vba/vbadialog.cxx new file mode 100644 index 000000000000..4e54b7abaef7 --- /dev/null +++ b/sw/source/ui/vba/vbadialog.cxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadialog.cxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbadialog.hxx" +#include <ooo/vba/word/WdWordDialog.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +struct WordDialogTable +{ + sal_Int32 wdDialog; + const sal_Char* ooDialog; +}; + +static const WordDialogTable aWordDialogTable[] = +{ + { word::WdWordDialog::wdDialogFileNew, ".uno:NewDoc" }, + { word::WdWordDialog::wdDialogFileOpen, ".uno:Open" }, + { word::WdWordDialog::wdDialogFilePrint, ".uno:Print" }, + { word::WdWordDialog::wdDialogFileSaveAs, ".uno:SaveAs" }, + { 0, 0 } +}; + +rtl::OUString +SwVbaDialog::mapIndexToName( sal_Int32 nIndex ) +{ + for( const WordDialogTable* pTable = aWordDialogTable; pTable != NULL; pTable++ ) + { + if( nIndex == pTable->wdDialog ) + { + return rtl::OUString::createFromAscii( pTable->ooDialog ); + } + } + return rtl::OUString(); +} + +rtl::OUString& +SwVbaDialog::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaDialog") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaDialog::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Dialog" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbadialog.hxx b/sw/source/ui/vba/vbadialog.hxx new file mode 100644 index 000000000000..9a9f68d45bb2 --- /dev/null +++ b/sw/source/ui/vba/vbadialog.hxx @@ -0,0 +1,53 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadialog.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_DIALOG_HXX +#define SW_VBA_DIALOG_HXX + +#include <cppuhelper/implbase1.hxx> +#include <ooo/vba/word/XDialog.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbadialogbase.hxx> + +typedef cppu::ImplInheritanceHelper1< VbaDialogBase, ov::word::XDialog > SwVbaDialog_BASE; + +class SwVbaDialog : public SwVbaDialog_BASE +{ +public: + SwVbaDialog( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > xContext, const css::uno::Reference< css::frame::XModel >& xModel, sal_Int32 nIndex ):SwVbaDialog_BASE( xParent, xContext, xModel, nIndex ) {} + virtual ~SwVbaDialog() {} + + // Methods + virtual rtl::OUString mapIndexToName( sal_Int32 nIndex ); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_DIALOG_HXX */ diff --git a/sw/source/ui/vba/vbadialogs.cxx b/sw/source/ui/vba/vbadialogs.cxx new file mode 100644 index 000000000000..45ca6a7cb650 --- /dev/null +++ b/sw/source/ui/vba/vbadialogs.cxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadialogs.cxx,v $ + * $Revision: 1.5 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <ooo/vba/word/XDialog.hpp> +#include "vbadialogs.hxx" +#include "vbadialog.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +uno::Any +SwVbaDialogs::Item( const uno::Any &aItem ) throw (uno::RuntimeException) +{ + sal_Int32 nIndex = 0; + aItem >>= nIndex; + uno::Reference< word::XDialog > aDialog( new SwVbaDialog( uno::Reference< XHelperInterface >( Application(),uno::UNO_QUERY_THROW ), mxContext, m_xModel, nIndex ) ); + return uno::Any( aDialog ); +} + +rtl::OUString& +SwVbaDialogs::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaDialogs") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaDialogs::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Dialogs" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbadialogs.hxx b/sw/source/ui/vba/vbadialogs.hxx new file mode 100644 index 000000000000..c99ba1e7164e --- /dev/null +++ b/sw/source/ui/vba/vbadialogs.hxx @@ -0,0 +1,56 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadialogs.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_DIALOGS_HXX +#define SW_VBA_DIALOGS_HXX + +#include <com/sun/star/uno/XComponentContext.hpp> +#include <ooo/vba/word/XDialogs.hpp> +#include <ooo/vba/XCollection.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbadialogsbase.hxx> +#include <cppuhelper/implbase1.hxx> + +typedef cppu::ImplInheritanceHelper1< VbaDialogsBase, ov::word::XDialogs > SwVbaDialogs_BASE; + +class SwVbaDialogs : public SwVbaDialogs_BASE +{ +public: + SwVbaDialogs( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > &xContext, const css::uno::Reference< css::frame::XModel >& xModel ): SwVbaDialogs_BASE( xParent, xContext, xModel ) {} + virtual ~SwVbaDialogs() {} + + // XCollection + virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_DIALOGS_HXX */ diff --git a/sw/source/ui/vba/vbadocument.cxx b/sw/source/ui/vba/vbadocument.cxx new file mode 100644 index 000000000000..f118277b3cd0 --- /dev/null +++ b/sw/source/ui/vba/vbadocument.cxx @@ -0,0 +1,384 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadocument.cxx,v $ + * $Revision: 1.7 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbadocument.hxx" +#include "vbarange.hxx" +#include "vbarangehelper.hxx" +#include "vbadocumentproperties.hxx" +#include "vbabookmarks.hxx" +#include "vbavariables.hxx" +#include <com/sun/star/text/XBookmarksSupplier.hpp> +#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> +#include <com/sun/star/document/XDocumentInfoSupplier.hpp> +#include <com/sun/star/document/XDocumentProperties.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/drawing/XControlShape.hpp> +#include <com/sun/star/drawing/XControlShape.hpp> +#include <com/sun/star/form/XFormsSupplier.hpp> +#include <ooo/vba/XControlProvider.hpp> + +#include <vbahelper/helperdecl.hxx> +#include <wordvbahelper.hxx> +#include <docsh.hxx> +#include "vbatemplate.hxx" +#include "vbaparagraph.hxx" +#include "vbastyles.hxx" +#include "vbatables.hxx" +#include "vbafield.hxx" +#include "vbapagesetup.hxx" +#include "vbasections.hxx" +#include <vbahelper/vbashapes.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaDocument::SwVbaDocument( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, uno::Reference< frame::XModel > xModel ): SwVbaDocument_BASE( xParent, xContext, xModel ) +{ + Initialize(); +} +SwVbaDocument::SwVbaDocument( uno::Sequence< uno::Any > const& aArgs, uno::Reference< uno::XComponentContext >const& xContext ) : SwVbaDocument_BASE( aArgs, xContext ) +{ + Initialize(); +} + +SwVbaDocument::~SwVbaDocument() +{ +} + +void SwVbaDocument::Initialize() +{ + mxTextDocument.set( getModel(), uno::UNO_QUERY_THROW ); +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaDocument::getContent() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xStart = mxTextDocument->getText()->getStart(); + uno::Reference< text::XTextRange > xEnd; + return uno::Reference< word::XRange >( new SwVbaRange( this, mxContext, mxTextDocument, xStart, xEnd, sal_True ) ); +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaDocument::Range( const uno::Any& rStart, const uno::Any& rEnd ) throw ( uno::RuntimeException ) +{ + if( !rStart.hasValue() && !rEnd.hasValue() ) + return getContent(); + + sal_Int32 nStart = 0; + sal_Int32 nEnd = 0; + rStart >>= nStart; + rEnd >>= nEnd; + nStart--; + nEnd--; + + uno::Reference< text::XTextRange > xStart; + uno::Reference< text::XTextRange > xEnd; + if( nStart != -1 || nEnd != -1 ) + { + if( nStart == -1 ) + xStart = mxTextDocument->getText()->getStart(); + else + xStart = SwVbaRangeHelper::getRangeByPosition( mxTextDocument->getText(), nStart ); + + if( nEnd == -1 ) + xEnd = mxTextDocument->getText()->getEnd(); + else + xEnd = SwVbaRangeHelper::getRangeByPosition( mxTextDocument->getText(), nEnd ); + } + + if( !xStart.is() && !xEnd.is() ) + { + try + { + // FIXME + xStart = mxTextDocument->getText()->getStart(); + xEnd = mxTextDocument->getText()->getEnd(); + } + catch( uno::Exception ) + { + DebugHelper::exception(SbERR_METHOD_FAILED, rtl::OUString()); + } + } + return uno::Reference< word::XRange >( new SwVbaRange( this, mxContext, mxTextDocument, xStart, xEnd ) ); +} + +uno::Any SAL_CALL +SwVbaDocument::BuiltInDocumentProperties( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaBuiltinDocumentProperties( mxParent, mxContext, getModel() ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::CustomDocumentProperties( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaCustomDocumentProperties( mxParent, mxContext, getModel() ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::Bookmarks( const uno::Any& rIndex ) throw ( uno::RuntimeException ) +{ + uno::Reference< text::XBookmarksSupplier > xBookmarksSupplier( getModel(),uno::UNO_QUERY_THROW ); + uno::Reference<container::XIndexAccess > xBookmarks( xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY_THROW ); + uno::Reference< XCollection > xBookmarksVba( new SwVbaBookmarks( this, mxContext, xBookmarks, getModel() ) ); + if ( rIndex.getValueTypeClass() == uno::TypeClass_VOID ) + return uno::makeAny( xBookmarksVba ); + + return uno::Any( xBookmarksVba->Item( rIndex, uno::Any() ) ); +} + +uno::Any SAL_CALL +SwVbaDocument::Variables( const uno::Any& rIndex ) throw ( uno::RuntimeException ) +{ + uno::Reference< document::XDocumentPropertiesSupplier > xDocumentPropertiesSupplier( getModel(),uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentProperties > xDocumentProperties = xDocumentPropertiesSupplier->getDocumentProperties(); + uno::Reference< beans::XPropertyAccess > xUserDefined( xDocumentProperties->getUserDefinedProperties(), uno::UNO_QUERY_THROW ); + + uno::Reference< XCollection > xVariables( new SwVbaVariables( this, mxContext, xUserDefined ) ); + if ( rIndex.getValueTypeClass() == uno::TypeClass_VOID ) + return uno::makeAny( xVariables ); + + return uno::Any( xVariables->Item( rIndex, uno::Any() ) ); +} + +uno::Any SAL_CALL +SwVbaDocument::Paragraphs( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaParagraphs( mxParent, mxContext, mxTextDocument ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::Styles( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaStyles( mxParent, mxContext, getModel() ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::Fields( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaFields( mxParent, mxContext, getModel() ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::Shapes( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( getModel(), uno::UNO_QUERY_THROW ); + //uno::Reference< drawing::XShapes > xShapes( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xIndexAccess( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + uno::Reference< frame::XModel > xModel( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< XCollection > xCol( new ScVbaShapes( this, mxContext, xIndexAccess, xModel ) ); + + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::Sections( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaSections( mxParent, mxContext, getModel() ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Any SAL_CALL +SwVbaDocument::PageSetup( ) throw (uno::RuntimeException) +{ + uno::Reference< beans::XPropertySet > xPageProps( word::getCurrentPageStyle( mxModel ), uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XPageSetup >( new SwVbaPageSetup( this, mxContext, mxModel, xPageProps ) ) ); +} + +rtl::OUString& +SwVbaDocument::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaDocument") ); + return sImplName; +} +uno::Any SAL_CALL +SwVbaDocument::getAttachedTemplate() throw (uno::RuntimeException) +{ + uno::Reference< word::XTemplate > xTemplate; + uno::Reference< document::XDocumentInfoSupplier > xDocInfoSupp( getModel(), uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentPropertiesSupplier > xDocPropSupp( xDocInfoSupp->getDocumentInfo(), uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentProperties > xDocProps( xDocPropSupp->getDocumentProperties(), uno::UNO_QUERY_THROW ); + rtl::OUString sTemplateName = xDocProps->getTemplateName(); + + xTemplate = new SwVbaTemplate( this, mxContext, getModel(), sTemplateName ); + return uno::makeAny( xTemplate ); +} + +void SAL_CALL +SwVbaDocument::setAttachedTemplate( const css::uno::Any& /*_attachedtemplate*/ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException(); +} + +uno::Any SAL_CALL +SwVbaDocument::Tables( const css::uno::Any& aIndex ) throw (uno::RuntimeException) +{ + uno::Reference< frame::XModel > xModel( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< XCollection > xColl( new SwVbaTables( mxParent, mxContext, xModel ) ); + + if ( aIndex.hasValue() ) + return xColl->Item( aIndex, uno::Any() ); + return uno::makeAny( xColl ); +} + +void SAL_CALL SwVbaDocument::Activate() throw (uno::RuntimeException) +{ + VbaDocumentBase::Activate(); +} + +uno::Any +SwVbaDocument::getControlShape( const ::rtl::OUString& sName ) +{ + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xIndexAccess( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + + sal_Int32 nCount = xIndexAccess->getCount(); + for( int index = 0; index < nCount; index++ ) + { + uno::Any aUnoObj = xIndexAccess->getByIndex( index ); + // It seems there are some drawing objects that can not query into Control shapes? + uno::Reference< drawing::XControlShape > xControlShape( aUnoObj, uno::UNO_QUERY ); + if( xControlShape.is() ) + { + uno::Reference< container::XNamed > xNamed( xControlShape->getControl(), uno::UNO_QUERY_THROW ); + if( sName.equals( xNamed->getName() )) + { + return aUnoObj; + } + } + } + return uno::Any(); +} + +uno::Reference< beans::XIntrospectionAccess > SAL_CALL +SwVbaDocument::getIntrospection( ) throw (uno::RuntimeException) +{ + return uno::Reference< beans::XIntrospectionAccess >(); +} + +uno::Any SAL_CALL +SwVbaDocument::invoke( const ::rtl::OUString& aFunctionName, const uno::Sequence< uno::Any >& /*aParams*/, uno::Sequence< ::sal_Int16 >& /*aOutParamIndex*/, uno::Sequence< uno::Any >& /*aOutParam*/ ) throw (lang::IllegalArgumentException, script::CannotConvertException, reflection::InvocationTargetException, uno::RuntimeException) +{ + OSL_TRACE("** SwVbaDocument::invoke( %s ), will barf", + rtl::OUStringToOString( aFunctionName, RTL_TEXTENCODING_UTF8 ).getStr() ); + + throw uno::RuntimeException(); // unsupported operation +} + +void SAL_CALL +SwVbaDocument::setValue( const ::rtl::OUString& /*aPropertyName*/, const uno::Any& /*aValue*/ ) throw (beans::UnknownPropertyException, script::CannotConvertException, reflection::InvocationTargetException, uno::RuntimeException) +{ + throw uno::RuntimeException(); // unsupported operation +} +uno::Any SAL_CALL +SwVbaDocument::getValue( const ::rtl::OUString& aPropertyName ) throw (beans::UnknownPropertyException, uno::RuntimeException) +{ + uno::Reference< drawing::XControlShape > xControlShape( getControlShape( aPropertyName ), uno::UNO_QUERY_THROW ); + + uno::Reference<lang::XMultiComponentFactory > xServiceManager( mxContext->getServiceManager(), uno::UNO_QUERY_THROW ); + uno::Reference< XControlProvider > xControlProvider( xServiceManager->createInstanceWithContext( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.ControlProvider" ) ), mxContext ), uno::UNO_QUERY_THROW ); + uno::Reference< msforms::XControl > xControl( xControlProvider->createControl( xControlShape, getModel() ) ); + return uno::makeAny( xControl ); +} + +::sal_Bool SAL_CALL +SwVbaDocument::hasMethod( const ::rtl::OUString& /*aName*/ ) throw (uno::RuntimeException) +{ + return sal_False; +} + +::sal_Bool SAL_CALL +SwVbaDocument::hasProperty( const ::rtl::OUString& aName ) throw (uno::RuntimeException) +{ + uno::Reference< container::XNameAccess > xFormControls( getFormControls() ); + if ( xFormControls.is() ) + return xFormControls->hasByName( aName ); + return sal_False; +} + +uno::Reference< container::XNameAccess > +SwVbaDocument::getFormControls() +{ + uno::Reference< container::XNameAccess > xFormControls; + try + { + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< form::XFormsSupplier > xFormSupplier( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xIndexAccess( xFormSupplier->getForms(), uno::UNO_QUERY_THROW ); + // get the www-standard container ( maybe we should access the + // 'www-standard' by name rather than index, this seems an + // implementation detail + xFormControls.set( xIndexAccess->getByIndex(0), uno::UNO_QUERY_THROW ); + } + catch( uno::Exception& ) + { + } + return xFormControls; +} + +uno::Sequence< rtl::OUString > +SwVbaDocument::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Document" ) ); + } + return aServiceNames; +} + +namespace document +{ +namespace sdecl = comphelper::service_decl; +sdecl::vba_service_class_<SwVbaDocument, sdecl::with_args<true> > serviceImpl; +extern sdecl::ServiceDecl const serviceDecl( + serviceImpl, + "SwVbaDocument", + "ooo.vba.word.Document" ); +} + diff --git a/sw/source/ui/vba/vbadocument.hxx b/sw/source/ui/vba/vbadocument.hxx new file mode 100644 index 000000000000..29ab5761878e --- /dev/null +++ b/sw/source/ui/vba/vbadocument.hxx @@ -0,0 +1,83 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadocument.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_DOCUMENT_HXX +#define SW_VBA_DOCUMENT_HXX + +#include <ooo/vba/word/XDocument.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbadocumentbase.hxx> +#include <com/sun/star/text/XTextDocument.hpp> + +typedef cppu::ImplInheritanceHelper1< VbaDocumentBase, ooo::vba::word::XDocument > SwVbaDocument_BASE; + +class SwVbaDocument : public SwVbaDocument_BASE +{ +private: + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + + void Initialize(); + css::uno::Any getControlShape( const rtl::OUString& sName ); + css::uno::Reference< css::container::XNameAccess > getFormControls(); + +public: + SwVbaDocument( const css::uno::Reference< ooo::vba::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& m_xContext, css::uno::Reference< css::frame::XModel > xModel ); + SwVbaDocument( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& xContext ); + virtual ~SwVbaDocument(); + + // XDocument + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL getContent() throw ( css::uno::RuntimeException ); + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL Range( const css::uno::Any& rStart, const css::uno::Any& rEnd ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL BuiltInDocumentProperties( const css::uno::Any& index ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL CustomDocumentProperties( const css::uno::Any& index ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Bookmarks( const css::uno::Any& rIndex ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL Variables( const css::uno::Any& rIndex ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL getAttachedTemplate() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAttachedTemplate( const css::uno::Any& _attachedtemplate ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Paragraphs( const css::uno::Any& rIndex ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL Styles( const css::uno::Any& rIndex ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL Tables( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Fields( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Shapes( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Sections( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Activate() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL PageSetup() throw (css::uno::RuntimeException); + // XInvocation + virtual css::uno::Reference< css::beans::XIntrospectionAccess > SAL_CALL getIntrospection( ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL invoke( const ::rtl::OUString& aFunctionName, const css::uno::Sequence< css::uno::Any >& aParams, css::uno::Sequence< ::sal_Int16 >& aOutParamIndex, css::uno::Sequence< css::uno::Any >& aOutParam ) throw (css::lang::IllegalArgumentException, css::script::CannotConvertException, css::reflection::InvocationTargetException, css::uno::RuntimeException); + virtual void SAL_CALL setValue( const ::rtl::OUString& aPropertyName, const css::uno::Any& aValue ) throw (css::beans::UnknownPropertyException, css::script::CannotConvertException, css::reflection::InvocationTargetException, css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getValue( const ::rtl::OUString& aPropertyName ) throw (css::beans::UnknownPropertyException, css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL hasMethod( const ::rtl::OUString& aName ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL hasProperty( const ::rtl::OUString& aName ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_DOCUMENT_HXX */ diff --git a/sw/source/ui/vba/vbadocumentproperties.cxx b/sw/source/ui/vba/vbadocumentproperties.cxx new file mode 100644 index 000000000000..ecdad357aacd --- /dev/null +++ b/sw/source/ui/vba/vbadocumentproperties.cxx @@ -0,0 +1,767 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadocument.cxx,v $ + * $Revision: 1.7 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbadocumentproperties.hxx" +#include <cppuhelper/implbase1.hxx> +#include <cppuhelper/implbase3.hxx> +#include <com/sun/star/document/XDocumentInfoSupplier.hpp> +#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> +#include <com/sun/star/beans/NamedValue.hpp> +#include <com/sun/star/beans/XPropertyContainer.hpp> +#include <ooo/vba/word/WdBuiltInProperty.hpp> +#include <ooo/vba/office/MsoDocProperties.hpp> +#include <memory> +#include <boost/shared_ptr.hpp> +#include "wordvbahelper.hxx" +#include "fesh.hxx" +#include "docsh.hxx" +using namespace ::ooo::vba; +using namespace css; + +sal_Int8 lcl_toMSOPropType( const uno::Type& aType ) throw ( lang::IllegalArgumentException ) +{ + sal_Int16 msoType = office::MsoDocProperties::msoPropertyTypeString; + + switch ( aType.getTypeClass() ) + { + case uno::TypeClass_BOOLEAN: + msoType = office::MsoDocProperties::msoPropertyTypeBoolean; + break; + case uno::TypeClass_FLOAT: + msoType = office::MsoDocProperties::msoPropertyTypeFloat; + break; + case uno::TypeClass_STRUCT: // Assume date + msoType = office::MsoDocProperties::msoPropertyTypeDate; + break; + case uno::TypeClass_BYTE: + case uno::TypeClass_SHORT: + case uno::TypeClass_LONG: + case uno::TypeClass_HYPER: + msoType = office::MsoDocProperties::msoPropertyTypeNumber; + break; + default: + throw lang::IllegalArgumentException(); + } + return msoType; +} + +class PropertGetSetHelper +{ +protected: + uno::Reference< frame::XModel > m_xModel; + uno::Reference< beans::XPropertySet > mxProps; +public: + PropertGetSetHelper( const uno::Reference< frame::XModel >& xModel ):m_xModel( xModel ) + { + uno::Reference< document::XDocumentInfoSupplier > xDocInfoSupp( m_xModel, uno::UNO_QUERY_THROW ); + mxProps.set( xDocInfoSupp->getDocumentInfo(), uno::UNO_QUERY_THROW ); + } + virtual ~PropertGetSetHelper() {} + virtual uno::Any getPropertyValue( const rtl::OUString& rPropName ) = 0; + virtual void setPropertyValue( const rtl::OUString& rPropName, const uno::Any& aValue ) = 0; + virtual uno::Reference< beans::XPropertySet > getUnoProperties() { return mxProps; } + +}; + +class BuiltinPropertyGetSetHelper : public PropertGetSetHelper +{ +public: + BuiltinPropertyGetSetHelper( const uno::Reference< frame::XModel >& xModel ) :PropertGetSetHelper( xModel ) + { + } + virtual uno::Any getPropertyValue( const rtl::OUString& rPropName ) + { + if ( rPropName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("EditingDuration" ) ) ) ) + { + sal_Int32 nSecs = 0; + mxProps->getPropertyValue( rPropName ) >>= nSecs; + return uno::makeAny( nSecs/60 ); // minutes + } + return mxProps->getPropertyValue( rPropName ); + } + virtual void setPropertyValue( const rtl::OUString& rPropName, const uno::Any& aValue ) + { + mxProps->setPropertyValue( rPropName, aValue ); + } +}; + +class CustomPropertyGetSetHelper : public BuiltinPropertyGetSetHelper +{ +public: + CustomPropertyGetSetHelper( const uno::Reference< frame::XModel >& xModel ) :BuiltinPropertyGetSetHelper( xModel ) + { + uno::Reference< document::XDocumentPropertiesSupplier > xDocPropSupp( mxProps, uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentProperties > xDocProp( xDocPropSupp->getDocumentProperties(), uno::UNO_QUERY_THROW ); + mxProps.set( xDocProp->getUserDefinedProperties(), uno::UNO_QUERY_THROW ); + } +}; +class StatisticPropertyGetSetHelper : public PropertGetSetHelper +{ + SwDocShell* mpDocShell; + uno::Reference< beans::XPropertySet > mxModelProps; +public: + StatisticPropertyGetSetHelper( const uno::Reference< frame::XModel >& xModel ) :PropertGetSetHelper( xModel ) , mpDocShell( NULL ) + { + mxModelProps.set( m_xModel, uno::UNO_QUERY_THROW ); + mpDocShell = word::getDocShell( xModel ); + } + virtual uno::Any getPropertyValue( const rtl::OUString& rPropName ) + { + uno::Sequence< beans::NamedValue > stats; + try + { + // Characters, ParagraphCount & WordCount are available from + // the model ( and addtionally these also update the statics object ) + //return mxProps->getPropertyValue( rPropName ); + return mxModelProps->getPropertyValue( rPropName ); + } + catch( uno::Exception& ) + { + OSL_TRACE("Got exception"); + } + uno::Any aReturn; + if ( rPropName.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LineCount")) ) ) // special processing needed + { + if ( mpDocShell ) + { + SwFEShell* pFEShell = mpDocShell->GetFEShell(); + if(pFEShell) + { + aReturn <<= pFEShell->GetLineCount(FALSE); + } + } + } + else + { + mxModelProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParagraphCount") ) ) >>= stats; + mxProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("DocumentStatistic") ) ) >>= stats; + + sal_Int32 nLen = stats.getLength(); + bool bFound = false; + for ( sal_Int32 index = 0; index < nLen && !bFound ; ++index ) + { + if ( rPropName.equals( stats[ index ].Name ) ) + { + aReturn = stats[ index ].Value; + bFound = true; + } + } + if ( !bFound ) + throw uno::RuntimeException(); // bad Property + } + return aReturn; + } + + virtual void setPropertyValue( const rtl::OUString& rPropName, const uno::Any& aValue ) + { + + uno::Sequence< beans::NamedValue > stats; + mxProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("DocumentStatistic") ) ) >>= stats; + + sal_Int32 nLen = stats.getLength(); + for ( sal_Int32 index = 0; index < nLen; ++index ) + { + if ( rPropName.equals( stats[ index ].Name ) ) + { + stats[ index ].Value = aValue; + mxProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("DocumentStatistic") ), uno::makeAny( stats ) ); + break; + } + } + } +}; + +class DocPropInfo +{ +public: + rtl::OUString msMSODesc; + rtl::OUString msOOOPropName; + boost::shared_ptr< PropertGetSetHelper > mpPropGetSetHelper; + + static DocPropInfo createDocPropInfo( const rtl::OUString& sDesc, const rtl::OUString& sPropName, boost::shared_ptr< PropertGetSetHelper >& rHelper ) + { + return createDocPropInfo( rtl::OUStringToOString( sDesc, RTL_TEXTENCODING_UTF8 ).getStr(), rtl::OUStringToOString( sPropName, RTL_TEXTENCODING_UTF8 ).getStr(), rHelper ); + } + + static DocPropInfo createDocPropInfo( const sal_Char* sDesc, const sal_Char* sPropName, boost::shared_ptr< PropertGetSetHelper >& rHelper ) + { + DocPropInfo aItem; + aItem.msMSODesc = rtl::OUString::createFromAscii( sDesc ); + aItem.msOOOPropName = rtl::OUString::createFromAscii( sPropName ); + aItem.mpPropGetSetHelper = rHelper; + return aItem; + } + uno::Any getValue() + { + if ( mpPropGetSetHelper.get() ) + return mpPropGetSetHelper->getPropertyValue( msOOOPropName ); + return uno::Any(); + } + void setValue( const uno::Any& rValue ) + { + if ( mpPropGetSetHelper.get() ) + mpPropGetSetHelper->setPropertyValue( msOOOPropName, rValue ); + } + uno::Reference< beans::XPropertySet > getUnoProperties() + { + + uno::Reference< beans::XPropertySet > xProps; + if ( mpPropGetSetHelper.get() ) + return mpPropGetSetHelper->getUnoProperties(); + return xProps; + } +}; + + +typedef std::hash_map< sal_Int32, DocPropInfo > MSOIndexToOODocPropInfo; + +class BuiltInIndexHelper +{ + MSOIndexToOODocPropInfo m_docPropInfoMap; + BuiltInIndexHelper(); +public: + BuiltInIndexHelper( const uno::Reference< frame::XModel >& xModel ) + { + boost::shared_ptr< PropertGetSetHelper > aStandardHelper( new BuiltinPropertyGetSetHelper( xModel ) ); + boost::shared_ptr< PropertGetSetHelper > aUsingStatsHelper( new StatisticPropertyGetSetHelper( xModel ) ); + + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyTitle ] = DocPropInfo::createDocPropInfo( "Title", "Title", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertySubject ] = DocPropInfo::createDocPropInfo( "Subject", "Subject", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyAuthor ] = DocPropInfo::createDocPropInfo( "Author", "Author", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyKeywords ] = DocPropInfo::createDocPropInfo( "Keywords", "Keywords", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyComments ] = DocPropInfo::createDocPropInfo( "Comments", "Description", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyTemplate ] = DocPropInfo::createDocPropInfo( "Template", "Template", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyLastAuthor ] = DocPropInfo::createDocPropInfo( "Last author", "ModifiedBy", aStandardHelper ); // doesn't seem to exist - throw or return nothing ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyRevision ] = DocPropInfo::createDocPropInfo( "Revision number", "EditingCycles", aStandardHelper ); // doesn't seem to exist - throw or return nothing ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyAppName ] = DocPropInfo::createDocPropInfo( "Application name", "Generator", aStandardHelper ); // doesn't seem to exist - throw or return nothing ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyTimeLastPrinted ] = DocPropInfo::createDocPropInfo( "Last print date", "PrintDate", aStandardHelper ); // doesn't seem to exist - throw or return nothing ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyTimeCreated ] = DocPropInfo::createDocPropInfo( "Creation date", "CreationDate", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyTimeLastSaved ] = DocPropInfo::createDocPropInfo( "Last save time", "ModifyDate", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyVBATotalEdit ] = DocPropInfo::createDocPropInfo( "Total editing time", "EditingDuration", aStandardHelper ); // Not sure if this is correct + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyPages ] = DocPropInfo::createDocPropInfo( "Number of pages", "PageCount", aUsingStatsHelper ); // special handling required ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyWords ] = DocPropInfo::createDocPropInfo( "Number of words", "WordCount", aUsingStatsHelper ); // special handling require ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyCharacters ] = DocPropInfo::createDocPropInfo( "Number of characters", "CharacterCount", aUsingStatsHelper ); // special handling required ? + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertySecurity ] = DocPropInfo::createDocPropInfo( "Security", "", aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyCategory ] = DocPropInfo::createDocPropInfo( "Category", "Category", aStandardHelper ); // hacked in + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyFormat ] = DocPropInfo::createDocPropInfo( "Format", "", aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyManager ] = DocPropInfo::createDocPropInfo( "Manager", "Manager", aStandardHelper ); // hacked in + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyCompany ] = DocPropInfo::createDocPropInfo( "Company", "Company", aStandardHelper ); // hacked in + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyBytes ] = DocPropInfo::createDocPropInfo( "Number of bytes", "", aStandardHelper ); // doesn't seem to exist - size on disk exists ( for an already saved document ) perhaps it will do ( or we need something else ) + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyLines ] = DocPropInfo::createDocPropInfo( "Number of lines", "LineCount", aUsingStatsHelper ); // special handling + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyParas ] = DocPropInfo::createDocPropInfo( "Number of paragraphs", "ParagraphCount", aUsingStatsHelper ); // special handling + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertySlides ] = DocPropInfo::createDocPropInfo( "Number of slides", "" , aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyNotes ] = DocPropInfo::createDocPropInfo( "Number of notes", "", aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyHiddenSlides ] = DocPropInfo::createDocPropInfo("Number of hidden Slides", "", aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyMMClips ] = DocPropInfo::createDocPropInfo( "Number of multimedia clips", "", aStandardHelper ); // doesn't seem to exist + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyHyperlinkBase ] = DocPropInfo::createDocPropInfo( "Hyperlink base", "AutoloadURL", aStandardHelper ); + m_docPropInfoMap[ word::WdBuiltInProperty::wdPropertyCharsWSpaces ] = DocPropInfo::createDocPropInfo( "Number of characters (with spaces)", "", aStandardHelper ); // doesn't seem to be supported + } + + MSOIndexToOODocPropInfo& getDocPropInfoMap() { return m_docPropInfoMap; } +}; + + +typedef InheritedHelperInterfaceImpl1< ooo::vba::XDocumentProperty > SwVbaDocumentProperty_BASE; + +class SwVbaBuiltInDocumentProperty : public SwVbaDocumentProperty_BASE +{ +protected: + DocPropInfo mPropInfo; +public: + SwVbaBuiltInDocumentProperty( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const DocPropInfo& rInfo ); + // XDocumentProperty + virtual void SAL_CALL Delete( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual ::rtl::OUString SAL_CALL getName( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setName( const ::rtl::OUString& Name ) throw (script::BasicErrorException, uno::RuntimeException); + virtual ::sal_Int8 SAL_CALL getType( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setType( ::sal_Int8 Type ) throw (script::BasicErrorException, uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getLinkToContent( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setLinkToContent( ::sal_Bool LinkToContent ) throw (script::BasicErrorException, uno::RuntimeException); + virtual uno::Any SAL_CALL getValue( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setValue( const uno::Any& Value ) throw (script::BasicErrorException, uno::RuntimeException); + virtual rtl::OUString SAL_CALL getLinkSource( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setLinkSource( const rtl::OUString& LinkSource ) throw (script::BasicErrorException, uno::RuntimeException); + //XDefaultProperty + virtual ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (uno::RuntimeException) { return rtl::OUString::createFromAscii("Value"); } + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual uno::Sequence<rtl::OUString> getServiceNames(); +}; + +class SwVbaCustomDocumentProperty : public SwVbaBuiltInDocumentProperty +{ +public: + + SwVbaCustomDocumentProperty( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const DocPropInfo& rInfo ); + + virtual ::sal_Bool SAL_CALL getLinkToContent( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setLinkToContent( ::sal_Bool LinkToContent ) throw (script::BasicErrorException, uno::RuntimeException); + + virtual rtl::OUString SAL_CALL getLinkSource( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setLinkSource( const rtl::OUString& LinkSource ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL Delete( ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setName( const ::rtl::OUString& Name ) throw (script::BasicErrorException, uno::RuntimeException); + virtual void SAL_CALL setType( ::sal_Int8 Type ) throw (script::BasicErrorException, uno::RuntimeException); + +}; + + +SwVbaCustomDocumentProperty::SwVbaCustomDocumentProperty( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const DocPropInfo& rInfo ) : SwVbaBuiltInDocumentProperty( xParent, xContext, rInfo ) +{ +} + +sal_Bool +SwVbaCustomDocumentProperty::getLinkToContent( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // #FIXME we need to store the link content somewhere + return sal_False; +} + +void +SwVbaCustomDocumentProperty::setLinkToContent( sal_Bool /*bLinkContent*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ +} + +rtl::OUString +SwVbaCustomDocumentProperty::getLinkSource( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // #FIXME we need to store the link content somewhere + return rtl::OUString();; +} + +void +SwVbaCustomDocumentProperty::setLinkSource( const rtl::OUString& /*rsLinkContent*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // #FIXME we need to store the link source somewhere +} + +void SAL_CALL +SwVbaCustomDocumentProperty::setName( const ::rtl::OUString& /*Name*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // setName on existing property ? + // #FIXME + // do we need to delete existing property and create a new one? +} + +void SAL_CALL +SwVbaCustomDocumentProperty::setType( ::sal_Int8 /*Type*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // setType, do we need to do a conversion? + // #FIXME the underlying value needs to be changed to the new type +} + +void SAL_CALL +SwVbaCustomDocumentProperty::Delete( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + uno::Reference< beans::XPropertyContainer > xContainer( mPropInfo.getUnoProperties(), uno::UNO_QUERY_THROW ); + xContainer->removeProperty( getName() ); +} + +SwVbaBuiltInDocumentProperty::SwVbaBuiltInDocumentProperty( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const DocPropInfo& rInfo ) : SwVbaDocumentProperty_BASE( xParent, xContext ), mPropInfo( rInfo ) +{ +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::Delete( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +::rtl::OUString SAL_CALL +SwVbaBuiltInDocumentProperty::getName( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + return mPropInfo.msMSODesc; +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::setName( const rtl::OUString& ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +::sal_Int8 SAL_CALL +SwVbaBuiltInDocumentProperty::getType( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + return lcl_toMSOPropType( getValue().getValueType() ); +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::setType( ::sal_Int8 /*Type*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +::sal_Bool SAL_CALL +SwVbaBuiltInDocumentProperty::getLinkToContent( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + return sal_False; // built-in always false +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::setLinkToContent( ::sal_Bool /*LinkToContent*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +uno::Any SAL_CALL +SwVbaBuiltInDocumentProperty::getValue( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + uno::Any aRet = mPropInfo.getValue(); + if ( !aRet.hasValue() ) + throw uno::RuntimeException(); + return aRet; +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::setValue( const uno::Any& Value ) throw (script::BasicErrorException, uno::RuntimeException) +{ + mPropInfo.setValue( Value ); +} + +rtl::OUString SAL_CALL +SwVbaBuiltInDocumentProperty::getLinkSource( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +void SAL_CALL +SwVbaBuiltInDocumentProperty::setLinkSource( const rtl::OUString& /*LinkSource*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // not valid for Builtin + throw uno::RuntimeException(); +} + +rtl::OUString& +SwVbaBuiltInDocumentProperty::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBuiltinDocumentProperty") ); + return sImplName; +} + +uno::Sequence<rtl::OUString> +SwVbaBuiltInDocumentProperty::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.DocumentProperty" ) ); + } + return aServiceNames; +} +typedef ::cppu::WeakImplHelper3< com::sun::star::container::XIndexAccess + ,com::sun::star::container::XNameAccess + ,com::sun::star::container::XEnumerationAccess + > PropertiesImpl_BASE; + +typedef std::hash_map< sal_Int32, uno::Reference< XDocumentProperty > > DocProps; + +typedef ::cppu::WeakImplHelper1< com::sun::star::container::XEnumeration > DocPropEnumeration_BASE; +class DocPropEnumeration : public DocPropEnumeration_BASE +{ + DocProps mDocProps; + DocProps::iterator mIt; +public: + + DocPropEnumeration( const DocProps& rProps ) : mDocProps( rProps ), mIt( mDocProps.begin() ) {} + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return mIt != mDocProps.end(); + } + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasMoreElements() ) + throw container::NoSuchElementException(); + return uno::makeAny( mIt++->second ); + } +}; + +typedef std::hash_map< rtl::OUString, uno::Reference< XDocumentProperty >, ::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > > DocPropsByName; + +class BuiltInPropertiesImpl : public PropertiesImpl_BASE +{ +protected: + + uno::Reference< XHelperInterface > m_xParent; + uno::Reference< uno::XComponentContext > m_xContext; + uno::Reference< frame::XModel > m_xModel; + uno::Reference< document::XDocumentInfo > m_xOOOBuiltIns; + + DocProps mDocProps; + DocPropsByName mNamedDocProps; + + public: + BuiltInPropertiesImpl( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : m_xParent( xParent ), m_xContext( xContext ), m_xModel( xModel ) + { + BuiltInIndexHelper builtIns( m_xModel ); + for ( sal_Int32 index = word::WdBuiltInProperty::wdPropertyTitle; index <= word::WdBuiltInProperty::wdPropertyCharsWSpaces; ++index ) + { + mDocProps[ index ] = new SwVbaBuiltInDocumentProperty( xParent, xContext, builtIns.getDocPropInfoMap()[ index ] ); + mNamedDocProps[ mDocProps[ index ]->getName() ] = mDocProps[ index ]; + } + } +// XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return mDocProps.size(); + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException ) + { + // correct the correct by the base class for 1 based indices + DocProps::iterator it = mDocProps.find( ++Index ); + if ( it == mDocProps.end() ) + throw lang::IndexOutOfBoundsException(); + return uno::makeAny( it->second ); + } + virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasByName( aName ) ) + throw container::NoSuchElementException(); + DocPropsByName::iterator it = mNamedDocProps.find( aName ); + return uno::Any( it->second ); + + } + virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) + { + uno::Sequence< rtl::OUString > aNames( getCount() ); + rtl::OUString* pName = aNames.getArray(); + DocPropsByName::iterator it_end = mNamedDocProps.end(); + for( DocPropsByName::iterator it = mNamedDocProps.begin(); it != it_end; ++it, ++pName ) + *pName = it->first; + return aNames; + } + + virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (uno::RuntimeException) + { + DocPropsByName::iterator it = mNamedDocProps.find( aName ); + if ( it == mNamedDocProps.end() ) + return sal_False; + return sal_True; + } +// XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) + { + return XDocumentProperty::static_type(0); + } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + return mDocProps.size() > 0; + } + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + return new DocPropEnumeration( mDocProps ); + } +}; + +SwVbaBuiltinDocumentProperties::SwVbaBuiltinDocumentProperties( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : SwVbaDocumentproperties_BASE( xParent, xContext, uno::Reference< container::XIndexAccess >( new BuiltInPropertiesImpl( xParent, xContext, xModel ) ) ), m_xModel( xModel ) +{ +} + +uno::Reference< XDocumentProperty > SAL_CALL +SwVbaBuiltinDocumentProperties::Add( const ::rtl::OUString& /*Name*/, ::sal_Bool /*LinkToContent*/, ::sal_Int8 /*Type*/, const uno::Any& /*value*/, const uno::Any& /*LinkSource*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + throw uno::RuntimeException( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("not supported for Builtin properties") ), uno::Reference< uno::XInterface >() ); +} + +// XEnumerationAccess +uno::Type SAL_CALL +SwVbaBuiltinDocumentProperties::getElementType() throw (uno::RuntimeException) +{ + return XDocumentProperty::static_type(0); +} + +uno::Reference< container::XEnumeration > SAL_CALL +SwVbaBuiltinDocumentProperties::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumAccess->createEnumeration(); +} + +// ScVbaCollectionBaseImpl +uno::Any +SwVbaBuiltinDocumentProperties::createCollectionObject( const uno::Any& aSource ) +{ + // pass through + return aSource; +} + +// XHelperInterface +rtl::OUString& +SwVbaBuiltinDocumentProperties::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaBuiltinDocumentProperties") ); + return sImplName; +} + +uno::Sequence<rtl::OUString> +SwVbaBuiltinDocumentProperties::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.DocumentProperties" ) ); + } + return aServiceNames; +} + +class CustomPropertiesImpl : public PropertiesImpl_BASE +{ + uno::Reference< XHelperInterface > m_xParent; + uno::Reference< uno::XComponentContext > m_xContext; + uno::Reference< frame::XModel > m_xModel; + uno::Reference< beans::XPropertySet > mxUserDefinedProp; + boost::shared_ptr< PropertGetSetHelper > mpPropGetSetHelper; +public: + CustomPropertiesImpl( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : m_xParent( xParent ), m_xContext( xContext ), m_xModel( xModel ) + { + // suck in the document( custom ) properties + uno::Reference< document::XDocumentInfoSupplier > xDocInfoSupp( m_xModel, uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentPropertiesSupplier > xDocPropSupp( xDocInfoSupp->getDocumentInfo(), uno::UNO_QUERY_THROW ); + uno::Reference< document::XDocumentProperties > xDocProp( xDocPropSupp->getDocumentProperties(), uno::UNO_QUERY_THROW ); + mxUserDefinedProp.set( xDocProp->getUserDefinedProperties(), uno::UNO_QUERY_THROW ); + mpPropGetSetHelper.reset( new CustomPropertyGetSetHelper( m_xModel ) ); + }; + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return mxUserDefinedProp->getPropertySetInfo()->getProperties().getLength(); + } + + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException ) + { + uno::Sequence< beans::Property > aProps = mxUserDefinedProp->getPropertySetInfo()->getProperties(); + if ( Index >= aProps.getLength() ) + throw lang::IndexOutOfBoundsException(); + // How to determine type e.g Date? ( com.sun.star.util.DateTime ) + DocPropInfo aPropInfo = DocPropInfo::createDocPropInfo( aProps[ Index ].Name, aProps[ Index ].Name, mpPropGetSetHelper ); + return uno::makeAny( uno::Reference< XDocumentProperty >( new SwVbaCustomDocumentProperty( m_xParent, m_xContext, aPropInfo ) ) ); + } + + virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasByName( aName ) ) + throw container::NoSuchElementException(); + + DocPropInfo aPropInfo = DocPropInfo::createDocPropInfo( aName, aName, mpPropGetSetHelper ); + return uno::makeAny( uno::Reference< XDocumentProperty >( new SwVbaCustomDocumentProperty( m_xParent, m_xContext, aPropInfo ) ) ); + } + + virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) + { + uno::Sequence< beans::Property > aProps = mxUserDefinedProp->getPropertySetInfo()->getProperties(); + uno::Sequence< rtl::OUString > aNames( aProps.getLength() ); + rtl::OUString* pString = aNames.getArray(); + rtl::OUString* pEnd = ( pString + aNames.getLength() ); + beans::Property* pProp = aProps.getArray(); + for ( ; pString != pEnd; ++pString, ++pProp ) + *pString = pProp->Name; + return aNames; + } + + virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (uno::RuntimeException) + { + OSL_TRACE("hasByName(%s) returns %d", rtl::OUStringToOString( aName, RTL_TEXTENCODING_UTF8 ).getStr(), mxUserDefinedProp->getPropertySetInfo()->hasPropertyByName( aName ) ); + return mxUserDefinedProp->getPropertySetInfo()->hasPropertyByName( aName ); + } + + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) + { + return XDocumentProperty::static_type(0); + } + + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + return getCount() > 0; + } + + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + // create a map of properties ( the key doesn't matter ) + OSL_TRACE("Creating an enumeration"); + sal_Int32 key = 0; + sal_Int32 nElem = getCount(); + DocProps simpleDocPropSnapShot; + for ( ; key < nElem; ++key ) + simpleDocPropSnapShot[ key ].set( getByIndex( key ), uno::UNO_QUERY_THROW ); + OSL_TRACE("After creating the enumeration"); + return new DocPropEnumeration( simpleDocPropSnapShot ); + } + + void addProp( const ::rtl::OUString& Name, ::sal_Int8 /*Type*/, const uno::Any& Value ) + { + sal_Int16 attributes = 128; + uno::Reference< beans::XPropertyContainer > xContainer( mxUserDefinedProp, uno::UNO_QUERY_THROW ); + // TODO fixme, perform the necessary Type Value conversions + xContainer->addProperty( Name, attributes, Value ); + } + +}; + + +SwVbaCustomDocumentProperties::SwVbaCustomDocumentProperties( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : SwVbaBuiltinDocumentProperties( xParent, xContext, xModel ) +{ + // replace the m_xIndexAccess implementation ( we need a virtual init ) + m_xIndexAccess.set( new CustomPropertiesImpl( xParent, xContext, xModel ) ); + m_xNameAccess.set( m_xIndexAccess, uno::UNO_QUERY_THROW ); +} + +uno::Reference< XDocumentProperty > SAL_CALL +SwVbaCustomDocumentProperties::Add( const ::rtl::OUString& Name, ::sal_Bool LinkToContent, ::sal_Int8 Type, const uno::Any& Value, const uno::Any& LinkSource ) throw (script::BasicErrorException, uno::RuntimeException) +{ + CustomPropertiesImpl* pCustomProps = dynamic_cast< CustomPropertiesImpl* > ( m_xIndexAccess.get() ); + uno::Reference< XDocumentProperty > xDocProp; + if ( pCustomProps ) + { + rtl::OUString sLinkSource; + pCustomProps->addProp( Name, Type, Value ); + + xDocProp.set( m_xNameAccess->getByName( Name ), uno::UNO_QUERY_THROW ); + xDocProp->setLinkToContent( LinkToContent ); + + if ( LinkSource >>= sLinkSource ) + xDocProp->setLinkSource( sLinkSource ); + } + return xDocProp; +} + +// XHelperInterface +rtl::OUString& +SwVbaCustomDocumentProperties::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaCustomDocumentProperties") ); + return sImplName; +} diff --git a/sw/source/ui/vba/vbadocumentproperties.hxx b/sw/source/ui/vba/vbadocumentproperties.hxx new file mode 100644 index 000000000000..57cc41e42b34 --- /dev/null +++ b/sw/source/ui/vba/vbadocumentproperties.hxx @@ -0,0 +1,70 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadocument.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_DOCUMENTPROPERTIES_HXX +#define SW_VBA_DOCUMENTPROPERTIES_HXX + +#include <ooo/vba/XDocumentProperties.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <vbahelper/vbacollectionimpl.hxx> +#include <hash_map> + +typedef CollTestImplHelper< ov::XDocumentProperties > SwVbaDocumentproperties_BASE; + +class SwVbaBuiltinDocumentProperties : public SwVbaDocumentproperties_BASE +{ +protected: + css::uno::Reference< css::frame::XModel > m_xModel; +public: + SwVbaBuiltinDocumentProperties( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xDocument ); + + // XDocumentProperties + virtual css::uno::Reference< ::ooo::vba::XDocumentProperty > SAL_CALL Add( const ::rtl::OUString& Name, ::sal_Bool LinkToContent, ::sal_Int8 Type, const css::uno::Any& Value, const css::uno::Any& LinkSource ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + // ScVbaCollectionBaseImpl + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +class SwVbaCustomDocumentProperties : public SwVbaBuiltinDocumentProperties +{ +public: + SwVbaCustomDocumentProperties( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xDocument ); +// XDocumentProperties + virtual css::uno::Reference< ::ooo::vba::XDocumentProperty > SAL_CALL Add( const ::rtl::OUString& Name, ::sal_Bool LinkToContent, ::sal_Int8 Type, const css::uno::Any& Value, const css::uno::Any& LinkSource ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); +}; + +#endif /* SW_VBA_DOCUMENTPROPERTY_HXX */ diff --git a/sw/source/ui/vba/vbadocuments.cxx b/sw/source/ui/vba/vbadocuments.cxx new file mode 100644 index 000000000000..b97498ff56a5 --- /dev/null +++ b/sw/source/ui/vba/vbadocuments.cxx @@ -0,0 +1,200 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbadocuments.cxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <comphelper/processfactory.hxx> + +#include <cppuhelper/implbase1.hxx> +#include <cppuhelper/implbase3.hxx> + +#include <com/sun/star/frame/XDesktop.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/frame/XComponentLoader.hpp> +#include <com/sun/star/lang/XComponent.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/frame/XFrame.hpp> +#include <com/sun/star/frame/FrameSearchFlag.hpp> +#include <com/sun/star/util/XModifiable.hpp> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/lang/DisposedException.hpp> +#include <com/sun/star/beans/PropertyVetoException.hpp> +#include <com/sun/star/util/XCloseable.hpp> +#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> +#include <com/sun/star/document/XTypeDetection.hpp> +#include <com/sun/star/uri/XUriReference.hpp> +#include <com/sun/star/uri/XUriReferenceFactory.hpp> + +#include <sfx2/objsh.hxx> +#include <tools/urlobj.hxx> + +#include "vbaglobals.hxx" +#include "vbadocument.hxx" +#include "vbadocuments.hxx" +#include <vbahelper/vbahelper.hxx> + +#include <hash_map> +#include <osl/file.hxx> +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +static uno::Any +getDocument( uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< text::XTextDocument > &xDoc, const uno::Any& aApplication ) +{ + // FIXME: fine as long as SwVbaDocument is stateless ... + uno::Reference< frame::XModel > xModel( xDoc, uno::UNO_QUERY ); + if( !xModel.is() ) + return uno::Any(); + + SwVbaDocument *pWb = new SwVbaDocument( uno::Reference< XHelperInterface >( aApplication, uno::UNO_QUERY_THROW ), xContext, xModel ); + return uno::Any( uno::Reference< word::XDocument > (pWb) ); +} + +class DocumentEnumImpl : public EnumerationHelperImpl +{ + uno::Any m_aApplication; +public: + DocumentEnumImpl( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< container::XEnumeration >& xEnumeration, const uno::Any& aApplication ) throw ( uno::RuntimeException ) : EnumerationHelperImpl( xContext, xEnumeration ), m_aApplication( aApplication ) {} + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + uno::Reference< text::XTextDocument > xDoc( m_xEnumeration->nextElement(), uno::UNO_QUERY_THROW ); + return getDocument( m_xContext, xDoc, m_aApplication ); + } +}; + +SwVbaDocuments::SwVbaDocuments( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext ) : SwVbaDocuments_BASE( xParent, xContext, VbaDocumentsBase::WORD_DOCUMENT ) +{ +} +// XEnumerationAccess +uno::Type +SwVbaDocuments::getElementType() throw (uno::RuntimeException) +{ + return word::XDocument::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaDocuments::createEnumeration() throw (uno::RuntimeException) +{ + // #FIXME its possible the DocumentEnumImpl here doens't reflect + // the state of this object ( although it should ) would be + // safer to create an enumeration based on this objects state + // rather than one effectively based of the desktop component + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return new DocumentEnumImpl( mxContext, xEnumerationAccess->createEnumeration(), Application() ); +} + +uno::Any +SwVbaDocuments::createCollectionObject( const uno::Any& aSource ) +{ + uno::Reference< text::XTextDocument > xDoc( aSource, uno::UNO_QUERY_THROW ); + return getDocument( mxContext, xDoc, Application() ); +} + +uno::Any SAL_CALL +SwVbaDocuments::Add( const uno::Any& Template, const uno::Any& /*NewTemplate*/, const uno::Any& /*DocumentType*/, const uno::Any& /*Visible*/ ) throw (uno::RuntimeException) +{ + rtl::OUString sFileName; + if( Template.hasValue() && ( Template >>= sFileName ) ) + { + return Open( sFileName, uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any(), uno::Any()); + } + uno::Reference <text::XTextDocument> xTextDoc( VbaDocumentsBase::Add() , uno::UNO_QUERY_THROW ); + + if( xTextDoc.is() ) + return getDocument( mxContext, xTextDoc, Application() ); + return uno::Any(); +} + +// #TODO# #FIXME# can any of the unused params below be used? +void SAL_CALL +SwVbaDocuments::Close( const uno::Any& /*SaveChanges*/, const uno::Any& /*OriginalFormat*/, const uno::Any& /*RouteDocument*/ ) throw (uno::RuntimeException) +{ + VbaDocumentsBase::Close(); +} + +// #TODO# #FIXME# can any of the unused params below be used? +uno::Any SAL_CALL +SwVbaDocuments::Open( const ::rtl::OUString& Filename, const uno::Any& /*ConfirmConversions*/, const uno::Any& ReadOnly, const uno::Any& /*AddToRecentFiles*/, const uno::Any& /*PasswordDocument*/, const uno::Any& /*PasswordTemplate*/, const uno::Any& /*Revert*/, const uno::Any& /*WritePasswordDocument*/, const uno::Any& /*WritePasswordTemplate*/, const uno::Any& /*Format*/, const uno::Any& /*Encoding*/, const uno::Any& /*Visible*/, const uno::Any& /*OpenAndRepair*/, const uno::Any& /*DocumentDirection*/, const uno::Any& /*NoEncodingDialog*/, const uno::Any& /*XMLTransform*/ ) throw (uno::RuntimeException) +{ + // we need to detect if this is a URL, if not then assume its a file path + rtl::OUString aURL; + INetURLObject aObj; + aObj.SetURL( Filename ); + bool bIsURL = aObj.GetProtocol() != INET_PROT_NOT_VALID; + if ( bIsURL ) + aURL = Filename; + else + osl::FileBase::getFileURLFromSystemPath( Filename, aURL ); + + uno::Sequence< beans::PropertyValue > sProps(0); + + uno::Reference <text::XTextDocument> xSpreadDoc( VbaDocumentsBase::Open( Filename, ReadOnly, sProps ), uno::UNO_QUERY_THROW ); + uno::Any aRet = getDocument( mxContext, xSpreadDoc, Application() ); + uno::Reference< word::XDocument > xDocument( aRet, uno::UNO_QUERY ); + if ( xDocument.is() ) + xDocument->Activate(); + return aRet; +} + + // VbaDocumentsBase / XDocumentsBase (to avoid warning C4266 for hiding function on wntmsci) +uno::Any SAL_CALL +SwVbaDocuments::Add() throw (uno::RuntimeException) +{ + return VbaDocumentsBase::Add(); +} + +void SAL_CALL +SwVbaDocuments::Close( ) throw (uno::RuntimeException) +{ + VbaDocumentsBase::Close(); +} + +uno::Any SAL_CALL +SwVbaDocuments::Open( const ::rtl::OUString& Filename, const uno::Any& ReadOnly, const uno::Sequence< beans::PropertyValue >& rProps ) throw (uno::RuntimeException) +{ + return VbaDocumentsBase::Open( Filename, ReadOnly, rProps ); +} + +rtl::OUString& +SwVbaDocuments::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaDocuments") ); + return sImplName; +} + +uno::Sequence<rtl::OUString> +SwVbaDocuments::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Documents") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbadocuments.hxx b/sw/source/ui/vba/vbadocuments.hxx new file mode 100644 index 000000000000..cb6b9d2ff513 --- /dev/null +++ b/sw/source/ui/vba/vbadocuments.hxx @@ -0,0 +1,69 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_DOCUMENTS_HXX +#define SW_VBA_DOCUMENTS_HXX + + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XDocuments.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <vbahelper/vbadocumentsbase.hxx> +#include "wordvbahelper.hxx" + + +typedef cppu::ImplInheritanceHelper1< VbaDocumentsBase, ov::word::XDocuments > SwVbaDocuments_BASE; + +class SwVbaDocuments : public SwVbaDocuments_BASE +{ +public: + SwVbaDocuments( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext ); + virtual ~SwVbaDocuments() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaDocuments_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); + + // Methods + virtual css::uno::Any SAL_CALL Add( const css::uno::Any& Template, const css::uno::Any& NewTemplate, const css::uno::Any& DocumentType, const css::uno::Any& Visible ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Open( const ::rtl::OUString& Filename, const css::uno::Any& ConfirmConversions, const css::uno::Any& ReadOnly, const css::uno::Any& AddToRecentFiles, const css::uno::Any& PasswordDocument, const css::uno::Any& PasswordTemplate, const css::uno::Any& Revert, const css::uno::Any& WritePasswordDocument, const css::uno::Any& WritePasswordTemplate, const css::uno::Any& Format, const css::uno::Any& Encoding, const css::uno::Any& Visible, const css::uno::Any& OpenAndRepair, const css::uno::Any& DocumentDirection, const css::uno::Any& NoEncodingDialog, const css::uno::Any& XMLTransform ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Close( const css::uno::Any& SaveChanges, const css::uno::Any& OriginalFormat, const css::uno::Any& RouteDocument ) throw (css::uno::RuntimeException); + + // VbaDocumentsBase / XDocumentsBase (to avoid warning C4266 for hiding function on wntmsci) + virtual css::uno::Any SAL_CALL Add() throw (css::uno::RuntimeException); + virtual void SAL_CALL Close( ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Open( const ::rtl::OUString& Filename, const css::uno::Any& ReadOnly, const css::uno::Sequence< css::beans::PropertyValue >& rProps ) throw (css::uno::RuntimeException); +}; + +#endif /* SW_VBA_DOCUMENTS_HXX */ diff --git a/sw/source/ui/vba/vbafield.cxx b/sw/source/ui/vba/vbafield.cxx new file mode 100644 index 000000000000..08f3ae44f4d3 --- /dev/null +++ b/sw/source/ui/vba/vbafield.cxx @@ -0,0 +1,481 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbafield.hxx" +#include "vbarange.hxx" +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/view/XSelectionSupplier.hpp> +#include <com/sun/star/text/XTextFieldsSupplier.hpp> +#include <ooo/vba/word/WdFieldType.hpp> +#include <com/sun/star/text/FilenameDisplayFormat.hpp> +#include <com/sun/star/util/XRefreshable.hpp> +#include <swtypes.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +// *** SwVbaField *********************************************** + +SwVbaField::SwVbaField( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rDocument, const uno::Reference< css::text::XTextField >& xTextField) throw ( uno::RuntimeException ) : SwVbaField_BASE( rParent, rContext ), mxTextDocument( rDocument ) +{ + mxTextField.set( xTextField, uno::UNO_QUERY_THROW ); +} + +// XHelperInterface +rtl::OUString& +SwVbaField::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaField") ); + return sImplName; +} + +uno::Sequence<rtl::OUString> +SwVbaField::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Field" ) ); + } + return aServiceNames; +} + +// *** _ReadFieldParams *********************************************** +// the codes are copied from ww8par5.cxx +class _ReadFieldParams +{ +private: + String aData; + xub_StrLen nLen, nFnd, nNext, nSavPtr; + String aFieldName; +public: + _ReadFieldParams( const String& rData ); + ~_ReadFieldParams(); + + xub_StrLen GoToTokenParam(); + long SkipToNextToken(); + xub_StrLen GetTokenSttPtr() const { return nFnd; } + + xub_StrLen FindNextStringPiece( xub_StrLen _nStart = STRING_NOTFOUND ); + bool GetTokenSttFromTo(xub_StrLen* _pFrom, xub_StrLen* _pTo, + xub_StrLen _nMax); + + String GetResult() const; + String GetFieldName()const { return aFieldName; } +}; + + +_ReadFieldParams::_ReadFieldParams( const String& _rData ) + : aData( _rData ), nLen( _rData.Len() ), nNext( 0 ) +{ + /* + erstmal nach einer oeffnenden Klammer oder einer Leerstelle oder einem + Anfuehrungszeichen oder einem Backslash suchen, damit der Feldbefehl + (also INCLUDEPICTURE bzw EINFUeGENGRAFIK bzw ...) ueberlesen wird + */ + while( (nLen > nNext) && (aData.GetChar( nNext ) == ' ') ) + ++nNext; + + sal_Unicode c; + while( nLen > nNext + && (c = aData.GetChar( nNext )) != ' ' + && c != '"' + && c != '\\' + && c != 132 + && c != 0x201c ) + ++nNext; + + nFnd = nNext; + nSavPtr = nNext; + aFieldName = aData.Copy( 0, nFnd ); +// cLastChar = aData.GetChar( nSavPtr ); +} + + +_ReadFieldParams::~_ReadFieldParams() +{ +// aData.SetChar( nSavPtr, cLastChar ); +} + + +String _ReadFieldParams::GetResult() const +{ + return (STRING_NOTFOUND == nFnd) + ? aEmptyStr + : aData.Copy( nFnd, (nSavPtr - nFnd) ); +} + + +xub_StrLen _ReadFieldParams::GoToTokenParam() +{ + xub_StrLen nOld = nNext; + if( -2 == SkipToNextToken() ) + return GetTokenSttPtr(); + nNext = nOld; + return STRING_NOTFOUND; +} + +// ret: -2: NOT a '\' parameter but normal Text +long _ReadFieldParams::SkipToNextToken() +{ + long nRet = -1; // Ende + if ( + (STRING_NOTFOUND != nNext) && (nLen > nNext) && + STRING_NOTFOUND != (nFnd = FindNextStringPiece(nNext)) + ) + { + nSavPtr = nNext; + + if ('\\' == aData.GetChar(nFnd) && '\\' != aData.GetChar(nFnd + 1)) + { + nRet = aData.GetChar(++nFnd); + nNext = ++nFnd; // und dahinter setzen + } + else + { + nRet = -2; + if ( + (STRING_NOTFOUND != nSavPtr ) && + ( + ('"' == aData.GetChar(nSavPtr - 1)) || + (0x201d == aData.GetChar(nSavPtr - 1)) + ) + ) + { + --nSavPtr; + } + } + } + return nRet; +} + +// FindNextPara sucht naechsten Backslash-Parameter oder naechste Zeichenkette +// bis zum Blank oder naechsten "\" oder zum schliessenden Anfuehrungszeichen +// oder zum String-Ende von pStr. +// +// Ausgabe ppNext (falls ppNext != 0) Suchbeginn fuer naechsten Parameter bzw. 0 +// +// Returnwert: 0 falls String-Ende erreicht, +// ansonsten Anfang des Paramters bzw. der Zeichenkette +// +xub_StrLen _ReadFieldParams::FindNextStringPiece(const xub_StrLen nStart) +{ + xub_StrLen n = ( STRING_NOTFOUND == nStart ) ? nFnd : nStart; // Anfang + xub_StrLen n2; // Ende + + nNext = STRING_NOTFOUND; // Default fuer nicht gefunden + + while( (nLen > n) && (aData.GetChar( n ) == ' ') ) + ++n; + + if( nLen == n ) + return STRING_NOTFOUND; // String End reached! + + if( (aData.GetChar( n ) == '"') // Anfuehrungszeichen vor Para? + || (aData.GetChar( n ) == 0x201c) + || (aData.GetChar( n ) == 132) ) + { + n++; // Anfuehrungszeichen ueberlesen + n2 = n; // ab hier nach Ende suchen + while( (nLen > n2) + && (aData.GetChar( n2 ) != '"') + && (aData.GetChar( n2 ) != 0x201d) + && (aData.GetChar( n2 ) != 147) ) + n2++; // Ende d. Paras suchen + } + else // keine Anfuehrungszeichen + { + n2 = n; // ab hier nach Ende suchen + while( (nLen > n2) && (aData.GetChar( n2 ) != ' ') ) // Ende d. Paras suchen + { + if( aData.GetChar( n2 ) == '\\' ) + { + if( aData.GetChar( n2+1 ) == '\\' ) + n2 += 2; // Doppel-Backslash -> OK + else + { + if( n2 > n ) + n2--; + break; // einfach-Backslash -> Ende + } + } + else + n2++; // kein Backslash -> OK + } + } + if( nLen > n2 ) + { + if(aData.GetChar( n2 ) != ' ') n2++; + nNext = n2; + } + return n; +} + + + +// read parameters "1-3" or 1-3 with both values between 1 and nMax +bool _ReadFieldParams::GetTokenSttFromTo(USHORT* pFrom, USHORT* pTo, USHORT nMax) +{ + USHORT nStart = 0; + USHORT nEnd = 0; + xub_StrLen n = GoToTokenParam(); + if( STRING_NOTFOUND != n ) + { + + String sParams( GetResult() ); + + xub_StrLen nIndex = 0; + String sStart( sParams.GetToken(0, '-', nIndex) ); + if( STRING_NOTFOUND != nIndex ) + { + nStart = static_cast<USHORT>(sStart.ToInt32()); + nEnd = static_cast<USHORT>(sParams.Copy(nIndex).ToInt32()); + } + } + if( pFrom ) *pFrom = nStart; + if( pTo ) *pTo = nEnd; + + return nStart && nEnd && (nMax >= nStart) && (nMax >= nEnd); +} + +// *** SwVbaFields *********************************************** + +uno::Any lcl_createField( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel, const uno::Any& aSource ) +{ + uno::Reference< text::XTextField > xTextField( aSource, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextDocument > xTextDocument( xModel, uno::UNO_QUERY_THROW ); + uno::Reference< word::XField > xField( new SwVbaField( xParent, xContext, xTextDocument, xTextField ) ); + return uno::makeAny( xField ); +} + +typedef ::cppu::WeakImplHelper1< css::container::XEnumeration > FieldEnumeration_BASE; +typedef ::cppu::WeakImplHelper2< container::XIndexAccess, container::XEnumerationAccess > FieldCollectionHelper_BASE; + +class FieldEnumeration : public FieldEnumeration_BASE +{ + uno::Reference< XHelperInterface > mxParent; + uno::Reference< uno::XComponentContext > mxContext; + uno::Reference< frame::XModel > mxModel; + uno::Reference< container::XEnumeration > mxEnumeration; +public: + FieldEnumeration( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xModel, const uno::Reference< container::XEnumeration >& xEnumeration ) : mxParent( xParent ), mxContext( xContext ), mxModel( xModel ), mxEnumeration( xEnumeration ) + { + } + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return mxEnumeration->hasMoreElements(); + } + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasMoreElements() ) + throw container::NoSuchElementException(); + return lcl_createField( mxParent, mxContext, mxModel, mxEnumeration->nextElement() ); + } +}; + +class FieldCollectionHelper : public FieldCollectionHelper_BASE +{ + uno::Reference< XHelperInterface > mxParent; + uno::Reference< uno::XComponentContext > mxContext; + uno::Reference< frame::XModel > mxModel; + uno::Reference< container::XEnumerationAccess > mxEnumerationAccess; +public: + FieldCollectionHelper( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) throw (css::uno::RuntimeException) : mxParent( xParent ), mxContext( xContext ), mxModel( xModel ) + { + uno::Reference< text::XTextFieldsSupplier > xSupp( xModel, uno::UNO_QUERY_THROW ); + mxEnumerationAccess.set( xSupp->getTextFields(), uno::UNO_QUERY_THROW ); + } + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) { return mxEnumerationAccess->getElementType(); } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) { return mxEnumerationAccess->hasElements(); } + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + uno::Reference< container::XEnumeration > xEnumeration = mxEnumerationAccess->createEnumeration(); + sal_Int32 nCount = 0; + while( xEnumeration->hasMoreElements() ) + { + ++nCount; + xEnumeration->nextElement(); + } + return nCount; + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) + { + if( Index < 0 || Index >= getCount() ) + throw lang::IndexOutOfBoundsException(); + + uno::Reference< container::XEnumeration > xEnumeration = mxEnumerationAccess->createEnumeration(); + sal_Int32 nCount = 0; + while( xEnumeration->hasMoreElements() ) + { + if( nCount == Index ) + { + return xEnumeration->nextElement(); + } + ++nCount; + } + throw lang::IndexOutOfBoundsException(); + } + // XEnumerationAccess + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + uno::Reference< container::XEnumeration > xEnumeration = mxEnumerationAccess->createEnumeration(); + return uno::Reference< container::XEnumeration >( new FieldEnumeration( mxParent, mxContext, mxModel, xEnumeration ) ); + } +}; + +SwVbaFields::SwVbaFields( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xModel ) : SwVbaFields_BASE( xParent, xContext , uno::Reference< container::XIndexAccess >( new FieldCollectionHelper( xParent, xContext, xModel ) ) ), mxModel( xModel ) +{ + mxMSF.set( mxModel, uno::UNO_QUERY_THROW ); +} + +uno::Reference< word::XField > SAL_CALL +SwVbaFields::Add( const css::uno::Reference< ::ooo::vba::word::XRange >& Range, const css::uno::Any& Type, const css::uno::Any& Text, const css::uno::Any& /*PreserveFormatting*/ ) throw (css::uno::RuntimeException) +{ + sal_Int32 nType = word::WdFieldType::wdFieldEmpty; + Type >>= nType; + rtl::OUString sText; + Text >>= sText; + + String sFieldName; + if( ( nType == word::WdFieldType::wdFieldEmpty ) && ( sText.getLength() > 0 ) ) + { + _ReadFieldParams aReadParam(sText); + sFieldName = aReadParam.GetFieldName(); + } + + uno::Reference< text::XTextContent > xTextField; + if( nType == word::WdFieldType::wdFieldFileName || sFieldName.EqualsIgnoreCaseAscii("FILENAME") ) + { + xTextField.set( Create_Field_FileName( sText ), uno::UNO_QUERY_THROW ); + } + else + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } + + SwVbaRange* pVbaRange = dynamic_cast< SwVbaRange* >( Range.get() ); + uno::Reference< text::XTextRange > xTextRange = pVbaRange->getXTextRange(); + uno::Reference< text::XText > xText = xTextRange->getText(); + xText->insertTextContent( xTextRange, xTextField, true ); + return uno::Reference< word::XField >( new SwVbaField( mxParent, mxContext, uno::Reference< text::XTextDocument >( mxModel, uno::UNO_QUERY_THROW ), uno::Reference< text::XTextField >( xTextField, uno::UNO_QUERY_THROW ) ) ); +} + +uno::Reference< text::XTextField > SwVbaFields::Create_Field_FileName( const rtl::OUString _text ) throw (uno::RuntimeException) +{ + uno::Reference< text::XTextField > xTextField( mxMSF->createInstance( rtl::OUString::createFromAscii("com.sun.star.text.TextField.FileName") ), uno::UNO_QUERY_THROW ); + sal_Int16 nFileFormat = text::FilenameDisplayFormat::NAME_AND_EXT; + if( _text.getLength() > 0 ) + { + long nRet; + _ReadFieldParams aReadParam( _text ); + while (-1 != (nRet = aReadParam.SkipToNextToken())) + { + switch (nRet) + { + case 'p': + nFileFormat = text::FilenameDisplayFormat::FULL; + break; + case '*': + //Skip over MERGEFORMAT + aReadParam.SkipToNextToken(); + break; + default: + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + break; + } + } + } + + uno::Reference< beans::XPropertySet > xProps( xTextField, uno::UNO_QUERY_THROW ); + xProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FileFormat") ), uno::makeAny( nFileFormat ) ); + + return xTextField; +} + +uno::Reference< container::XEnumeration > SAL_CALL +SwVbaFields::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumerationAccess->createEnumeration(); +} + +// ScVbaCollectionBaseImpl +uno::Any +SwVbaFields::createCollectionObject( const uno::Any& aSource ) +{ + return lcl_createField( mxParent, mxContext, mxModel, aSource ); +} + +sal_Int32 SAL_CALL SwVbaFields::Update() throw (uno::RuntimeException) +{ + sal_Int32 nUpdate = 1; + try + { + uno::Reference< text::XTextFieldsSupplier > xSupp( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< util::XRefreshable > xRef( xSupp->getTextFields(), uno::UNO_QUERY_THROW ); + xRef->refresh(); + nUpdate = 0; + }catch( uno::Exception ) + { + nUpdate = 1; + } + return nUpdate; +} + +// XHelperInterface +rtl::OUString& +SwVbaFields::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaFields") ); + return sImplName; +} + +// XEnumerationAccess +uno::Type SAL_CALL +SwVbaFields::getElementType() throw (uno::RuntimeException) +{ + return word::XField::static_type(0); +} + +uno::Sequence<rtl::OUString> +SwVbaFields::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Fields" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbafield.hxx b/sw/source/ui/vba/vbafield.hxx new file mode 100644 index 000000000000..f02ead1f09d6 --- /dev/null +++ b/sw/source/ui/vba/vbafield.hxx @@ -0,0 +1,80 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_FIELD_HXX +#define SW_VBA_FIELD_HXX +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextField.hpp> +#include <ooo/vba/word/XField.hpp> +#include <ooo/vba/word/XFields.hpp> +#include <vbahelper/vbacollectionimpl.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XField > SwVbaField_BASE; + +class SwVbaField : public SwVbaField_BASE +{ + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + css::uno::Reference< css::text::XTextField > mxTextField; +public: + SwVbaField( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rDocument, const css::uno::Reference< css::text::XTextField >& xTextField) throw ( css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +// *** SwVbaFields *********************************************** + +typedef CollTestImplHelper< ov::word::XFields > SwVbaFields_BASE; + +class SwVbaFields : public SwVbaFields_BASE +{ + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::lang::XMultiServiceFactory > mxMSF; +private: + css::uno::Reference< css::text::XTextField > Create_Field_FileName( const rtl::OUString _text ) throw (css::uno::RuntimeException); + +public: + SwVbaFields( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xModel ); + // XFields + virtual css::uno::Reference< ::ooo::vba::word::XField > SAL_CALL Add( const css::uno::Reference< ::ooo::vba::word::XRange >& Range, const css::uno::Any& Type, const css::uno::Any& Text, const css::uno::Any& PreserveFormatting ) throw (css::uno::RuntimeException); + virtual sal_Int32 SAL_CALL Update() throw (css::uno::RuntimeException); + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + // ScVbaCollectionBaseImpl + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif diff --git a/sw/source/ui/vba/vbafind.cxx b/sw/source/ui/vba/vbafind.cxx new file mode 100644 index 000000000000..f60c0f134eda --- /dev/null +++ b/sw/source/ui/vba/vbafind.cxx @@ -0,0 +1,431 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbafind.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbareplacement.hxx" +#include <ooo/vba/word/WdFindWrap.hpp> +#include <ooo/vba/word/WdReplace.hpp> +#include <com/sun/star/text/XTextRangeCompare.hpp> +#include "wordvbahelper.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaFind::SwVbaFind( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XTextRange >& xTextRange ) throw ( uno::RuntimeException ) : + SwVbaFind_BASE( rParent, rContext ), mxModel( xModel ), mxTextRange( xTextRange ), mbReplace( sal_False ), mnReplaceType( word::WdReplace::wdReplaceOne ), mnWrap( word::WdFindWrap::wdFindStop ) +{ + mxReplaceable.set( mxModel, uno::UNO_QUERY_THROW ); + mxPropertyReplace.set( mxReplaceable->createReplaceDescriptor(), uno::UNO_QUERY_THROW ); + mxTVC = word::getXTextViewCursor( mxModel ); + mxSelSupp.set( mxModel->getCurrentController(), uno::UNO_QUERY_THROW ); +} + +SwVbaFind::~SwVbaFind() +{ +} + +sal_Bool SwVbaFind::InRange( const uno::Reference< text::XTextRange >& xCurrentRange ) throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRangeCompare > xTRC( mxTextRange->getText(), uno::UNO_QUERY_THROW ); + if( xTRC->compareRegionStarts( mxTextRange, xCurrentRange ) >= 0 && xTRC->compareRegionEnds( mxTextRange, xCurrentRange ) <= 0 ) + return sal_True; + return sal_False; +} + +sal_Bool SwVbaFind::InEqualRange( const uno::Reference< text::XTextRange >& xCurrentRange ) throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRangeCompare > xTRC( mxTextRange->getText(), uno::UNO_QUERY_THROW ); + if( xTRC->compareRegionStarts( mxTextRange, xCurrentRange ) == 0 && xTRC->compareRegionEnds( mxTextRange, xCurrentRange ) == 0 ) + return sal_True; + return sal_False; +} + +void SwVbaFind::SetReplaceWith( const rtl::OUString& rText ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setReplaceString( rText ); + mbReplace = sal_True; +} + +rtl::OUString SwVbaFind::GetReplaceWith() throw (uno::RuntimeException) +{ + return mxPropertyReplace->getReplaceString(); +} +void SwVbaFind::SetReplace( sal_Int32 type ) +{ + mnReplaceType = type; + mbReplace = sal_True; +} + +rtl::OUString SwVbaFind::ReplaceWildcards( const rtl::OUString& /*rText*/ ) throw ( uno::RuntimeException ) +{ + // TODO: + return rtl::OUString(); +} + +uno::Reference< text::XTextRange > SwVbaFind::FindOneElement() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xFoundOne; + if( mxTVC->getString().getLength() > 0 ) + { + if( getForward() ) + { + xFoundOne.set( mxReplaceable->findNext( mxTextRange->getStart(), uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + } + else + { + xFoundOne.set( mxReplaceable->findNext( mxTextRange->getEnd(), uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + } + + if( xFoundOne.is() && InEqualRange( xFoundOne ) ) + { + xFoundOne.set( mxReplaceable->findNext( xFoundOne, uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + } + else if( xFoundOne.is() && !InRange( xFoundOne ) ) + { + xFoundOne = uno::Reference< text::XTextRange >(); + } + } + else + { + xFoundOne.set( mxReplaceable->findNext( mxTextRange, uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + } + + if( !xFoundOne.is() && ( getWrap() == word::WdFindWrap::wdFindContinue || getWrap() == word::WdFindWrap::wdFindAsk ) ) + { + if( getForward() ) + { + mxTVC->gotoStart(sal_False); + xFoundOne.set( mxReplaceable->findNext( mxTextRange->getStart(), uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + } + else + { + mxTVC->gotoEnd( sal_False ); + xFoundOne.set( mxReplaceable->findNext( mxTextRange->getEnd(), uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ), uno::UNO_QUERY ); + + } + } + return xFoundOne; +} + +sal_Bool SwVbaFind::SearchReplace() throw (uno::RuntimeException) +{ + sal_Bool result = sal_False; + + // TODO: map wildcards in area to OOo wildcards + + if( mbReplace ) + { + switch( mnReplaceType ) + { + case word::WdReplace::wdReplaceNone: + { + result = sal_True; + break; + } + case word::WdReplace::wdReplaceOne: + { + uno::Reference< text::XTextRange > xFindOne = FindOneElement(); + if( xFindOne.is() ) + { + xFindOne->setString( GetReplaceWith() ); + result = mxSelSupp->select( uno::makeAny( xFindOne ) ); + } + break; + } + case word::WdReplace::wdReplaceAll: + { + uno::Reference< container::XIndexAccess > xIndexAccess = mxReplaceable->findAll( uno::Reference< util::XSearchDescriptor >( mxPropertyReplace, uno::UNO_QUERY_THROW ) ); + if( xIndexAccess->getCount() > 0 ) + { + for( sal_Int32 i = 0; i < xIndexAccess->getCount(); i++ ) + { + uno::Reference< text::XTextRange > xTextRange( xIndexAccess->getByIndex( i ), uno::UNO_QUERY_THROW ); + if( mnWrap == word::WdFindWrap::wdFindContinue || mnWrap == word::WdFindWrap::wdFindAsk || InRange( xTextRange ) ) + { + xTextRange->setString( GetReplaceWith() ); + result = sal_True; + } + } + } + break; + } + default: + { + result = sal_False; + } + } + } + else + { + uno::Reference< text::XTextRange > xFindOne = FindOneElement(); + if( xFindOne.is() ) + result = mxSelSupp->select( uno::makeAny( xFindOne ) ); + } + + return result; +} + +::rtl::OUString SAL_CALL SwVbaFind::getText() throw (uno::RuntimeException) +{ + return mxPropertyReplace->getSearchString(); +} + +void SAL_CALL SwVbaFind::setText( const ::rtl::OUString& _text ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setSearchString( _text ); +} + +uno::Any SAL_CALL SwVbaFind::getReplacement() throw (uno::RuntimeException) +{ + return uno::makeAny( uno::Reference< word::XReplacement >( new SwVbaReplacement( this, mxContext, mxPropertyReplace ) ) ); +} + +void SAL_CALL SwVbaFind::setReplacement( const uno::Any& /*_replacement */ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +::sal_Bool SAL_CALL SwVbaFind::getForward() throw (uno::RuntimeException) +{ + sal_Bool bBackward = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchBackwards") ) ) >>= bBackward; + return !bBackward; +} + +void SAL_CALL SwVbaFind::setForward( ::sal_Bool _forward ) throw (uno::RuntimeException) +{ + sal_Bool bBackward = !_forward; + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchBackwards") ), uno::makeAny( bBackward ) ); +} + +::sal_Int32 SAL_CALL SwVbaFind::getWrap() throw (uno::RuntimeException) +{ + // seems not supported in Writer + return mnWrap; +} + +void SAL_CALL SwVbaFind::setWrap( ::sal_Int32 _wrap ) throw (uno::RuntimeException) +{ + // seems not supported in Writer + mnWrap = _wrap; +} + +::sal_Bool SAL_CALL SwVbaFind::getFormat() throw (uno::RuntimeException) +{ + return mxPropertyReplace->getValueSearch(); +} + +void SAL_CALL SwVbaFind::setFormat( ::sal_Bool _format ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setValueSearch( _format ); +} + +::sal_Bool SAL_CALL SwVbaFind::getMatchCase() throw (uno::RuntimeException) +{ + sal_Bool value = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchCaseSensitive") ) ) >>= value; + return value; +} + +void SAL_CALL SwVbaFind::setMatchCase( ::sal_Bool _matchcase ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchCaseSensitive") ), uno::makeAny( _matchcase ) ); +} + +::sal_Bool SAL_CALL SwVbaFind::getMatchWholeWord() throw (uno::RuntimeException) +{ + sal_Bool value = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchWords") ) ) >>= value; + return value; +} + +void SAL_CALL SwVbaFind::setMatchWholeWord( ::sal_Bool _matchwholeword ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchWords") ), uno::makeAny( _matchwholeword ) ); +} + +::sal_Bool SAL_CALL SwVbaFind::getMatchWildcards() throw (uno::RuntimeException) +{ + sal_Bool value = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchRegularExpression") ) ) >>= value; + return value; +} + +void SAL_CALL SwVbaFind::setMatchWildcards( ::sal_Bool _matchwildcards ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchRegularExpression") ), uno::makeAny( _matchwildcards ) ); +} + +::sal_Bool SAL_CALL SwVbaFind::getMatchSoundsLike() throw (uno::RuntimeException) +{ + sal_Bool value = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ) ) >>= value; + return value; +} + +void SAL_CALL SwVbaFind::setMatchSoundsLike( ::sal_Bool _matchsoundslike ) throw (uno::RuntimeException) +{ + // seems not accurate + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ), uno::makeAny( _matchsoundslike ) ); +} + +::sal_Bool SAL_CALL SwVbaFind::getMatchAllWordForms() throw (uno::RuntimeException) +{ + sal_Bool value = sal_False; + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ) ) >>= value; + if( value ) + mxPropertyReplace->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRelax") ) ) >>= value; + return value; +} + +void SAL_CALL SwVbaFind::setMatchAllWordForms( ::sal_Bool _matchallwordforms ) throw (uno::RuntimeException) +{ + // seems not accurate + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarity") ), uno::makeAny( _matchallwordforms ) ); + mxPropertyReplace->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SearchSimilarityRelax") ), uno::makeAny( _matchallwordforms ) ); +} + +uno::Any SAL_CALL SwVbaFind::getStyle() throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +void SAL_CALL SwVbaFind::setStyle( const uno::Any& /*_style */ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +sal_Bool SAL_CALL +SwVbaFind::Execute( const uno::Any& FindText, const uno::Any& MatchCase, const uno::Any& MatchWholeWord, const uno::Any& MatchWildcards, const uno::Any& MatchSoundsLike, const uno::Any& MatchAllWordForms, const uno::Any& Forward, const uno::Any& Wrap, const uno::Any& Format, const uno::Any& ReplaceWith, const uno::Any& Replace, const uno::Any& /*MatchKashida*/, const uno::Any& /*MatchDiacritics*/, const uno::Any& /*MatchAlefHamza*/, const uno::Any& /*MatchControl*/, const uno::Any& /*MatchPrefix*/, const uno::Any& /*MatchSuffix*/, const uno::Any& /*MatchPhrase*/, const uno::Any& /*IgnoreSpace*/, const uno::Any& /*IgnorePunct*/ ) throw (uno::RuntimeException) +{ + sal_Bool result = sal_False; + if( FindText.hasValue() ) + { + rtl::OUString sText; + FindText >>= sText; + setText( sText ); + } + + sal_Bool bValue = sal_False; + if( MatchCase.hasValue() ) + { + MatchCase >>= bValue; + setMatchCase( bValue ); + } + + if( MatchWholeWord.hasValue() ) + { + MatchWholeWord >>= bValue; + setMatchWholeWord( bValue ); + } + + if( MatchWildcards.hasValue() ) + { + MatchWildcards >>= bValue; + setMatchWildcards( bValue ); + } + + if( MatchSoundsLike.hasValue() ) + { + MatchSoundsLike >>= bValue; + setMatchSoundsLike( bValue ); + } + + if( MatchAllWordForms.hasValue() ) + { + MatchAllWordForms >>= bValue; + setMatchAllWordForms( bValue ); + } + + if( Forward.hasValue() ) + { + Forward >>= bValue; + setForward( bValue ); + } + + if( Wrap.hasValue() ) + { + sal_Int32 nWrapType = 0; + Wrap >>= nWrapType; + setWrap( nWrapType ); + } + + if( Format.hasValue() ) + { + Format >>= bValue; + setFormat( bValue ); + } + + if( ReplaceWith.hasValue() ) + { + rtl::OUString sValue; + ReplaceWith >>= sValue; + SetReplaceWith( sValue ); + } + + if( Replace.hasValue() ) + { + sal_Int32 nValue(0); + Replace >>= nValue; + SetReplace( nValue ); + } + + result = SearchReplace(); + + return result; +} + +void SAL_CALL +SwVbaFind::ClearFormatting( ) throw (uno::RuntimeException) +{ + uno::Sequence< beans::PropertyValue > aSearchAttribs; + mxPropertyReplace->setSearchAttributes( aSearchAttribs ); +} + +rtl::OUString& +SwVbaFind::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaFind") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaFind::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Find" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbafind.hxx b/sw/source/ui/vba/vbafind.hxx new file mode 100644 index 000000000000..bd409770e466 --- /dev/null +++ b/sw/source/ui/vba/vbafind.hxx @@ -0,0 +1,104 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_FIND_HXX +#define SW_VBA_FIND_HXX + +#include <ooo/vba/word/XFind.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/util/XReplaceable.hpp> +#include <com/sun/star/util/XPropertyReplace.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XTextCursor.hpp> +#include <com/sun/star/view/XSelectionSupplier.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XFind > SwVbaFind_BASE; + +class SwVbaFind : public SwVbaFind_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::text::XTextRange > mxTextRange; + css::uno::Reference< css::util::XReplaceable > mxReplaceable; + css::uno::Reference< css::util::XPropertyReplace> mxPropertyReplace; + css::uno::Reference< css::text::XTextViewCursor> mxTVC; + css::uno::Reference< css::view::XSelectionSupplier> mxSelSupp; + sal_Bool mbReplace; + sal_Int32 mnReplaceType; + sal_Int32 mnWrap; + +private: + sal_Bool InRange( const css::uno::Reference< css::text::XTextRange >& xCurrentRange ) throw ( css::uno::RuntimeException ); + sal_Bool InEqualRange( const css::uno::Reference< css::text::XTextRange >& xCurrentRange ) throw ( css::uno::RuntimeException ); + void SetReplace( sal_Int32 type ); + void SetReplaceWith( const rtl::OUString& rText ) throw ( css::uno::RuntimeException ); + rtl::OUString GetReplaceWith() throw ( css::uno::RuntimeException ); + rtl::OUString ReplaceWildcards( const rtl::OUString& rText ) throw ( css::uno::RuntimeException ); + css::uno::Reference< css::text::XTextRange > FindOneElement() throw ( css::uno::RuntimeException ); + sal_Bool SearchReplace() throw ( css::uno::RuntimeException ); + +public: + SwVbaFind( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XTextRange >& xTextRange ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaFind(); + + // Attributes + virtual ::rtl::OUString SAL_CALL getText() throw (css::uno::RuntimeException); + virtual void SAL_CALL setText( const ::rtl::OUString& _text ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getReplacement() throw (css::uno::RuntimeException); + virtual void SAL_CALL setReplacement( const css::uno::Any& _replacement ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getForward() throw (css::uno::RuntimeException); + virtual void SAL_CALL setForward( ::sal_Bool _forward ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getWrap() throw (css::uno::RuntimeException); + virtual void SAL_CALL setWrap( ::sal_Int32 _wrap ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getFormat() throw (css::uno::RuntimeException); + virtual void SAL_CALL setFormat( ::sal_Bool _format ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMatchCase() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMatchCase( ::sal_Bool _matchcase ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMatchWholeWord() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMatchWholeWord( ::sal_Bool _matchwholeword ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMatchWildcards() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMatchWildcards( ::sal_Bool _matchwildcards ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMatchSoundsLike() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMatchSoundsLike( ::sal_Bool _matchsoundslike ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMatchAllWordForms() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMatchAllWordForms( ::sal_Bool _matchallwordforms ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getStyle() throw (css::uno::RuntimeException); + virtual void SAL_CALL setStyle( const css::uno::Any& _style ) throw (css::uno::RuntimeException); + + // Methods + virtual ::sal_Bool SAL_CALL Execute( const css::uno::Any& FindText, const css::uno::Any& MatchCase, const css::uno::Any& MatchWholeWord, const css::uno::Any& MatchWildcards, const css::uno::Any& MatchSoundsLike, const css::uno::Any& MatchAllWordForms, const css::uno::Any& Forward, const css::uno::Any& Wrap, const css::uno::Any& Format, const css::uno::Any& ReplaceWith, const css::uno::Any& Replace, const css::uno::Any& MatchKashida, const css::uno::Any& MatchDiacritics, const css::uno::Any& MatchAlefHamza, const css::uno::Any& MatchControl, const css::uno::Any& MatchPrefix, const css::uno::Any& MatchSuffix, const css::uno::Any& MatchPhrase, const css::uno::Any& IgnoreSpace, const css::uno::Any& IgnorePunct ) throw (css::uno::RuntimeException); + virtual void SAL_CALL ClearFormatting( ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_FIND_HXX */ diff --git a/sw/source/ui/vba/vbafont.cxx b/sw/source/ui/vba/vbafont.cxx new file mode 100644 index 000000000000..47f39bcbefda --- /dev/null +++ b/sw/source/ui/vba/vbafont.cxx @@ -0,0 +1,216 @@ +#include "vbafont.hxx" +#include <com/sun/star/awt/FontUnderline.hpp> +#include <ooo/vba/word/WdUnderline.hpp> +#include <hash_map> +#include <ooo/vba/word/WdColorIndex.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +const uno::Any aLongAnyTrue( sal_Int16(-1) ); +const uno::Any aLongAnyFalse( sal_Int16( 0 ) ); + +struct MapPair +{ + sal_Int32 nMSOConst; + sal_Int32 nOOOConst; +}; + +static MapPair UnderLineTable[] = { + { word::WdUnderline::wdUnderlineNone, com::sun::star::awt::FontUnderline::NONE }, + { word::WdUnderline::wdUnderlineSingle, com::sun::star::awt::FontUnderline::SINGLE }, + { word::WdUnderline::wdUnderlineWords, com::sun::star::awt::FontUnderline::SINGLE }, + { word::WdUnderline::wdUnderlineDouble, com::sun::star::awt::FontUnderline::DOUBLE }, + { word::WdUnderline::wdUnderlineDotted, com::sun::star::awt::FontUnderline::DOTTED }, + { word::WdUnderline::wdUnderlineThick, com::sun::star::awt::FontUnderline::BOLDDASH }, + { word::WdUnderline::wdUnderlineDash, com::sun::star::awt::FontUnderline::DASH }, + { word::WdUnderline::wdUnderlineDotDash, com::sun::star::awt::FontUnderline::DASHDOT }, + { word::WdUnderline::wdUnderlineDotDotDash, com::sun::star::awt::FontUnderline::DASHDOTDOT }, + { word::WdUnderline::wdUnderlineWavy, com::sun::star::awt::FontUnderline::WAVE }, + { word::WdUnderline::wdUnderlineDottedHeavy, com::sun::star::awt::FontUnderline::BOLDDOTTED }, + { word::WdUnderline::wdUnderlineDashHeavy, com::sun::star::awt::FontUnderline::BOLDDASH }, + { word::WdUnderline::wdUnderlineDotDashHeavy, com::sun::star::awt::FontUnderline::BOLDDASHDOT }, + { word::WdUnderline::wdUnderlineDotDotDashHeavy, com::sun::star::awt::FontUnderline::BOLDDASHDOTDOT }, + { word::WdUnderline::wdUnderlineWavyHeavy, com::sun::star::awt::FontUnderline::BOLDWAVE }, + { word::WdUnderline::wdUnderlineDashLong, com::sun::star::awt::FontUnderline::LONGDASH }, + { word::WdUnderline::wdUnderlineWavyDouble, com::sun::star::awt::FontUnderline::DOUBLEWAVE }, + { word::WdUnderline::wdUnderlineDashLongHeavy, com::sun::star::awt::FontUnderline::BOLDLONGDASH }, +}; + +typedef std::hash_map< sal_Int32, sal_Int32 > ConstToConst; +class UnderLineMapper +{ + ConstToConst MSO2OOO; + ConstToConst OOO2MSO; +private: + UnderLineMapper() + { + sal_Int32 nLen = sizeof( UnderLineTable )/ sizeof( UnderLineTable[0] ); + + for ( sal_Int32 index=0; index<nLen; ++index ) + { + MSO2OOO[ UnderLineTable[ index ].nMSOConst ] = UnderLineTable[ index ].nOOOConst; + OOO2MSO[ UnderLineTable[ index ].nOOOConst ] = UnderLineTable[ index ].nMSOConst; + } + } +public: + static rtl::OUString propName() + { + static rtl::OUString sPropName( RTL_CONSTASCII_USTRINGPARAM("CharUnderline") ); + return sPropName; + } + + static UnderLineMapper& instance() + { + static UnderLineMapper theMapper; + return theMapper; + } + + sal_Int32 getOOOFromMSO( sal_Int32 nMSOConst ) throw( lang::IllegalArgumentException ) + { + ConstToConst::iterator it = MSO2OOO.find( nMSOConst ); + if ( it == MSO2OOO.end() ) + throw lang::IllegalArgumentException(); + return it->second; + } + sal_Int32 getMSOFromOOO( sal_Int32 nOOOConst ) throw( lang::IllegalArgumentException ) + { + ConstToConst::iterator it = OOO2MSO.find( nOOOConst ); + if ( it == OOO2MSO.end() ) + throw lang::IllegalArgumentException(); + return it->second; + } +}; + +SwVbaFont::SwVbaFont( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< container::XIndexAccess >& xPalette, uno::Reference< css::beans::XPropertySet > xPropertySet ) throw ( css::uno::RuntimeException ) : SwVbaFont_BASE( xParent, xContext, xPalette, xPropertySet ) +{ +} + +uno::Any SAL_CALL +SwVbaFont::getUnderline() throw (uno::RuntimeException) +{ + sal_Int32 nOOVal = 0; + mxFont->getPropertyValue( UnderLineMapper::propName() ) >>= nOOVal; + return uno::makeAny( UnderLineMapper::instance().getMSOFromOOO( nOOVal ) ); +} + +void SAL_CALL +SwVbaFont::setUnderline( const uno::Any& _underline ) throw (uno::RuntimeException) +{ + sal_Int32 nMSOVal = 0; + + if ( _underline >>= nMSOVal ) + { + sal_Int32 nOOVal = UnderLineMapper::instance().getOOOFromMSO( nMSOVal ); + mxFont->setPropertyValue( UnderLineMapper::propName(), uno::makeAny( nOOVal ) ); + } +} + +rtl::OUString& +SwVbaFont::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaFont") ); + return sImplName; +} + +void SAL_CALL +SwVbaFont::setColorIndex( const uno::Any& _colorindex ) throw( uno::RuntimeException ) +{ + sal_Int32 nIndex = 0; + _colorindex >>= nIndex; + return setColor( OORGBToXLRGB(mxPalette->getByIndex( nIndex )) ); +} + +uno::Any SAL_CALL +SwVbaFont::getColorIndex() throw ( uno::RuntimeException ) +{ + sal_Int32 nColor = 0; + + XLRGBToOORGB( getColor() ) >>= nColor; + sal_Int32 nElems = mxPalette->getCount(); + sal_Int32 nIndex = 0; + for ( sal_Int32 count=0; count<nElems; ++count ) + { + sal_Int32 nPaletteColor = 0; + mxPalette->getByIndex( count ) >>= nPaletteColor; + if ( nPaletteColor == nColor ) + { + nIndex = count; + break; + } + } + return uno::makeAny( nIndex ); +} +uno::Any SAL_CALL +SwVbaFont::getSubscript() throw ( uno::RuntimeException ) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getSubscript() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Any SAL_CALL +SwVbaFont::getSuperscript() throw ( uno::RuntimeException ) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getSuperscript() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Any SAL_CALL +SwVbaFont::getBold() throw (uno::RuntimeException) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getBold() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Any SAL_CALL +SwVbaFont::getItalic() throw (uno::RuntimeException) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getItalic() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Any SAL_CALL +SwVbaFont::getStrikethrough() throw (css::uno::RuntimeException) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getStrikethrough() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Any SAL_CALL +SwVbaFont::getShadow() throw (uno::RuntimeException) +{ + sal_Bool bRes = sal_False; + SwVbaFont_BASE::getShadow() >>= bRes; + if ( bRes ) + return aLongAnyTrue; + return aLongAnyFalse; +} + +uno::Sequence< rtl::OUString > +SwVbaFont::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Font" ) ); + } + return aServiceNames; +} + + diff --git a/sw/source/ui/vba/vbafont.hxx b/sw/source/ui/vba/vbafont.hxx new file mode 100644 index 000000000000..1500c2a314dd --- /dev/null +++ b/sw/source/ui/vba/vbafont.hxx @@ -0,0 +1,31 @@ +#ifndef VBA_FONT_HXX +#define VBA_FONT_HXX + +#include <vbahelper/vbafontbase.hxx> +#include <ooo/vba/word/XFont.hpp> + +typedef cppu::ImplInheritanceHelper1< VbaFontBase, ov::word::XFont > SwVbaFont_BASE; + +class SwVbaFont : public SwVbaFont_BASE +{ +public: + SwVbaFont( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::container::XIndexAccess >& xPalette, css::uno::Reference< css::beans::XPropertySet > xPropertySet ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaFont(){} + + // Attributes + virtual void SAL_CALL setColorIndex( const css::uno::Any& _colorindex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getColorIndex() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getUnderline() throw (css::uno::RuntimeException); + virtual void SAL_CALL setUnderline( const css::uno::Any& _underline ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getSubscript() throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL getSuperscript() throw ( css::uno::RuntimeException ); + + virtual css::uno::Any SAL_CALL getBold() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getItalic() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getStrikethrough() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getShadow() throw (css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif diff --git a/sw/source/ui/vba/vbaglobals.cxx b/sw/source/ui/vba/vbaglobals.cxx new file mode 100644 index 000000000000..72938077cbdf --- /dev/null +++ b/sw/source/ui/vba/vbaglobals.cxx @@ -0,0 +1,196 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaglobals.cxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <vbahelper/helperdecl.hxx> +#include "vbaglobals.hxx" + +#include <comphelper/unwrapargs.hxx> + +#include <com/sun/star/lang/XMultiComponentFactory.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <cppuhelper/bootstrap.hxx> +#include "vbaapplication.hxx" +using namespace ::com::sun::star; +using namespace ::com::sun::star::uno; +using namespace ::ooo::vba; + + +rtl::OUString sDocCtxName( RTL_CONSTASCII_USTRINGPARAM("WordDocumentContext") ); + +// ============================================================================= +// SwVbaGlobals +// ============================================================================= + +SwVbaGlobals::SwVbaGlobals( uno::Sequence< uno::Any > const& aArgs, uno::Reference< uno::XComponentContext >const& rxContext ) : SwVbaGlobals_BASE( uno::Reference< XHelperInterface >(), rxContext, sDocCtxName ) +{ + OSL_TRACE("SwVbaGlobals::SwVbaGlobals()"); + uno::Sequence< beans::PropertyValue > aInitArgs( 2 ); + aInitArgs[ 0 ].Name = rtl::OUString::createFromAscii("Application"); + aInitArgs[ 0 ].Value = uno::makeAny( getApplication() ); + aInitArgs[ 1 ].Name = sDocCtxName; + aInitArgs[ 1 ].Value = uno::makeAny( getXSomethingFromArgs< frame::XModel >( aArgs, 0 ) ); + + init( aInitArgs ); +} + +SwVbaGlobals::~SwVbaGlobals() +{ + OSL_TRACE("SwVbaGlobals::~SwVbaGlobals"); +} + +// ============================================================================= +// XGlobals +// ============================================================================= +uno::Reference<word::XApplication > +SwVbaGlobals::getApplication() throw (uno::RuntimeException) +{ + OSL_TRACE("In SwVbaGlobals::getApplication"); + if ( !mxApplication.is() ) + mxApplication.set( new SwVbaApplication( mxContext) ); + + return mxApplication; +} + +uno::Reference<word::XSystem > SAL_CALL +SwVbaGlobals::getSystem() throw (uno::RuntimeException) +{ + return getApplication()->getSystem(); +} + +uno::Reference< word::XDocument > SAL_CALL +SwVbaGlobals::getActiveDocument() throw (uno::RuntimeException) +{ + return getApplication()->getActiveDocument(); +} + +uno::Reference< word::XWindow > SAL_CALL +SwVbaGlobals::getActiveWindow() throw (uno::RuntimeException) +{ + return getApplication()->getActiveWindow(); +} + +rtl::OUString SAL_CALL +SwVbaGlobals::getName() throw (uno::RuntimeException) +{ + return getApplication()->getName(); +} + +uno::Reference<word::XOptions > SAL_CALL +SwVbaGlobals::getOptions() throw (uno::RuntimeException) +{ + return getApplication()->getOptions(); +} + +uno::Any SAL_CALL +SwVbaGlobals::CommandBars( const uno::Any& aIndex ) throw (uno::RuntimeException) +{ + return getApplication()->CommandBars( aIndex ); +} + +uno::Any SAL_CALL +SwVbaGlobals::Documents( const uno::Any& index ) throw (uno::RuntimeException) +{ + return getApplication()->Documents( index ); +} + +uno::Any SAL_CALL +SwVbaGlobals::Addins( const uno::Any& index ) throw (uno::RuntimeException) +{ + return getApplication()->Addins( index ); +} + +uno::Any SAL_CALL +SwVbaGlobals::Dialogs( const uno::Any& index ) throw (uno::RuntimeException) +{ + return getApplication()->Dialogs( index ); +} + +uno::Reference<word::XSelection > SAL_CALL +SwVbaGlobals::getSelection() throw (uno::RuntimeException) +{ + return getApplication()->getSelection(); +} + +float SAL_CALL SwVbaGlobals::CentimetersToPoints( float _Centimeters ) throw (uno::RuntimeException) +{ + return getApplication()->CentimetersToPoints( _Centimeters ); +} + +rtl::OUString& +SwVbaGlobals::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaGlobals") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaGlobals::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Globals" ) ); + } + return aServiceNames; +} + +uno::Sequence< rtl::OUString > +SwVbaGlobals::getAvailableServiceNames( ) throw (uno::RuntimeException) +{ + static bool bInit = false; + static uno::Sequence< rtl::OUString > serviceNames( SwVbaGlobals_BASE::getAvailableServiceNames() ); + if ( !bInit ) + { + rtl::OUString names[] = { + ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "ooo.vba.word.Document" ) ), +// #FIXME #TODO make Application a proper service +// ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM ( "ooo.vba.word.Application" ) ), + }; + sal_Int32 nWordServices = ( sizeof( names )/ sizeof( names[0] ) ); + sal_Int32 startIndex = serviceNames.getLength(); + serviceNames.realloc( serviceNames.getLength() + nWordServices ); + for ( sal_Int32 index = 0; index < nWordServices; ++index ) + serviceNames[ startIndex + index ] = names[ index ]; + bInit = true; + } + return serviceNames; +} + +namespace globals +{ +namespace sdecl = comphelper::service_decl; +sdecl::vba_service_class_<SwVbaGlobals, sdecl::with_args<true> > serviceImpl; +extern sdecl::ServiceDecl const serviceDecl( + serviceImpl, + "SwVbaGlobals", + "ooo.vba.word.Globals" ); +} + diff --git a/sw/source/ui/vba/vbaglobals.hxx b/sw/source/ui/vba/vbaglobals.hxx new file mode 100644 index 000000000000..745c28a996f5 --- /dev/null +++ b/sw/source/ui/vba/vbaglobals.hxx @@ -0,0 +1,83 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbaglobals.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_GLOBALS_HXX +#define SW_VBA_GLOBALS_HXX + +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/lang/XInitialization.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <ooo/vba/word/XGlobals.hpp> +#include <ooo/vba/word/XApplication.hpp> +#include <ooo/vba/word/XSystem.hpp> +#include <ooo/vba/word/XOptions.hpp> +#include <ooo/vba/word/XSelection.hpp> +#include <cppuhelper/implbase1.hxx> +#include <vbahelper/vbahelper.hxx> +#include <vbahelper/vbaglobalbase.hxx> + +// ============================================================================= +// class SwVbaGlobals +// ============================================================================= + + +typedef ::cppu::ImplInheritanceHelper1< VbaGlobalsBase, ov::word::XGlobals > SwVbaGlobals_BASE; + +class SwVbaGlobals : public SwVbaGlobals_BASE +{ +private: + css::uno::Reference< ooo::vba::word::XApplication > mxApplication; + + virtual css::uno::Reference< ooo::vba::word::XApplication > getApplication() throw (css::uno::RuntimeException); + +public: + + SwVbaGlobals( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& rxContext ); + virtual ~SwVbaGlobals(); + + // XGlobals + virtual ::rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XSystem > SAL_CALL getSystem() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ov::word::XDocument > SAL_CALL getActiveDocument() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ov::word::XWindow > SAL_CALL getActiveWindow() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XOptions > SAL_CALL getOptions() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XSelection > SAL_CALL getSelection() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL CommandBars( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Documents( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Addins( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Dialogs( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual float SAL_CALL CentimetersToPoints( float _Centimeters ) throw (css::uno::RuntimeException); + // XMultiServiceFactory + virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_GLOBALS_HXX */ diff --git a/sw/source/ui/vba/vbaheaderfooter.cxx b/sw/source/ui/vba/vbaheaderfooter.cxx new file mode 100644 index 000000000000..31225c0fe167 --- /dev/null +++ b/sw/source/ui/vba/vbaheaderfooter.cxx @@ -0,0 +1,114 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaheaderfooter.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include <ooo/vba/word/WdHeaderFooterIndex.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include "vbarange.hxx" +#include <vbahelper/vbashapes.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaHeaderFooter::SwVbaHeaderFooter( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< frame::XModel >& xModel, const uno::Reference< beans::XPropertySet >& rProps, sal_Bool isHeader, sal_Int32 index ) throw ( uno::RuntimeException ) : SwVbaHeaderFooter_BASE( rParent, rContext ), mxModel( xModel ), mxPageStyleProps( rProps ), mbHeader( isHeader ), mnIndex( index ) +{ +} + +sal_Bool SAL_CALL SwVbaHeaderFooter::getIsHeader() throw (uno::RuntimeException) +{ + return mbHeader; +} + +sal_Bool SAL_CALL SwVbaHeaderFooter::getLinkToPrevious() throw (uno::RuntimeException) +{ + // seems always false + return sal_False; +} + +void SAL_CALL SwVbaHeaderFooter::setLinkToPrevious( ::sal_Bool /*_linktoprevious*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +uno::Reference< word::XRange > SAL_CALL SwVbaHeaderFooter::getRange() throw (uno::RuntimeException) +{ + rtl::OUString sPropsNameText; + if( mbHeader ) + { + sPropsNameText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderText") ); + } + else + { + sPropsNameText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterText") ); + } + if( mnIndex == word::WdHeaderFooterIndex::wdHeaderFooterEvenPages ) + { + sPropsNameText.concat( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Left") ) ); + } + + uno::Reference< text::XText > xText( mxPageStyleProps->getPropertyValue( sPropsNameText ), uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextDocument > xDocument( mxModel, uno::UNO_QUERY_THROW ); + return uno::Reference< word::XRange >( new SwVbaRange( this, mxContext, xDocument, xText->getStart(), xText->getEnd(), xText ) ); +} + +uno::Any SAL_CALL +SwVbaHeaderFooter::Shapes( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( mxModel, uno::UNO_QUERY_THROW ); + //uno::Reference< drawing::XShapes > xShapes( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xIndexAccess( xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW ); + uno::Reference< XCollection > xCol( new ScVbaShapes( this, mxContext, xIndexAccess, mxModel ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +rtl::OUString& +SwVbaHeaderFooter::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaHeaderFooter") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaHeaderFooter::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Pane" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbaheaderfooter.hxx b/sw/source/ui/vba/vbaheaderfooter.hxx new file mode 100644 index 000000000000..8308102abe2c --- /dev/null +++ b/sw/source/ui/vba/vbaheaderfooter.hxx @@ -0,0 +1,63 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_HEADERFOOTER_HXX +#define SW_VBA_HEADERFOOTER_HXX + +#include <ooo/vba/word/XHeaderFooter.hpp> +#include <ooo/vba/word/XRange.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XHeaderFooter > SwVbaHeaderFooter_BASE; + +class SwVbaHeaderFooter : public SwVbaHeaderFooter_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::beans::XPropertySet > mxPageStyleProps; + sal_Bool mbHeader; + sal_Int32 mnIndex; + +public: + SwVbaHeaderFooter( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::beans::XPropertySet >& xProps, sal_Bool isHeader, sal_Int32 index ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaHeaderFooter(){} + + // Attributes + virtual ::sal_Bool SAL_CALL getIsHeader() throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getLinkToPrevious() throw (css::uno::RuntimeException); + virtual void SAL_CALL setLinkToPrevious( ::sal_Bool _linktoprevious ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ::ooo::vba::word::XRange > SAL_CALL getRange() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Shapes( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_HEADERFOOTER_HXX */ diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.cxx b/sw/source/ui/vba/vbaheaderfooterhelper.cxx new file mode 100644 index 000000000000..afc83ed31140 --- /dev/null +++ b/sw/source/ui/vba/vbaheaderfooterhelper.cxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaheaderfooterhelper.hxx" +#include "wordvbahelper.hxx" +#include <comphelper/processfactory.hxx> +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/container/XNameAccess.hpp> + +using namespace ::com::sun::star; +using namespace ::ooo::vba; + +#define FIRST_PAGE 1; + +// Class HeaderFooterHelper + +sal_Bool HeaderFooterHelper::isHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( xModel ), uno::UNO_QUERY_THROW ); + + sal_Bool isOn = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn"))) >>= isOn; + if( !isOn ) + return sal_False; + + sal_Bool isShared = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsShared"))) >>= isShared; + + rtl::OUString aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderText") ); + if( !isShared ) + { + if( 0 == xPageCursor->getPage() % 2 ) + { + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderTextLeft") ); + } + else + { + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderTextRight") ); + } + } + + uno::Reference< text::XText > xText( xStyleProps->getPropertyValue( aPropText ), uno::UNO_QUERY_THROW ); + //FIXME: can not compare in this way? + return ( xText == xCurrentText ); +} + +sal_Bool HeaderFooterHelper::isFirstPageHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isHeader( xModel, xCurrentText ) ) + { + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + // FIXME: getPage allways returns 1 + sal_Int32 nPage = xPageCursor->getPage(); + return nPage == FIRST_PAGE; + } + return sal_False; +} + +sal_Bool HeaderFooterHelper::isEvenPagesHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isHeader( xModel, xCurrentText ) ) + { + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( xModel ), uno::UNO_QUERY_THROW ); + sal_Bool isShared = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsShared"))) >>= isShared; + if( !isShared ) + { + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + return ( 0 == xPageCursor->getPage() % 2 ); + } + } + return sal_False; +} + +sal_Bool HeaderFooterHelper::isFooter( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( xModel ), uno::UNO_QUERY_THROW ); + + sal_Bool isOn = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn"))) >>= isOn; + if( !isOn ) + return sal_False; + + sal_Bool isShared = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsShared"))) >>= isShared; + + rtl::OUString aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterText") ); + if( !isShared ) + { + if( 0 == xPageCursor->getPage() % 2 ) + { + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterTextLeft") ); + } + else + { + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterTextRight") ); + } + } + + uno::Reference< text::XText > xText( xStyleProps->getPropertyValue( aPropText ), uno::UNO_QUERY_THROW ); + + return ( xText == xCurrentText ); +} + +sal_Bool HeaderFooterHelper::isFirstPageFooter( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isFooter( xModel, xCurrentText ) ) + { + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + sal_Int32 nPage = xPageCursor->getPage(); + return nPage == FIRST_PAGE; + } + return sal_False; +} + +sal_Bool HeaderFooterHelper::isEvenPagesFooter( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isFooter( xModel, xCurrentText ) ) + { + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( xModel ), uno::UNO_QUERY_THROW ); + sal_Bool isShared = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsShared"))) >>= isShared; + if( !isShared ) + { + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + return ( 0 == xPageCursor->getPage() % 2 ); + } + } + return sal_False; +} + +sal_Bool HeaderFooterHelper::isPrimaryHeader( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isHeader( xModel, xCurrentText ) ) + { + return( !( isFirstPageHeader( xModel, xCurrentText ) && isEvenPagesHeader( xModel, xCurrentText ) ) ); + } + return sal_False; +} + +sal_Bool HeaderFooterHelper::isPrimaryFooter( const uno::Reference< frame::XModel >& xModel, const uno::Reference< text::XText >& xCurrentText ) throw (uno::RuntimeException) +{ + if( isHeader( xModel, xCurrentText ) ) + { + return( !( isFirstPageFooter( xModel, xCurrentText ) && isEvenPagesFooter( xModel, xCurrentText ) ) ); + } + return sal_False; +} diff --git a/sw/source/ui/vba/vbaheaderfooterhelper.hxx b/sw/source/ui/vba/vbaheaderfooterhelper.hxx new file mode 100644 index 000000000000..577e92b6f325 --- /dev/null +++ b/sw/source/ui/vba/vbaheaderfooterhelper.hxx @@ -0,0 +1,52 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbahelper.hxx,v $ + * $Revision: 1.5.32.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_WORD_VBA_HEADERFOOTERHELPER_HXX +#define SW_WORD_VBA_HEADERFOOTERHELPER_HXX + +#include <vbahelper/vbahelper.hxx> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XPageCursor.hpp> +#include <com/sun/star/style/XStyle.hpp> + +class HeaderFooterHelper +{ +public: + static sal_Bool isHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isFirstPageHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isEvenPagesHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isFirstPageFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isEvenPagesFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isPrimaryHeader( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); + static sal_Bool isPrimaryFooter( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XText >& xCurrentText ) throw (css::uno::RuntimeException); +}; + +#endif diff --git a/sw/source/ui/vba/vbainformationhelper.cxx b/sw/source/ui/vba/vbainformationhelper.cxx new file mode 100644 index 000000000000..6c1754189af7 --- /dev/null +++ b/sw/source/ui/vba/vbainformationhelper.cxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbainformationhelper.hxx" +#include <com/sun/star/text/XPageCursor.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include "wordvbahelper.hxx" +#include <docsh.hxx> +#include <doc.hxx> +#include <vbahelper/vbahelper.hxx> +#include <swtypes.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +static const sal_Int32 DEFAULT_PAGE_DISTANCE = 500; + +sal_Int32 SwVbaInformationHelper::handleWdActiveEndPageNumber( const css::uno::Reference< css::text::XTextViewCursor >& xTVCursor ) throw( css::uno::RuntimeException ) +{ + uno::Reference< text::XPageCursor > xPageCursor( xTVCursor, uno::UNO_QUERY_THROW ); + return xPageCursor->getPage(); +} + +sal_Int32 SwVbaInformationHelper::handleWdNumberOfPagesInDocument( const css::uno::Reference< css::frame::XModel >& xModel ) throw( css::uno::RuntimeException ) +{ + return word::getPageCount( xModel ); +} + +double SwVbaInformationHelper::handleWdVerticalPositionRelativeToPage( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XTextViewCursor >& xTVCursor ) throw( css::uno::RuntimeException ) +{ + xTVCursor->collapseToStart(); + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( xModel ), uno::UNO_QUERY_THROW ); + sal_Int32 nTopMargin = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin") ) ) >>= nTopMargin; + sal_Int32 nCurrentPos = xTVCursor->getPosition().Y; + + sal_Int32 nCurrentPage = handleWdActiveEndPageNumber( xTVCursor ); + sal_Int32 nPageHeight = word::getDocShell( xModel )->GetDoc()->GetPageSize( nCurrentPage, sal_False ).Height(); + // FIXME: handle multipul page style + // it is very strange that the curros position is incorrect when open Word file. + // e.g. if current cursor in the top left of the text body of the first page without header, + // the top value of current position should be 0, but is 201 when open a Word file. + nCurrentPos = nCurrentPos + nTopMargin - ( DEFAULT_PAGE_DISTANCE + TWIP_TO_MM100( nPageHeight ) ) * ( nCurrentPage - 1 ); + return Millimeter::getInPoints( nCurrentPos ); +} diff --git a/sw/source/ui/vba/vbainformationhelper.hxx b/sw/source/ui/vba/vbainformationhelper.hxx new file mode 100644 index 000000000000..194973ba9814 --- /dev/null +++ b/sw/source/ui/vba/vbainformationhelper.hxx @@ -0,0 +1,46 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_INFORMATIONHELPER_HXX +#define SW_VBA_INFORMATIONHELPER_HXX + +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> + +class SwVbaInformationHelper +{ +public: + static sal_Int32 handleWdActiveEndPageNumber( const css::uno::Reference< css::text::XTextViewCursor >& xTVCursor ) throw( css::uno::RuntimeException ); + static sal_Int32 handleWdNumberOfPagesInDocument( const css::uno::Reference< css::frame::XModel >& xModel ) throw( css::uno::RuntimeException ); + static double handleWdVerticalPositionRelativeToPage( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XTextViewCursor >& xTVCursor ) throw( css::uno::RuntimeException ); + //static double verticalPositionRelativeToPageBoundary( const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::text::XTextViewCursor >& xTVCursor, const css::uno::Reference< css::beans::XPropertySet >& xStyleProps ) throw( css::uno::RuntimeException ); + +}; +#endif /* SW_VBA_INFORMATIONHELPER_HXX */ diff --git a/sw/source/ui/vba/vbaoptions.cxx b/sw/source/ui/vba/vbaoptions.cxx new file mode 100644 index 000000000000..b6ce3083b1ed --- /dev/null +++ b/sw/source/ui/vba/vbaoptions.cxx @@ -0,0 +1,287 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microoptionss, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaoptions.hxx" +#include <vbahelper/vbahelper.hxx> +#include <ooo/vba/word/WdDefaultFilePath.hpp> +#include <ooo/vba/word/WdLineStyle.hpp> +#include <ooo/vba/word/WdLineWidth.hpp> +#include <ooo/vba/word/WdColorIndex.hpp> +#include <com/sun/star/util/XStringSubstitution.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <osl/file.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaOptions::SwVbaOptions( uno::Reference<uno::XComponentContext >& xContext ) throw ( uno::RuntimeException ) : SwVbaOptions_BASE( uno::Reference< XHelperInterface >(), xContext ) +{ + mxFactory.set( comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW ); +} + +SwVbaOptions::~SwVbaOptions() +{ +} + +uno::Any SAL_CALL +SwVbaOptions::DefaultFilePath( sal_Int32 _path ) throw ( uno::RuntimeException ) +{ + switch( _path ) + { + case word::WdDefaultFilePath::wdDocumentsPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Work") ); + break; + } + case word::WdDefaultFilePath::wdPicturesPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Gallery") ); + break; + } + case word::WdDefaultFilePath::wdUserTemplatesPath: + case word::WdDefaultFilePath::wdWorkgroupTemplatesPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Template") ); + break; + } + case word::WdDefaultFilePath::wdStartupPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Addin") ); + break; + } + case word::WdDefaultFilePath::wdUserOptionsPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("UserConfig") ); + break; + } + case word::WdDefaultFilePath::wdToolsPath: + case word::WdDefaultFilePath::wdProgramPath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Module") ); + break; + } + case word::WdDefaultFilePath::wdTempFilePath: + { + msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Temp") ); + break; + } + default: + { + DebugHelper::exception( SbERR_NOT_IMPLEMENTED, rtl::OUString() ); + break; + } + } + return uno::makeAny( uno::Reference< XPropValue > ( new ScVbaPropValue( this ) ) ); +} + +void SwVbaOptions::setValueEvent( const uno::Any& value ) +{ + rtl::OUString sNewPath; + value >>= sNewPath; + rtl::OUString sNewPathUrl; + ::osl::File::getFileURLFromSystemPath( sNewPath, sNewPathUrl ); + uno::Reference< beans::XPropertySet > xPathSettings( mxFactory->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.PathSettings") ), uno::UNO_QUERY_THROW ); + rtl::OUString sOldPathUrl; + xPathSettings->getPropertyValue( msDefaultFilePath ) >>= sOldPathUrl; + // path could be a multipath, Microsoft doesn't support this feature in Word currently + // only the last path is from interest. + sal_Int32 nIndex = sOldPathUrl.lastIndexOf( sal_Unicode(';') ); + if( nIndex != -1 ) + { + sNewPathUrl = sOldPathUrl.copy( 0, nIndex + 1 ).concat( sNewPathUrl ); + } + xPathSettings->setPropertyValue( msDefaultFilePath, uno::makeAny( sNewPathUrl ) ); +} + +uno::Any SwVbaOptions::getValueEvent() +{ + uno::Reference< beans::XPropertySet > xPathSettings( mxFactory->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.PathSettings") ), uno::UNO_QUERY_THROW ); + rtl::OUString sPathUrl; + xPathSettings->getPropertyValue( msDefaultFilePath ) >>= sPathUrl; + // path could be a multipath, Microsoft doesn't support this feature in Word currently + // only the last path is from interest. + sal_Int32 nIndex = sPathUrl.lastIndexOf( sal_Unicode(';') ); + if( nIndex != -1 ) + { + sPathUrl = sPathUrl.copy( nIndex + 1 ); + } + rtl::OUString sPath; + ::osl::File::getSystemPathFromFileURL( sPathUrl, sPath ); + return uno::makeAny( sPath ); +} + +sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderLineStyle() throw (uno::RuntimeException) +{ + return word::WdLineStyle::wdLineStyleSingle; +} + +void SAL_CALL SwVbaOptions::setDefaultBorderLineStyle( ::sal_Int32 /*_defaultborderlinestyle*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderLineWidth() throw (uno::RuntimeException) +{ + return word::WdLineWidth::wdLineWidth050pt; +} + +void SAL_CALL SwVbaOptions::setDefaultBorderLineWidth( ::sal_Int32 /*_defaultborderlinewidth*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderColorIndex() throw (uno::RuntimeException) +{ + return word::WdColorIndex::wdAuto; +} + +void SAL_CALL SwVbaOptions::setDefaultBorderColorIndex( ::sal_Int32 /*_defaultbordercolorindex*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getReplaceSelection() throw (uno::RuntimeException) +{ + return sal_True; +} + +void SAL_CALL SwVbaOptions::setReplaceSelection( ::sal_Bool /*_replaceselection*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getMapPaperSize() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setMapPaperSize( ::sal_Bool /*_mappapersize*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyHeadings() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyHeadings( ::sal_Bool /*_autoformatasyoutypeapplyheadings*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyBulletedLists() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyBulletedLists( ::sal_Bool /*_autoformatasyoutypeapplybulletedlists*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyNumberedLists() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyNumberedLists( ::sal_Bool /*_autoformatasyoutypeapplynumberedlists*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeFormatListItemBeginning() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeFormatListItemBeginning( ::sal_Bool /*_autoformatasyoutypeformatlistitembeginning*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeDefineStyles() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeDefineStyles( ::sal_Bool /*_autoformatasyoutypedefinestyles*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyHeadings() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatApplyHeadings( ::sal_Bool /*_autoformatapplyheadings*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyLists() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatApplyLists( ::sal_Bool /*_autoformatapplylists*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyBulletedLists() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaOptions::setAutoFormatApplyBulletedLists( ::sal_Bool /*_autoformatapplybulletedlists*/ ) throw (uno::RuntimeException) +{ + // not support in Writer +} + + +rtl::OUString& +SwVbaOptions::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaOptions") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaOptions::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Options" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbaoptions.hxx b/sw/source/ui/vba/vbaoptions.hxx new file mode 100644 index 000000000000..45cc56b9c0e2 --- /dev/null +++ b/sw/source/ui/vba/vbaoptions.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbasystem.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_OPTIONS_HXX +#define SW_VBA_OPTIONS_HXX + +#include <ooo/vba/word/XOptions.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <vbahelper/vbapropvalue.hxx> +#include <comphelper/processfactory.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XOptions > SwVbaOptions_BASE; + +class SwVbaOptions : public SwVbaOptions_BASE, + public PropListener +{ +private: + rtl::OUString msDefaultFilePath; + css::uno::Reference< css::lang::XMultiServiceFactory > mxFactory; +public: + SwVbaOptions( css::uno::Reference< css::uno::XComponentContext >& m_xContext ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaOptions(); + + // Attributes + virtual ::sal_Int32 SAL_CALL getDefaultBorderLineStyle() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDefaultBorderLineStyle( ::sal_Int32 _defaultborderlinestyle ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getDefaultBorderLineWidth() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDefaultBorderLineWidth( ::sal_Int32 _defaultborderlinewidth ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getDefaultBorderColorIndex() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDefaultBorderColorIndex( ::sal_Int32 _defaultbordercolorindex ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getReplaceSelection() throw (css::uno::RuntimeException); + virtual void SAL_CALL setReplaceSelection( ::sal_Bool _replaceselection ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getMapPaperSize() throw (css::uno::RuntimeException); + virtual void SAL_CALL setMapPaperSize( ::sal_Bool _mappapersize ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatAsYouTypeApplyHeadings() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatAsYouTypeApplyHeadings( ::sal_Bool _autoformatasyoutypeapplyheadings ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatAsYouTypeApplyBulletedLists() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatAsYouTypeApplyBulletedLists( ::sal_Bool _autoformatasyoutypeapplybulletedlists ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatAsYouTypeApplyNumberedLists() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatAsYouTypeApplyNumberedLists( ::sal_Bool _autoformatasyoutypeapplynumberedlists ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatAsYouTypeFormatListItemBeginning() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatAsYouTypeFormatListItemBeginning( ::sal_Bool _autoformatasyoutypeformatlistitembeginning ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatAsYouTypeDefineStyles() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatAsYouTypeDefineStyles( ::sal_Bool _autoformatasyoutypedefinestyles ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatApplyHeadings() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatApplyHeadings( ::sal_Bool _autoformatapplyheadings ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatApplyLists() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatApplyLists( ::sal_Bool _autoformatapplylists ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getAutoFormatApplyBulletedLists() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAutoFormatApplyBulletedLists( ::sal_Bool _autoformatapplybulletedlists ) throw (css::uno::RuntimeException); + + // Methods + virtual css::uno::Any SAL_CALL DefaultFilePath( sal_Int32 _path ) throw ( css::uno::RuntimeException ); + + //PropListener + virtual void setValueEvent( const css::uno::Any& value ); + virtual css::uno::Any getValueEvent(); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_OPTIONS_HXX */ diff --git a/sw/source/ui/vba/vbapagesetup.cxx b/sw/source/ui/vba/vbapagesetup.cxx new file mode 100644 index 000000000000..08fd10da2a6d --- /dev/null +++ b/sw/source/ui/vba/vbapagesetup.cxx @@ -0,0 +1,275 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * $Revision$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbapagesetup.hxx" +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XPageCursor.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <ooo/vba/word/WdSectionStart.hpp> +#include <ooo/vba/word/WdOrientation.hpp> +#include "wordvbahelper.hxx" + +using namespace ::com::sun::star; +using namespace ::ooo::vba; + +SwVbaPageSetup::SwVbaPageSetup(const uno::Reference< XHelperInterface >& xParent, + const uno::Reference< uno::XComponentContext >& xContext, + const uno::Reference< frame::XModel >& xModel, + const uno::Reference< beans::XPropertySet >& xProps ) throw (uno::RuntimeException): + SwVbaPageSetup_BASE( xParent, xContext ) +{ + mxModel.set( xModel, uno::UNO_QUERY_THROW ); + mxPageProps.set( xProps, uno::UNO_QUERY_THROW ); + mnOrientPortrait = word::WdOrientation::wdOrientPortrait; + mnOrientLandscape = word::WdOrientation::wdOrientLandscape; +} + +double SAL_CALL SwVbaPageSetup::getGutter() throw (uno::RuntimeException) +{ + // not support in Writer + return 0; +} + +void SAL_CALL SwVbaPageSetup::setGutter( double _gutter ) throw (uno::RuntimeException) +{ + // default add gutter into left margin + if( _gutter != 0 ) + { + double margin = VbaPageSetupBase::getLeftMargin() + _gutter; + VbaPageSetupBase::setLeftMargin( margin ); + } +} + +double SAL_CALL SwVbaPageSetup::getHeaderDistance() throw (uno::RuntimeException) +{ + sal_Bool isHeaderOn = sal_False; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn"))) >>= isHeaderOn; + if( !isHeaderOn ) + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn")), uno::makeAny( sal_True ) ); + return VbaPageSetupBase::getHeaderMargin(); +} + + /** + * changes the value of TopMargin to the value of new MS-Word-HeaderDistance. Subtracts the difference + * between old TopMargin and the new headerDistance from the value of HeaderSpacing (which defines the + * space between the header and the body of the text). calculates the new HeaderHeight (= height of the + * header + headerBodyDistance). + * + * @param: headerDistance is the value that is set in MS Word for the distance from the top of the page + * to the header + */ +void SAL_CALL SwVbaPageSetup::setHeaderDistance( double _headerdistance ) throw (uno::RuntimeException) +{ + sal_Int32 newHeaderDistance = Millimeter::getInHundredthsOfOneMillimeter( _headerdistance ); + sal_Bool isHeaderOn = sal_False; + sal_Int32 aktTopMargin = 0; + sal_Int32 aktSpacing = 0; + sal_Int32 aktHeaderHeight = 0; + + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn"))) >>= isHeaderOn; + if( !isHeaderOn ) + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn")), uno::makeAny( sal_True ) ); + + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin"))) >>= aktTopMargin; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderBodyDistance"))) >>= aktSpacing; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderHeight"))) >>= aktHeaderHeight; + + sal_Int32 newSpacing = aktSpacing - ( newHeaderDistance - aktTopMargin ); + sal_Int32 height = aktHeaderHeight - aktSpacing; + sal_Int32 newHeaderHeight = newSpacing + height; + + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin")), uno::makeAny( newHeaderDistance ) ); + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderBodyDistance")), uno::makeAny( newSpacing ) ); + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderHeight")), uno::makeAny( newHeaderHeight ) ); +} + +double SAL_CALL SwVbaPageSetup::getFooterDistance() throw (uno::RuntimeException) +{ + sal_Bool isFooterOn = sal_False; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn"))) >>= isFooterOn; + if( !isFooterOn ) + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn")), uno::makeAny( sal_True ) ); + return VbaPageSetupBase::getFooterMargin(); +} + +void SAL_CALL SwVbaPageSetup::setFooterDistance( double _footerdistance ) throw (uno::RuntimeException) +{ + sal_Int32 newFooterDistance = Millimeter::getInHundredthsOfOneMillimeter( _footerdistance ); + sal_Bool isFooterOn = sal_False; + sal_Int32 aktBottomMargin = 0; + sal_Int32 aktSpacing = 0; + sal_Int32 aktFooterHeight = 0; + + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn"))) >>= isFooterOn; + if( !isFooterOn ) + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn")), uno::makeAny( sal_True ) ); + + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin"))) >>= aktBottomMargin; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterBodyDistance"))) >>= aktSpacing; + mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterHeight"))) >>= aktFooterHeight; + + sal_Int32 newSpacing = aktSpacing - ( newFooterDistance - aktBottomMargin ); + sal_Int32 height = aktFooterHeight - aktSpacing; + sal_Int32 newFooterHeight = newSpacing + height; + + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin")), uno::makeAny( newFooterDistance ) ); + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterBodyDistance")), uno::makeAny( newSpacing ) ); + mxPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterHeight")), uno::makeAny( newFooterHeight ) ); +} + +sal_Bool SAL_CALL SwVbaPageSetup::getDifferentFirstPageHeaderFooter() throw (uno::RuntimeException) +{ + rtl::OUString pageStyle = getStyleOfFirstPage(); + if( pageStyle.equalsAscii( "First Page" ) ) + return sal_True; + + return sal_False; +} + +void SAL_CALL SwVbaPageSetup::setDifferentFirstPageHeaderFooter( sal_Bool status ) throw (uno::RuntimeException) +{ + if( status == getDifferentFirstPageHeaderFooter() ) + return; + + rtl::OUString newStyle; + if( status ) + newStyle = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("First Page") ); + else + newStyle = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Standard") ); + + uno::Reference< beans::XPropertySet > xStyleProps( word::getCurrentPageStyle( mxModel ), uno::UNO_QUERY_THROW ); + sal_Int32 nTopMargin = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin"))) >>= nTopMargin; + sal_Int32 nBottomMargin = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin"))) >>= nBottomMargin; + sal_Int32 nLeftMargin = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LeftMargin"))) >>= nLeftMargin; + sal_Int32 nRightMargin = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("RightMargin"))) >>= nRightMargin; + sal_Int32 nHeaderHeight = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderHeight"))) >>= nHeaderHeight; + sal_Int32 nFooterHeight = 0; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterHeight"))) >>= nFooterHeight; + + sal_Bool isHeaderOn = sal_False; + xStyleProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn"))) >>= isHeaderOn; + if( isHeaderOn ) + { + nTopMargin += nHeaderHeight; + nBottomMargin += nFooterHeight; + xStyleProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn")), uno::makeAny( sal_False ) ); + xStyleProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn")), uno::makeAny( sal_False ) ); + } + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( mxModel ), uno::UNO_QUERY_THROW ); + if( xPageCursor->getPage() != 1 ) + { + xPageCursor->jumpToFirstPage(); + } + + uno::Reference< beans::XPropertySet > xCursorProps( xPageCursor, uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xTableProps( xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextTable") ) ), uno::UNO_QUERY ); + if( xTableProps.is() ) + { + xTableProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageDescName") ), uno::makeAny( newStyle ) ); + } + else + { + xCursorProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageDescName") ), uno::makeAny( newStyle ) ); + } + + uno::Reference< beans::XPropertySet > xFirstPageProps( word::getCurrentPageStyle( mxModel ), uno::UNO_QUERY_THROW ); + xFirstPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin") ), uno::makeAny( nTopMargin ) ); + xFirstPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin") ), uno::makeAny( nBottomMargin ) ); + xFirstPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LeftMargin") ), uno::makeAny( nLeftMargin ) ); + xFirstPageProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("RightMargin") ), uno::makeAny( nRightMargin ) ); +} + +rtl::OUString SwVbaPageSetup::getStyleOfFirstPage() throw (uno::RuntimeException) +{ + rtl::OUString styleFirstPage; + uno::Reference< text::XPageCursor > xPageCursor( word::getXTextViewCursor( mxModel ), uno::UNO_QUERY_THROW ); + if( xPageCursor->getPage() != 1 ) + { + xPageCursor->jumpToFirstPage(); + } + + uno::Reference< beans::XPropertySet > xCursorProps( xPageCursor, uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xTableProps( xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextTable") ) ), uno::UNO_QUERY ); + if( xTableProps.is() ) + { + xTableProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageDescName") ) ) >>= styleFirstPage; + } + else + { + xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageDescName") ) ) >>= styleFirstPage; + } + return styleFirstPage; +} + +::sal_Int32 SAL_CALL SwVbaPageSetup::getSectionStart() throw (uno::RuntimeException) +{ + // FIXME: + sal_Int32 wdSectionStart = word::WdSectionStart::wdSectionNewPage; + uno::Reference< container::XNamed > xNamed( mxPageProps, uno::UNO_QUERY_THROW ); + rtl::OUString sStyleName = xNamed->getName(); + //mxPageProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Name") ) ) >>= sStyleName; + if( sStyleName.equalsAscii("Left Page") ) + wdSectionStart = word::WdSectionStart::wdSectionEvenPage; + else if( sStyleName.equalsAscii("Right Page") ) + wdSectionStart = word::WdSectionStart::wdSectionOddPage; + else + wdSectionStart = word::WdSectionStart::wdSectionNewPage; + return wdSectionStart; +} + +void SAL_CALL SwVbaPageSetup::setSectionStart( ::sal_Int32 /*_sectionstart*/ ) throw (uno::RuntimeException) +{ + // fail to find corresponding feature in Writer + // #FIXME: +} + +rtl::OUString& +SwVbaPageSetup::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaPageSetup") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaPageSetup::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.PageSetup" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbapagesetup.hxx b/sw/source/ui/vba/vbapagesetup.hxx new file mode 100644 index 000000000000..7a039550cb21 --- /dev/null +++ b/sw/source/ui/vba/vbapagesetup.hxx @@ -0,0 +1,70 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile$ + * $Revision$ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_PAGESETUP_HXX +#define SW_VBA_PAGESETUP_HXX + +#include <cppuhelper/implbase1.hxx> +#include <ooo/vba/word/XPageSetup.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbapagesetupbase.hxx> + +typedef cppu::ImplInheritanceHelper1< VbaPageSetupBase, ooo::vba::word::XPageSetup > SwVbaPageSetup_BASE; + +class SwVbaPageSetup : public SwVbaPageSetup_BASE +{ +private: + rtl::OUString getStyleOfFirstPage() throw (css::uno::RuntimeException); + +public: + SwVbaPageSetup( const css::uno::Reference< ooo::vba::XHelperInterface >& xParent, + const css::uno::Reference< css::uno::XComponentContext >& xContext, + const css::uno::Reference< css::frame::XModel >& xModel, + const css::uno::Reference< css::beans::XPropertySet >& xProps ) throw (css::uno::RuntimeException); + virtual ~SwVbaPageSetup(){} + + // Attributes + virtual double SAL_CALL getGutter() throw (css::uno::RuntimeException); + virtual void SAL_CALL setGutter( double _gutter ) throw (css::uno::RuntimeException); + virtual double SAL_CALL getHeaderDistance() throw (css::uno::RuntimeException); + virtual void SAL_CALL setHeaderDistance( double _headerdistance ) throw (css::uno::RuntimeException); + virtual double SAL_CALL getFooterDistance() throw (css::uno::RuntimeException); + virtual void SAL_CALL setFooterDistance( double _footerdistance ) throw (css::uno::RuntimeException); + virtual sal_Bool SAL_CALL getDifferentFirstPageHeaderFooter() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDifferentFirstPageHeaderFooter( sal_Bool status ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getSectionStart() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSectionStart( ::sal_Int32 _sectionstart ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif diff --git a/sw/source/ui/vba/vbapalette.cxx b/sw/source/ui/vba/vbapalette.cxx new file mode 100644 index 000000000000..12554e792e5e --- /dev/null +++ b/sw/source/ui/vba/vbapalette.cxx @@ -0,0 +1,75 @@ +#include "vbapalette.hxx" +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <ooo/vba/word/WdColor.hpp> +#include <ooo/vba/word/WdColorIndex.hpp> + +using namespace ::ooo::vba; +using namespace ::ooo::vba::word; +using namespace ::com::sun::star; + +static const sal_Int32 ColorTable[] = +{ +WdColor::wdColorAutomatic, // 0 +WdColor::wdColorBlack, // 1 +WdColor::wdColorBlue, // 2 +WdColor::wdColorTurquoise, // 3 +WdColor::wdColorBrightGreen, // 4 +WdColor::wdColorPink, // 5 +WdColor::wdColorRed, // 6 +WdColor::wdColorYellow, // 7 +WdColor::wdColorWhite, // 8 +WdColor::wdColorDarkBlue, // 9 +WdColor::wdColorTeal, // 10 +WdColor::wdColorGreen, // 11 +WdColor::wdColorViolet, // 12 +WdColor::wdColorDarkRed, // 13 +WdColor::wdColorDarkYellow, // 14 +WdColor::wdColorGray50, // 15 +WdColor::wdColorGray25, // 16 +}; + +typedef ::cppu::WeakImplHelper1< container::XIndexAccess > XIndexAccess_BASE; + +class DefaultPalette : public XIndexAccess_BASE +{ +public: + DefaultPalette(){} + + // Methods XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount() throw (uno::RuntimeException) + { + return sizeof(ColorTable) / sizeof(ColorTable[0]); + } + + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( Index < 0 || Index >= getCount() ) + throw lang::IndexOutOfBoundsException(); + return uno::makeAny( sal_Int32( ColorTable[ Index ] ) ); + } + + // Methods XElementAcess + virtual uno::Type SAL_CALL getElementType() throw (uno::RuntimeException) + { + return ::getCppuType( (sal_Int32*)0 ); + } + virtual ::sal_Bool SAL_CALL hasElements() throw (uno::RuntimeException) + { + return sal_True; + } + +}; + +VbaPalette::VbaPalette() +{ + mxPalette = new DefaultPalette(); +} + +uno::Reference< container::XIndexAccess > +VbaPalette::getPalette() const +{ + + return mxPalette; +} + diff --git a/sw/source/ui/vba/vbapalette.hxx b/sw/source/ui/vba/vbapalette.hxx new file mode 100644 index 000000000000..6179f1723c0b --- /dev/null +++ b/sw/source/ui/vba/vbapalette.hxx @@ -0,0 +1,15 @@ +#ifndef VBAPALETTE_HXX +#define VBAPALETTE_HXX +#include <vbahelper/vbahelper.hxx> + +class VbaPalette +{ + css::uno::Reference< css::container::XIndexAccess > mxPalette; +public: + VbaPalette(); + // if no palette available e.g. because the document doesn't have a + // palette defined then a default palette will be returned. + css::uno::Reference< css::container::XIndexAccess > getPalette() const; +}; + +#endif diff --git a/sw/source/ui/vba/vbapane.cxx b/sw/source/ui/vba/vbapane.cxx new file mode 100644 index 000000000000..fb877d32b507 --- /dev/null +++ b/sw/source/ui/vba/vbapane.cxx @@ -0,0 +1,79 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbapane.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbaview.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaPane::SwVbaPane( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, + const uno::Reference< frame::XModel >& xModel ) throw ( uno::RuntimeException ) : + SwVbaPane_BASE( rParent, rContext ), mxModel( xModel ) +{ +} + +SwVbaPane::~SwVbaPane() +{ +} + +uno::Any SAL_CALL +SwVbaPane::View() throw ( css::uno::RuntimeException ) +{ + return uno::makeAny( uno::Reference< word::XView >( new SwVbaView( this, mxContext, mxModel ) ) ); +} + +void SAL_CALL +SwVbaPane::Close( ) throw ( css::uno::RuntimeException ) +{ + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CloseWin")); + dispatchRequests( mxModel,url ); +} + +rtl::OUString& +SwVbaPane::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaPane") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaPane::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Pane" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbapane.hxx b/sw/source/ui/vba/vbapane.hxx new file mode 100644 index 000000000000..74176591fb5b --- /dev/null +++ b/sw/source/ui/vba/vbapane.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_PANE_HXX +#define SW_VBA_PANE_HXX + +#include <ooo/vba/word/XPane.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XPane > SwVbaPane_BASE; + +class SwVbaPane : public SwVbaPane_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + +public: + SwVbaPane( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, + const css::uno::Reference< css::frame::XModel >& xModel ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaPane(); + + // Methods + virtual css::uno::Any SAL_CALL View( ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Close( ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_PANE_HXX */ diff --git a/sw/source/ui/vba/vbapanes.cxx b/sw/source/ui/vba/vbapanes.cxx new file mode 100644 index 000000000000..55df7ade0e08 --- /dev/null +++ b/sw/source/ui/vba/vbapanes.cxx @@ -0,0 +1,127 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbapanes.hxx" +#include "vbapane.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +// I assume there is only one pane in Writer +typedef ::cppu::WeakImplHelper1<container::XIndexAccess > PanesIndexAccess_Base; +class PanesIndexAccess : public PanesIndexAccess_Base +{ +private: + uno::Reference< XHelperInterface > mxParent; + uno::Reference< uno::XComponentContext > mxContext; + uno::Reference< frame::XModel > mxModel; + +public: + PanesIndexAccess( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : mxParent( xParent ), mxContext( xContext ), mxModel( xModel ) {} + ~PanesIndexAccess(){} + + // XIndexAccess + virtual sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return 1; + } + virtual uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) + { + if( Index != 1 ) + throw container::NoSuchElementException(); + return uno::makeAny( uno::Reference< word::XPane >( new SwVbaPane( mxParent, mxContext, mxModel ) ) ); + } + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) + { + return word::XPane::static_type(0); + } + virtual sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + return sal_True; + } +}; + +class PanesEnumWrapper : public EnumerationHelper_BASE +{ + uno::Reference<container::XIndexAccess > m_xIndexAccess; + sal_Int32 nIndex; +public: + PanesEnumWrapper( const uno::Reference< container::XIndexAccess >& xIndexAccess ) : m_xIndexAccess( xIndexAccess ), nIndex( 0 ) {} + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return ( nIndex < m_xIndexAccess->getCount() ); + } + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( nIndex < m_xIndexAccess->getCount() ) + return m_xIndexAccess->getByIndex( nIndex++ ); + throw container::NoSuchElementException(); + } +}; + +SwVbaPanes::SwVbaPanes( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xModel ): SwVbaPanes_BASE( xParent, xContext, new PanesIndexAccess( xParent, xContext, xModel ) ), mxModel( xModel ) +{ +} +// XEnumerationAccess +uno::Type +SwVbaPanes::getElementType() throw (uno::RuntimeException) +{ + return word::XPane::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaPanes::createEnumeration() throw (uno::RuntimeException) +{ + return new PanesEnumWrapper( m_xIndexAccess ); +} + +uno::Any +SwVbaPanes::createCollectionObject( const css::uno::Any& aSource ) +{ + return aSource; +} + +rtl::OUString& +SwVbaPanes::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaPanes") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaPanes::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Panes") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbapanes.hxx b/sw/source/ui/vba/vbapanes.hxx new file mode 100644 index 000000000000..c2fca4a0613f --- /dev/null +++ b/sw/source/ui/vba/vbapanes.hxx @@ -0,0 +1,60 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_PANES_HXX +#define SW_VBA_PANES_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XPanes.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <vbahelper/vbahelperinterface.hxx> + +typedef CollTestImplHelper< ooo::vba::word::XPanes > SwVbaPanes_BASE; + +class SwVbaPanes : public SwVbaPanes_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + +public: + SwVbaPanes( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xModel ); + virtual ~SwVbaPanes() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaPanes_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_PANES_HXX */ diff --git a/sw/source/ui/vba/vbaparagraph.cxx b/sw/source/ui/vba/vbaparagraph.cxx new file mode 100644 index 000000000000..21077e455690 --- /dev/null +++ b/sw/source/ui/vba/vbaparagraph.cxx @@ -0,0 +1,177 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaparagraph.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbarange.hxx" +#include <com/sun/star/lang/XServiceInfo.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaParagraph::SwVbaParagraph( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XTextDocument >& xDocument, const uno::Reference< text::XTextRange >& xTextRange ) throw ( uno::RuntimeException ) : + SwVbaParagraph_BASE( rParent, rContext ), mxTextDocument( xDocument ), mxTextRange( xTextRange ) +{ +} + +SwVbaParagraph::~SwVbaParagraph() +{ +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaParagraph::getRange( ) throw ( uno::RuntimeException ) +{ + return uno::Reference< word::XRange >( new SwVbaRange( this, mxContext, mxTextDocument, mxTextRange->getStart(), mxTextRange->getEnd(), mxTextRange->getText(), sal_True ) ); +} + +rtl::OUString& +SwVbaParagraph::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaParagraph") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaParagraph::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Paragraph" ) ); + } + return aServiceNames; +} + + +//typedef ::cppu::WeakImplHelper1< container::XEnumeration > ParagraphEnumeration_BASE; +typedef ::cppu::WeakImplHelper2< container::XIndexAccess, container::XEnumerationAccess > ParagraphCollectionHelper_BASE; + +class ParagraphCollectionHelper : public ParagraphCollectionHelper_BASE +{ +private: + uno::Reference< text::XTextDocument > mxTextDocument; + + uno::Reference< container::XEnumeration > getEnumeration() throw (uno::RuntimeException) + { + uno::Reference< container::XEnumerationAccess > xParEnumAccess( mxTextDocument->getText(), uno::UNO_QUERY_THROW ); + return xParEnumAccess->createEnumeration(); + } + +public: + ParagraphCollectionHelper( const uno::Reference< text::XTextDocument >& xDocument ) throw (uno::RuntimeException): mxTextDocument( xDocument ) + { + } + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) { return text::XTextRange::static_type(0); } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) { return sal_True; } + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + sal_Int32 nCount = 0; + uno::Reference< container::XEnumeration > xParEnum = getEnumeration(); + while( xParEnum->hasMoreElements() ) + { + uno::Reference< lang::XServiceInfo > xServiceInfo( xParEnum->nextElement(), uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Paragraph") ) ) ) + { + nCount++; + } + } + return nCount; + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) + { + if( Index < getCount() ) + { + sal_Int32 nCount = 0; + uno::Reference< container::XEnumeration > xParEnum = getEnumeration(); + while( xParEnum->hasMoreElements() ) + { + uno::Reference< lang::XServiceInfo > xServiceInfo( xParEnum->nextElement(), uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Paragraph") ) ) ) + { + if( Index == nCount ) + return uno::makeAny( xServiceInfo ); + nCount++; + } + } + } + throw lang::IndexOutOfBoundsException(); + } + // XEnumerationAccess + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + return getEnumeration(); + } +}; + +SwVbaParagraphs::SwVbaParagraphs( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext, const uno::Reference< text::XTextDocument >& xDocument ) throw (uno::RuntimeException) : SwVbaParagraphs_BASE( xParent, xContext, new ParagraphCollectionHelper( xDocument ) ), mxTextDocument( xDocument ) +{ +} + +// XEnumerationAccess +uno::Type +SwVbaParagraphs::getElementType() throw (uno::RuntimeException) +{ + return word::XParagraph::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaParagraphs::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumerationAccess->createEnumeration(); +} + +uno::Any +SwVbaParagraphs::createCollectionObject( const css::uno::Any& aSource ) +{ + uno::Reference< text::XTextRange > xTextRange( aSource, uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XParagraph >( new SwVbaParagraph( this, mxContext, mxTextDocument, xTextRange ) ) ); +} + +rtl::OUString& +SwVbaParagraphs::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaParagraphs") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaParagraphs::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Paragraphs") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbaparagraph.hxx b/sw/source/ui/vba/vbaparagraph.hxx new file mode 100644 index 000000000000..c1c6298f56e7 --- /dev/null +++ b/sw/source/ui/vba/vbaparagraph.hxx @@ -0,0 +1,84 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_PARAGRAPH_HXX +#define SW_VBA_PARAGRAPH_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XParagraphs.hpp> +#include <ooo/vba/word/XParagraph.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XTextDocument.hpp> + + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XParagraph > SwVbaParagraph_BASE; + +class SwVbaParagraph : public SwVbaParagraph_BASE +{ +private: + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + css::uno::Reference< css::text::XTextRange > mxTextRange; + +public: + SwVbaParagraph( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& xDocument, const css::uno::Reference< css::text::XTextRange >& xTextRange ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaParagraph(); + + // XParagraph + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL getRange() throw ( css::uno::RuntimeException ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + + +/* class SwVbaParagraphs */ +typedef CollTestImplHelper< ooo::vba::word::XParagraphs > SwVbaParagraphs_BASE; + +class SwVbaParagraphs : public SwVbaParagraphs_BASE +{ +private: + css::uno::Reference< css::text::XTextDocument > mxTextDocument; +public: + SwVbaParagraphs( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::text::XTextDocument >& xDocument ) throw (css::uno::RuntimeException); + virtual ~SwVbaParagraphs() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaParagraphs_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_PARAGRAPH_HXX */ diff --git a/sw/source/ui/vba/vbaparagraphformat.cxx b/sw/source/ui/vba/vbaparagraphformat.cxx new file mode 100644 index 000000000000..3bf1fc974b4c --- /dev/null +++ b/sw/source/ui/vba/vbaparagraphformat.cxx @@ -0,0 +1,576 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaparagraphformat.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "wordvbahelper.hxx" +#include <com/sun/star/style/LineSpacingMode.hpp> +#include <ooo/vba/word/WdLineSpacing.hpp> +#include <ooo/vba/word/WdParagraphAlignment.hpp> +#include <ooo/vba/word/WdOutlineLevel.hpp> +#include <com/sun/star/style/ParagraphAdjust.hpp> +#include <com/sun/star/style/BreakType.hpp> + + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +static const sal_Int16 CHARACTER_INDENT_FACTOR = 12; +static const sal_Int16 PERCENT100 = 100; +static const sal_Int16 PERCENT150 = 150; +static const sal_Int16 PERCENT200 = 200; + +SwVbaParagraphFormat::SwVbaParagraphFormat( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XTextDocument >& rTextDocument, const uno::Reference< beans::XPropertySet >& rParaProps ) : SwVbaParagraphFormat_BASE( rParent, rContext ), mxTextDocument( rTextDocument ), mxParaProps( rParaProps ) +{ +} + +SwVbaParagraphFormat::~SwVbaParagraphFormat() +{ +} + +sal_Int32 SAL_CALL SwVbaParagraphFormat::getAlignment() throw (uno::RuntimeException) +{ + style::ParagraphAdjust aParaAdjust = style::ParagraphAdjust_LEFT; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaAdjust") ) ) >>= aParaAdjust; + return getMSWordAlignment( aParaAdjust ); +} + +void SAL_CALL SwVbaParagraphFormat::setAlignment( sal_Int32 _alignment ) throw (uno::RuntimeException) +{ + style::ParagraphAdjust aParaAdjust = ( style::ParagraphAdjust ) getOOoAlignment( _alignment ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaAdjust") ), uno::makeAny( aParaAdjust ) ); +} + +float SAL_CALL SwVbaParagraphFormat::getFirstLineIndent() throw (uno::RuntimeException) +{ + sal_Int32 indent = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaFirstLineIndent") ) ) >>= indent; + return (float)( Millimeter::getInPoints( indent ) ); +} + +void SAL_CALL SwVbaParagraphFormat::setFirstLineIndent( float _firstlineindent ) throw (uno::RuntimeException) +{ + sal_Int32 indent = Millimeter::getInHundredthsOfOneMillimeter( _firstlineindent ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaFirstLineIndent") ), uno::makeAny( indent ) ); +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getKeepTogether() throw (uno::RuntimeException) +{ + sal_Bool bKeep = sal_False; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaKeepTogether") ) ) >>= bKeep; + return uno::makeAny ( bKeep ); +} + +void SAL_CALL SwVbaParagraphFormat::setKeepTogether( const uno::Any& _keeptogether ) throw (uno::RuntimeException) +{ + sal_Bool bKeep = sal_False; + if( _keeptogether >>= bKeep ) + { + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaKeepTogether") ), uno::makeAny( bKeep ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getKeepWithNext() throw (uno::RuntimeException) +{ + sal_Bool bKeep = sal_False; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaSplit") ) ) >>= bKeep; + return uno::makeAny ( bKeep ); +} + +void SAL_CALL SwVbaParagraphFormat::setKeepWithNext( const uno::Any& _keepwithnext ) throw (uno::RuntimeException) +{ + sal_Bool bKeep = sal_False; + if( _keepwithnext >>= bKeep ) + { + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaSplit") ), uno::makeAny( bKeep ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getHyphenation() throw (uno::RuntimeException) +{ + sal_Bool bHypn = sal_False; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaIsHyphenation") ) ) >>= bHypn; + return uno::makeAny ( bHypn ); +} + +void SAL_CALL SwVbaParagraphFormat::setHyphenation( const uno::Any& _hyphenation ) throw (uno::RuntimeException) +{ + sal_Bool bHypn = sal_False; + if( _hyphenation >>= bHypn ) + { + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaIsHyphenation") ), uno::makeAny( bHypn ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +float SAL_CALL SwVbaParagraphFormat::getLineSpacing() throw (uno::RuntimeException) +{ + style::LineSpacing aLineSpacing; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineSpacing") ) ) >>= aLineSpacing; + return getMSWordLineSpacing( aLineSpacing ); +} + +void SAL_CALL SwVbaParagraphFormat::setLineSpacing( float _linespacing ) throw (uno::RuntimeException) +{ + style::LineSpacing aLineSpacing; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineSpacing") ) ) >>= aLineSpacing; + aLineSpacing = getOOoLineSpacing( _linespacing, aLineSpacing.Mode ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineSpacing") ), uno::makeAny( aLineSpacing ) ); +} + +sal_Int32 SAL_CALL SwVbaParagraphFormat::getLineSpacingRule() throw (uno::RuntimeException) +{ + style::LineSpacing aLineSpacing; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineSpacing") ) ) >>= aLineSpacing; + return getMSWordLineSpacingRule( aLineSpacing ); +} + +void SAL_CALL SwVbaParagraphFormat::setLineSpacingRule( sal_Int32 _linespacingrule ) throw (uno::RuntimeException) +{ + style::LineSpacing aLineSpacing = getOOoLineSpacingFromRule( _linespacingrule ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineSpacing") ), uno::makeAny( aLineSpacing ) ); +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getNoLineNumber() throw (uno::RuntimeException) +{ + sal_Bool noLineNum = sal_False; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineNumberCount") ) ) >>= noLineNum; + return uno::makeAny ( noLineNum ); +} + +void SAL_CALL SwVbaParagraphFormat::setNoLineNumber( const uno::Any& _nolinenumber ) throw (uno::RuntimeException) +{ + sal_Bool noLineNum = sal_False; + if( _nolinenumber >>= noLineNum ) + { + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLineNumberCount") ), uno::makeAny( noLineNum ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +sal_Int32 SAL_CALL SwVbaParagraphFormat::getOutlineLevel() throw (uno::RuntimeException) +{ + sal_Int32 nLevel = word::WdOutlineLevel::wdOutlineLevelBodyText; + rtl::OUString aHeading; + const rtl::OUString HEADING = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Heading") ); + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaStyleName") ) ) >>= aHeading; + if( aHeading.indexOf( HEADING ) == 0 ) + { + // get the sub string after "Heading" + nLevel = aHeading.copy( HEADING.getLength() ).toInt32(); + } + return nLevel; +} + +void SAL_CALL SwVbaParagraphFormat::setOutlineLevel( sal_Int32 /*_outlinelevel*/ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getPageBreakBefore() throw (uno::RuntimeException) +{ + style::BreakType aBreakType; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BreakType") ) ) >>= aBreakType; + sal_Bool bBreakBefore = ( aBreakType == style::BreakType_PAGE_BEFORE || aBreakType == style::BreakType_PAGE_BOTH ); + return uno::makeAny( bBreakBefore ); +} + +void SAL_CALL SwVbaParagraphFormat::setPageBreakBefore( const uno::Any& _breakbefore ) throw (uno::RuntimeException) +{ + sal_Bool bBreakBefore = sal_False; + if( _breakbefore >>= bBreakBefore ) + { + style::BreakType aBreakType; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BreakType") ) ) >>= aBreakType; + if( bBreakBefore ) + { + if( aBreakType == style::BreakType_NONE ) + aBreakType = style::BreakType_PAGE_BEFORE; + else if ( aBreakType == style::BreakType_PAGE_AFTER ) + aBreakType = style::BreakType_PAGE_BOTH; + } + else + { + if( aBreakType == style::BreakType_PAGE_BOTH ) + aBreakType = style::BreakType_PAGE_AFTER; + else if ( aBreakType == style::BreakType_PAGE_BEFORE ) + aBreakType = style::BreakType_PAGE_AFTER; + } + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BreakType") ), uno::makeAny( aBreakType ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +float SAL_CALL SwVbaParagraphFormat::getSpaceBefore() throw (uno::RuntimeException) +{ + sal_Int32 nSpace = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaTopMargin") ) ) >>= nSpace; + return (float)( Millimeter::getInPoints( nSpace ) ); +} + +void SAL_CALL SwVbaParagraphFormat::setSpaceBefore( float _space ) throw (uno::RuntimeException) +{ + sal_Int32 nSpace = Millimeter::getInHundredthsOfOneMillimeter( _space ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaTopMargin") ), uno::makeAny( nSpace ) ); +} + +float SAL_CALL SwVbaParagraphFormat::getSpaceAfter() throw (uno::RuntimeException) +{ + sal_Int32 nSpace = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaBottomMargin") ) ) >>= nSpace; + return (float)( Millimeter::getInPoints( nSpace ) ); +} + +void SAL_CALL SwVbaParagraphFormat::setSpaceAfter( float _space ) throw (uno::RuntimeException) +{ + sal_Int32 nSpace = Millimeter::getInHundredthsOfOneMillimeter( _space ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaBottomMargin") ), uno::makeAny( nSpace ) ); +} + +float SAL_CALL SwVbaParagraphFormat::getLeftIndent() throw (uno::RuntimeException) +{ + sal_Int32 nIndent = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLeftMargin") ) ) >>= nIndent; + return (float)( Millimeter::getInPoints( nIndent ) ); +} + +void SAL_CALL SwVbaParagraphFormat::setLeftIndent( float _leftindent ) throw (uno::RuntimeException) +{ + sal_Int32 nIndent = Millimeter::getInHundredthsOfOneMillimeter( _leftindent ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaLeftMargin") ), uno::makeAny( nIndent ) ); +} + +float SAL_CALL SwVbaParagraphFormat::getRightIndent() throw (uno::RuntimeException) +{ + sal_Int32 nIndent = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaRightMargin") ) ) >>= nIndent; + return (float)( Millimeter::getInPoints( nIndent ) ); +} + +void SAL_CALL SwVbaParagraphFormat::setRightIndent( float _rightindent ) throw (uno::RuntimeException) +{ + sal_Int32 nIndent = Millimeter::getInHundredthsOfOneMillimeter( _rightindent ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaRightMargin") ), uno::makeAny( nIndent ) ); +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getTabStops() throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +void SAL_CALL SwVbaParagraphFormat::setTabStops( const uno::Any& /*_tabstops*/ ) throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +uno::Any SAL_CALL SwVbaParagraphFormat::getWidowControl() throw (uno::RuntimeException) +{ + sal_Bool bWidow = sal_False; + sal_Int8 nWidow = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaWidows") ) ) >>= nWidow; + sal_Int8 nOrphan = 0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaOrphans") ) ) >>= nOrphan; + // if the amount of single lines on one page > 1 and the same of start and end of the paragraph, + // true is retured. + bWidow = ( nWidow > 1 && nOrphan == nWidow ); + return uno::makeAny( bWidow ); +} + +void SAL_CALL SwVbaParagraphFormat::setWidowControl( const uno::Any& _widowcontrol ) throw (uno::RuntimeException) +{ + // if we get true, the part of the paragraph on one page has to be + // at least two lines + sal_Bool bWidow = sal_False; + if( _widowcontrol >>= bWidow ) + { + sal_Int8 nControl = bWidow? 2:1; + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaWidows") ), uno::makeAny( nControl ) ); + mxParaProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaOrphans") ), uno::makeAny( nControl ) ); + } + else + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } +} + +style::LineSpacing SwVbaParagraphFormat::getOOoLineSpacing( float _lineSpace, sal_Int16 mode ) +{ + style::LineSpacing aLineSpacing; + if( mode != style::LineSpacingMode::MINIMUM && mode != style::LineSpacingMode::FIX ) + { + // special behaviour of word: if the space is set to these values, the rule and + // the height are changed accordingly + if( _lineSpace == CHARACTER_INDENT_FACTOR ) + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = PERCENT100; + } + else if( _lineSpace == ( sal_Int16 )( CHARACTER_INDENT_FACTOR * 1.5 ) ) + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = PERCENT150; + } + else if( _lineSpace == ( sal_Int16 )( ( CHARACTER_INDENT_FACTOR ) * 2 ) ) + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = PERCENT200; + } + else + { + aLineSpacing.Mode = style::LineSpacingMode::FIX; + aLineSpacing.Height = ( sal_Int16 )( Millimeter::getInHundredthsOfOneMillimeter( _lineSpace ) ); + } + } + else + { + aLineSpacing.Mode = mode; + aLineSpacing.Height = ( sal_Int16 )( Millimeter::getInHundredthsOfOneMillimeter( _lineSpace ) ); + } + return aLineSpacing; +} + +style::LineSpacing SwVbaParagraphFormat::getOOoLineSpacingFromRule( sal_Int32 _linespacingrule ) +{ + style::LineSpacing aLineSpacing; + switch( _linespacingrule ) + { + case word::WdLineSpacing::wdLineSpace1pt5: + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = PERCENT150; + break; + } + case word::WdLineSpacing::wdLineSpaceAtLeast: + { + aLineSpacing.Mode = style::LineSpacingMode::MINIMUM; + aLineSpacing.Height = getCharHeight(); + break; + } + case word::WdLineSpacing::wdLineSpaceDouble: + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = getCharHeight(); + break; + } + case word::WdLineSpacing::wdLineSpaceExactly: + case word::WdLineSpacing::wdLineSpaceMultiple: + { + aLineSpacing.Mode = style::LineSpacingMode::FIX; + aLineSpacing.Height = getCharHeight(); + break; + } + case word::WdLineSpacing::wdLineSpaceSingle: + { + aLineSpacing.Mode = style::LineSpacingMode::PROP; + aLineSpacing.Height = PERCENT100; + break; + } + default: + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + break; + } + } + return aLineSpacing; +} + +float SwVbaParagraphFormat::getMSWordLineSpacing( style::LineSpacing& rLineSpacing ) +{ + float wdLineSpacing = 0; + if( rLineSpacing.Mode != style::LineSpacingMode::PROP ) + { + wdLineSpacing = (float)( Millimeter::getInPoints( rLineSpacing.Height ) ); + } + else + { + wdLineSpacing = (float)( CHARACTER_INDENT_FACTOR * rLineSpacing.Height ) / PERCENT100; + } + return wdLineSpacing; +} + +sal_Int32 SwVbaParagraphFormat::getMSWordLineSpacingRule( style::LineSpacing& rLineSpacing ) +{ + sal_Int32 wdLineSpacing = word::WdLineSpacing::wdLineSpaceSingle; + switch( rLineSpacing.Mode ) + { + case style::LineSpacingMode::PROP: + { + switch( rLineSpacing.Height ) + { + case PERCENT100: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpaceSingle; + break; + } + case PERCENT150: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpace1pt5; + break; + } + case PERCENT200: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpaceDouble; + break; + } + default: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpaceMultiple; + } + } + break; + } + case style::LineSpacingMode::MINIMUM: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpaceAtLeast; + break; + } + case style::LineSpacingMode::FIX: + case style::LineSpacingMode::LEADING: + { + wdLineSpacing = word::WdLineSpacing::wdLineSpaceExactly; + break; + } + default: + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } + } + return wdLineSpacing; +} + +sal_Int16 SwVbaParagraphFormat::getCharHeight() throw (uno::RuntimeException) +{ + float fCharHeight = 0.0; + mxParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharHeight") ) ) >>= fCharHeight; + return (sal_Int16)( Millimeter::getInHundredthsOfOneMillimeter( fCharHeight ) ); +} + +sal_Int32 SwVbaParagraphFormat::getOOoAlignment( sal_Int32 _alignment ) +{ + sal_Int32 nParaAjust = style::ParagraphAdjust_LEFT; + switch( _alignment ) + { + case word::WdParagraphAlignment::wdAlignParagraphCenter: + { + nParaAjust = style::ParagraphAdjust_CENTER; + break; + } + case word::WdParagraphAlignment::wdAlignParagraphJustify: + { + nParaAjust = style::ParagraphAdjust_BLOCK; + break; + } + case word::WdParagraphAlignment::wdAlignParagraphLeft: + { + nParaAjust = style::ParagraphAdjust_LEFT; + break; + } + case word::WdParagraphAlignment::wdAlignParagraphRight: + { + nParaAjust = style::ParagraphAdjust_RIGHT; + break; + } + default: + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } + } + return nParaAjust; +} + +sal_Int32 SwVbaParagraphFormat::getMSWordAlignment( sal_Int32 _alignment ) +{ + sal_Int32 wdAlignment = word::WdParagraphAlignment::wdAlignParagraphLeft; + switch( _alignment ) + { + case style::ParagraphAdjust_CENTER: + { + wdAlignment = word::WdParagraphAlignment::wdAlignParagraphCenter; + break; + } + case style::ParagraphAdjust_LEFT: + { + wdAlignment = word::WdParagraphAlignment::wdAlignParagraphLeft; + break; + } + case style::ParagraphAdjust_BLOCK: + { + wdAlignment = word::WdParagraphAlignment::wdAlignParagraphJustify; + break; + } + case style::ParagraphAdjust_RIGHT: + { + wdAlignment = word::WdParagraphAlignment::wdAlignParagraphRight; + break; + } + default: + { + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } + } + return wdAlignment; +} + +rtl::OUString& +SwVbaParagraphFormat::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaParagraphFormat") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaParagraphFormat::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.ParagraphFormat" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbaparagraphformat.hxx b/sw/source/ui/vba/vbaparagraphformat.hxx new file mode 100644 index 000000000000..63ea9a46837f --- /dev/null +++ b/sw/source/ui/vba/vbaparagraphformat.hxx @@ -0,0 +1,98 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_PARAGRAPHFORMAT_HXX +#define SW_VBA_PARAGRAPHFORMAT_HXX + +#include <ooo/vba/word/XParagraphFormat.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/style/LineSpacing.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XParagraphFormat > SwVbaParagraphFormat_BASE; + +class SwVbaParagraphFormat : public SwVbaParagraphFormat_BASE +{ +private: + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + css::uno::Reference< css::beans::XPropertySet > mxParaProps; + +private: + css::style::LineSpacing getOOoLineSpacing( float _lineSpace, sal_Int16 mode ); + css::style::LineSpacing getOOoLineSpacingFromRule( sal_Int32 _linespacingrule ); + float getMSWordLineSpacing( css::style::LineSpacing& rLineSpacing ); + sal_Int32 getMSWordLineSpacingRule( css::style::LineSpacing& rLineSpacing ); + sal_Int16 getCharHeight() throw (css::uno::RuntimeException); + sal_Int32 getOOoAlignment( sal_Int32 _alignment ); + sal_Int32 getMSWordAlignment( sal_Int32 _alignment ); + +public: + SwVbaParagraphFormat( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rTextDocument, const css::uno::Reference< css::beans::XPropertySet >& rParaProps ); + virtual ~SwVbaParagraphFormat(); + + // Attributes + virtual ::sal_Int32 SAL_CALL getAlignment() throw (css::uno::RuntimeException); + virtual void SAL_CALL setAlignment( ::sal_Int32 _alignment ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getFirstLineIndent() throw (css::uno::RuntimeException); + virtual void SAL_CALL setFirstLineIndent( float _firstlineindent ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getKeepTogether() throw (css::uno::RuntimeException); + virtual void SAL_CALL setKeepTogether( const css::uno::Any& _keeptogether ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getKeepWithNext() throw (css::uno::RuntimeException); + virtual void SAL_CALL setKeepWithNext( const css::uno::Any& _keepwithnext ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getHyphenation() throw (css::uno::RuntimeException); + virtual void SAL_CALL setHyphenation( const css::uno::Any& _hyphenation ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getLineSpacing() throw (css::uno::RuntimeException); + virtual void SAL_CALL setLineSpacing( float _linespacing ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getLineSpacingRule() throw (css::uno::RuntimeException); + virtual void SAL_CALL setLineSpacingRule( ::sal_Int32 _linespacingrule ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getNoLineNumber() throw (css::uno::RuntimeException); + virtual void SAL_CALL setNoLineNumber( const css::uno::Any& _nolinenumber ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getOutlineLevel() throw (css::uno::RuntimeException); + virtual void SAL_CALL setOutlineLevel( ::sal_Int32 _outlinelevel ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getPageBreakBefore() throw (css::uno::RuntimeException); + virtual void SAL_CALL setPageBreakBefore( const css::uno::Any& _pagebreakbefore ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getSpaceBefore() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSpaceBefore( float _spacebefore ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getSpaceAfter() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSpaceAfter( float _spaceafter ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getLeftIndent() throw (css::uno::RuntimeException); + virtual void SAL_CALL setLeftIndent( float _leftindent ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getRightIndent() throw (css::uno::RuntimeException); + virtual void SAL_CALL setRightIndent( float _rightindent ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getTabStops() throw (css::uno::RuntimeException); + virtual void SAL_CALL setTabStops( const css::uno::Any& _tabstops ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL getWidowControl() throw (css::uno::RuntimeException); + virtual void SAL_CALL setWidowControl( const css::uno::Any& _widowcontrol ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_PARAGRAPHFORMAT_HXX */ diff --git a/sw/source/ui/vba/vbarange.cxx b/sw/source/ui/vba/vbarange.cxx new file mode 100644 index 000000000000..673041ce0c65 --- /dev/null +++ b/sw/source/ui/vba/vbarange.cxx @@ -0,0 +1,348 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbarange.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbarangehelper.hxx" +#include <ooo/vba/word/WdBreakType.hpp> +#include <com/sun/star/style/BreakType.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include "wordvbahelper.hxx" +#include "vbaparagraphformat.hxx" +#include "vbastyle.hxx" +#include "vbafont.hxx" +#include "vbapalette.hxx" +#include "vbapagesetup.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaRange::SwVbaRange( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XTextDocument >& rTextDocument, const uno::Reference< text::XTextRange >& rStart, sal_Bool _bMaySpanEndOfDocument ) throw (uno::RuntimeException) : SwVbaRange_BASE( rParent, rContext ), mxTextDocument( rTextDocument ), mbMaySpanEndOfDocument( _bMaySpanEndOfDocument ) +{ + uno::Reference< text::XTextRange > xEnd; + initialize( rStart, xEnd ); +} + +SwVbaRange::SwVbaRange( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XTextDocument >& rTextDocument, const uno::Reference< text::XTextRange >& rStart, const uno::Reference< text::XTextRange >& rEnd, sal_Bool _bMaySpanEndOfDocument ) throw (uno::RuntimeException) : SwVbaRange_BASE( rParent, rContext ), mxTextDocument( rTextDocument ), mbMaySpanEndOfDocument( _bMaySpanEndOfDocument ) +{ + initialize( rStart, rEnd ); +} + +SwVbaRange::SwVbaRange( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< text::XTextDocument >& rTextDocument, const uno::Reference< text::XTextRange >& rStart, const uno::Reference< text::XTextRange >& rEnd, const uno::Reference< text::XText >& rText, sal_Bool _bMaySpanEndOfDocument ) throw (uno::RuntimeException) : SwVbaRange_BASE( rParent, rContext ),mxTextDocument( rTextDocument ), mxText( rText ), mbMaySpanEndOfDocument( _bMaySpanEndOfDocument ) +{ + initialize( rStart, rEnd ); +} + +SwVbaRange::~SwVbaRange() +{ +} + +void SwVbaRange::initialize( const uno::Reference< text::XTextRange >& rStart, const uno::Reference< text::XTextRange >& rEnd ) throw (uno::RuntimeException) +{ + if( !mxText.is() ) + { + mxText = mxTextDocument->getText(); + } + + mxTextCursor = SwVbaRangeHelper::initCursor( rStart, mxText ); + mxTextCursor->collapseToStart(); + + if( rEnd.is() ) + mxTextCursor->gotoRange( rEnd, sal_True ); + else + mxTextCursor->gotoEnd( sal_True ); +} + +uno::Reference< text::XTextRange > SAL_CALL +SwVbaRange::getXTextRange() throw (uno::RuntimeException) +{ + uno::Reference< text::XTextRange > xTextRange( mxTextCursor, uno::UNO_QUERY_THROW ); + return xTextRange; +} + +void SwVbaRange::setXTextRange( const uno::Reference< text::XTextRange >& xRange ) throw (uno::RuntimeException) +{ + mxTextCursor->gotoRange( xRange->getStart(), sal_False ); + mxTextCursor->gotoRange( xRange->getEnd(), sal_True ); +} + +/** +* The complexity in this method is because we need to workaround +* an issue that the last paragraph in a document does not have a trailing CRLF. +* @return +*/ +rtl::OUString SAL_CALL +SwVbaRange::getText() throw ( uno::RuntimeException ) +{ + rtl::OUString aText = mxTextCursor->getString(); + sal_Int32 nLen = aText.getLength(); + + // FIXME: should add a line separator if the range includes the last paragraph + if( nLen == 0 ) + { + if( mxTextCursor->isCollapsed() ) + { + mxTextCursor->goRight( 1, sal_True ); + aText = mxTextCursor->getString(); + mxTextCursor->collapseToStart(); + } + else + { + uno::Reference< text::XTextRange > xStart = mxTextCursor->getStart(); + uno::Reference< text::XTextRange > xEnd = mxTextCursor->getEnd(); + mxTextCursor->collapseToEnd(); + mxTextCursor->goRight( 1, sal_True ); + mxTextCursor->gotoRange( xStart, sal_False ); + mxTextCursor->gotoRange( xEnd, sal_True ); + } + } + + return aText; +} + +void SAL_CALL +SwVbaRange::setText( const rtl::OUString& rText ) throw ( uno::RuntimeException ) +{ + if( rText.indexOf( '\n' ) != -1 ) + { + mxTextCursor->setString( rtl::OUString() ); + // process CR in strings + uno::Reference< text::XTextRange > xRange( mxTextCursor, uno::UNO_QUERY_THROW ); + SwVbaRangeHelper::insertString( xRange, mxText, rText, sal_True ); + } + else + { + mxTextCursor->setString( rText ); + } +} + +// FIXME: test is not pass +void SAL_CALL SwVbaRange::InsertBreak( const uno::Any& _breakType ) throw (uno::RuntimeException) +{ + // default type is wdPageBreak; + sal_Int32 nBreakType = word::WdBreakType::wdPageBreak; + if( _breakType.hasValue() ) + _breakType >>= nBreakType; + + style::BreakType eBreakType = style::BreakType_NONE; + switch( nBreakType ) + { + case word::WdBreakType::wdPageBreak: + eBreakType = style::BreakType_PAGE_BEFORE; + break; + case word::WdBreakType::wdColumnBreak: + eBreakType = style::BreakType_COLUMN_AFTER; + break; + case word::WdBreakType::wdLineBreak: + case word::WdBreakType::wdLineBreakClearLeft: + case word::WdBreakType::wdLineBreakClearRight: + case word::WdBreakType::wdSectionBreakContinuous: + case word::WdBreakType::wdSectionBreakEvenPage: + case word::WdBreakType::wdSectionBreakNextPage: + case word::WdBreakType::wdSectionBreakOddPage: + case word::WdBreakType::wdTextWrappingBreak: + DebugHelper::exception( SbERR_NOT_IMPLEMENTED, rtl::OUString() ); + break; + default: + DebugHelper::exception( SbERR_BAD_PARAMETER, rtl::OUString() ); + } + + if( eBreakType != style::BreakType_NONE ) + { + if( !mxTextCursor->isCollapsed() ) + { + mxTextCursor->setString( rtl::OUString() ); + mxTextCursor->collapseToStart(); + } + + uno::Reference< beans::XPropertySet > xProp( mxTextCursor, uno::UNO_QUERY_THROW ); + xProp->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BreakType") ), uno::makeAny( eBreakType ) ); + } +} + +void SAL_CALL +SwVbaRange::Select() throw ( uno::RuntimeException ) +{ + uno::Reference< frame::XModel > xModel( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextViewCursor > xTextViewCursor = word::getXTextViewCursor( xModel ); + xTextViewCursor->gotoRange( mxTextCursor->getStart(), sal_False ); + xTextViewCursor->gotoRange( mxTextCursor->getEnd(), sal_True ); +} + +void SAL_CALL +SwVbaRange::InsertParagraph() throw ( uno::RuntimeException ) +{ + mxTextCursor->setString( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("") ) ); + InsertParagraphBefore(); +} + +void SAL_CALL +SwVbaRange::InsertParagraphBefore() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xTextRange = mxTextCursor->getStart(); + mxText->insertControlCharacter( xTextRange, text::ControlCharacter::PARAGRAPH_BREAK, sal_True ); + mxTextCursor->gotoRange( xTextRange, sal_True ); +} + +void SAL_CALL +SwVbaRange::InsertParagraphAfter() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xTextRange = mxTextCursor->getEnd(); + mxText->insertControlCharacter( xTextRange, text::ControlCharacter::PARAGRAPH_BREAK, sal_True ); +} + +uno::Reference< word::XParagraphFormat > SAL_CALL +SwVbaRange::getParagraphFormat() throw ( uno::RuntimeException ) +{ + uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); + return uno::Reference< word::XParagraphFormat >( new SwVbaParagraphFormat( this, mxContext, mxTextDocument, xParaProps ) ); +} + +void SAL_CALL +SwVbaRange::setParagraphFormat( const uno::Reference< word::XParagraphFormat >& /*rParagraphFormat*/ ) throw ( uno::RuntimeException ) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +uno::Reference< word::XStyle > SAL_CALL +SwVbaRange::getStyle() throw ( uno::RuntimeException ) +{ + rtl::OUString aStyleName; + rtl::OUString aStyleType; + uno::Reference< beans::XPropertySet > xProp( mxTextCursor, uno::UNO_QUERY_THROW ); + if( ( xProp->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharStyleName") ) ) >>= aStyleName ) && aStyleName.getLength() ) + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharacterStyles") ); + } + else if( ( xProp->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaStyleName") ) ) >>= aStyleName ) && aStyleName.getLength() ) + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles") ); + } + if( aStyleType.getLength() == 0 ) + { + DebugHelper::exception( SbERR_INTERNAL_ERROR, rtl::OUString() ); + } + uno::Reference< style::XStyleFamiliesSupplier > xStyleSupplier( mxTextDocument, uno::UNO_QUERY_THROW); + uno::Reference< container::XNameAccess > xStylesAccess( xStyleSupplier->getStyleFamilies()->getByName( aStyleType ), uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xStyleProps( xStylesAccess->getByName( aStyleName ), uno::UNO_QUERY_THROW ); + return uno::Reference< word::XStyle >( new SwVbaStyle( this, mxContext, xStyleProps ) ); +} + +void SAL_CALL +SwVbaRange::setStyle( const uno::Reference< word::XStyle >& rStyle ) throw ( uno::RuntimeException ) +{ + uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); + SwVbaStyle::setStyle( xParaProps, rStyle ); +} + +uno::Reference< word::XFont > SAL_CALL +SwVbaRange::getFont() throw ( uno::RuntimeException ) +{ + VbaPalette aColors; + return new SwVbaFont( mxParent, mxContext, aColors.getPalette(), uno::Reference< beans::XPropertySet >( getXTextRange(), uno::UNO_QUERY_THROW ) ); +} + +::sal_Int32 SAL_CALL SwVbaRange::getLanguageID() throw (uno::RuntimeException) +{ + uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); + return SwVbaStyle::getLanguageID( xParaProps ); +} + +void SAL_CALL SwVbaRange::setLanguageID( ::sal_Int32 _languageid ) throw (uno::RuntimeException) +{ + uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); + SwVbaStyle::setLanguageID( xParaProps, _languageid ); +} + +uno::Any SAL_CALL +SwVbaRange::PageSetup( ) throw (uno::RuntimeException) +{ + uno::Reference< beans::XPropertySet > xParaProps( mxTextCursor, uno::UNO_QUERY_THROW ); + uno::Reference< frame::XModel > xModel( mxTextDocument, uno::UNO_QUERY_THROW ); + rtl::OUString aPageStyleName; + xParaProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyleName"))) >>= aPageStyleName; + uno::Reference< style::XStyleFamiliesSupplier > xSytleFamSupp( xModel, uno::UNO_QUERY_THROW ); + uno::Reference< container::XNameAccess > xSytleFamNames( xSytleFamSupp->getStyleFamilies(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XNameAccess > xPageStyles( xSytleFamNames->getByName( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyles") ) ), uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xPageProps( xPageStyles->getByName( aPageStyleName ), uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XPageSetup >( new SwVbaPageSetup( this, mxContext, xModel, xPageProps ) ) ); +} + +::sal_Int32 SAL_CALL SwVbaRange::getStart() throw (uno::RuntimeException) +{ + uno::Reference< text::XText > xText = mxTextDocument->getText(); + return SwVbaRangeHelper::getPosition( xText, mxTextCursor->getStart() ); +} + +void SAL_CALL SwVbaRange::setStart( ::sal_Int32 _start ) throw (uno::RuntimeException) +{ + uno::Reference< text::XText > xText = mxTextDocument->getText(); + uno::Reference< text::XTextRange > xStart = SwVbaRangeHelper::getRangeByPosition( xText, _start ); + uno::Reference< text::XTextRange > xEnd = mxTextCursor->getEnd(); + + mxTextCursor->gotoRange( xStart, sal_False ); + mxTextCursor->gotoRange( xEnd, sal_True ); +} + +::sal_Int32 SAL_CALL SwVbaRange::getEnd() throw (uno::RuntimeException) +{ + uno::Reference< text::XText > xText = mxTextDocument->getText(); + return SwVbaRangeHelper::getPosition( xText, mxTextCursor->getEnd() ); +} + +void SAL_CALL SwVbaRange::setEnd( ::sal_Int32 _end ) throw (uno::RuntimeException) +{ + uno::Reference< text::XText > xText = mxTextDocument->getText(); + uno::Reference< text::XTextRange > xEnd = SwVbaRangeHelper::getRangeByPosition( xText, _end ); + + mxTextCursor->collapseToStart(); + mxTextCursor->gotoRange( xEnd, sal_True ); +} + +rtl::OUString& +SwVbaRange::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaRange") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaRange::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Range" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbarange.hxx b/sw/source/ui/vba/vbarange.hxx new file mode 100644 index 000000000000..cb16fed4f28f --- /dev/null +++ b/sw/source/ui/vba/vbarange.hxx @@ -0,0 +1,93 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_RANGE_HXX +#define SW_VBA_RANGE_HXX + +#include <ooo/vba/word/XRange.hpp> +#include <ooo/vba/word/XParagraphFormat.hpp> +#include <ooo/vba/word/XFont.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <ooo/vba/word/XStyle.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XRange > SwVbaRange_BASE; + +class SwVbaRange : public SwVbaRange_BASE +{ +private: + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + css::uno::Reference< css::text::XTextCursor > mxTextCursor; + css::uno::Reference< css::text::XText > mxText; + sal_Bool mbMaySpanEndOfDocument; + +private: + void initialize( const css::uno::Reference< css::text::XTextRange >& rStart, const css::uno::Reference< css::text::XTextRange >& rEnd ) throw (css::uno::RuntimeException); +public: + SwVbaRange( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rTextDocument, const css::uno::Reference< css::text::XTextRange >& rStart, sal_Bool _bMaySpanEndOfDocument = sal_False ) throw (css::uno::RuntimeException); + SwVbaRange( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rTextDocument, const css::uno::Reference< css::text::XTextRange >& rStart, const css::uno::Reference< css::text::XTextRange >& rEnd, sal_Bool _bMaySpanEndOfDocument = sal_False ) throw (css::uno::RuntimeException); + SwVbaRange( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rTextDocument, const css::uno::Reference< css::text::XTextRange >& rStart, const css::uno::Reference< css::text::XTextRange >& rEnd, const css::uno::Reference< css::text::XText >& rText, sal_Bool _bMaySpanEndOfDocument = sal_False ) throw (css::uno::RuntimeException); + virtual ~SwVbaRange(); + css::uno::Reference< css::text::XTextDocument > getDocument() { return mxTextDocument; } + + virtual css::uno::Reference< css::text::XTextRange > SAL_CALL getXTextRange() throw (css::uno::RuntimeException); + void setXTextRange( const css::uno::Reference< css::text::XTextRange >& xRange ) throw (css::uno::RuntimeException); + css::uno::Reference< css::text::XText > getXText() { return mxText; } + void setXTextCursor( const css::uno::Reference< css::text::XTextCursor >& xTextCursor ) { mxTextCursor = xTextCursor; } + + // Attribute + virtual rtl::OUString SAL_CALL getText() throw (css::uno::RuntimeException); + virtual void SAL_CALL setText( const rtl::OUString& rText ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XParagraphFormat > SAL_CALL getParagraphFormat() throw (css::uno::RuntimeException); + virtual void SAL_CALL setParagraphFormat( const css::uno::Reference< ooo::vba::word::XParagraphFormat >& rParagraphFormat ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XStyle > SAL_CALL getStyle() throw (css::uno::RuntimeException); + virtual void SAL_CALL setStyle( const css::uno::Reference< ooo::vba::word::XStyle >& _xStyle ) throw (css::uno::RuntimeException); + + virtual css::uno::Reference< ooo::vba::word::XFont > SAL_CALL getFont() throw (css::uno::RuntimeException); + // Methods + virtual void SAL_CALL InsertBreak( const css::uno::Any& _breakType ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Select() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraph() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraphBefore() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraphAfter() throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getLanguageID() throw (css::uno::RuntimeException); + virtual void SAL_CALL setLanguageID( ::sal_Int32 _languageid ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL PageSetup() throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getStart() throw (css::uno::RuntimeException); + virtual void SAL_CALL setStart( ::sal_Int32 _start ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getEnd() throw (css::uno::RuntimeException); + virtual void SAL_CALL setEnd( ::sal_Int32 _end ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_RANGE_HXX */ diff --git a/sw/source/ui/vba/vbarangehelper.cxx b/sw/source/ui/vba/vbarangehelper.cxx new file mode 100644 index 000000000000..fad93ec9b0e2 --- /dev/null +++ b/sw/source/ui/vba/vbarangehelper.cxx @@ -0,0 +1,174 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbarangehelper.hxx" +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/text/XTextRangeCompare.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +/** + * get a range in a xText by creating + * a cursor that iterates over the text. If the iterating cursor is + * equal to the desired position, the range equivalent is returned. + * Some special cases are tables that are inside of the text, because the + * position has to be adjusted. + * @param xText a text where a range position is searched + * @param position a position inside o the text + * @return a range for the postion; null is returned if no range can be + * constructed. + */ +uno::Reference< text::XTextRange > SwVbaRangeHelper::getRangeByPosition( const uno::Reference< text::XText >& rText, sal_Int32 _position ) throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xRange; + if( rText.is() ) + { + sal_Int32 nPos = 0; + uno::Reference< text::XTextCursor > xCursor = rText->createTextCursor(); + xCursor->collapseToStart(); + sal_Bool bCanGo = sal_True; + while( !xRange.is() && bCanGo ) + { + if( _position == nPos ) + { + xRange = xCursor->getStart(); + } + else + { + bCanGo = xCursor->goRight( 1, sal_False ); + nPos++; + } + } + } + return xRange; +} + + +void SwVbaRangeHelper::insertString( uno::Reference< text::XTextRange >& rTextRange, uno::Reference< text::XText >& rText, const rtl::OUString& rStr, sal_Bool _bAbsorb ) throw ( uno::RuntimeException ) +{ + sal_Int32 nlastIndex = 0; + sal_Int32 nIndex = 0; + uno::Reference< text::XTextRange > xRange = rTextRange; + + while(( nIndex = rStr.indexOf('\n', nlastIndex)) >= 0 ) + { + xRange = xRange->getEnd(); + if( nlastIndex < ( nIndex - 1 ) ) + { + rText->insertString( xRange, rStr.copy( nlastIndex, ( nIndex - 1 - nlastIndex ) ), _bAbsorb ); + xRange = xRange->getEnd(); + } + + rText->insertControlCharacter( xRange, text::ControlCharacter::PARAGRAPH_BREAK, _bAbsorb ); + nlastIndex = nIndex + 1; + } + + if( nlastIndex < rStr.getLength() ) + { + xRange = xRange->getEnd(); + + rtl::OUString aWatt = rStr.copy( nlastIndex ); + rText->insertString( xRange, aWatt, _bAbsorb ); + } +} + +uno::Reference< text::XTextCursor > SwVbaRangeHelper::initCursor( const uno::Reference< text::XTextRange >& rTextRange, const uno::Reference< text::XText >& rText ) throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextCursor > xTextCursor; + sal_Bool bGotTextCursor = sal_False; + + try + { + xTextCursor = rText->createTextCursorByRange( rTextRange ); + bGotTextCursor = sal_True; + } + catch (uno::Exception& e) + { + DebugHelper::exception(e); + } + + if( !bGotTextCursor ) + { + try + { + uno::Reference< text::XText > xText = rTextRange->getText(); + xTextCursor = xText->createTextCursor(); + bGotTextCursor = sal_True; + } + catch( uno::Exception& e ) + { + DebugHelper::exception(e); + } + } + + if( !bGotTextCursor ) + { + try + { + xTextCursor = rText->createTextCursor(); + bGotTextCursor = sal_True; + } + catch( uno::Exception& e ) + { + DebugHelper::exception(e); + } + } + return xTextCursor; +} + +sal_Int32 SwVbaRangeHelper::getPosition( const uno::Reference< text::XText >& rText, const uno::Reference< text::XTextRange >& rTextRange ) throw ( uno::RuntimeException ) +{ + sal_Int32 nPosition = -1; + if( rText.is() && rTextRange.is() ) + { + nPosition = 0; + uno::Reference< text::XTextCursor > xCursor = rText->createTextCursor(); + xCursor->collapseToStart(); + uno::Reference< text::XTextRangeCompare > xCompare( rText, uno::UNO_QUERY_THROW ); + // compareValue is 0 if the ranges are equal + sal_Int32 nCompareValue = xCompare->compareRegionStarts( xCursor->getStart(), rTextRange ); + sal_Bool canGo = sal_True; + + while( nCompareValue !=0 && canGo ) + { + canGo = xCursor->goRight( 1, sal_False ); + nCompareValue = xCompare->compareRegionStarts( xCursor->getStart(), rTextRange ); + nPosition++; + } + + // check fails: no correct position found + if( !canGo && nCompareValue != 0 ) + { + nPosition = -1; + } + } + + return nPosition; +} diff --git a/sw/source/ui/vba/vbarangehelper.hxx b/sw/source/ui/vba/vbarangehelper.hxx new file mode 100644 index 000000000000..6c0f844c7039 --- /dev/null +++ b/sw/source/ui/vba/vbarangehelper.hxx @@ -0,0 +1,46 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_RANGEHELPER_HXX +#define SW_VBA_RANGEHELPER_HXX + +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XText.hpp> + +class SwVbaRangeHelper +{ +public: + static css::uno::Reference< css::text::XTextRange > getRangeByPosition( const css::uno::Reference< css::text::XText >& rText, sal_Int32 _position )throw ( css::uno::RuntimeException ); + static void insertString( css::uno::Reference< css::text::XTextRange >& rTextRange, css::uno::Reference< css::text::XText >& rText, const rtl::OUString& rStr, sal_Bool _bAbsorb ) throw ( css::uno::RuntimeException ); + static css::uno::Reference< css::text::XTextCursor > initCursor( const css::uno::Reference< css::text::XTextRange >& rTextRange, const css::uno::Reference< css::text::XText >& rText ) throw ( css::uno::RuntimeException ); + static sal_Int32 getPosition( const css::uno::Reference< css::text::XText >& rText, const css::uno::Reference< css::text::XTextRange >& rTextRange ) throw ( css::uno::RuntimeException ); + +}; +#endif /* SW_VBA_RANGEHELPER_HXX */ diff --git a/sw/source/ui/vba/vbareplacement.cxx b/sw/source/ui/vba/vbareplacement.cxx new file mode 100644 index 000000000000..480e8de88005 --- /dev/null +++ b/sw/source/ui/vba/vbareplacement.cxx @@ -0,0 +1,74 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbareplacement.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaReplacement::SwVbaReplacement( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< util::XPropertyReplace >& xPropertyReplace ) throw ( uno::RuntimeException ) : + SwVbaReplacement_BASE( rParent, rContext ), mxPropertyReplace( xPropertyReplace ) +{ +} + +SwVbaReplacement::~SwVbaReplacement() +{ +} + +::rtl::OUString SAL_CALL SwVbaReplacement::getText() throw (uno::RuntimeException) +{ + return mxPropertyReplace->getReplaceString(); +} + +void SAL_CALL SwVbaReplacement::setText( const ::rtl::OUString& _text ) throw (uno::RuntimeException) +{ + mxPropertyReplace->setReplaceString( _text ); +} + +rtl::OUString& +SwVbaReplacement::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaReplacement") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaReplacement::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Replacement" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbareplacement.hxx b/sw/source/ui/vba/vbareplacement.hxx new file mode 100644 index 000000000000..a49d14d0c967 --- /dev/null +++ b/sw/source/ui/vba/vbareplacement.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_REPLACEMENT_HXX +#define SW_VBA_REPLACEMENT_HXX + +#include <ooo/vba/word/XReplacement.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/util/XPropertyReplace.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XReplacement > SwVbaReplacement_BASE; + +class SwVbaReplacement : public SwVbaReplacement_BASE +{ +private: + css::uno::Reference< css::util::XPropertyReplace> mxPropertyReplace; + +public: + SwVbaReplacement( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::util::XPropertyReplace >& xPropertyReplace ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaReplacement(); + + // Attributes + virtual ::rtl::OUString SAL_CALL getText() throw (css::uno::RuntimeException); + virtual void SAL_CALL setText( const ::rtl::OUString& _text ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_REPLACEMENT_HXX */ diff --git a/sw/source/ui/vba/vbasection.cxx b/sw/source/ui/vba/vbasection.cxx new file mode 100644 index 000000000000..f36e5abe50f4 --- /dev/null +++ b/sw/source/ui/vba/vbasection.cxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbasection.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbapagesetup.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaSection::SwVbaSection( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< frame::XModel >& xModel, const uno::Reference< beans::XPropertySet >& xProps ) throw ( uno::RuntimeException ) : + SwVbaSection_BASE( rParent, rContext ), mxModel( xModel ), mxPageProps( xProps ) +{ +} + +SwVbaSection::~SwVbaSection() +{ +} + +::sal_Bool SAL_CALL SwVbaSection::getProtectedForForms() throw (uno::RuntimeException) +{ + return sal_False; +} + +void SAL_CALL SwVbaSection::setProtectedForForms( ::sal_Bool /*_protectedforforms*/ ) throw (uno::RuntimeException) +{ +} + +uno::Any SAL_CALL SwVbaSection::Headers( ) throw (uno::RuntimeException) +{ + return uno::Any(); +} + +uno::Any SAL_CALL SwVbaSection::Footers( ) throw (uno::RuntimeException) +{ + return uno::Any(); +} + +uno::Any SAL_CALL +SwVbaSection::PageSetup( ) throw (uno::RuntimeException) +{ + return uno::makeAny( uno::Reference< word::XPageSetup >( new SwVbaPageSetup( this, mxContext, mxModel, mxPageProps ) ) ); +} + +rtl::OUString& +SwVbaSection::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaSection") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaSection::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Section" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbasection.hxx b/sw/source/ui/vba/vbasection.hxx new file mode 100644 index 000000000000..07e820c212b3 --- /dev/null +++ b/sw/source/ui/vba/vbasection.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_SECTION_HXX +#define SW_VBA_SECTION_HXX + +#include <ooo/vba/word/XSection.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XSection > SwVbaSection_BASE; + +class SwVbaSection : public SwVbaSection_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::beans::XPropertySet > mxPageProps; + +public: + SwVbaSection( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::frame::XModel >& xModel, const css::uno::Reference< css::beans::XPropertySet >& xProps ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaSection(); + + // Attributes + virtual ::sal_Bool SAL_CALL getProtectedForForms() throw (css::uno::RuntimeException); + virtual void SAL_CALL setProtectedForForms( ::sal_Bool _protectedforforms ) throw (css::uno::RuntimeException); + + // Methods + virtual css::uno::Any SAL_CALL Headers( ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Footers( ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL PageSetup( ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_SECTION_HXX */ diff --git a/sw/source/ui/vba/vbasections.cxx b/sw/source/ui/vba/vbasections.cxx new file mode 100644 index 000000000000..3097cc16a47b --- /dev/null +++ b/sw/source/ui/vba/vbasections.cxx @@ -0,0 +1,190 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbasections.hxx" +#include "vbasection.hxx" +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/style/XStyle.hpp> +#include <docsh.hxx> +#include <doc.hxx> +#include "wordvbahelper.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +typedef ::cppu::WeakImplHelper1< container::XEnumeration > SectionEnumeration_BASE; +typedef ::cppu::WeakImplHelper2< container::XIndexAccess, container::XEnumerationAccess > SectionCollectionHelper_Base; +typedef std::vector< uno::Reference< beans::XPropertySet > > XSectionVec; + +class SectionEnumeration : public SectionEnumeration_BASE +{ + XSectionVec mxSections; + XSectionVec::iterator mIt; + +public: + SectionEnumeration( const XSectionVec& rVec ) : mxSections( rVec ), mIt( mxSections.begin() ) {} + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return ( mIt != mxSections.end() ); + } + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( hasMoreElements() ) + return uno::makeAny( *mIt++ ); + throw container::NoSuchElementException(); + } +}; + +// here I regard pagestyle as section +class SectionCollectionHelper : public SectionCollectionHelper_Base +{ +private: + uno::Reference< XHelperInterface > mxParent; + uno::Reference< uno::XComponentContext > mxContext; + uno::Reference< frame::XModel > mxModel; + XSectionVec mxSections; + +public: + SectionCollectionHelper( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) throw (uno::RuntimeException) : mxParent( xParent ), mxContext( xContext ), mxModel( xModel ) + { + uno::Reference< style::XStyleFamiliesSupplier > xSytleFamSupp( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< container::XNameAccess > xSytleFamNames( xSytleFamSupp->getStyleFamilies(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xPageStyles( xSytleFamNames->getByName( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyles") ) ), uno::UNO_QUERY_THROW ); + sal_Int32 nCount = xPageStyles->getCount(); + for( sal_Int32 index = 0; index < nCount; ++index ) + { + uno::Reference< style::XStyle > xStyle( xPageStyles->getByIndex( index ), uno::UNO_QUERY_THROW ); + // only the pagestyles in using are considered + if( xStyle->isInUse( ) ) + { + uno::Reference< beans::XPropertySet > xPageProps( xStyle, uno::UNO_QUERY_THROW ); + mxSections.push_back( xPageProps ); + } + } + } + + ~SectionCollectionHelper(){} + + // XIndexAccess + virtual sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + return mxSections.size(); + } + virtual uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( Index < 0 || Index >= getCount() ) + throw css::lang::IndexOutOfBoundsException(); + + uno::Reference< beans::XPropertySet > xPageProps( mxSections[ Index ], uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XSection >( new SwVbaSection( mxParent, mxContext, mxModel, xPageProps ) ) ); + } + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) + { + return word::XSection::static_type(0); + } + virtual sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) + { + return sal_True; + } + // XEnumerationAccess + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + return new SectionEnumeration( mxSections ); + } +}; + +class SectionsEnumWrapper : public EnumerationHelperImpl +{ + uno::Reference< frame::XModel > mxModel; + uno::WeakReference< XHelperInterface > mxParent; +public: + SectionsEnumWrapper( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< container::XEnumeration >& xEnumeration, const uno::Reference< frame::XModel >& xModel ) throw ( uno::RuntimeException ) : EnumerationHelperImpl( xContext, xEnumeration ), mxModel( xModel ), mxParent( xParent ) {} + + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + uno::Reference< beans::XPropertySet > xPageProps( m_xEnumeration->nextElement(), uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XSection > ( new SwVbaSection( mxParent, m_xContext, mxModel, xPageProps ) ) ); + } +}; + +SwVbaSections::SwVbaSections( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xModel ): SwVbaSections_BASE( xParent, xContext, uno::Reference< container::XIndexAccess >( new SectionCollectionHelper( xParent, xContext, xModel ) ) ), mxModel( xModel ) +{ +} + +uno::Any SAL_CALL +SwVbaSections::PageSetup( ) throw (uno::RuntimeException) +{ + if( m_xIndexAccess->getCount() ) + { + // check if the first section is our want + uno::Reference< word::XSection > xSection( m_xIndexAccess->getByIndex( 0 ), uno::UNO_QUERY_THROW ); + return xSection->PageSetup(); + } + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("There is no section") ), uno::Reference< uno::XInterface >() ); +} + +// XEnumerationAccess +uno::Type SAL_CALL +SwVbaSections::getElementType() throw (uno::RuntimeException) +{ + return word::XSection::static_type(0); +} + +uno::Reference< container::XEnumeration > SAL_CALL +SwVbaSections::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return new SectionsEnumWrapper( this, mxContext, xEnumAccess->createEnumeration(), mxModel ); +} + +uno::Any +SwVbaSections::createCollectionObject( const css::uno::Any& aSource ) +{ + return aSource; +} + +rtl::OUString& +SwVbaSections::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaSections") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaSections::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Sections") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbasections.hxx b/sw/source/ui/vba/vbasections.hxx new file mode 100644 index 000000000000..331395d9a11d --- /dev/null +++ b/sw/source/ui/vba/vbasections.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_SECTIONS_HXX +#define SW_VBA_SECTIONS_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XSections.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <vbahelper/vbahelperinterface.hxx> + +typedef CollTestImplHelper< ooo::vba::word::XSections > SwVbaSections_BASE; + +class SwVbaSections : public SwVbaSections_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + +public: + SwVbaSections( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xModel ); + virtual ~SwVbaSections() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL PageSetup( ) throw (css::uno::RuntimeException); + + // SwVbaSections_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif /* SW_VBA_SECTIONS_HXX */ diff --git a/sw/source/ui/vba/vbaselection.cxx b/sw/source/ui/vba/vbaselection.cxx new file mode 100644 index 000000000000..d8394435ed98 --- /dev/null +++ b/sw/source/ui/vba/vbaselection.cxx @@ -0,0 +1,682 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaselection.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include "vbarange.hxx" +#include "vbafind.hxx" +#include "wordvbahelper.hxx" +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextTableCursor.hpp> +#include <com/sun/star/text/ControlCharacter.hpp> +#include <com/sun/star/table/XCell.hpp> +#include <ooo/vba/word/WdUnits.hpp> +#include <ooo/vba/word/WdMovementType.hpp> +#include <ooo/vba/word/WdGoToItem.hpp> +#include <ooo/vba/word/WdGoToDirection.hpp> +#include <ooo/vba/word/XBookmark.hpp> +#include <ooo/vba/word/XApplication.hpp> +#include <com/sun/star/text/XPageCursor.hpp> +#include "unotbl.hxx" +#include "unocoll.hxx" +#include "vbatable.hxx" +#include <com/sun/star/view/XSelectionSupplier.hpp> +#include <com/sun/star/view/XViewCursor.hpp> +#include <ooo/vba/word/WdInformation.hpp> +#include <ooo/vba/word/WdHeaderFooterIndex.hpp> +#include "vbainformationhelper.hxx" +#include "vbafield.hxx" +#include "vbaheaderfooter.hxx" +#include "vbaheaderfooterhelper.hxx" +#include <vbahelper/vbashaperange.hxx> +#include <com/sun/star/drawing/XDrawPageSupplier.hpp> +#include <com/sun/star/drawing/XDrawPage.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaSelection::SwVbaSelection( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< frame::XModel >& rModel ) throw ( uno::RuntimeException ) : SwVbaSelection_BASE( rParent, rContext ), mxModel( rModel ) +{ + mxTextViewCursor = word::getXTextViewCursor( mxModel ); +} + +SwVbaSelection::~SwVbaSelection() +{ +} + +uno::Reference< text::XTextRange > SwVbaSelection::GetSelectedRange() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xTextRange; + uno::Reference< lang::XServiceInfo > xServiceInfo( mxModel->getCurrentSelection(), uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextRanges") ) ) ) + { + uno::Reference< container::XIndexAccess > xTextRanges( xServiceInfo, uno::UNO_QUERY_THROW ); + if( xTextRanges->getCount() > 0 ) + { + // if there are multipul selection, just return the last selected Range. + xTextRange.set( xTextRanges->getByIndex( xTextRanges->getCount()-1 ), uno::UNO_QUERY_THROW ); + } + } + else + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } + return xTextRange; +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaSelection::getRange() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xTextRange = GetSelectedRange(); + uno::Reference< text::XTextDocument > xDocument( mxModel, uno::UNO_QUERY_THROW ); + return uno::Reference< word::XRange >( new SwVbaRange( this, mxContext, xDocument, xTextRange->getStart(), xTextRange->getEnd(), mxTextViewCursor->getText() ) ); +} + +rtl::OUString SAL_CALL +SwVbaSelection::getText() throw ( uno::RuntimeException ) +{ + return getRange()->getText(); +} + +void SAL_CALL +SwVbaSelection::setText( const rtl::OUString& rText ) throw ( uno::RuntimeException ) +{ + getRange()->setText( rText ); +} + +void SAL_CALL +SwVbaSelection::TypeText( const rtl::OUString& rText ) throw ( uno::RuntimeException ) +{ + // FIXME: handle the property Options.ReplaceSelection, the default value is TRUE + setText( rText ); +} + +void SAL_CALL +SwVbaSelection::HomeKey( const uno::Any& _unit, const uno::Any& _extend ) throw ( uno::RuntimeException ) +{ + sal_Int32 nUnit = word::WdUnits::wdLine; + sal_Int32 nExtend = word::WdMovementType::wdMove; + _unit >>= nUnit; + _extend >>= nExtend; + + switch( nUnit ) + { + case word::WdUnits::wdStory: + { + // go to the begin of the document + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:GoToStartOfDoc")); + dispatchRequests( mxModel,url ); + // If something is selected, it needs to go twice + dispatchRequests( mxModel,url ); + break; + } + case word::WdUnits::wdLine: + { + // go to the begin of the Line + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:GoToStartOfLine")); + dispatchRequests( mxModel,url ); + break; + } + default: + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + break; + } + } +} + +void SAL_CALL +SwVbaSelection::EndKey( const uno::Any& _unit, const uno::Any& _extend ) throw ( uno::RuntimeException ) +{ + sal_Int32 nUnit = word::WdUnits::wdLine; + sal_Int32 nExtend = word::WdMovementType::wdMove; + _unit >>= nUnit; + _extend >>= nExtend; + + switch( nUnit ) + { + case word::WdUnits::wdStory: + { + // go to the end of the document + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:GoToEndOfDoc")); + dispatchRequests( mxModel,url ); + // If something is selected, it needs to go twice + dispatchRequests( mxModel,url ); + break; + } + case word::WdUnits::wdLine: + { + // go to the end of the Line + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:GoToEndOfLine")); + dispatchRequests( mxModel,url ); + break; + } + default: + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + break; + } + } +} + +void SAL_CALL +SwVbaSelection::Delete( const uno::Any& /*_unit*/, const uno::Any& /*_count*/ ) throw ( uno::RuntimeException ) +{ + // FIXME: handle the arguments: _unit and _count + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:Delete")); + dispatchRequests( mxModel,url ); +} + +void SwVbaSelection::NextCell( sal_Int32 nCount, E_DIRECTION eDirection ) throw ( uno::RuntimeException ) +{ + uno::Reference< beans::XPropertySet > xCursorProps( mxTextViewCursor, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextTable > xTextTable; + uno::Reference< table::XCell > xCell; + xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextTable") ) ) >>= xTextTable; + xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Cell") ) ) >>= xCell; + if( !xTextTable.is() || !xCell.is() ) + { + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + return; + } + uno::Reference< beans::XPropertySet > xCellProps( xCell, uno::UNO_QUERY_THROW ); + rtl::OUString aCellName; + xCellProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CellName") ) ) >>= aCellName; + uno::Reference< text::XTextTableCursor > xTextTableCursor = xTextTable->createCursorByCellName( aCellName ); + // move the table cursor + switch( eDirection ) + { + case MOVE_LEFT: + { + xTextTableCursor->goLeft( nCount, sal_False ); + break; + } + case MOVE_RIGHT: + { + xTextTableCursor->goRight( nCount, sal_False ); + break; + } + case MOVE_UP: + { + xTextTableCursor->goUp( nCount, sal_False ); + break; + } + case MOVE_DOWN: + { + xTextTableCursor->goDown( nCount, sal_False ); + break; + } + default: + { + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + return; + } + } + // move the view cursor + xCell = xTextTable->getCellByName( xTextTableCursor->getRangeName() ); + mxTextViewCursor->gotoRange( uno::Reference< text::XTextRange >( xCell, uno::UNO_QUERY_THROW ), sal_False ); +} + +void SAL_CALL +SwVbaSelection::MoveRight( const uno::Any& _unit, const uno::Any& _count, const uno::Any& _extend ) throw ( uno::RuntimeException ) +{ + sal_Int32 nUnit = word::WdUnits::wdCharacter; + sal_Int32 nCount = 1; + sal_Int32 nExtend = word::WdMovementType::wdMove; + + if( _unit.hasValue() ) + _unit >>= nUnit; + if( _count.hasValue() ) + _count >>= nCount; + if( _extend.hasValue() ) + _extend >>= nExtend; + + if( nCount == 0 ) + return; + + if( nCount < 0 ) + { + // TODO: call MoveLeft; + MoveLeft( _unit, uno::makeAny( -nCount ), _extend ); + return; + } + + switch( nUnit ) + { + case word::WdUnits::wdCell: + { + if( nExtend == word::WdMovementType::wdExtend ) + { + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + return; + } + NextCell( nCount, MOVE_RIGHT ); + break; + } + default: + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + break; + } + } + +} + +void SAL_CALL +SwVbaSelection::MoveLeft( const uno::Any& _unit, const uno::Any& _count, const uno::Any& _extend ) throw ( uno::RuntimeException ) +{ + sal_Int32 nUnit = word::WdUnits::wdCharacter; + sal_Int32 nCount = 1; + sal_Int32 nExtend = word::WdMovementType::wdMove; + + if( _unit.hasValue() ) + _unit >>= nUnit; + if( _count.hasValue() ) + _count >>= nCount; + if( _extend.hasValue() ) + _extend >>= nExtend; + + if( nCount == 0 ) + return; + + if( nCount < 0 ) + { + MoveRight( _unit, uno::makeAny( -nCount ), _extend ); + return; + } + + switch( nUnit ) + { + case word::WdUnits::wdCell: + { + if( nExtend == word::WdMovementType::wdExtend ) + { + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + return; + } + NextCell( nCount, MOVE_LEFT ); + break; + } + default: + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + break; + } + } + +} + +void SAL_CALL +SwVbaSelection::MoveDown( const uno::Any& _unit, const uno::Any& _count, const uno::Any& _extend ) throw ( uno::RuntimeException ) +{ + sal_Int32 nUnit = word::WdUnits::wdCharacter; + sal_Int32 nCount = 1; + sal_Int32 nExtend = word::WdMovementType::wdMove; + + if( _unit.hasValue() ) + _unit >>= nUnit; + if( _count.hasValue() ) + _count >>= nCount; + if( _extend.hasValue() ) + _extend >>= nExtend; + + if( nCount == 0 ) + return; + + if( nCount < 0 ) + { + // TODO: call MoveLeft; + //MoveUp( _unit, uno::makeAny( -nCount ), _extend ); + return; + } + + switch( nUnit ) + { + case word::WdUnits::wdLine: + { + uno::Reference< view::XViewCursor > xViewCursor( mxTextViewCursor, uno::UNO_QUERY_THROW ); + sal_Bool bExpand = ( nExtend == word::WdMovementType::wdMove ) ? sal_False : sal_True; + xViewCursor->goDown( nCount, bExpand ); + break; + } + default: + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + break; + } + } + +} + +void SAL_CALL +SwVbaSelection::TypeParagraph() throw ( uno::RuntimeException ) +{ + // #FIXME: if the selection is an entire paragraph, it's replaced + // by the new paragraph + sal_Bool isCollapsed = mxTextViewCursor->isCollapsed(); + InsertParagraph(); + if( isCollapsed ) + mxTextViewCursor->collapseToStart(); +} + +void SAL_CALL +SwVbaSelection::InsertParagraph() throw ( uno::RuntimeException ) +{ + // #FIME: the selection should include the new paragraph. + getRange()->InsertParagraph(); +} + +void SAL_CALL +SwVbaSelection::InsertParagraphBefore() throw ( uno::RuntimeException ) +{ + getRange()->InsertParagraphBefore(); +} + +void SAL_CALL +SwVbaSelection::InsertParagraphAfter() throw ( uno::RuntimeException ) +{ + getRange()->InsertParagraphAfter(); +} + +uno::Reference< word::XParagraphFormat > SAL_CALL +SwVbaSelection::getParagraphFormat() throw ( uno::RuntimeException ) +{ + return getRange()->getParagraphFormat(); +} + +void SAL_CALL +SwVbaSelection::setParagraphFormat( const uno::Reference< word::XParagraphFormat >& rParagraphFormat ) throw ( uno::RuntimeException ) +{ + return getRange()->setParagraphFormat( rParagraphFormat ); +} + +uno::Reference< word::XFind > SAL_CALL +SwVbaSelection::getFind() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XTextRange > xTextRange = GetSelectedRange(); + return uno::Reference< word::XFind >( new SwVbaFind( this, mxContext, mxModel, xTextRange ) ); +} + +uno::Reference< word::XStyle > SAL_CALL +SwVbaSelection::getStyle() throw ( uno::RuntimeException ) +{ + return getRange()->getStyle(); +} + +void SAL_CALL +SwVbaSelection::setStyle( const uno::Reference< word::XStyle >& rStyle ) throw ( uno::RuntimeException ) +{ + return getRange()->setStyle( rStyle ); +} + +uno::Reference< word::XFont > SAL_CALL +SwVbaSelection::getFont() throw ( uno::RuntimeException ) +{ + return getRange()->getFont(); +} + +void SAL_CALL +SwVbaSelection::TypeBackspace() throw ( uno::RuntimeException ) +{ + rtl::OUString url = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:SwBackspace")); + dispatchRequests( mxModel,url ); +} + +uno::Reference< word::XRange > SAL_CALL SwVbaSelection::GoTo( const uno::Any& _what, const uno::Any& _which, const uno::Any& _count, const uno::Any& _name ) throw (uno::RuntimeException) +{ + sal_Int32 nWhat = 0; + if( ( _what >>= nWhat ) != sal_True ) + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + switch( nWhat ) + { + case word::WdGoToItem::wdGoToBookmark: + { + rtl::OUString sName; + uno::Reference< word::XApplication > xApplication( Application(), uno::UNO_QUERY_THROW ); + uno::Reference< word::XBookmark > xBookmark( xApplication->getActiveDocument()->Bookmarks(_name), uno::UNO_QUERY_THROW ); + xBookmark->Select(); + //return uno::Reference< word::XRange >( xBookmark->Range(), uno::UNO_QUERY_THROW ); + break; + } + case word::WdGoToItem::wdGoToPage: + { + uno::Reference< text::XPageCursor > xPageCursor( mxTextViewCursor, uno::UNO_QUERY_THROW ); + sal_Int32 nCurrPage = xPageCursor->getPage(); + sal_Int32 nLastPage = word::getPageCount( mxModel ); + sal_Int32 nCount = 0; + if( _count.hasValue() ) + _count >>= nCount; + sal_Int32 nWhich = 0; + if( _which.hasValue() ) + _which >>= nWhich; + sal_Int32 nPage = 0; + switch( nWhich ) + { + case word::WdGoToDirection::wdGoToLast: + { + nPage = nLastPage; + break; + } + case word::WdGoToDirection::wdGoToNext: + { + nPage = nCurrPage + 1; + break; + } + case word::WdGoToDirection::wdGoToPrevious: + { + nPage = nCurrPage - 1; + break; + } + default: + { + nPage = nCount; + } + } + if( nPage <= 0 ) + nPage = 1; + if( nPage > nLastPage ) + nPage = nLastPage; + xPageCursor->jumpToPage( ( sal_Int16 )( nPage ) ); + break; + } + case word::WdGoToItem::wdGoToSection: + { + // TODO: implement Section object + } + default: + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } + return getRange(); +} + +::sal_Int32 SAL_CALL SwVbaSelection::getLanguageID() throw (uno::RuntimeException) +{ + return getRange()->getLanguageID(); +} + +void SAL_CALL SwVbaSelection::setLanguageID( ::sal_Int32 _languageid ) throw (uno::RuntimeException) +{ + getRange()->setLanguageID( _languageid ); +} + +uno::Any SAL_CALL SwVbaSelection::Information( sal_Int32 _type ) throw (uno::RuntimeException) +{ + uno::Any result; + //uno::Reference< view::XSelectionSupplier > xSel( mxModel->getCurrentController(), uno::UNO_QUERY_THROW ); + //uno::Any aSelectedObject = xSel->getSelection(); + switch( _type ) + { + case word::WdInformation::wdActiveEndPageNumber: + { + result = uno::makeAny( SwVbaInformationHelper::handleWdActiveEndPageNumber( mxTextViewCursor ) ); + break; + } + case word::WdInformation::wdNumberOfPagesInDocument: + { + result = uno::makeAny( SwVbaInformationHelper::handleWdNumberOfPagesInDocument( mxModel ) ); + break; + } + case word::WdInformation::wdVerticalPositionRelativeToPage: + { + result = uno::makeAny( SwVbaInformationHelper::handleWdVerticalPositionRelativeToPage( mxModel, mxTextViewCursor ) ); + break; + } + default: + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } + // This method fails to restore the previouse selection + //xSel->select( aSelectedObject ); + return result; +} + +void SAL_CALL SwVbaSelection::InsertBreak( const uno::Any& _breakType ) throw (uno::RuntimeException) +{ + getRange()->InsertBreak( _breakType ); +} + +uno::Any SAL_CALL +SwVbaSelection::Tables( const uno::Any& aIndex ) throw (uno::RuntimeException) +{ + // Hacky implementation due to missing api ( and lack of knowledge ) + // we can only support a selection that is a single table + if ( !aIndex.hasValue() ) // currently we can't support multiple tables in a selection + throw uno::RuntimeException(); + // if the current selection is a XTextTableCursor and the index is 1 then we can service this request, otherwise we just have to throw + uno::Reference< text::XTextTableCursor > xTextTableCursor( mxModel->getCurrentSelection(), uno::UNO_QUERY ); + + if ( !xTextTableCursor.is() ) + throw uno::RuntimeException(); + + sal_Int32 nIndex = 0; + aIndex >>= nIndex; + + uno::Any aRet; + + if ( nIndex != 1 ) + throw uno::RuntimeException(); + SwXTextTableCursor* pTTCursor = dynamic_cast< SwXTextTableCursor* >( xTextTableCursor.get() ); + if ( pTTCursor ) + { + SwFrmFmt* pFmt = pTTCursor->GetFrmFmt(); + rtl::OUString sTableName; + if ( pFmt ) + { + uno::Reference< text::XTextTable > xTbl = SwXTextTables::GetObject(*pFmt); + uno::Reference< css::text::XTextDocument > xTextDoc( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< word::XTable > xVBATbl = new SwVbaTable( mxParent, mxContext, xTextDoc, xTbl ); + aRet <<= xVBATbl; + } + } + return aRet; + +} + +uno::Any SAL_CALL +SwVbaSelection::Fields( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xCol( new SwVbaFields( mxParent, mxContext, mxModel ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +uno::Reference< word::XHeaderFooter > SAL_CALL +SwVbaSelection::getHeaderFooter() throw ( uno::RuntimeException ) +{ + uno::Reference< text::XText > xCurrentText = word::getXTextViewCursor( mxModel )->getText(); + if( HeaderFooterHelper::isHeader( mxModel, xCurrentText ) || HeaderFooterHelper::isFooter( mxModel, xCurrentText ) ) + { + uno::Reference< beans::XPropertySet > xPageStyleProps( word::getCurrentPageStyle( mxModel ), uno::UNO_QUERY_THROW ); + sal_Int32 nIndex = word::WdHeaderFooterIndex::wdHeaderFooterPrimary; + sal_Bool isHeader = HeaderFooterHelper::isHeader( mxModel, xCurrentText ); + if( HeaderFooterHelper::isEvenPagesHeader( mxModel, xCurrentText ) || HeaderFooterHelper::isEvenPagesFooter( mxModel, xCurrentText ) ) + nIndex = word::WdHeaderFooterIndex::wdHeaderFooterEvenPages; + else if( HeaderFooterHelper::isFirstPageHeader( mxModel, xCurrentText ) || HeaderFooterHelper::isFirstPageFooter( mxModel, xCurrentText ) ) + nIndex = word::WdHeaderFooterIndex::wdHeaderFooterFirstPage; + + return uno::Reference< word::XHeaderFooter >( new SwVbaHeaderFooter( this, mxContext, mxModel, xPageStyleProps, isHeader, nIndex ) ); + + } + return uno::Reference< word::XHeaderFooter >(); +} + +uno::Any SAL_CALL +SwVbaSelection::ShapeRange( ) throw (uno::RuntimeException) +{ + uno::Reference< drawing::XShapes > xShapes( mxModel->getCurrentSelection(), uno::UNO_QUERY ); + + if ( !xShapes.is() ) + throw uno::RuntimeException(); + + uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< drawing::XDrawPage > xDrawPage = xDrawPageSupplier->getDrawPage(); + uno::Reference< container::XIndexAccess > xShapesAccess( xShapes, uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< msforms::XShapeRange >( new ScVbaShapeRange( this, mxContext, xShapesAccess, xDrawPage, mxModel ) ) ); +} + +::sal_Int32 SAL_CALL SwVbaSelection::getStart() throw (uno::RuntimeException) +{ + return getRange()->getStart(); +} + +void SAL_CALL SwVbaSelection::setStart( ::sal_Int32 _start ) throw (uno::RuntimeException) +{ + getRange()->setStart( _start ); +} +::sal_Int32 SAL_CALL SwVbaSelection::getEnd() throw (uno::RuntimeException) +{ + return getRange()->getEnd(); +} + +void SAL_CALL SwVbaSelection::setEnd( ::sal_Int32 _end ) throw (uno::RuntimeException) +{ + getRange()->setEnd( _end ); +} + +rtl::OUString& +SwVbaSelection::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaSelection") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaSelection::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Selection" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbaselection.hxx b/sw/source/ui/vba/vbaselection.hxx new file mode 100644 index 000000000000..f319289f927c --- /dev/null +++ b/sw/source/ui/vba/vbaselection.hxx @@ -0,0 +1,108 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_SELECTION_HXX +#define SW_VBA_SELECTION_HXX + +#include <ooo/vba/word/XSelection.hpp> +#include <ooo/vba/word/XRange.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <ooo/vba/word/XParagraphFormat.hpp> +#include <ooo/vba/word/XFind.hpp> +#include <ooo/vba/word/XStyle.hpp> +#include <ooo/vba/word/XFont.hpp> +#include <ooo/vba/word/XHeaderFooter.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XSelection > SwVbaSelection_BASE; + +class SwVbaSelection : public SwVbaSelection_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::text::XTextViewCursor > mxTextViewCursor; + css::uno::Reference< ooo::vba::word::XRange > mxRange; + + enum E_DIRECTION + { + MOVE_LEFT = 1, + MOVE_RIGHT, + MOVE_UP, + MOVE_DOWN + }; + +private: + void NextCell( sal_Int32 nCount, E_DIRECTION eDirection ) throw ( css::uno::RuntimeException ); + css::uno::Reference< css::text::XTextRange > GetSelectedRange() throw ( css::uno::RuntimeException ); + +public: + SwVbaSelection( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::frame::XModel >& rModel ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaSelection(); + + // Attribute + virtual rtl::OUString SAL_CALL getText() throw (css::uno::RuntimeException); + virtual void SAL_CALL setText( const rtl::OUString& rText ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL getRange() throw (css::uno::RuntimeException); + virtual void SAL_CALL HomeKey( const css::uno::Any& _unit, const css::uno::Any& _extend ) throw (css::uno::RuntimeException); + virtual void SAL_CALL EndKey( const css::uno::Any& _unit, const css::uno::Any& _extend ) throw (css::uno::RuntimeException); + virtual void SAL_CALL TypeText( const rtl::OUString& rText ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Delete( const css::uno::Any& _unit, const css::uno::Any& _count ) throw (css::uno::RuntimeException); + virtual void SAL_CALL MoveRight( const css::uno::Any& _unit, const css::uno::Any& _count, const css::uno::Any& _extend ) throw (css::uno::RuntimeException); + virtual void SAL_CALL MoveLeft( const css::uno::Any& _unit, const css::uno::Any& _count, const css::uno::Any& _extend ) throw (css::uno::RuntimeException); + virtual void SAL_CALL MoveDown( const css::uno::Any& _unit, const css::uno::Any& _count, const css::uno::Any& _extend ) throw (css::uno::RuntimeException); + virtual void SAL_CALL TypeParagraph() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraph() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraphBefore() throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertParagraphAfter() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XParagraphFormat > SAL_CALL getParagraphFormat() throw (css::uno::RuntimeException); + virtual void SAL_CALL setParagraphFormat( const css::uno::Reference< ooo::vba::word::XParagraphFormat >& rParagraphFormat ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XFind > SAL_CALL getFind() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XStyle > SAL_CALL getStyle() throw (css::uno::RuntimeException); + virtual void SAL_CALL setStyle( const css::uno::Reference< ooo::vba::word::XStyle >& _xStyle ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XFont > SAL_CALL getFont() throw (css::uno::RuntimeException); + virtual void SAL_CALL TypeBackspace() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XRange > SAL_CALL GoTo( const css::uno::Any& _what, const css::uno::Any& _which, const css::uno::Any& _count, const css::uno::Any& _name ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getLanguageID( ) throw (css::uno::RuntimeException); + virtual void SAL_CALL setLanguageID( ::sal_Int32 _languageid ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Information( sal_Int32 _type ) throw (css::uno::RuntimeException); + virtual void SAL_CALL InsertBreak( const css::uno::Any& _breakType ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Tables( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Fields( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XHeaderFooter > SAL_CALL getHeaderFooter() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL ShapeRange( ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getStart() throw (css::uno::RuntimeException); + virtual void SAL_CALL setStart( ::sal_Int32 _start ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getEnd() throw (css::uno::RuntimeException); + virtual void SAL_CALL setEnd( ::sal_Int32 _end ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_SELECTION_HXX */ diff --git a/sw/source/ui/vba/vbastyle.cxx b/sw/source/ui/vba/vbastyle.cxx new file mode 100644 index 000000000000..7a2c42a7767e --- /dev/null +++ b/sw/source/ui/vba/vbastyle.cxx @@ -0,0 +1,152 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "vbastyle.hxx" +#include <ooo/vba/word/WdStyleType.hpp> +#include <com/sun/star/lang/Locale.hpp> +#include <i18npool/mslangid.hxx> +#include "vbafont.hxx" +#include "vbapalette.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + + +SwVbaStyle::SwVbaStyle( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< beans::XPropertySet >& _xPropertySet ) throw ( script::BasicErrorException, uno::RuntimeException ) : SwVbaStyle_BASE( xParent, xContext ) , mxStyleProps( _xPropertySet ) +{ + mxStyle.set( _xPropertySet, uno::UNO_QUERY_THROW ); +} + +void SAL_CALL +SwVbaStyle::setName( const ::rtl::OUString& Name ) throw (uno::RuntimeException) +{ + mxStyle->setName(Name); +} + +::rtl::OUString SAL_CALL +SwVbaStyle::getName() throw (uno::RuntimeException) +{ + return mxStyle->getName(); +} + +sal_Int32 SwVbaStyle::getLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps ) throw (uno::RuntimeException) +{ + lang::Locale aLocale; + xTCProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharLocale") ) ) >>= aLocale; + return MsLangId::convertLocaleToLanguage( aLocale ); +} + +void SwVbaStyle::setLanguageID( const uno::Reference< beans::XPropertySet >& xTCProps, sal_Int32 _languageid ) throw (uno::RuntimeException) +{ + lang::Locale aLocale = MsLangId::convertLanguageToLocale( static_cast<LanguageType>(_languageid) ); + xTCProps->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharLocale") ), uno::makeAny( aLocale ) ) ; +} + +::sal_Int32 SAL_CALL SwVbaStyle::getLanguageID() throw (uno::RuntimeException) +{ + return getLanguageID( mxStyleProps ); +} + +void SAL_CALL SwVbaStyle::setLanguageID( ::sal_Int32 _languageid ) throw (uno::RuntimeException) +{ + setLanguageID( mxStyleProps, _languageid ); +} + +::sal_Int32 SAL_CALL SwVbaStyle::getType() throw (uno::RuntimeException) +{ + sal_Int32 nType = word::WdStyleType::wdStyleTypeParagraph; + uno::Reference< lang::XServiceInfo > xServiceInfo( mxStyle, uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.style.ParagraphStyle") ) ) ) + nType = word::WdStyleType::wdStyleTypeParagraph; + else if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.style.CharacterStyle") ) ) ) + nType = word::WdStyleType::wdStyleTypeCharacter; + else // if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.NumberingStyle") ) ) ) + nType = word::WdStyleType::wdStyleTypeList; + return nType; +} + +uno::Reference< word::XFont > SAL_CALL +SwVbaStyle::getFont() throw ( uno::RuntimeException ) +{ + VbaPalette aColors; + return new SwVbaFont( mxParent, mxContext, aColors.getPalette(), mxStyleProps ); +} + +void SwVbaStyle::setStyle( const uno::Reference< beans::XPropertySet >& xTCProps, const uno::Reference< ooo::vba::word::XStyle >& xStyle )throw (uno::RuntimeException) +{ + rtl::OUString aStyleType = getOOoStyleTypeFromMSWord( xStyle->getType() ); + xTCProps->setPropertyValue( aStyleType, uno::makeAny( xStyle->getName() ) ); +} + +rtl::OUString SwVbaStyle::getOOoStyleTypeFromMSWord( sal_Int32 _wdStyleType ) +{ + rtl::OUString aStyleType; + switch( _wdStyleType ) + { + case word::WdStyleType::wdStyleTypeParagraph: + case word::WdStyleType::wdStyleTypeTable: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParaStyleName") ); + break; + } + case word::WdStyleType::wdStyleTypeCharacter: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharStyleName") ); + break; + } + case word::WdStyleType::wdStyleTypeList: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName") ); + break; + } + default: + DebugHelper::exception( SbERR_INTERNAL_ERROR, rtl::OUString() ); + } + return aStyleType; +} + +rtl::OUString& +SwVbaStyle::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaStyle") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaStyle::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.XStyle" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbastyle.hxx b/sw/source/ui/vba/vbastyle.hxx new file mode 100644 index 000000000000..e0d109be20e8 --- /dev/null +++ b/sw/source/ui/vba/vbastyle.hxx @@ -0,0 +1,70 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: $ + * $Revision: $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_STYLE_HXX +#define SW_VBA_STYLE_HXX +#include <ooo/vba/word/XStyle.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/style/XStyle.hpp> +#include <ooo/vba/word/XFont.hpp> + + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XStyle > SwVbaStyle_BASE; + +class SwVbaStyle : public SwVbaStyle_BASE +{ +private: + css::uno::Reference< css::beans::XPropertySet > mxStyleProps; + css::uno::Reference< css::style::XStyle > mxStyle; +public: + SwVbaStyle( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::beans::XPropertySet >& _xPropertySet ) throw ( css::script::BasicErrorException, css::uno::RuntimeException ); + virtual ~SwVbaStyle(){} + + static void setStyle( const css::uno::Reference< css::beans::XPropertySet >& xTCProps, const css::uno::Reference< ooo::vba::word::XStyle >& xStyle ) throw (css::uno::RuntimeException); + static rtl::OUString getOOoStyleTypeFromMSWord( sal_Int32 _wdStyleType ); + static sal_Int32 getLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps ) throw (css::uno::RuntimeException); + static void setLanguageID( const css::uno::Reference< css::beans::XPropertySet >& xTCProps, sal_Int32 _languageid ) throw (css::uno::RuntimeException); + + // Attributes + virtual rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); + virtual void SAL_CALL setName( const rtl::OUString& Name ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getLanguageID( ) throw (css::uno::RuntimeException); + virtual void SAL_CALL setLanguageID( ::sal_Int32 _languageid ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< ooo::vba::word::XFont > SAL_CALL getFont() throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif //SW_VBA_AXIS_HXX diff --git a/sw/source/ui/vba/vbastyles.cxx b/sw/source/ui/vba/vbastyles.cxx new file mode 100644 index 000000000000..c13c884feab2 --- /dev/null +++ b/sw/source/ui/vba/vbastyles.cxx @@ -0,0 +1,380 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbastyles.cxx,v $ + * $Revision: 1.3 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbastyles.hxx" +#include "vbastyle.hxx" +#include <cppuhelper/implbase3.hxx> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/lang/IndexOutOfBoundsException.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/style/XStyle.hpp> +#include <ooo/vba/word/WdBuiltinStyle.hpp> +#include <ooo/vba/word/WdStyleType.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +struct BuiltinStyleTable +{ + sal_Int32 wdBuiltinStyle; + const sal_Char* pOOoStyleName; + sal_Int32 wdStyleType; +}; + +const BuiltinStyleTable aBuiltinStyleTable[] = +{ + { word::WdBuiltinStyle::wdStyleBlockQuotation, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyText, "Text body", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyText2, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyText3, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyTextFirstIndent, "First line indent", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyTextFirstIndent2, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyTextIndent, "Text body indent", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyTextIndent2, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleBodyTextIndent3, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleCaption, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleClosing, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleCommentReference, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleCommentText, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleDate, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleDefaultParagraphFont, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleEmphasis, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleEndnoteReference, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleEndnoteText, "Endnote", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleEnvelopeAddress, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleEnvelopeReturn, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleFooter, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleFootnoteReference, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleFootnoteText, "Footnote", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeader, "Header", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading1, "Heading 1", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading2, "Heading 2", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading3, "Heading 3", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading4, "Heading 4", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading5, "Heading 5", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading6, "Heading 6", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading7, "Heading 7", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading8, "Heading 8", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHeading9, "Heading 9", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlAcronym, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlAddress, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlCite, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlCode, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlDfn, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlKbd, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlNormal, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlPre, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlSamp, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlTt, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHtmlVar, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHyperlink, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleHyperlinkFollowed, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex1, "Index 1", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex2, "Index 2", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex3, "Index 3", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex4, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex5, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex6, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex7, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex8, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndex9, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleIndexHeading, "Index Heading", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleLineNumber, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleList, "List", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleList2, "List 2", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleList3, "List 3", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleList4, "List 4", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleList5, "List 5", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListBullet, "List 1", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListBullet2, "List 2", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListBullet3, "List 3", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListBullet4, "List 4", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListBullet5, "List 5", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListContinue, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListContinue2, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListContinue3, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListContinue4, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListContinue5, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleListNumber, "Numbering 1", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListNumber2, "Numbering 2", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListNumber3, "Numbering 3", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListNumber4, "Numbering 4", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleListNumber5, "Numbering 5", word::WdStyleType::wdStyleTypeList }, + { word::WdBuiltinStyle::wdStyleMacroText, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleMessageHeader, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleNavPane, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleNormal, "Default", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleNormalIndent, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleNormalTable, "Table", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleNoteHeading, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStylePageNumber, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStylePlainText, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleSalutation, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleSignature, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleStrong, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleSubtitle, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTableOfAuthorities, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTableOfFigures, "", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTitle, "Title", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOAHeading, "Contents Heading", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC1, "Contents 1", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC2, "Contents 2", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC3, "Contents 3", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC4, "Contents 4", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC5, "Contents 5", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC6, "Contents 6", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC7, "Contents 7", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC8, "Contents 8", word::WdStyleType::wdStyleTypeParagraph }, + { word::WdBuiltinStyle::wdStyleTOC9, "Contents 9", word::WdStyleType::wdStyleTypeParagraph }, + { 0, 0, 0 } +}; + + +static uno::Sequence< rtl::OUString > getStyleTypes() +{ + uno::Sequence< rtl::OUString > aRet(3); + rtl::OUString* pArray = aRet.getArray(); + pArray[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles") ); + pArray[1] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharacterStyles") ); + pArray[2] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("NumberingStyles") ); + return aRet; +} + +typedef ::cppu::WeakImplHelper1< container::XEnumeration > StyleEnumeration_BASE; +typedef ::cppu::WeakImplHelper3< container::XNameAccess, container::XIndexAccess, container::XEnumerationAccess > StyleCollectionHelper_BASE; +/* +class StylesEnumeration : public StyleEnumeration_BASE +{ +public: + StylesEnumeration( const SheetMap& sMap ) : mSheetMap( sMap ), mIt( mSheetMap.begin() ) {} + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return ( mIt != mSheetMap.end() ); + } + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasMoreElements() ) + throw container::NoSuchElementException(); + uno::Reference< sheet::XSpreadsheet > xSheet( *mIt++ ); + return uno::makeAny( xSheet ) ; + } +}; +*/ +class StyleCollectionHelper : public StyleCollectionHelper_BASE +{ +private: + uno::Reference< frame::XModel > mxModel; + uno::Reference< container::XNameAccess > mxStyleFamilies; + uno::Reference< container::XNameContainer > mxCurrentStyleFamily; + uno::Any cachePos; +public: + StyleCollectionHelper( const uno::Reference< frame::XModel >& _xModel ) : mxModel( _xModel ) + { + uno::Reference< style::XStyleFamiliesSupplier > xStyleSupplier( _xModel, uno::UNO_QUERY_THROW); + mxStyleFamilies = xStyleSupplier->getStyleFamilies(); + } + uno::Reference< container::XNameContainer > getCurrentStyleFamily(){ return mxCurrentStyleFamily; } + // XElementAccess + virtual uno::Type SAL_CALL getElementType( ) throw (uno::RuntimeException) { return style::XStyle::static_type(0); } + virtual ::sal_Bool SAL_CALL hasElements( ) throw (uno::RuntimeException) { return getCount() > 0; } + // XNameAcess + virtual uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasByName(aName) ) + throw container::NoSuchElementException(); + return cachePos; + } + virtual uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (uno::RuntimeException) + { + uno::Sequence< rtl::OUString > sNames( getCount() ); + rtl::OUString* pString = sNames.getArray(); + uno::Sequence< rtl::OUString > aStyleTypes = getStyleTypes(); + sal_Int32 nCount = 0; + for( sal_Int32 i = 0; i < aStyleTypes.getLength(); i++ ) + { + uno::Reference< container::XNameAccess > xNameAccess( mxStyleFamilies->getByName( aStyleTypes[i] ), uno::UNO_QUERY_THROW ); + uno::Sequence< rtl::OUString > sElementNames = xNameAccess->getElementNames(); + for( sal_Int32 j = 0; j < sElementNames.getLength(); j++ ) + { + pString[nCount++] = sElementNames[j]; + } + } + return sNames; + } + virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (uno::RuntimeException) + { + uno::Sequence< rtl::OUString > aStyleTypes = getStyleTypes(); + for( sal_Int32 i = 0; i < aStyleTypes.getLength(); i++ ) + { + uno::Reference< container::XNameAccess > xNameAccess( mxStyleFamilies->getByName( aStyleTypes[i] ), uno::UNO_QUERY_THROW ); + if( xNameAccess->hasByName( aName ) ) + { + cachePos = xNameAccess->getByName( aName ); + mxCurrentStyleFamily.set( xNameAccess, uno::UNO_QUERY_THROW ); + return sal_True; + } + } + return sal_False; + } + + // XIndexAccess + virtual ::sal_Int32 SAL_CALL getCount( ) throw (uno::RuntimeException) + { + uno::Sequence< rtl::OUString > aStyleTypes = getStyleTypes(); + sal_Int32 nCount = 0; + for( sal_Int32 i = 0; i < aStyleTypes.getLength(); i++ ) + { + uno::Reference< container::XIndexAccess > xIndexAccess( mxStyleFamilies->getByName( aStyleTypes[i] ), uno::UNO_QUERY_THROW ); + nCount += xIndexAccess->getCount(); + } + return nCount; + } + virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException ) + { + if ( Index < 0 || Index >= getCount() ) + throw lang::IndexOutOfBoundsException(); + + // FIXME: need to make a alphabetically sorted list of style names + uno::Sequence< rtl::OUString > aStyleTypes = getStyleTypes(); + for( sal_Int32 i = 0; i < aStyleTypes.getLength(); i++ ) + { + uno::Reference< container::XIndexAccess > xIndexAccess( mxStyleFamilies->getByName( aStyleTypes[i] ), uno::UNO_QUERY_THROW ); + sal_Int32 nCount = xIndexAccess->getCount(); + if( Index >= nCount ) + Index -= nCount; + else + { + mxCurrentStyleFamily.set( xIndexAccess, uno::UNO_QUERY_THROW ); + return xIndexAccess->getByIndex( Index ); + } + } + throw lang::IndexOutOfBoundsException(); + } + // XEnumerationAccess + virtual uno::Reference< container::XEnumeration > SAL_CALL createEnumeration( ) throw (uno::RuntimeException) + { + // FIXME: + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } +}; + +SwVbaStyles::SwVbaStyles( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< css::uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xModel ) throw ( script::BasicErrorException ) : SwVbaStyles_BASE( xParent, xContext, uno::Reference< container::XIndexAccess >( new StyleCollectionHelper( xModel ) ) ), mxModel( xModel ) +{ + mxMSF.set( mxModel, uno::UNO_QUERY_THROW ); +} + +uno::Any +SwVbaStyles::createCollectionObject(const uno::Any& aObject) +{ + uno::Reference< beans::XPropertySet > xStyleProp( aObject, uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XStyle >( new SwVbaStyle( this, mxContext, xStyleProp ) ) ); +} + +uno::Type SAL_CALL +SwVbaStyles::getElementType() throw (uno::RuntimeException) +{ + return word::XStyle::static_type(0); +} + +uno::Reference< container::XEnumeration > SAL_CALL +SwVbaStyles::createEnumeration() throw (uno::RuntimeException) +{ + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); +} + +uno::Any SAL_CALL +SwVbaStyles::Item( const uno::Any& Index1, const uno::Any& Index2 ) throw (uno::RuntimeException) +{ + //handle WdBuiltinStyle + sal_Int32 nIndex = 0; + if( ( Index1 >>= nIndex ) && ( nIndex < 0 ) ) + { + for( const BuiltinStyleTable* pTable = aBuiltinStyleTable; pTable != NULL; pTable++ ) + { + if( nIndex == pTable->wdBuiltinStyle ) + { + rtl::OUString aStyleName = rtl::OUString::createFromAscii( pTable->pOOoStyleName ); + if( aStyleName.getLength() > 0 ) + { + rtl::OUString aStyleType = SwVbaStyle::getOOoStyleTypeFromMSWord( pTable->wdStyleType ); + switch( pTable->wdStyleType ) + { + case word::WdStyleType::wdStyleTypeParagraph: + case word::WdStyleType::wdStyleTypeTable: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles") ); + break; + } + case word::WdStyleType::wdStyleTypeCharacter: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CharacterStyles") ); + break; + } + case word::WdStyleType::wdStyleTypeList: + { + aStyleType = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("NumberingStyles") ); + break; + } + default: + DebugHelper::exception( SbERR_INTERNAL_ERROR, rtl::OUString() ); + } + uno::Reference< style::XStyleFamiliesSupplier > xStyleSupplier( mxModel, uno::UNO_QUERY_THROW); + uno::Reference< container::XNameAccess > xStylesAccess( xStyleSupplier->getStyleFamilies()->getByName( aStyleType ), uno::UNO_QUERY_THROW ); + uno::Reference< beans::XPropertySet > xStyleProps( xStylesAccess->getByName( aStyleName ), uno::UNO_QUERY_THROW ); + return uno::makeAny( uno::Reference< word::XStyle >( new SwVbaStyle( this, mxContext, xStyleProps ) ) ); + } + else + { + OSL_TRACE("SwVbaStyles::Item: the builtin style type is not implemented"); + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Not implemented") ), uno::Reference< uno::XInterface >() ); + } + } + } + } + return SwVbaStyles_BASE::Item( Index1, Index2 ); +} + +rtl::OUString& +SwVbaStyles::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaStyles") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaStyles::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.XStyles" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbastyles.hxx b/sw/source/ui/vba/vbastyles.hxx new file mode 100644 index 000000000000..764e74fc8c3f --- /dev/null +++ b/sw/source/ui/vba/vbastyles.hxx @@ -0,0 +1,54 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbastyles.hxx,v $ + * $Revision: 1.3 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_STYLES_HXX +#define SW_VBA_STYLES_HXX + +#include <ooo/vba/word/XStyles.hpp> +#include <vbahelper/vbacollectionimpl.hxx> + +typedef CollTestImplHelper< ooo::vba::word::XStyles > SwVbaStyles_BASE; +class SwVbaStyles: public SwVbaStyles_BASE +{ + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::lang::XMultiServiceFactory > mxMSF; +public: + SwVbaStyles( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xModel ) throw ( css::script::BasicErrorException ); + + virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index1, const css::uno::Any& Index2 ) throw (css::uno::RuntimeException); + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + virtual css::uno::Any createCollectionObject(const css::uno::Any&); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif diff --git a/sw/source/ui/vba/vbasystem.cxx b/sw/source/ui/vba/vbasystem.cxx new file mode 100644 index 000000000000..f3f5cf7c0c02 --- /dev/null +++ b/sw/source/ui/vba/vbasystem.cxx @@ -0,0 +1,195 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbasystem.hxx" +#include <vbahelper/vbahelper.hxx> +#include <ooo/vba/word/WdCursorType.hpp> +#include <tools/diagnose_ex.h> +#include <tools/config.hxx> +#include <tools/string.hxx> +#include <osl/file.hxx> +#include <tools/urlobj.hxx> +#include <tools/string.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +PrivateProfileStringListener::PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey ) + :maFileName( rFileName ), maGroupName( rGroupName ), maKey( rKey ) +{ +} + +PrivateProfileStringListener::~PrivateProfileStringListener() +{ +} + +void PrivateProfileStringListener::Initialize( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey ) +{ + maFileName = rFileName; + maGroupName = rGroupName; + maKey = rKey; +} + +uno::Any PrivateProfileStringListener::getValueEvent() +{ + // get the private profile string + Config aCfg( maFileName ); + aCfg.SetGroup( maGroupName ); + rtl::OUString sValue = String( aCfg.ReadKey( maKey ), RTL_TEXTENCODING_DONTKNOW ); + + return uno::makeAny( sValue ); +} + +void PrivateProfileStringListener::setValueEvent( const css::uno::Any& value ) +{ + // set the private profile string + Config aCfg( maFileName ); + aCfg.SetGroup( maGroupName ); + + rtl::OUString aValue; + value >>= aValue; + aCfg.WriteKey( maKey, ByteString( aValue.getStr(), RTL_TEXTENCODING_DONTKNOW ) ); +} + +SwVbaSystem::SwVbaSystem( uno::Reference<uno::XComponentContext >& xContext ): SwVbaSystem_BASE( uno::Reference< XHelperInterface >(), xContext ) +{ +} + +SwVbaSystem::~SwVbaSystem() +{ +} + +sal_Int32 SAL_CALL +SwVbaSystem::getCursor() throw (uno::RuntimeException) +{ + sal_Int32 nPointerStyle = getPointerStyle( getCurrentWordDoc(mxContext) ); + + switch( nPointerStyle ) + { + case POINTER_ARROW: + return word::WdCursorType::wdCursorNorthwestArrow; + case POINTER_NULL: + return word::WdCursorType::wdCursorNormal; + case POINTER_WAIT: + return word::WdCursorType::wdCursorWait; + case POINTER_TEXT: + return word::WdCursorType::wdCursorIBeam; + default: + return word::WdCursorType::wdCursorNormal; + } +} + +void SAL_CALL +SwVbaSystem::setCursor( sal_Int32 _cursor ) throw (uno::RuntimeException) +{ + try + { + switch( _cursor ) + { + case word::WdCursorType::wdCursorNorthwestArrow: + { + const Pointer& rPointer( POINTER_ARROW ); + setCursorHelper( getCurrentWordDoc(mxContext), rPointer, sal_False ); + break; + } + case word::WdCursorType::wdCursorWait: + { + const Pointer& rPointer( static_cast< PointerStyle >( POINTER_WAIT ) ); + //It will set the edit window, toobar and statusbar's mouse pointer. + setCursorHelper( getCurrentWordDoc(mxContext), rPointer, sal_True ); + break; + } + case word::WdCursorType::wdCursorIBeam: + { + const Pointer& rPointer( static_cast< PointerStyle >( POINTER_TEXT ) ); + //It will set the edit window, toobar and statusbar's mouse pointer. + setCursorHelper( getCurrentWordDoc( mxContext ), rPointer, sal_True ); + break; + } + case word::WdCursorType::wdCursorNormal: + { + const Pointer& rPointer( POINTER_NULL ); + setCursorHelper( getCurrentWordDoc( mxContext ), rPointer, sal_False ); + break; + } + default: + throw uno::RuntimeException( rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("Unknown value for Cursor pointer")), uno::Reference< uno::XInterface >() ); + // TODO: isn't this a flaw in the API? It should be allowed to throw an + // IllegalArgumentException, or so + } + } + catch( const uno::Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } +} + +uno::Any SAL_CALL +SwVbaSystem::PrivateProfileString( const rtl::OUString& rFilename, const rtl::OUString& rSection, const rtl::OUString& rKey ) throw ( uno::RuntimeException ) +{ + if( rFilename.getLength() == 0 ) + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Failed to access document from shell" ) ), uno::Reference< uno::XInterface >() ); + + // FIXME: need to detect whether it is a relative file path + // we need to detect if this is a URL, if not then assume its a file path + rtl::OUString sFileUrl; + INetURLObject aObj; + aObj.SetURL( rFilename ); + bool bIsURL = aObj.GetProtocol() != INET_PROT_NOT_VALID; + if ( bIsURL ) + sFileUrl = rFilename; + else + osl::FileBase::getFileURLFromSystemPath( rFilename, sFileUrl); + + ByteString aGroupName = ByteString( rSection.getStr(), RTL_TEXTENCODING_DONTKNOW); + ByteString aKey = ByteString( rKey.getStr(), RTL_TEXTENCODING_DONTKNOW); + maPrivateProfileStringListener.Initialize( sFileUrl, aGroupName, aKey ); + + return uno::makeAny( uno::Reference< XPropValue > ( new ScVbaPropValue( &maPrivateProfileStringListener ) ) ); +} + +rtl::OUString& +SwVbaSystem::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaSystem") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaSystem::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.System" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbasystem.hxx b/sw/source/ui/vba/vbasystem.hxx new file mode 100644 index 000000000000..f510ed1bae08 --- /dev/null +++ b/sw/source/ui/vba/vbasystem.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbasystem.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_SYSTEM_HXX +#define SW_VBA_SYSTEM_HXX + +#include <ooo/vba/word/XSystem.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <vbahelper/vbapropvalue.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XSystem > SwVbaSystem_BASE; + +class PrivateProfileStringListener : public PropListener +{ +private: + rtl::OUString maFileName; + ByteString maGroupName; + ByteString maKey; +public: + PrivateProfileStringListener(){}; + PrivateProfileStringListener( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey ); + virtual ~PrivateProfileStringListener(); + void Initialize( const rtl::OUString& rFileName, const ByteString& rGroupName, const ByteString& rKey ); + + //PropListener + virtual void setValueEvent( const css::uno::Any& value ); + virtual css::uno::Any getValueEvent(); +}; + +class SwVbaSystem : public SwVbaSystem_BASE +{ +private: + PrivateProfileStringListener maPrivateProfileStringListener; + +public: + SwVbaSystem( css::uno::Reference< css::uno::XComponentContext >& m_xContext ); + virtual ~SwVbaSystem(); + + // XSystem + virtual sal_Int32 SAL_CALL getCursor() throw ( css::uno::RuntimeException ); + virtual void SAL_CALL setCursor( sal_Int32 _cursor ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL PrivateProfileString( const rtl::OUString& rFilename, const rtl::OUString& rSection, const rtl::OUString& rKey ) throw ( css::uno::RuntimeException ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_SYSTEM_HXX */ diff --git a/sw/source/ui/vba/vbatable.cxx b/sw/source/ui/vba/vbatable.cxx new file mode 100644 index 000000000000..11969d6717a0 --- /dev/null +++ b/sw/source/ui/vba/vbatable.cxx @@ -0,0 +1,97 @@ +#include "vbatable.hxx" +#include "vbarange.hxx" +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/view/XSelectionSupplier.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextTablesSupplier.hpp> +#include <com/sun/star/table/XTableRows.hpp> +#include <com/sun/star/container/XNamed.hpp> +#include "vbaborders.hxx" +#include "vbapalette.hxx" + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaTable::SwVbaTable( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rDocument, const uno::Reference< css::text::XTextTable >& xTextTable) throw ( uno::RuntimeException ) : SwVbaTable_BASE( rParent, rContext ), mxTextDocument( rDocument ) +{ + mxTextTable.set( xTextTable, uno::UNO_QUERY_THROW ); +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaTable::Range( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + return new SwVbaRange( mxParent, mxContext, mxTextDocument, mxTextTable->getAnchor() ); +} + +void SAL_CALL +SwVbaTable::Select( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + uno::Reference< frame::XModel > xModel( mxTextDocument, uno::UNO_QUERY_THROW ); + uno::Reference< frame::XController > xController = xModel->getCurrentController(); + + uno::Reference< text::XTextViewCursorSupplier > xViewCursorSupplier( xController, uno::UNO_QUERY_THROW ); + uno::Reference< view::XSelectionSupplier > xSelectionSupplier( xController, uno::UNO_QUERY_THROW ); + + // set the view cursor to the start of the table. + xSelectionSupplier->select( uno::makeAny( mxTextTable ) ); + + // go to the end of the table and span the view + uno::Reference< text::XTextViewCursor > xCursor = xViewCursorSupplier->getViewCursor(); + xCursor->gotoEnd(sal_True); + +} + +void SAL_CALL +SwVbaTable::Delete( ) throw (script::BasicErrorException, uno::RuntimeException) +{ + uno::Reference< table::XTableRows > xRows( mxTextTable->getRows() ); + xRows->removeByIndex( 0, xRows->getCount() ); +} + +uno::Reference< word::XRange > SAL_CALL +SwVbaTable::ConvertToText( const uno::Any& /*Separator*/, const uno::Any& /*NestedTables*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + // #FIXME the helper api uses the dreaded dispatch mechanism, holding off + // implementation while I look for alternative solution + throw uno::RuntimeException(); +} + +rtl::OUString SAL_CALL +SwVbaTable::getName() throw (uno::RuntimeException) +{ + uno::Reference< container::XNamed > xNamed( mxTextTable, uno::UNO_QUERY_THROW ); + return xNamed->getName(); +} + +uno::Any SAL_CALL +SwVbaTable::Borders( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< table::XCellRange > aCellRange( mxTextTable, uno::UNO_QUERY_THROW ); + VbaPalette aPalette; + uno::Reference< XCollection > xCol( new SwVbaBorders( this, mxContext, aCellRange, aPalette ) ); + if ( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +// XHelperInterface +rtl::OUString& +SwVbaTable::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaTable") ); + return sImplName; +} + +uno::Sequence<rtl::OUString> +SwVbaTable::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Table" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbatable.hxx b/sw/source/ui/vba/vbatable.hxx new file mode 100644 index 000000000000..7d913d718895 --- /dev/null +++ b/sw/source/ui/vba/vbatable.hxx @@ -0,0 +1,28 @@ +#ifndef SW_VBA_TABLE_HXX +#define SW_VBA_TABLE_HXX +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <ooo/vba/word/XRange.hpp> +#include <ooo/vba/word/XTable.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XTable > SwVbaTable_BASE; + +class SwVbaTable : public SwVbaTable_BASE +{ + css::uno::Reference< css::text::XTextDocument > mxTextDocument; + css::uno::Reference< css::text::XTextTable > mxTextTable; +public: + SwVbaTable( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, const css::uno::Reference< css::text::XTextDocument >& rDocument, const css::uno::Reference< css::text::XTextTable >& xTextTable) throw ( css::uno::RuntimeException); + css::uno::Reference< css::text::XTextDocument > getDocument() { return mxTextDocument; }; + virtual css::uno::Reference< ::ooo::vba::word::XRange > SAL_CALL Range( ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + virtual void SAL_CALL Select( ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + virtual void SAL_CALL Delete( ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + virtual css::uno::Reference< ::ooo::vba::word::XRange > SAL_CALL ConvertToText( const css::uno::Any& Separator, const css::uno::Any& NestedTables ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + virtual rtl::OUString SAL_CALL getName( ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Borders( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif diff --git a/sw/source/ui/vba/vbatables.cxx b/sw/source/ui/vba/vbatables.cxx new file mode 100644 index 000000000000..9a10622400d3 --- /dev/null +++ b/sw/source/ui/vba/vbatables.cxx @@ -0,0 +1,131 @@ +#include "vbatables.hxx" +#include "vbatable.hxx" +#include "vbarange.hxx" +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextTablesSupplier.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <comphelper/componentcontext.hxx> + +using namespace ::ooo::vba; +using namespace css; + +uno::Reference< container::XIndexAccess > lcl_getTables( const uno::Reference< frame::XModel >& xDoc ) +{ + uno::Reference< container::XIndexAccess > xTables; + uno::Reference< text::XTextTablesSupplier > xSupp( xDoc, uno::UNO_QUERY ); + if ( xSupp.is() ) + xTables.set( xSupp->getTextTables(), uno::UNO_QUERY_THROW ); + return xTables; +} + +uno::Any lcl_createTable( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xDocument, const uno::Any& aSource ) +{ + uno::Reference< text::XTextTable > xTextTable( aSource, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextDocument > xTextDocument( xDocument, uno::UNO_QUERY_THROW ); + uno::Reference< word::XTable > xTable( new SwVbaTable( xParent, xContext, xTextDocument, xTextTable ) ); + return uno::makeAny( xTable ); +} + +typedef ::cppu::WeakImplHelper1< css::container::XEnumeration > EnumBase; + +class TableEnumerationImpl : public EnumBase +{ + uno::Reference< XHelperInterface > mxParent; + uno::Reference< uno::XComponentContext > mxContext; + uno::Reference< frame::XModel > mxDocument; + uno::Reference< container::XIndexAccess > mxIndexAccess; + sal_Int32 mnCurIndex; +public: + TableEnumerationImpl( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xDocument, const uno::Reference< container::XIndexAccess >& xIndexAccess ) : mxParent( xParent ), mxContext( xContext ), mxDocument( xDocument ), mxIndexAccess( xIndexAccess ), mnCurIndex(0) + { + } + virtual ::sal_Bool SAL_CALL hasMoreElements( ) throw (uno::RuntimeException) + { + return ( mnCurIndex < mxIndexAccess->getCount() ); + } + virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) + { + if ( !hasMoreElements() ) + throw container::NoSuchElementException(); + return lcl_createTable( mxParent, mxContext, mxDocument, mxIndexAccess->getByIndex( mnCurIndex++ ) ); + } + +}; + +SwVbaTables::SwVbaTables( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext > & xContext, const uno::Reference< frame::XModel >& xDocument ) : SwVbaTables_BASE( xParent, xContext , lcl_getTables( xDocument ) ), mxDocument( xDocument ) +{ +} + + +uno::Reference< word::XTable > SAL_CALL +SwVbaTables::Add( const uno::Reference< word::XRange >& Range, const uno::Any& NumRows, const uno::Any& NumColumns, const uno::Any& /*DefaultTableBehavior*/, const uno::Any& /*AutoFitBehavior*/ ) throw (script::BasicErrorException, uno::RuntimeException) +{ + sal_Int32 nCols = 0; + sal_Int32 nRows = 0; + SwVbaRange* pVbaRange = dynamic_cast< SwVbaRange* >( Range.get() ); + // Preconditions + if ( !( pVbaRange && ( NumRows >>= nRows ) && ( NumColumns >>= nCols ) ) ) + throw uno::RuntimeException(); // #FIXME better exception?? + if ( nCols <= 0 || nRows <= 0 ) + throw uno::RuntimeException(); // #FIXME better exception?? + + uno::Reference< frame::XModel > xModel( pVbaRange->getDocument(), uno::UNO_QUERY_THROW ); + uno::Reference< lang::XMultiServiceFactory > xMsf( xModel, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextRange > xTextRange = pVbaRange->getXTextRange(); + + uno::Reference< text::XTextTable > xTable; + xTable.set( xMsf->createInstance( rtl::OUString::createFromAscii("com.sun.star.text.TextTable") ), uno::UNO_QUERY_THROW ); +/* + comphelper::ComponentContext aCtx( xMsf ); + if ( !aCtx.createComponent( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextTable") ), xTable ) ); + throw uno::RuntimeException(); // #FIXME better exception?? +*/ + xTable->initialize( nRows, nCols ); + uno::Reference< text::XText > xText = xTextRange->getText(); + uno::Reference< text::XTextContent > xContext( xTable, uno::UNO_QUERY_THROW ); + + xText->insertTextContent( xTextRange, xContext, true ); + uno::Reference< word::XTable > xVBATable( new SwVbaTable( mxParent, mxContext, pVbaRange->getDocument(), xTable ) ); + return xVBATable; +} + +uno::Reference< container::XEnumeration > SAL_CALL +SwVbaTables::createEnumeration() throw (uno::RuntimeException) +{ + return new TableEnumerationImpl( mxParent, mxContext, mxDocument, m_xIndexAccess ); +} + +// ScVbaCollectionBaseImpl +uno::Any +SwVbaTables::createCollectionObject( const uno::Any& aSource ) +{ + return lcl_createTable( mxParent, mxContext, mxDocument, aSource ); +} + +// XHelperInterface +rtl::OUString& +SwVbaTables::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaTables") ); + return sImplName; +} + +// XEnumerationAccess +uno::Type SAL_CALL +SwVbaTables::getElementType() throw (uno::RuntimeException) +{ + return word::XTable::static_type(0); +} + +uno::Sequence<rtl::OUString> +SwVbaTables::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Tables" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbatables.hxx b/sw/source/ui/vba/vbatables.hxx new file mode 100644 index 000000000000..a789337a2839 --- /dev/null +++ b/sw/source/ui/vba/vbatables.hxx @@ -0,0 +1,28 @@ +#ifndef SW_VBA_TABLES_HXX +#define SW_VBA_TABLES_HXX + +#include <ooo/vba/word/XTables.hpp> +#include <vbahelper/vbacollectionimpl.hxx> + + +typedef CollTestImplHelper< ov::word::XTables > SwVbaTables_BASE; + +class SwVbaTables : public SwVbaTables_BASE +{ + css::uno::Reference< css::frame::XModel > mxDocument; +public: + SwVbaTables( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::frame::XModel >& xDocument ); + // XTables + virtual css::uno::Reference< ov::word::XTable > SAL_CALL Add( const css::uno::Reference< ::ooo::vba::word::XRange >& Range, const css::uno::Any& NumRows, const css::uno::Any& NumColumns, const css::uno::Any& DefaultTableBehavior, const css::uno::Any& AutoFitBehavior ) throw (css::script::BasicErrorException, css::uno::RuntimeException); + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + // ScVbaCollectionBaseImpl + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif diff --git a/sw/source/ui/vba/vbatemplate.cxx b/sw/source/ui/vba/vbatemplate.cxx new file mode 100644 index 000000000000..630986ed6c81 --- /dev/null +++ b/sw/source/ui/vba/vbatemplate.cxx @@ -0,0 +1,106 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbatemplate.hxx" +#include <vbahelper/vbahelper.hxx> +#include "wordvbahelper.hxx" +#include "vbaautotextentry.hxx" +#include <comphelper/processfactory.hxx> +#include <com/sun/star/text/XAutoTextContainer.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaTemplate::SwVbaTemplate( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const css::uno::Reference< css::frame::XModel >& rModel, const rtl::OUString& rName ) + : SwVbaTemplate_BASE( rParent, rContext ), mxModel( rModel ), msName( rName ) +{ +} + + +SwVbaTemplate::~SwVbaTemplate() +{ +} + +rtl::OUString +SwVbaTemplate::getName() throw ( css::uno::RuntimeException ) +{ + return msName; +} + +uno::Any SAL_CALL +SwVbaTemplate::AutoTextEntries( const uno::Any& index ) throw (uno::RuntimeException) +{ + uno::Reference< lang::XMultiServiceFactory > xMgr = comphelper::getProcessServiceFactory(); + uno::Reference< text::XAutoTextContainer > xAutoTextContainer( xMgr->createInstance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.AutoTextContainer") ) ), uno::UNO_QUERY_THROW ); + + // the default template is "Normal.dot" in Word. + rtl::OUString sGroup( RTL_CONSTASCII_USTRINGPARAM("Normal") ); + sal_Int32 nIndex = msName.lastIndexOf( sal_Unicode('.') ); + if( nIndex > 0 ) + { + sGroup = msName.copy( 0, msName.lastIndexOf( sal_Unicode('.') ) ); + // OSL_TRACE("SwVbaTemplate::AutoTextEntries: %s", rtl::OUStringToOString( sGroup, RTL_TEXTENCODING_UTF8 ).getStr() ); + } + + uno::Reference< container::XIndexAccess > xGroup; + if( xAutoTextContainer->hasByName( sGroup ) ) + { + xGroup.set( xAutoTextContainer->getByName( sGroup ), uno::UNO_QUERY_THROW ); + } + else + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Auto Text Entry doesn't exist") ), uno::Reference< uno::XInterface >() ); + //xGroup.set( xAutoTextContainer->insertNewByName( sGroup ), uno::UNO_QUERY_THROW ); + } + + uno::Reference< XCollection > xCol( new SwVbaAutoTextEntries( this, mxContext, xGroup ) ); + if( index.hasValue() ) + return xCol->Item( index, uno::Any() ); + return uno::makeAny( xCol ); +} + +rtl::OUString& +SwVbaTemplate::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaTemplate") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaTemplate::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Template" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbatemplate.hxx b/sw/source/ui/vba/vbatemplate.hxx new file mode 100644 index 000000000000..90c06cb2c21e --- /dev/null +++ b/sw/source/ui/vba/vbatemplate.hxx @@ -0,0 +1,55 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_TEMPLATE_HXX +#define SW_VBA_TEMPLATE_HXX + +#include <ooo/vba/word/XTemplate.hpp> +#include <vbahelper/vbahelperinterface.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XTemplate > SwVbaTemplate_BASE; + +class SwVbaTemplate : public SwVbaTemplate_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + rtl::OUString msName; +public: + SwVbaTemplate( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, + const css::uno::Reference< css::frame::XModel >& rModel, const rtl::OUString& ); + virtual ~SwVbaTemplate(); + + // XTemplate + virtual rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL AutoTextEntries( const css::uno::Any& index ) throw (css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_TEMPLATE_HXX */ diff --git a/sw/source/ui/vba/vbavariable.cxx b/sw/source/ui/vba/vbavariable.cxx new file mode 100644 index 000000000000..c5ff127308b9 --- /dev/null +++ b/sw/source/ui/vba/vbavariable.cxx @@ -0,0 +1,108 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbavariable.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +SwVbaVariable::SwVbaVariable( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, + const uno::Reference< beans::XPropertyAccess >& rUserDefined, const rtl::OUString& rName ) throw ( uno::RuntimeException ) : + SwVbaVariable_BASE( rParent, rContext ), mxUserDefined( rUserDefined ), maName( rName ) +{ +} + +SwVbaVariable::~SwVbaVariable() +{ +} + +rtl::OUString SAL_CALL +SwVbaVariable::getName() throw ( css::uno::RuntimeException ) +{ + return maName; +} + +void SAL_CALL +SwVbaVariable::setName( const rtl::OUString& ) throw ( css::uno::RuntimeException ) +{ + throw uno::RuntimeException( rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(" Fail to set name")), uno::Reference< uno::XInterface >() ); +} + +uno::Any SAL_CALL +SwVbaVariable::getValue() throw ( css::uno::RuntimeException ) +{ + uno::Reference< beans::XPropertySet > xProp( mxUserDefined, uno::UNO_QUERY_THROW ); + return xProp->getPropertyValue( maName ); +} + +void SAL_CALL +SwVbaVariable::setValue( const uno::Any& rValue ) throw ( css::uno::RuntimeException ) +{ + // FIXME: fail to set the value if the new type of vaue is differenct from the original one. + uno::Reference< beans::XPropertySet > xProp( mxUserDefined, uno::UNO_QUERY_THROW ); + xProp->setPropertyValue( maName, rValue ); +} + +sal_Int32 SAL_CALL +SwVbaVariable::getIndex() throw ( css::uno::RuntimeException ) +{ + const uno::Sequence< beans::PropertyValue > props = mxUserDefined->getPropertyValues(); + for (sal_Int32 i = 0; i < props.getLength(); ++i) + { + if( maName.equals( props[i].Name ) ) + return i+1; + } + + return 0; +} + +rtl::OUString& +SwVbaVariable::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaVariable") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaVariable::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Variable" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbavariable.hxx b/sw/source/ui/vba/vbavariable.hxx new file mode 100644 index 000000000000..e8021610f227 --- /dev/null +++ b/sw/source/ui/vba/vbavariable.hxx @@ -0,0 +1,62 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_VARIABLE_HXX +#define SW_VBA_VARIABLE_HXX + +#include <ooo/vba/word/XVariable.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <cppuhelper/implbase1.hxx> +#include <com/sun/star/beans/XPropertyAccess.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XVariable > SwVbaVariable_BASE; + +class SwVbaVariable : public SwVbaVariable_BASE +{ +private: + css::uno::Reference< css::beans::XPropertyAccess > mxUserDefined; + rtl::OUString maName; + +public: + SwVbaVariable( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, + const css::uno::Reference< css::beans::XPropertyAccess >& rUserDefined, const rtl::OUString& rName ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaVariable(); + + // XVariable + virtual rtl::OUString SAL_CALL getName() throw ( css::uno::RuntimeException ); + virtual void SAL_CALL setName( const rtl::OUString& ) throw ( css::uno::RuntimeException ); + virtual css::uno::Any SAL_CALL getValue() throw ( css::uno::RuntimeException ); + virtual void SAL_CALL setValue( const css::uno::Any& rValue ) throw ( css::uno::RuntimeException ); + virtual sal_Int32 SAL_CALL getIndex() throw ( css::uno::RuntimeException ); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_VARIABLE_HXX */ diff --git a/sw/source/ui/vba/vbavariables.cxx b/sw/source/ui/vba/vbavariables.cxx new file mode 100644 index 000000000000..fbe046085144 --- /dev/null +++ b/sw/source/ui/vba/vbavariables.cxx @@ -0,0 +1,105 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbavariables.hxx" +#include "vbavariable.hxx" +#include <com/sun/star/beans/XPropertyContainer.hpp> +#include <com/sun/star/beans/PropertyAttribute.hpp> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +uno::Reference< container::XIndexAccess > createVariablesAccess( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< beans::XPropertyAccess >& xUserDefined ) throw ( uno::RuntimeException ) +{ + // FIXME: the performance is poor? + XNamedObjectCollectionHelper< word::XVariable >::XNamedVec mVariables; + const uno::Sequence< beans::PropertyValue > props = xUserDefined->getPropertyValues(); + sal_Int32 nCount = props.getLength(); + mVariables.reserve( nCount ); + for( sal_Int32 i=0; i < nCount; i++ ) + mVariables.push_back( uno::Reference< word::XVariable > ( new SwVbaVariable( xParent, xContext, xUserDefined, props[i].Name ) ) ); + + uno::Reference< container::XIndexAccess > xVariables( new XNamedObjectCollectionHelper< word::XVariable >( mVariables ) ); + return xVariables; +} + +SwVbaVariables::SwVbaVariables( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext, const uno::Reference< beans::XPropertyAccess >& rUserDefined ): SwVbaVariables_BASE( xParent, xContext, createVariablesAccess( xParent, xContext, rUserDefined ) ), mxUserDefined( rUserDefined ) +{ +} +// XEnumerationAccess +uno::Type +SwVbaVariables::getElementType() throw (uno::RuntimeException) +{ + return word::XVariable::static_type(0); +} +uno::Reference< container::XEnumeration > +SwVbaVariables::createEnumeration() throw (uno::RuntimeException) +{ + uno::Reference< container::XEnumerationAccess > xEnumerationAccess( m_xIndexAccess, uno::UNO_QUERY_THROW ); + return xEnumerationAccess->createEnumeration(); +} + +uno::Any +SwVbaVariables::createCollectionObject( const css::uno::Any& aSource ) +{ + return aSource; +} + +uno::Any SAL_CALL +SwVbaVariables::Add( const rtl::OUString& rName, const uno::Any& rValue ) throw (uno::RuntimeException) +{ + uno::Any aValue; + if( rValue.hasValue() ) + aValue = rValue; + else + aValue <<= rtl::OUString(); + uno::Reference< beans::XPropertyContainer > xPropertyContainer( mxUserDefined, uno::UNO_QUERY_THROW ); + xPropertyContainer->addProperty( rName, beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::REMOVEABLE, aValue ); + + return uno::makeAny( uno::Reference< word::XVariable >( new SwVbaVariable( getParent(), mxContext, mxUserDefined, rName ) ) ); +} + +rtl::OUString& +SwVbaVariables::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaVariables") ); + return sImplName; +} + +css::uno::Sequence<rtl::OUString> +SwVbaVariables::getServiceNames() +{ + static uno::Sequence< rtl::OUString > sNames; + if ( sNames.getLength() == 0 ) + { + sNames.realloc( 1 ); + sNames[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Variables") ); + } + return sNames; +} diff --git a/sw/source/ui/vba/vbavariables.hxx b/sw/source/ui/vba/vbavariables.hxx new file mode 100644 index 000000000000..533760abc47b --- /dev/null +++ b/sw/source/ui/vba/vbavariables.hxx @@ -0,0 +1,64 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_VARIABLES_HXX +#define SW_VBA_VARIABLES_HXX + +#include <vbahelper/vbacollectionimpl.hxx> +#include <ooo/vba/word/XVariables.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/beans/XPropertyAccess.hpp> + +typedef CollTestImplHelper< ooo::vba::word::XVariables > SwVbaVariables_BASE; + +class SwVbaVariables : public SwVbaVariables_BASE +{ +private: + css::uno::Reference< css::beans::XPropertyAccess > mxUserDefined; + +public: + SwVbaVariables( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext > & xContext, const css::uno::Reference< css::beans::XPropertyAccess >& rUserDefined ); + virtual ~SwVbaVariables() {} + + // XEnumerationAccess + virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException); + virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException); + + // SwVbaVariables_BASE + virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); + + // XVariables + virtual css::uno::Any SAL_CALL Add( const rtl::OUString& rName, const css::uno::Any& rValue ) throw (css::uno::RuntimeException); +}; + +#endif /* SW_VBA_VARIABLES_HXX */ diff --git a/sw/source/ui/vba/vbaview.cxx b/sw/source/ui/vba/vbaview.cxx new file mode 100644 index 000000000000..157d36c6b8f4 --- /dev/null +++ b/sw/source/ui/vba/vbaview.cxx @@ -0,0 +1,425 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbaview.hxx" +#include <vbahelper/vbahelper.hxx> +#include <tools/diagnose_ex.h> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/view/XViewSettingsSupplier.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/table/XCellRange.hpp> +#include <com/sun/star/text/XTextDocument.hpp> +#include <com/sun/star/text/XFootnotesSupplier.hpp> +#include <com/sun/star/text/XEndnotesSupplier.hpp> +#include <com/sun/star/container/XIndexAccess.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/container/XEnumeration.hpp> +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <ooo/vba/word/WdSpecialPane.hpp> +#include <ooo/vba/word/WdViewType.hpp> +#include <ooo/vba/word/WdSeekView.hpp> + +#include "wordvbahelper.hxx" +#include "vbaheaderfooterhelper.hxx" +#include <view.hxx> + +using namespace ::ooo::vba; +using namespace ::com::sun::star; + +static const sal_Int32 DEFAULT_BODY_DISTANCE = 500; + +SwVbaView::SwVbaView( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, + const uno::Reference< frame::XModel >& rModel ) throw ( uno::RuntimeException ) : + SwVbaView_BASE( rParent, rContext ), mxModel( rModel ) +{ + uno::Reference< frame::XController > xController = mxModel->getCurrentController(); + + uno::Reference< text::XTextViewCursorSupplier > xTextViewCursorSupp( xController, uno::UNO_QUERY_THROW ); + mxViewCursor = xTextViewCursorSupp->getViewCursor(); + + uno::Reference< view::XViewSettingsSupplier > xViewSettingSupp( xController, uno::UNO_QUERY_THROW ); + mxViewSettings.set( xViewSettingSupp->getViewSettings(), uno::UNO_QUERY_THROW ); +} + +SwVbaView::~SwVbaView() +{ +} + +::sal_Int32 SAL_CALL +SwVbaView::getSeekView() throw (css::uno::RuntimeException) +{ + // FIXME: if the view cursor is in table, field, section and frame + // handle if the cursor is in table + uno::Reference< text::XText > xCurrentText = mxViewCursor->getText(); + uno::Reference< beans::XPropertySet > xCursorProps( mxViewCursor, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextContent > xTextContent; + while( xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextTable") ) ) >>= xTextContent ) + { + xCurrentText = xTextContent->getAnchor()->getText(); + xCursorProps.set( xCurrentText->createTextCursor(), uno::UNO_QUERY_THROW ); + } + uno::Reference< lang::XServiceInfo > xServiceInfo( xCurrentText, uno::UNO_QUERY_THROW ); + rtl::OUString aImplName = xServiceInfo->getImplementationName(); + if( aImplName.equalsAscii("SwXBodyText") ) + { + return word::WdSeekView::wdSeekMainDocument; + } + else if( aImplName.equalsAscii("SwXHeadFootText") ) + { + if( HeaderFooterHelper::isHeader( mxModel, xCurrentText ) ) + { + if( HeaderFooterHelper::isFirstPageHeader( mxModel, xCurrentText ) ) + return word::WdSeekView::wdSeekFirstPageHeader; + else if( HeaderFooterHelper::isEvenPagesHeader( mxModel, xCurrentText ) ) + return word::WdSeekView::wdSeekEvenPagesHeader; + else + return word::WdSeekView::wdSeekPrimaryHeader; + } + else + { + if( HeaderFooterHelper::isFirstPageFooter( mxModel, xCurrentText ) ) + return word::WdSeekView::wdSeekFirstPageFooter; + else if( HeaderFooterHelper::isEvenPagesFooter( mxModel, xCurrentText ) ) + return word::WdSeekView::wdSeekEvenPagesFooter; + else + return word::WdSeekView::wdSeekPrimaryFooter; + } + } + else if( aImplName.equalsAscii("SwXFootnote") ) + { + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.Endnote") ) ) ) + return word::WdSeekView::wdSeekEndnotes; + else + return word::WdSeekView::wdSeekFootnotes; + } + + return word::WdSeekView::wdSeekMainDocument; +} + +void SAL_CALL +SwVbaView::setSeekView( ::sal_Int32 _seekview ) throw (css::uno::RuntimeException) +{ + // FIXME: save the current cursor position, if the cursor is in the main + // document, so we can jump back to this position, if the macro sets + // the ViewMode back to wdSeekMainDocument + + // if( _seekview == getSeekView() ) + // return; + + switch( _seekview ) + { + case word::WdSeekView::wdSeekFirstPageFooter: + case word::WdSeekView::wdSeekFirstPageHeader: + case word::WdSeekView::wdSeekCurrentPageFooter: + case word::WdSeekView::wdSeekCurrentPageHeader: + case word::WdSeekView::wdSeekPrimaryFooter: + case word::WdSeekView::wdSeekPrimaryHeader: + case word::WdSeekView::wdSeekEvenPagesFooter: + case word::WdSeekView::wdSeekEvenPagesHeader: + { + // need to test + mxViewCursor->gotoRange( getHFTextRange( _seekview ), sal_False ); + break; + } + case word::WdSeekView::wdSeekFootnotes: + { + uno::Reference< text::XFootnotesSupplier > xFootnotesSupp( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xFootnotes( xFootnotesSupp->getFootnotes(), uno::UNO_QUERY_THROW ); + if( xFootnotes->getCount() > 0 ) + { + uno::Reference< text::XText > xText( xFootnotes->getByIndex(0), uno::UNO_QUERY_THROW ); + mxViewCursor->gotoRange( xText->getStart(), sal_False ); + } + else + { + DebugHelper::exception( SbERR_NO_ACTIVE_OBJECT, rtl::OUString() ); + } + break; + } + case word::WdSeekView::wdSeekEndnotes: + { + uno::Reference< text::XEndnotesSupplier > xEndnotesSupp( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< container::XIndexAccess > xEndnotes( xEndnotesSupp->getEndnotes(), uno::UNO_QUERY_THROW ); + if( xEndnotes->getCount() > 0 ) + { + uno::Reference< text::XText > xText( xEndnotes->getByIndex(0), uno::UNO_QUERY_THROW ); + mxViewCursor->gotoRange( xText->getStart(), sal_False ); + } + else + { + DebugHelper::exception( SbERR_NO_ACTIVE_OBJECT, rtl::OUString() ); + } + break; + } + case word::WdSeekView::wdSeekMainDocument: + { + uno::Reference< text::XTextDocument > xTextDocument( mxModel, uno::UNO_QUERY_THROW ); + uno::Reference< text::XText > xText = xTextDocument->getText(); + mxViewCursor->gotoRange( getFirstObjectPosition( xText ), sal_False ); + break; + } + } +} + +::sal_Int32 SAL_CALL +SwVbaView::getSplitSpecial() throw (css::uno::RuntimeException) +{ + return word::WdSpecialPane::wdPaneNone; +} + +void SAL_CALL +SwVbaView::setSplitSpecial( ::sal_Int32/* _splitspecial */) throw (css::uno::RuntimeException) +{ + // not support in Writer +} + +::sal_Bool SAL_CALL +SwVbaView::getTableGridLines() throw (css::uno::RuntimeException) +{ + sal_Bool bShowTableGridLine = sal_False; + mxViewSettings->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShowTableBoundaries"))) >>= bShowTableGridLine; + return bShowTableGridLine; +} + +void SAL_CALL +SwVbaView::setTableGridLines( ::sal_Bool _tablegridlines ) throw (css::uno::RuntimeException) +{ + mxViewSettings->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShowTableBoundaries")), uno::makeAny( _tablegridlines ) ); +} + +::sal_Int32 SAL_CALL +SwVbaView::getType() throw (css::uno::RuntimeException) +{ + // FIXME: handle wdPrintPreview type + sal_Bool bOnlineLayout = sal_False; + mxViewSettings->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShowOnlineLayout"))) >>= bOnlineLayout; + return bOnlineLayout ? word::WdViewType::wdWebView : word::WdViewType::wdPrintView; +} + +void SAL_CALL +SwVbaView::setType( ::sal_Int32 _type ) throw (css::uno::RuntimeException) +{ + // FIXME: handle wdPrintPreview type + switch( _type ) + { + case word::WdViewType::wdPrintView: + case word::WdViewType::wdNormalView: + { + mxViewSettings->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShowOnlineLayout")), uno::makeAny( sal_False ) ); + break; + } + case word::WdViewType::wdWebView: + { + mxViewSettings->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ShowOnlineLayout")), uno::makeAny( sal_True ) ); + break; + } + case word::WdViewType::wdPrintPreview: + { + PrintPreviewHelper( uno::Any(),word::getView( mxModel ) ); + break; + } + default: + DebugHelper::exception( SbERR_NOT_IMPLEMENTED, rtl::OUString() ); + + } +} + +uno::Reference< text::XTextRange > SwVbaView::getHFTextRange( sal_Int32 nType ) throw (uno::RuntimeException) +{ + mxModel->lockControllers(); + + rtl::OUString aPropIsOn; + rtl::OUString aPropIsShared; + rtl::OUString aPropBodyDistance; + rtl::OUString aPropText; + + switch( nType ) + { + case word::WdSeekView::wdSeekCurrentPageFooter: + case word::WdSeekView::wdSeekFirstPageFooter: + case word::WdSeekView::wdSeekPrimaryFooter: + case word::WdSeekView::wdSeekEvenPagesFooter: + { + aPropIsOn = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsOn") ); + aPropIsShared = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterIsShared") ); + aPropBodyDistance = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterBodyDistance") ); + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("FooterText") ); + break; + } + case word::WdSeekView::wdSeekCurrentPageHeader: + case word::WdSeekView::wdSeekFirstPageHeader: + case word::WdSeekView::wdSeekPrimaryHeader: + case word::WdSeekView::wdSeekEvenPagesHeader: + { + aPropIsOn = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsOn") ); + aPropIsShared = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderIsShared") ); + aPropBodyDistance = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderBodyDistance") ); + aPropText = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("HeaderText") ); + break; + } + } + + uno::Reference< text::XPageCursor > xPageCursor( mxViewCursor, uno::UNO_QUERY_THROW ); + + if( nType == word::WdSeekView::wdSeekFirstPageFooter + || nType == word::WdSeekView::wdSeekFirstPageHeader ) + { + xPageCursor->jumpToFirstPage(); + } + + uno::Reference< style::XStyle > xStyle; + uno::Reference< text::XText > xText; + switch( nType ) + { + case word::WdSeekView::wdSeekPrimaryFooter: + case word::WdSeekView::wdSeekPrimaryHeader: + case word::WdSeekView::wdSeekEvenPagesFooter: + case word::WdSeekView::wdSeekEvenPagesHeader: + { + // The primary header is the first header of the section. + // If the header is not shared between odd and even pages + // the odd page's header is the primary header. If the + // first page's header is different from the rest of the + // document, it is NOT the primary header ( the next primary + // header would be on page 3 ) + // The even pages' header is only available if the header is + // not shared and the current style is applied to a page with + // an even page number + uno::Reference< beans::XPropertySet > xCursorProps( mxViewCursor, uno::UNO_QUERY_THROW ); + rtl::OUString aPageStyleName; + xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyleName"))) >>= aPageStyleName; + if( aPageStyleName.equalsAscii("First Page") ) + { + // go to the beginning of where the next style is used + sal_Bool hasNextPage = sal_False; + xStyle = word::getCurrentPageStyle( mxModel ); + do + { + hasNextPage = xPageCursor->jumpToNextPage(); + } + while( hasNextPage && ( xStyle == word::getCurrentPageStyle( mxModel ) ) ); + + if( !hasNextPage ) + DebugHelper::exception( SbERR_BAD_ACTION, rtl::OUString() ); + } + break; + } + default: + { + break; + } + } + + xStyle = word::getCurrentPageStyle( mxModel ); + uno::Reference< beans::XPropertySet > xPageProps( xStyle, uno::UNO_QUERY_THROW ); + sal_Bool isOn = sal_False; + xPageProps->getPropertyValue( aPropIsOn ) >>= isOn; + sal_Bool isShared = sal_False; + xPageProps->getPropertyValue( aPropIsShared ) >>= isShared; + if( !isOn ) + { + xPageProps->setPropertyValue( aPropIsOn, uno::makeAny( sal_True ) ); + xPageProps->setPropertyValue( aPropBodyDistance, uno::makeAny( DEFAULT_BODY_DISTANCE ) ); + } + if( !isShared ) + { + rtl::OUString aTempPropText = aPropText; + if( nType == word::WdSeekView::wdSeekEvenPagesFooter + || nType == word::WdSeekView::wdSeekEvenPagesHeader ) + { + aTempPropText += rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Left") ); + } + else + { + aTempPropText += rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Right") ); + } + xText.set( xPageProps->getPropertyValue( aTempPropText), uno::UNO_QUERY_THROW ); + } + else + { + if( nType == word::WdSeekView::wdSeekEvenPagesFooter + || nType == word::WdSeekView::wdSeekEvenPagesHeader ) + { + DebugHelper::exception( SbERR_BAD_ACTION, rtl::OUString() ); + } + xText.set( xPageProps->getPropertyValue( aPropText ), uno::UNO_QUERY_THROW ); + } + + mxModel->unlockControllers(); + if( !xText.is() ) + { + DebugHelper::exception( SbERR_INTERNAL_ERROR, rtl::OUString() ); + } + uno::Reference< text::XTextRange > xTextRange = getFirstObjectPosition( xText ); + return xTextRange; +} + +uno::Reference< text::XTextRange > SwVbaView::getFirstObjectPosition( const uno::Reference< text::XText >& xText ) throw (uno::RuntimeException) +{ + // if the first object is table, get the position of first cell + uno::Reference< text::XTextRange > xTextRange; + uno::Reference< container::XEnumerationAccess > xParaAccess( xText, uno::UNO_QUERY_THROW ); + uno::Reference< container::XEnumeration> xParaEnum = xParaAccess->createEnumeration(); + if( xParaEnum->hasMoreElements() ) + { + uno::Reference< lang::XServiceInfo > xServiceInfo( xParaEnum->nextElement(), uno::UNO_QUERY_THROW ); + if( xServiceInfo->supportsService( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextTable") ) ) ) + { + uno::Reference< table::XCellRange > xCellRange( xServiceInfo, uno::UNO_QUERY_THROW ); + uno::Reference< text::XText> xFirstCellText( xCellRange->getCellByPosition(0, 0), uno::UNO_QUERY_THROW ); + xTextRange = xFirstCellText->getStart(); + } + } + if( !xTextRange.is() ) + xTextRange = xText->getStart(); + return xTextRange; +} + +rtl::OUString& +SwVbaView::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaView") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaView::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.View" ) ); + } + return aServiceNames; +} + diff --git a/sw/source/ui/vba/vbaview.hxx b/sw/source/ui/vba/vbaview.hxx new file mode 100644 index 000000000000..c8fb2622f310 --- /dev/null +++ b/sw/source/ui/vba/vbaview.hxx @@ -0,0 +1,71 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: + * $Revision: + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_VIEW_HXX +#define SW_VBA_VIEW_HXX + +#include <ooo/vba/word/XView.hpp> +#include <vbahelper/vbahelperinterface.hxx> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XTextRange.hpp> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XView > SwVbaView_BASE; + +class SwVbaView : public SwVbaView_BASE +{ +private: + css::uno::Reference< css::frame::XModel > mxModel; + css::uno::Reference< css::text::XTextViewCursor > mxViewCursor; + css::uno::Reference< css::beans::XPropertySet > mxViewSettings; + + css::uno::Reference< css::text::XTextRange > getHFTextRange( sal_Int32 nType ) throw (css::uno::RuntimeException); + css::uno::Reference< css::text::XTextRange > getFirstObjectPosition( const css::uno::Reference< css::text::XText >& xText ) throw (css::uno::RuntimeException); + +public: + SwVbaView( const css::uno::Reference< ooo::vba::XHelperInterface >& rParent, const css::uno::Reference< css::uno::XComponentContext >& rContext, + const css::uno::Reference< css::frame::XModel >& rModel ) throw ( css::uno::RuntimeException ); + virtual ~SwVbaView(); + + // XView + virtual ::sal_Int32 SAL_CALL getSeekView() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSeekView( ::sal_Int32 _seekview ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getSplitSpecial() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSplitSpecial( ::sal_Int32 _splitspecial ) throw (css::uno::RuntimeException); + virtual ::sal_Bool SAL_CALL getTableGridLines() throw (css::uno::RuntimeException); + virtual void SAL_CALL setTableGridLines( ::sal_Bool _tablegridlines ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getType() throw (css::uno::RuntimeException); + virtual void SAL_CALL setType( ::sal_Int32 _type ) throw (css::uno::RuntimeException); + + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; +#endif /* SW_VBA_VIEW_HXX */ diff --git a/sw/source/ui/vba/vbawindow.cxx b/sw/source/ui/vba/vbawindow.cxx new file mode 100644 index 000000000000..31ac8ac62bea --- /dev/null +++ b/sw/source/ui/vba/vbawindow.cxx @@ -0,0 +1,116 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbawindow.cxx,v $ + * $Revision: 1.5 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <vbahelper/helperdecl.hxx> +#include "vbawindow.hxx" +#include "vbaglobals.hxx" +#include "vbadocument.hxx" +#include "vbaview.hxx" +#include "vbapanes.hxx" +#include "vbapane.hxx" + +using namespace ::com::sun::star; +using namespace ::ooo::vba; + +SwVbaWindow::SwVbaWindow( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< frame::XModel >& xModel ) : WindowImpl_BASE( xParent, xContext, xModel ) +{ +} + +SwVbaWindow::SwVbaWindow( uno::Sequence< uno::Any > const & args, uno::Reference< uno::XComponentContext > const & xContext ) + : WindowImpl_BASE( args, xContext ) +{ +} + +void +SwVbaWindow::Activate() throw (css::uno::RuntimeException) +{ + SwVbaDocument document( uno::Reference< XHelperInterface >( Application(), uno::UNO_QUERY_THROW ), mxContext, m_xModel ); + + document.Activate(); +} + +void +SwVbaWindow::Close( const uno::Any& SaveChanges, const uno::Any& RouteDocument ) throw (uno::RuntimeException) +{ + // FIXME: it is incorrect when there are more than 1 windows + SwVbaDocument document( uno::Reference< XHelperInterface >( Application(), uno::UNO_QUERY_THROW ), mxContext, m_xModel ); + uno::Any FileName; + document.Close(SaveChanges, FileName, RouteDocument ); +} + +uno::Any SAL_CALL +SwVbaWindow::getView() throw (uno::RuntimeException) +{ + return uno::makeAny( uno::Reference< word::XView >( new SwVbaView( this, mxContext, m_xModel ) ) ); +} + +void SAL_CALL SwVbaWindow::setView( const uno::Any& _view ) throw (uno::RuntimeException) +{ + sal_Int32 nType = 0; + if( _view >>= nType ) + { + SwVbaView view( this, mxContext, m_xModel ); + view.setType( nType ); + } +} + +uno::Any SAL_CALL +SwVbaWindow::Panes( const uno::Any& aIndex ) throw (uno::RuntimeException) +{ + uno::Reference< XCollection > xPanes( new SwVbaPanes( this, mxContext, m_xModel ) ); + if( aIndex.getValueTypeClass() == uno::TypeClass_VOID ) + return uno::makeAny( xPanes ); + + return uno::Any( xPanes->Item( aIndex, uno::Any() ) ); +} + +uno::Any SAL_CALL +SwVbaWindow::ActivePane() throw (uno::RuntimeException) +{ + return uno::makeAny( uno::Reference< word::XPane >( new SwVbaPane( this, mxContext, m_xModel ) ) ); +} + +rtl::OUString& +SwVbaWindow::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaWindow") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaWindow::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Window" ) ); + } + return aServiceNames; +} diff --git a/sw/source/ui/vba/vbawindow.hxx b/sw/source/ui/vba/vbawindow.hxx new file mode 100644 index 000000000000..b423ad960423 --- /dev/null +++ b/sw/source/ui/vba/vbawindow.hxx @@ -0,0 +1,61 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbawindow.hxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_WINDOW_HXX +#define SW_VBA_WINDOW_HXX +#include <cppuhelper/implbase1.hxx> +#include <ooo/vba/word/XWindow.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> + +#include <vbahelper/vbahelperinterface.hxx> +#include <vbahelper/vbawindowbase.hxx> + +typedef cppu::ImplInheritanceHelper1< VbaWindowBase, ov::word::XWindow > WindowImpl_BASE; + +class SwVbaWindow : public WindowImpl_BASE +{ +public: + SwVbaWindow( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::frame::XModel >& xModel ); + SwVbaWindow( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext > const& xContext ); + + + // Attributes + virtual css::uno::Any SAL_CALL getView() throw (css::uno::RuntimeException); + virtual void SAL_CALL setView( const css::uno::Any& _view ) throw (css::uno::RuntimeException); + // Methods + virtual void SAL_CALL Activate( ) throw (css::uno::RuntimeException); + virtual void SAL_CALL Close( const css::uno::Any& SaveChanges, const css::uno::Any& RouteDocument ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL Panes( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException); + virtual css::uno::Any SAL_CALL ActivePane() throw (css::uno::RuntimeException); + // XHelperInterface + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif //SW_VBA_WINDOW_HXX diff --git a/sw/source/ui/vba/vbawrapformat.cxx b/sw/source/ui/vba/vbawrapformat.cxx new file mode 100644 index 000000000000..f2b85625ee08 --- /dev/null +++ b/sw/source/ui/vba/vbawrapformat.cxx @@ -0,0 +1,260 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbawrapformat.cxx,v $ + * $Revision: 1.4 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include "vbawrapformat.hxx" +#include <ooo/vba/word/WdWrapSideType.hpp> +#include <ooo/vba/word/WdWrapType.hpp> +#include <com/sun/star/text/WrapTextMode.hpp> +#include <vbahelper/vbahelper.hxx> +#include <vbahelper/helperdecl.hxx> + +using namespace ooo::vba; +using namespace com::sun::star; + +SwVbaWrapFormat::SwVbaWrapFormat( const uno::Reference< ov::XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< drawing::XShape > xShape ) : SwVbaWrapFormat_BASE( xParent, xContext ), m_xShape( xShape ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth ) +{ + m_xPropertySet.set( xShape, uno::UNO_QUERY_THROW ); +} + +SwVbaWrapFormat::SwVbaWrapFormat( uno::Sequence< uno::Any > const& aArgs, uno::Reference< uno::XComponentContext >const& xContext ) : SwVbaWrapFormat_BASE( getXSomethingFromArgs< XHelperInterface >( aArgs, 0 ), xContext ), m_xShape( getXSomethingFromArgs< drawing::XShape >( aArgs, 1, false ) ), mnWrapFormatType( 0 ), mnSide( word::WdWrapSideType::wdWrapBoth ) +{ + m_xPropertySet.set( m_xShape, uno::UNO_QUERY_THROW ); +} + +void SwVbaWrapFormat::makeWrap() throw (uno::RuntimeException) +{ + text::WrapTextMode eTextMode = text::WrapTextMode_NONE; + if( mnSide == word::WdWrapSideType::wdWrapLeft ) + { + eTextMode = text::WrapTextMode_LEFT; + } + else if( mnSide == word::WdWrapSideType::wdWrapRight ) + { + eTextMode = text::WrapTextMode_RIGHT; + } + else if( mnSide == word::WdWrapSideType::wdWrapBoth || + mnSide == word::WdWrapSideType::wdWrapLargest ) + { + switch( mnWrapFormatType ) + { + case word::WdWrapType::wdWrapNone: + case word::WdWrapType::wdWrapThrough: + { + eTextMode = text::WrapTextMode_THROUGHT; + break; + } + case word::WdWrapType::wdWrapInline: + case word::WdWrapType::wdWrapTopBottom: + { + eTextMode = text::WrapTextMode_NONE; + break; + } + case word::WdWrapType::wdWrapSquare: + { + eTextMode = text::WrapTextMode_PARALLEL; + m_xPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SurroundContour") ), uno::makeAny( sal_False ) ); + break; + } + case word::WdWrapType::wdWrapTight: + { + eTextMode = text::WrapTextMode_PARALLEL; + m_xPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SurroundContour") ), uno::makeAny( sal_True ) ); + break; + } + default: + { + DebugHelper::exception(SbERR_BAD_ARGUMENT, rtl::OUString()); + } + } + } + m_xPropertySet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextWrap") ), uno::makeAny( eTextMode ) ); +} + +::sal_Int32 SAL_CALL SwVbaWrapFormat::getType() throw (uno::RuntimeException) +{ + sal_Int32 nType = word::WdWrapType::wdWrapSquare; + text::WrapTextMode eTextMode; + m_xPropertySet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextWrap") )) >>= eTextMode; + switch( eTextMode ) + { + case text::WrapTextMode_NONE: + { + nType = word::WdWrapType::wdWrapTopBottom; + break; + } + case text::WrapTextMode_THROUGHT: + { + nType = word::WdWrapType::wdWrapNone; + break; + } + case text::WrapTextMode_PARALLEL: + { + sal_Bool bContour = sal_False; + m_xPropertySet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("SurroundContour") )) >>= bContour; + if( bContour ) + nType = word::WdWrapType::wdWrapTight; + else + nType = word::WdWrapType::wdWrapSquare; + break; + } + case text::WrapTextMode_DYNAMIC: + case text::WrapTextMode_LEFT: + case text::WrapTextMode_RIGHT: + { + nType = word::WdWrapType::wdWrapThrough; + break; + } + default: + { + nType = word::WdWrapType::wdWrapSquare; + } + } + return nType; +} + +void SAL_CALL SwVbaWrapFormat::setType( ::sal_Int32 _type ) throw (uno::RuntimeException) +{ + mnWrapFormatType = _type; + makeWrap(); +} + +::sal_Int32 SAL_CALL SwVbaWrapFormat::getSide() throw (uno::RuntimeException) +{ + sal_Int32 nSide = word::WdWrapSideType::wdWrapBoth; + text::WrapTextMode eTextMode; + m_xPropertySet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TextWrap") )) >>= eTextMode; + switch( eTextMode ) + { + case text::WrapTextMode_LEFT: + { + nSide = word::WdWrapSideType::wdWrapLeft; + break; + } + case text::WrapTextMode_RIGHT: + { + nSide = word::WdWrapSideType::wdWrapRight; + break; + } + default: + { + nSide = word::WdWrapSideType::wdWrapBoth; + } + } + return nSide; +} + +void SAL_CALL SwVbaWrapFormat::setSide( ::sal_Int32 _side ) throw (uno::RuntimeException) +{ + mnSide = _side; + makeWrap(); +} + +float SwVbaWrapFormat::getDistance( const rtl::OUString& sName ) throw (uno::RuntimeException) +{ + sal_Int32 nDistance = 0; + m_xPropertySet->getPropertyValue( sName ) >>= nDistance; + return static_cast< float >( Millimeter::getInPoints( nDistance ) ); +} + +void SwVbaWrapFormat::setDistance( const rtl::OUString& sName, float _distance ) throw (uno::RuntimeException) +{ + sal_Int32 nDistance = Millimeter::getInHundredthsOfOneMillimeter( _distance ); + m_xPropertySet->setPropertyValue( sName, uno::makeAny( nDistance ) ); +} + +float SAL_CALL SwVbaWrapFormat::getDistanceTop() throw (uno::RuntimeException) +{ + return getDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin") ) ); +} + +void SAL_CALL SwVbaWrapFormat::setDistanceTop( float _distancetop ) throw (uno::RuntimeException) +{ + setDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("TopMargin") ), _distancetop ); +} + +float SAL_CALL SwVbaWrapFormat::getDistanceBottom() throw (uno::RuntimeException) +{ + return getDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin") ) ); +} + +void SAL_CALL SwVbaWrapFormat::setDistanceBottom( float _distancebottom ) throw (uno::RuntimeException) +{ + setDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BottomMargin") ), _distancebottom ); +} + +float SAL_CALL SwVbaWrapFormat::getDistanceLeft() throw (uno::RuntimeException) +{ + return getDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LeftMargin") ) ); +} + +void SAL_CALL SwVbaWrapFormat::setDistanceLeft( float _distanceleft ) throw (uno::RuntimeException) +{ + setDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LeftMargin") ), _distanceleft ); +} + +float SAL_CALL SwVbaWrapFormat::getDistanceRight() throw (uno::RuntimeException) +{ + return getDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("RightMargin") ) ); +} + +void SAL_CALL SwVbaWrapFormat::setDistanceRight( float _distanceright ) throw (uno::RuntimeException) +{ + setDistance( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("RightMargin") ), _distanceright ); +} + +rtl::OUString& +SwVbaWrapFormat::getServiceImplName() +{ + static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaWrapFormat") ); + return sImplName; +} + +uno::Sequence< rtl::OUString > +SwVbaWrapFormat::getServiceNames() +{ + static uno::Sequence< rtl::OUString > aServiceNames; + if ( aServiceNames.getLength() == 0 ) + { + aServiceNames.realloc( 1 ); + aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.WrapFormat" ) ); + } + return aServiceNames; +} + +namespace wrapformat +{ +namespace sdecl = comphelper::service_decl; +sdecl::vba_service_class_<SwVbaWrapFormat, sdecl::with_args<true> > serviceImpl; +extern sdecl::ServiceDecl const serviceDecl( + serviceImpl, + "SwVbaWrapFormat", + "ooo.vba.word.WrapFormat" ); +} + + diff --git a/sw/source/ui/vba/vbawrapformat.hxx b/sw/source/ui/vba/vbawrapformat.hxx new file mode 100644 index 000000000000..e14f031c02a6 --- /dev/null +++ b/sw/source/ui/vba/vbawrapformat.hxx @@ -0,0 +1,73 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbafillformat.hxx,v $ + * $Revision: 1.3 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_VBA_XWRAPFORMAT_HXX +#define SW_VBA_XWRAPFORMAT_HXX + +#include <com/sun/star/drawing/XShape.hpp> +#include <ooo/vba/word/XWrapFormat.hpp> +#include <vbahelper/vbahelperinterface.hxx> + +typedef InheritedHelperInterfaceImpl1< ooo::vba::word::XWrapFormat > SwVbaWrapFormat_BASE; + +class SwVbaWrapFormat : public SwVbaWrapFormat_BASE +{ +private: + css::uno::Reference< css::drawing::XShape > m_xShape; + css::uno::Reference< css::beans::XPropertySet > m_xPropertySet; + sal_Int32 mnWrapFormatType; + sal_Int32 mnSide; + +private: + void makeWrap() throw (css::uno::RuntimeException); + float getDistance( const rtl::OUString& sName ) throw (css::uno::RuntimeException); + void setDistance( const rtl::OUString& sName, float _distance ) throw (css::uno::RuntimeException); + +public: + SwVbaWrapFormat( const css::uno::Reference< ov::XHelperInterface >& xParent, const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::drawing::XShape > xShape ); + SwVbaWrapFormat( css::uno::Sequence< css::uno::Any > const& aArgs, css::uno::Reference< css::uno::XComponentContext >const& xContext ); + + virtual ::sal_Int32 SAL_CALL getType() throw (css::uno::RuntimeException); + virtual void SAL_CALL setType( ::sal_Int32 _type ) throw (css::uno::RuntimeException); + virtual ::sal_Int32 SAL_CALL getSide() throw (css::uno::RuntimeException); + virtual void SAL_CALL setSide( ::sal_Int32 _side ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getDistanceTop() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDistanceTop( float _distancetop ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getDistanceBottom() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDistanceBottom( float _distancebottom ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getDistanceLeft() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDistanceLeft( float _distanceleft ) throw (css::uno::RuntimeException); + virtual float SAL_CALL getDistanceRight() throw (css::uno::RuntimeException); + virtual void SAL_CALL setDistanceRight( float _distanceright ) throw (css::uno::RuntimeException); + + virtual rtl::OUString& getServiceImplName(); + virtual css::uno::Sequence<rtl::OUString> getServiceNames(); +}; + +#endif//SW_VBA_XWRAPFORMAT_HXX diff --git a/sw/source/ui/vba/wordvbahelper.cxx b/sw/source/ui/vba/wordvbahelper.cxx new file mode 100644 index 000000000000..ed2ffe991a29 --- /dev/null +++ b/sw/source/ui/vba/wordvbahelper.cxx @@ -0,0 +1,95 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbahelper.cxx,v $ + * $Revision: 1.5.32.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#include <docsh.hxx> +#include "wordvbahelper.hxx" +#include <comphelper/processfactory.hxx> +#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/text/XTextViewCursorSupplier.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/container/XNameAccess.hpp> +#include <com/sun/star/lang/XUnoTunnel.hpp> +#include <unotxdoc.hxx> +#include <doc.hxx> + +using namespace ::com::sun::star; +using namespace ::ooo::vba; + +#define FIRST_PAGE 1; + +namespace ooo +{ +namespace vba +{ +namespace word +{ + +SwDocShell* getDocShell( const uno::Reference< frame::XModel>& xModel ) +{ + uno::Reference< lang::XUnoTunnel > xTunnel( xModel, uno::UNO_QUERY_THROW ); + SwXTextDocument* pXDoc = reinterpret_cast< SwXTextDocument * >( sal::static_int_cast< sal_IntPtr >(xTunnel->getSomething(SwXTextDocument::getUnoTunnelId()))); + return pXDoc ? pXDoc->GetDocShell() : 0; +} + +SwView* getView( const uno::Reference< frame::XModel>& xModel ) +{ + SwDocShell* pDocShell = getDocShell( xModel ); + return pDocShell? pDocShell->GetView() : 0; +} + +uno::Reference< text::XTextViewCursor > getXTextViewCursor( const uno::Reference< frame::XModel >& xModel ) throw (uno::RuntimeException) +{ + uno::Reference< frame::XController > xController = xModel->getCurrentController(); + uno::Reference< text::XTextViewCursorSupplier > xTextViewCursorSupp( xController, uno::UNO_QUERY_THROW ); + uno::Reference< text::XTextViewCursor > xTextViewCursor = xTextViewCursorSupp->getViewCursor(); + return xTextViewCursor; +} + +uno::Reference< style::XStyle > getCurrentPageStyle( const uno::Reference< frame::XModel >& xModel ) throw (uno::RuntimeException) +{ + uno::Reference< beans::XPropertySet > xCursorProps( getXTextViewCursor( xModel ), uno::UNO_QUERY_THROW ); + rtl::OUString aPageStyleName; + xCursorProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyleName"))) >>= aPageStyleName; + uno::Reference< style::XStyleFamiliesSupplier > xSytleFamSupp( xModel, uno::UNO_QUERY_THROW ); + uno::Reference< container::XNameAccess > xSytleFamNames( xSytleFamSupp->getStyleFamilies(), uno::UNO_QUERY_THROW ); + uno::Reference< container::XNameAccess > xPageStyles( xSytleFamNames->getByName( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("PageStyles") ) ), uno::UNO_QUERY_THROW ); + uno::Reference< style::XStyle > xStyle( xPageStyles->getByName( aPageStyleName ), uno::UNO_QUERY_THROW ); + + return xStyle; +} + +sal_Int32 getPageCount( const uno::Reference< frame::XModel>& xModel ) throw (uno::RuntimeException) +{ + SwDocShell* pDocShell = getDocShell( xModel ); + return pDocShell ? pDocShell->GetDoc()->GetPageCount() : 0; +} + +} // word +} // +} // diff --git a/sw/source/ui/vba/wordvbahelper.hxx b/sw/source/ui/vba/wordvbahelper.hxx new file mode 100644 index 000000000000..73ed7c31ef24 --- /dev/null +++ b/sw/source/ui/vba/wordvbahelper.hxx @@ -0,0 +1,57 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vbahelper.hxx,v $ + * $Revision: 1.5.32.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef SW_WORD_VBA_HELPER_HXX +#define SW_WORD_VBA_HELPER_HXX + +#include <vbahelper/vbahelper.hxx> +#include <com/sun/star/text/XText.hpp> +#include <com/sun/star/text/XTextViewCursor.hpp> +#include <com/sun/star/text/XPageCursor.hpp> +#include <com/sun/star/style/XStyle.hpp> + +class SwDocShell; +class SwView; +namespace ooo +{ + namespace vba + { + namespace word + { + //css::uno::Reference< css::frame::XModel > getCurrentDocument() throw (css::uno::RuntimeException); + SwDocShell* getDocShell( const css::uno::Reference< css::frame::XModel>& xModel ); + SwView* getView( const css::uno::Reference< css::frame::XModel>& xModel ); + css::uno::Reference< css::text::XTextViewCursor > getXTextViewCursor( const css::uno::Reference< css::frame::XModel >& xModel ) throw (css::uno::RuntimeException); + css::uno::Reference< css::style::XStyle > getCurrentPageStyle( const css::uno::Reference< css::frame::XModel >& xModel ) throw (css::uno::RuntimeException); + sal_Int32 getPageCount( const css::uno::Reference< css::frame::XModel>& xModel ) throw (css::uno::RuntimeException); + +} // word +} // vba +} // ooo +#endif diff --git a/sw/source/ui/wrtsh/select.cxx b/sw/source/ui/wrtsh/select.cxx index b46cbdb3a1a5..c1dd4e2b332c 100644 --- a/sw/source/ui/wrtsh/select.cxx +++ b/sw/source/ui/wrtsh/select.cxx @@ -35,8 +35,8 @@ #include <limits.h> #include <hintids.hxx> #include <sfx2/bindings.hxx> -#include <svtools/eitem.hxx> -#include <svtools/macitem.hxx> +#include <svl/eitem.hxx> +#include <svl/macitem.hxx> #include <unotools/charclass.hxx> #include <svx/scripttypeitem.hxx> #ifndef _CMDID_H @@ -343,7 +343,6 @@ void SwWrtShell::UnSelectFrm() // Rahmenselektion aufheben mit garantiert ungueltiger Position Point aPt(LONG_MIN, LONG_MIN); SelectObj(aPt, 0); - GetView().LeaveDrawCreate(); SwTransferable::ClearSelection( *this ); } diff --git a/sw/source/ui/wrtsh/wrtsh1.cxx b/sw/source/ui/wrtsh/wrtsh1.cxx index cd6bb82739ca..2b924933f1cc 100644 --- a/sw/source/ui/wrtsh/wrtsh1.cxx +++ b/sw/source/ui/wrtsh/wrtsh1.cxx @@ -44,7 +44,7 @@ #include <hintids.hxx> #include <svx/svdview.hxx> #include <sot/factory.hxx> -#include <svtools/itemiter.hxx> +#include <svl/itemiter.hxx> #ifndef _SOUND_HXX //autogen #include <vcl/sound.hxx> #endif @@ -56,7 +56,7 @@ #include <svtools/ehdl.hxx> #include <svtools/soerr.hxx> #include <tools/cachestr.hxx> -#include <svtools/moduleoptions.hxx> +#include <unotools/moduleoptions.hxx> #include <svx/sizeitem.hxx> #include <svx/brkitem.hxx> #include <svx/svxacorr.hxx> diff --git a/sw/source/ui/wrtsh/wrtsh2.cxx b/sw/source/ui/wrtsh/wrtsh2.cxx index 9141279f141b..eb12e1219f58 100644 --- a/sw/source/ui/wrtsh/wrtsh2.cxx +++ b/sw/source/ui/wrtsh/wrtsh2.cxx @@ -32,12 +32,12 @@ #include "precompiled_sw.hxx" #include <hintids.hxx> // define ITEMIDs -#include <svtools/macitem.hxx> +#include <svl/macitem.hxx> #include <sfx2/frame.hxx> #include <vcl/msgbox.hxx> -#include <svtools/urihelper.hxx> -#include <svtools/eitem.hxx> -#include <svtools/stritem.hxx> +#include <svl/urihelper.hxx> +#include <svl/eitem.hxx> +#include <svl/stritem.hxx> #include <sfx2/docfile.hxx> #include <sfx2/fcontnr.hxx> #include <sfx2/dispatch.hxx> diff --git a/sw/source/ui/wrtsh/wrtundo.cxx b/sw/source/ui/wrtsh/wrtundo.cxx index 9c85b08c2993..8a1a011988b3 100644 --- a/sw/source/ui/wrtsh/wrtundo.cxx +++ b/sw/source/ui/wrtsh/wrtundo.cxx @@ -36,7 +36,7 @@ #define _SVSTDARR_STRINGSDTOR #include <tools/resid.hxx> #include <sfx2/app.hxx> -#include <svtools/slstitm.hxx> +#include <svl/slstitm.hxx> #include <wrtsh.hxx> #include <swundo.hxx> // fuer Undo-Ids #include <swdtflvr.hxx> |