summaryrefslogtreecommitdiff
path: root/sd/source/ui/view/sdruler.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/view/sdruler.cxx')
-rw-r--r--sd/source/ui/view/sdruler.cxx226
1 files changed, 226 insertions, 0 deletions
diff --git a/sd/source/ui/view/sdruler.cxx b/sd/source/ui/view/sdruler.cxx
new file mode 100644
index 000000000000..679c28bb3a93
--- /dev/null
+++ b/sd/source/ui/view/sdruler.cxx
@@ -0,0 +1,226 @@
+/*************************************************************************
+ *
+ * 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 "Ruler.hxx"
+#include <svl/ptitem.hxx>
+#include <svx/ruler.hxx>
+#ifndef _SVXIDS_HXX //autogen
+#include <svx/svxids.hrc>
+#endif
+#include <sfx2/ctrlitem.hxx>
+#include <sfx2/bindings.hxx>
+
+
+#include "View.hxx"
+#include "DrawViewShell.hxx"
+#include "Window.hxx"
+
+#include "helpids.h"
+
+namespace sd {
+
+/*************************************************************************
+|*
+|* Controller-Item fuer Ruler
+|*
+\************************************************************************/
+
+class RulerCtrlItem : public SfxControllerItem
+{
+ Ruler &rRuler;
+
+ protected:
+ virtual void StateChanged( USHORT nSId, SfxItemState eState,
+ const SfxPoolItem* pItem );
+
+ public:
+ RulerCtrlItem(USHORT nId, Ruler& rRlr, SfxBindings& rBind);
+};
+
+/*************************************************************************
+|*
+\************************************************************************/
+
+RulerCtrlItem::RulerCtrlItem(USHORT _nId, Ruler& rRlr, SfxBindings& rBind)
+: SfxControllerItem(_nId, rBind)
+, rRuler(rRlr)
+{
+}
+
+
+/*************************************************************************
+|*
+\************************************************************************/
+
+void RulerCtrlItem::StateChanged( USHORT nSId, SfxItemState, const SfxPoolItem* pState )
+{
+ switch( nSId )
+ {
+ case SID_RULER_NULL_OFFSET:
+ {
+ const SfxPointItem* pItem = dynamic_cast< const SfxPointItem* >(pState);
+ DBG_ASSERT(pState ? pItem != NULL : TRUE, "SfxPointItem erwartet");
+ if ( pItem )
+ rRuler.SetNullOffset(pItem->GetValue());
+ }
+ break;
+ }
+}
+
+
+/*************************************************************************
+|*
+|* Konstruktor
+|*
+\************************************************************************/
+
+Ruler::Ruler( DrawViewShell& rViewSh, ::Window* pParent, ::sd::Window* pWin, USHORT nRulerFlags, SfxBindings& rBindings, WinBits nWinStyle)
+: SvxRuler(pParent, pWin, nRulerFlags, rBindings, nWinStyle)
+, pSdWin(pWin)
+, pDrViewShell(&rViewSh)
+{
+ rBindings.EnterRegistrations();
+ pCtrlItem = new RulerCtrlItem(SID_RULER_NULL_OFFSET, *this, rBindings);
+ rBindings.LeaveRegistrations();
+
+ if ( nWinStyle & WB_HSCROLL )
+ {
+ bHorz = TRUE;
+ SetHelpId( HID_SD_RULER_HORIZONTAL );
+ }
+ else
+ {
+ bHorz = FALSE;
+ SetHelpId( HID_SD_RULER_VERTICAL );
+ }
+}
+
+/*************************************************************************
+|*
+|* Destruktor
+|*
+\************************************************************************/
+
+Ruler::~Ruler()
+{
+ SfxBindings& rBindings = pCtrlItem->GetBindings();
+ rBindings.EnterRegistrations();
+ delete pCtrlItem;
+ rBindings.LeaveRegistrations();
+}
+
+/*************************************************************************
+|*
+|* MouseButtonDown-Handler
+|*
+\************************************************************************/
+
+void Ruler::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ Point aMPos = rMEvt.GetPosPixel();
+ RulerType eType = GetType(aMPos);
+
+ if ( !pDrViewShell->GetView()->IsTextEdit() &&
+ rMEvt.IsLeft() && rMEvt.GetClicks() == 1 &&
+ (eType == RULER_TYPE_DONTKNOW || eType == RULER_TYPE_OUTSIDE) )
+ {
+ pDrViewShell->StartRulerDrag(*this, rMEvt);
+ }
+ else
+ SvxRuler::MouseButtonDown(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* MouseMove-Handler
+|*
+\************************************************************************/
+
+void Ruler::MouseMove(const MouseEvent& rMEvt)
+{
+ SvxRuler::MouseMove(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* MouseButtonUp-Handler
+|*
+\************************************************************************/
+
+void Ruler::MouseButtonUp(const MouseEvent& rMEvt)
+{
+ SvxRuler::MouseButtonUp(rMEvt);
+}
+
+/*************************************************************************
+|*
+|* NullOffset setzen
+|*
+\************************************************************************/
+
+void Ruler::SetNullOffset(const Point& rOffset)
+{
+ long nOffset;
+
+ if ( bHorz ) nOffset = rOffset.X();
+ else nOffset = rOffset.Y();
+
+ SetNullOffsetLogic(nOffset);
+}
+
+/*************************************************************************
+|*
+|* Command event
+|*
+\************************************************************************/
+
+void Ruler::Command(const CommandEvent& rCEvt)
+{
+ if( rCEvt.GetCommand() == COMMAND_CONTEXTMENU &&
+ !pDrViewShell->GetView()->IsTextEdit() )
+ {
+ SvxRuler::Command( rCEvt );
+ }
+}
+
+/*************************************************************************
+|*
+|* ExtraDown
+|*
+\************************************************************************/
+
+void Ruler::ExtraDown()
+{
+ if( !pDrViewShell->GetView()->IsTextEdit() )
+ SvxRuler::ExtraDown();
+}
+
+} // end of namespace sd
+