summaryrefslogtreecommitdiff
path: root/sc/source/ui/view/tabvwsh9.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/view/tabvwsh9.cxx')
-rw-r--r--sc/source/ui/view/tabvwsh9.cxx295
1 files changed, 295 insertions, 0 deletions
diff --git a/sc/source/ui/view/tabvwsh9.cxx b/sc/source/ui/view/tabvwsh9.cxx
new file mode 100644
index 000000000000..30f9c50fd925
--- /dev/null
+++ b/sc/source/ui/view/tabvwsh9.cxx
@@ -0,0 +1,295 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sc.hxx"
+
+
+
+// INCLUDE ---------------------------------------------------------------
+
+#include <svx/svdmark.hxx>
+#include <svx/svdview.hxx>
+#include <svx/galbrws.hxx>
+#include <svx/gallery.hxx>
+#include <svx/hlnkitem.hxx>
+#include <sfx2/bindings.hxx>
+#include <sfx2/request.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svl/whiter.hxx>
+#include <avmedia/mediaplayer.hxx>
+
+#include "tabvwsh.hxx"
+#include "viewdata.hxx"
+#include "tabview.hxx"
+#include "drwlayer.hxx"
+#include "userdat.hxx"
+#include "docsh.hxx"
+
+// forwards -> galwrap.cxx (wg. CLOOKs)
+
+USHORT GallerySGA_FORMAT_GRAPHIC();
+Graphic GalleryGetGraphic ();
+BOOL GalleryIsLinkage ();
+String GalleryGetFullPath ();
+String GalleryGetFilterName ();
+
+// forwards -> imapwrap.cxx (wg. CLOOKs)
+
+class SvxIMapDlg;
+
+USHORT ScIMapChildWindowId();
+SvxIMapDlg* ScGetIMapDlg();
+const void* ScIMapDlgGetObj( SvxIMapDlg* pDlg );
+const ImageMap& ScIMapDlgGetMap( SvxIMapDlg* pDlg );
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecChildWin(SfxRequest& rReq)
+{
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case SID_GALLERY:
+ {
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ pThisFrame->ToggleChildWindow( GalleryChildWindow::GetChildWindowId() );
+ pThisFrame->GetBindings().Invalidate( SID_GALLERY );
+ rReq.Ignore();
+ }
+ break;
+
+ case SID_AVMEDIA_PLAYER:
+ {
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ pThisFrame->ToggleChildWindow( ::avmedia::MediaPlayer::GetChildWindowId() );
+ pThisFrame->GetBindings().Invalidate( SID_AVMEDIA_PLAYER );
+ rReq.Ignore();
+ }
+ break;
+ }
+}
+
+void ScTabViewShell::GetChildWinState( SfxItemSet& rSet )
+{
+ if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GALLERY ) )
+ {
+ USHORT nId = GalleryChildWindow::GetChildWindowId();
+ rSet.Put( SfxBoolItem( SID_GALLERY, GetViewFrame()->HasChildWindow( nId ) ) );
+ }
+ else if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_AVMEDIA_PLAYER ) )
+ {
+ USHORT nId = ::avmedia::MediaPlayer::GetChildWindowId();
+ rSet.Put( SfxBoolItem( SID_AVMEDIA_PLAYER, GetViewFrame()->HasChildWindow( nId ) ) );
+ }
+}
+
+//------------------------------------------------------------------
+
+void ScTabViewShell::ExecGallery( SfxRequest& rReq )
+{
+ const SfxItemSet* pArgs = rReq.GetArgs();
+
+ if ( pArgs )
+ {
+ const SfxPoolItem* pItem = NULL;
+ SfxItemState eState = pArgs->GetItemState(SID_GALLERY_FORMATS, TRUE, &pItem);
+ if ( eState == SFX_ITEM_SET )
+ {
+ UINT32 nFormats = ((const SfxUInt32Item*)pItem)->GetValue();
+
+ /******************************************************************
+ * Graphik einfuegen
+ ******************************************************************/
+ if ( nFormats & GallerySGA_FORMAT_GRAPHIC() )
+ {
+ MakeDrawLayer();
+
+ Graphic aGraphic = GalleryGetGraphic();
+ Point aPos = GetInsertPos();
+
+ String aPath, aFilter;
+ if ( GalleryIsLinkage() ) // als Link einfuegen?
+ {
+ aPath = GalleryGetFullPath();
+ aFilter = GalleryGetFilterName();
+ }
+
+ PasteGraphic( aPos, aGraphic, aPath, aFilter );
+ }
+ else if ( nFormats & SGA_FORMAT_SOUND )
+ {
+ // #98115# for sounds (linked or not), insert a hyperlink button,
+ // like in Impress and Writer
+
+ GalleryExplorer* pGal = SVX_GALLERY();
+ if ( pGal )
+ {
+ const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, pGal->GetURL().GetMainURL( INetURLObject::NO_DECODE ) );
+ GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_AVMEDIA, SFX_CALLMODE_SYNCHRON, &aMediaURLItem, 0L );
+ }
+ }
+ }
+ }
+}
+
+void ScTabViewShell::GetGalleryState( SfxItemSet& /* rSet */ )
+{
+}
+
+//------------------------------------------------------------------
+
+ScInputHandler* ScTabViewShell::GetInputHandler() const
+{
+ return pInputHandler;
+}
+
+//------------------------------------------------------------------
+
+String __EXPORT ScTabViewShell::GetDescription() const
+{
+ return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** "));
+}
+
+void ScTabViewShell::ExecImageMap( SfxRequest& rReq )
+{
+ USHORT nSlot = rReq.GetSlot();
+ switch(nSlot)
+ {
+ case SID_IMAP:
+ {
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ USHORT nId = ScIMapChildWindowId();
+ pThisFrame->ToggleChildWindow( nId );
+ GetViewFrame()->GetBindings().Invalidate( SID_IMAP );
+
+ if ( pThisFrame->HasChildWindow( nId ) )
+ {
+ SvxIMapDlg* pDlg = ScGetIMapDlg();
+ if ( pDlg )
+ {
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList();
+ if ( rMarkList.GetMarkCount() == 1 )
+ UpdateIMap( rMarkList.GetMark( 0 )->GetMarkedSdrObj() );
+ }
+ }
+ }
+
+ rReq.Ignore();
+ }
+ break;
+
+ case SID_IMAP_EXEC:
+ {
+ SdrView* pDrView = GetSdrView();
+ SdrMark* pMark = pDrView ? pDrView->GetMarkedObjectList().GetMark(0) : 0;
+
+ if ( pMark )
+ {
+ SdrObject* pSdrObj = pMark->GetMarkedSdrObj();
+ SvxIMapDlg* pDlg = ScGetIMapDlg();
+
+ if ( ScIMapDlgGetObj(pDlg) == (void*) pSdrObj )
+ {
+ const ImageMap& rImageMap = ScIMapDlgGetMap(pDlg);
+ ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo( pSdrObj );
+
+ if ( !pIMapInfo )
+ pSdrObj->InsertUserData( new ScIMapInfo( rImageMap ) );
+ else
+ pIMapInfo->SetImageMap( rImageMap );
+
+ GetViewData()->GetDocShell()->SetDrawModified();
+ }
+ }
+ }
+ break;
+ }
+}
+
+void ScTabViewShell::GetImageMapState( SfxItemSet& rSet )
+{
+ SfxWhichIter aIter(rSet);
+ USHORT nWhich = aIter.FirstWhich();
+ while ( nWhich )
+ {
+ switch ( nWhich )
+ {
+ case SID_IMAP:
+ {
+ // Disabled wird nicht mehr...
+
+ BOOL bThere = FALSE;
+ SfxViewFrame* pThisFrame = GetViewFrame();
+ USHORT nId = ScIMapChildWindowId();
+ if ( pThisFrame->KnowsChildWindow(nId) )
+ if ( pThisFrame->HasChildWindow(nId) )
+ bThere = TRUE;
+
+ ObjectSelectionType eType=GetCurObjectSelectionType();
+ BOOL bEnable=(eType==OST_OleObject) ||(eType==OST_Graphic);
+ if(!bThere && !bEnable)
+ {
+ rSet.DisableItem( nWhich );
+ }
+ else
+ {
+ rSet.Put( SfxBoolItem( nWhich, bThere ) );
+ }
+ }
+ break;
+
+ case SID_IMAP_EXEC:
+ {
+ BOOL bDisable = TRUE;
+
+ SdrView* pDrView = GetSdrView();
+ if ( pDrView )
+ {
+ const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList();
+ if ( rMarkList.GetMarkCount() == 1 )
+ if ( ScIMapDlgGetObj(ScGetIMapDlg()) ==
+ (void*) rMarkList.GetMark(0)->GetMarkedSdrObj() )
+ bDisable = FALSE;
+ }
+
+ rSet.Put( SfxBoolItem( SID_IMAP_EXEC, bDisable ) );
+ }
+ break;
+ }
+
+ nWhich = aIter.NextWhich();
+ }
+}
+
+
+
+