summaryrefslogtreecommitdiff
path: root/sd/source/ui/view/drviewsi.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/view/drviewsi.cxx')
-rw-r--r--sd/source/ui/view/drviewsi.cxx207
1 files changed, 207 insertions, 0 deletions
diff --git a/sd/source/ui/view/drviewsi.cxx b/sd/source/ui/view/drviewsi.cxx
new file mode 100644
index 000000000000..17ebe33ea540
--- /dev/null
+++ b/sd/source/ui/view/drviewsi.cxx
@@ -0,0 +1,207 @@
+/*************************************************************************
+ *
+ * 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_sd.hxx"
+
+#include "DrawViewShell.hxx"
+#include <svx/xtable.hxx>
+#include "sdattr.hxx"
+#include <svl/aeitem.hxx>
+#include <editeng/eeitem.hxx>
+#include <sfx2/request.hxx>
+#include <svx/svditer.hxx>
+#include <editeng/colritem.hxx>
+#include <sfx2/viewfrm.hxx>
+#ifndef _SVXIDS_HRC
+#include <svx/svxids.hrc>
+#endif
+#include <svx/svdundo.hxx>
+#include <svx/view3d.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svx/float3d.hxx>
+#include <svx/f3dchild.hxx>
+#ifndef _SVX_DIALOGS_HRC //autogen
+#include <svx/dialogs.hrc>
+#endif
+#include <vcl/msgbox.hxx>
+
+
+#include "app.hrc"
+#include "strings.hrc"
+
+#include "drawdoc.hxx"
+#include "DrawDocShell.hxx"
+#include "anminfo.hxx"
+#include "unoaprms.hxx" // Undo-Action
+#include "sdundogr.hxx" // Undo Gruppe
+#include "drawview.hxx"
+#include "Window.hxx"
+#include "sdresid.hxx"
+
+using namespace ::com::sun::star;
+
+namespace sd {
+
+#define ATTR_MISSING 0 // Attribut nicht verfuegbar
+#define ATTR_MIXED 1 // Attribut uneindeutig (bei Mehrfachselektion)
+#define ATTR_SET 2 // Attribut eindeutig
+
+#define ITEMVALUE(ItemSet,Id,Cast) ((const Cast&)(ItemSet).Get(Id)).GetValue()
+
+/*************************************************************************
+|*
+|* SfxRequests fuer EffekteWindow bearbeiten
+|*
+\************************************************************************/
+
+void DrawViewShell::ExecEffectWin( SfxRequest& rReq )
+{
+ CheckLineTo (rReq);
+
+ USHORT nSId = rReq.GetSlot();
+
+ switch( nSId )
+ {
+ case SID_3D_INIT:
+ {
+ USHORT nId = Svx3DChildWindow::GetChildWindowId();
+ SfxChildWindow* pWindow = GetViewFrame()->GetChildWindow( nId );
+ if( pWindow )
+ {
+ Svx3DWin* p3DWin = (Svx3DWin*)( pWindow->GetWindow() );
+ if( p3DWin )
+ p3DWin->InitColorLB( GetDoc() );
+ }
+ }
+ break;
+
+ case SID_3D_STATE:
+ {
+ Update3DWindow();
+ }
+ break;
+
+ case SID_3D_ASSIGN:
+ {
+ AssignFrom3DWindow();
+ }
+ break;
+
+ }
+}
+
+/*************************************************************************
+|*
+|* 3D - Assign / Update
+|*
+\************************************************************************/
+void DrawViewShell::Update3DWindow()
+{
+ USHORT nId = Svx3DChildWindow::GetChildWindowId();
+ SfxChildWindow* pWindow = GetViewFrame()->GetChildWindow( nId );
+ if( pWindow )
+ {
+ Svx3DWin* p3DWin = (Svx3DWin*) pWindow->GetWindow();
+ if( p3DWin && p3DWin->IsUpdateMode() )
+ {
+ SfxItemSet aTmpItemSet = GetView()->Get3DAttributes();
+ p3DWin->Update( aTmpItemSet );
+ }
+ }
+}
+
+/*----------------------------------------------------------------------------*/
+
+void DrawViewShell::AssignFrom3DWindow()
+{
+ USHORT nId = Svx3DChildWindow::GetChildWindowId();
+ SfxChildWindow* pWin = GetViewFrame()->GetChildWindow( nId );
+ if( pWin )
+ {
+ Svx3DWin* p3DWin = (Svx3DWin*) pWin->GetWindow();
+ if( p3DWin && GetView() )
+ {
+ if(!GetView()->IsPresObjSelected())
+ {
+ SfxItemSet aSet( GetDoc()->GetPool(),
+ SDRATTR_START, SDRATTR_END,
+ 0, 0);
+ p3DWin->GetAttr( aSet );
+
+ // Eigene UNDO-Klammerung auch um die Wandlung in 3D
+ GetView()->BegUndo(String(SdResId(STR_UNDO_APPLY_3D_FAVOURITE)));
+
+ if(GetView()->IsConvertTo3DObjPossible())
+ {
+ // Nur TextAttribute zuweisen
+ SfxItemSet aTextSet( GetDoc()->GetPool(),
+ EE_ITEMS_START, EE_ITEMS_END, 0 );
+ aTextSet.Put( aSet, FALSE );
+ GetView()->SetAttributes( aTextSet );
+
+ // Text in 3D umwandeln
+ USHORT nSId = SID_CONVERT_TO_3D;
+ SfxBoolItem aItem( nSId, TRUE );
+ GetViewFrame()->GetDispatcher()->Execute(
+ nSId, SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
+
+ // Feststellen, ob ein FILL_Attribut gesetzt ist.
+ // Falls nicht, Fuellattribut hart setzen
+ XFillStyle eFillStyle = ITEMVALUE( aSet, XATTR_FILLSTYLE, XFillStyleItem );
+ if(eFillStyle == XFILL_NONE)
+ aSet.Put(XFillStyleItem (XFILL_SOLID));
+
+ // remove some 3DSCENE attributes since these were
+ // created by convert to 3D and may not be changed
+ // to the defaults again.
+ aSet.ClearItem(SDRATTR_3DSCENE_DISTANCE);
+ aSet.ClearItem(SDRATTR_3DSCENE_FOCAL_LENGTH);
+ aSet.ClearItem(SDRATTR_3DOBJ_DEPTH);
+ }
+
+ // Attribute zuweisen
+ GetView()->Set3DAttributes( aSet );
+
+ // Ende UNDO
+ GetView()->EndUndo();
+ }
+ else
+ {
+ InfoBox aInfoBox (
+ GetActiveWindow(),
+ String(SdResId(STR_ACTION_NOTPOSSIBLE)));
+ aInfoBox.Execute();
+ }
+
+ // Focus zurueckholen
+ GetActiveWindow()->GrabFocus();
+ }
+ }
+}
+
+}