| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef VIEW_HXX |
| #define VIEW_HXX |
| |
| #include <sfx2/dockwin.hxx> |
| #include <sfx2/viewsh.hxx> |
| #include <svtools/scrwin.hxx> |
| #include <sfx2/ctrlitem.hxx> |
| #include <sfx2/shell.hxx> |
| #include <sfx2/viewfac.hxx> |
| #include <sfx2/viewfrm.hxx> |
| #include <svtools/colorcfg.hxx> |
| #include "edit.hxx" |
| #include "node.hxx" |
| #include "accessibility.hxx" |
| |
| class Menu; |
| class DataChangedEvent; |
| class SmClipboardChangeListener; |
| class SmDocShell; |
| class SmViewShell; |
| class SmPrintUIOptions; |
| |
| /**************************************************************************/ |
| |
| class SmGraphicWindow : public ScrollableWindow |
| { |
| Point aFormulaDrawPos; |
| Rectangle aCursorRect; |
| |
| ::com::sun::star::uno::Reference< |
| ::com::sun::star::accessibility::XAccessible > xAccessible; |
| SmGraphicAccessible * pAccessible; |
| |
| SmViewShell *pViewShell; |
| sal_uInt16 nZoom; |
| short nModifyCount; |
| sal_Bool bIsCursorVisible; |
| |
| protected: |
| void SetFormulaDrawPos(const Point &rPos) { aFormulaDrawPos = rPos; } |
| void SetIsCursorVisible(sal_Bool bVis) { bIsCursorVisible = bVis; } |
| using Window::SetCursor; |
| void SetCursor(const SmNode *pNode); |
| void SetCursor(const Rectangle &rRect); |
| |
| virtual void DataChanged( const DataChangedEvent& ); |
| virtual void Paint(const Rectangle&); |
| virtual void KeyInput(const KeyEvent& rKEvt); |
| virtual void Command(const CommandEvent& rCEvt); |
| virtual void StateChanged( StateChangedType eChanged ); |
| DECL_LINK(MenuSelectHdl, Menu *); |
| |
| public: |
| SmGraphicWindow(SmViewShell* pShell); |
| ~SmGraphicWindow(); |
| |
| // Window |
| virtual void MouseButtonDown(const MouseEvent &rMEvt); |
| virtual void GetFocus(); |
| virtual void LoseFocus(); |
| |
| SmViewShell * GetView() { return pViewShell; } |
| |
| using Window::SetZoom; |
| void SetZoom(sal_uInt16 Factor); |
| using Window::GetZoom; |
| sal_uInt16 GetZoom() const { return nZoom; } |
| |
| const Point & GetFormulaDrawPos() const { return aFormulaDrawPos; } |
| |
| void ZoomToFitInWindow(); |
| using ScrollableWindow::SetTotalSize; |
| void SetTotalSize(); |
| |
| sal_Bool IsCursorVisible() const { return bIsCursorVisible; } |
| void ShowCursor(sal_Bool bShow); |
| const SmNode * SetCursorPos(sal_uInt16 nRow, sal_uInt16 nCol); |
| |
| void ApplyColorConfigValues( const svtools::ColorConfig &rColorCfg ); |
| |
| // for Accessibility |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); |
| |
| using Window::GetAccessible; |
| SmGraphicAccessible * GetAccessible_Impl() { return pAccessible; } |
| }; |
| |
| /**************************************************************************/ |
| |
| class SmGraphicController: public SfxControllerItem |
| { |
| protected: |
| SmGraphicWindow &rGraphic; |
| public: |
| SmGraphicController(SmGraphicWindow &, sal_uInt16, SfxBindings & ); |
| virtual void StateChanged(sal_uInt16 nSID, |
| SfxItemState eState, |
| const SfxPoolItem* pState); |
| }; |
| |
| /**************************************************************************/ |
| |
| class SmEditController: public SfxControllerItem |
| { |
| protected: |
| SmEditWindow &rEdit; |
| |
| public: |
| SmEditController(SmEditWindow &, sal_uInt16, SfxBindings & ); |
| #if OSL_DEBUG_LEVEL > 1 |
| virtual ~SmEditController(); |
| #endif |
| |
| virtual void StateChanged(sal_uInt16 nSID, |
| SfxItemState eState, |
| const SfxPoolItem* pState); |
| }; |
| |
| /**************************************************************************/ |
| |
| class SmCmdBoxWindow : public SfxDockingWindow |
| { |
| SmEditWindow aEdit; |
| SmEditController aController; |
| sal_Bool bExiting; |
| |
| Timer aInitialFocusTimer; |
| |
| DECL_LINK(InitialFocusTimerHdl, Timer *); |
| |
| protected : |
| |
| // Window |
| virtual void GetFocus(); |
| virtual void Resize(); |
| virtual void Paint(const Rectangle& rRect); |
| virtual void StateChanged( StateChangedType nStateChange ); |
| |
| virtual Size CalcDockingSize(SfxChildAlignment eAlign); |
| virtual SfxChildAlignment CheckAlignment(SfxChildAlignment eActual, |
| SfxChildAlignment eWish); |
| |
| virtual void ToggleFloatingMode(); |
| |
| public: |
| SmCmdBoxWindow(SfxBindings *pBindings, |
| SfxChildWindow *pChildWindow, |
| Window *pParent); |
| |
| virtual ~SmCmdBoxWindow (); |
| |
| void AdjustPosition(); |
| |
| SmEditWindow *GetEditWindow() { return (&aEdit); } |
| SmViewShell *GetView(); |
| }; |
| |
| /**************************************************************************/ |
| |
| class SmCmdBoxWrapper : public SfxChildWindow |
| { |
| SFX_DECL_CHILDWINDOW(SmCmdBoxWrapper); |
| |
| protected: |
| SmCmdBoxWrapper(Window *pParentWindow, |
| sal_uInt16 nId, |
| SfxBindings *pBindings, |
| SfxChildWinInfo *pInfo); |
| |
| #if OSL_DEBUG_LEVEL > 1 |
| virtual ~SmCmdBoxWrapper(); |
| #endif |
| |
| public: |
| |
| SmEditWindow *GetEditWindow() |
| { |
| return (((SmCmdBoxWindow *)pWindow)->GetEditWindow()); |
| } |
| |
| }; |
| |
| /**************************************************************************/ |
| |
| namespace sfx2 { class FileDialogHelper; } |
| struct SmViewShell_Impl; |
| |
| class SmViewShell: public SfxViewShell |
| { |
| // for handling the PasteClipboardState |
| friend class SmClipboardChangeListener; |
| |
| SmGraphicWindow aGraphic; |
| SmGraphicController aGraphicController; |
| String StatusText; |
| |
| ::com::sun::star::uno:: Reference < |
| ::com::sun::star::lang:: XEventListener > xClipEvtLstnr; |
| SmClipboardChangeListener* pClipEvtLstnr; |
| SmViewShell_Impl* pImpl; |
| sal_Bool bPasteState; |
| |
| DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper* ); |
| virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); |
| |
| protected: |
| |
| Size GetTextLineSize(OutputDevice& rDevice, |
| const String& rLine); |
| Size GetTextSize(OutputDevice& rDevice, |
| const String& rText, |
| long MaxWidth); |
| void DrawTextLine(OutputDevice& rDevice, |
| const Point& rPosition, |
| const String& rLine); |
| void DrawText(OutputDevice& rDevice, |
| const Point& rPosition, |
| const String& rText, |
| sal_uInt16 MaxWidth); |
| |
| virtual sal_uInt16 Print(SfxProgress &rProgress, sal_Bool bIsAPI); |
| virtual SfxPrinter *GetPrinter(sal_Bool bCreate = sal_False); |
| virtual sal_uInt16 SetPrinter(SfxPrinter *pNewPrinter, |
| sal_uInt16 nDiffFlags = SFX_PRINTER_ALL, bool bIsAPI=false); |
| |
| sal_Bool Insert( SfxMedium& rMedium ); |
| sal_Bool InsertFrom(SfxMedium &rMedium); |
| |
| virtual SfxTabPage *CreatePrintOptionsPage(Window *pParent, |
| const SfxItemSet &rOptions); |
| virtual void Deactivate(sal_Bool IsMDIActivate); |
| virtual void Activate(sal_Bool IsMDIActivate); |
| virtual Size GetOptimalSizePixel() const; |
| virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize); |
| virtual void InnerResizePixel(const Point &rOfs, const Size &rSize); |
| virtual void OuterResizePixel(const Point &rOfs, const Size &rSize); |
| virtual void QueryObjAreaPixel( Rectangle& rRect ) const; |
| virtual void SetZoomFactor( const Fraction &rX, const Fraction &rY ); |
| |
| public: |
| TYPEINFO(); |
| |
| SmViewShell(SfxViewFrame *pFrame, SfxViewShell *pOldSh); |
| ~SmViewShell(); |
| |
| SmDocShell * GetDoc() |
| { |
| return (SmDocShell *) GetViewFrame()->GetObjectShell(); |
| } |
| |
| SmEditWindow * GetEditWindow(); |
| SmGraphicWindow & GetGraphicWindow() { return aGraphic; } |
| const SmGraphicWindow & GetGraphicWindow() const { return aGraphic; } |
| |
| void SetStatusText(const String& Text); |
| |
| void ShowError( const SmErrorDesc *pErrorDesc ); |
| void NextError(); |
| void PrevError(); |
| |
| SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+2) |
| SFX_DECL_VIEWFACTORY(SmViewShell); |
| |
| virtual void Execute( SfxRequest& rReq ); |
| virtual void GetState(SfxItemSet &); |
| |
| void Impl_Print( OutputDevice &rOutDev, const SmPrintUIOptions &rPrintUIOptions, |
| Rectangle aOutRect, Point aZeroPoint ); |
| }; |
| |
| #endif |
| |