namespace svx::sidebar { class SelectionChangeHandler; } namespace com::sun::star::lang { class XEventListener; } namespace com::sun::star::scanner { class XScannerManager2; } namespace com::sun::star::presentation { class XSlideShow; }
class Outliner; class SdPage; class SdStyleSheet; class SdrExternalToolEdit; class TabBar; class SdrObject; class SdrPageView; class TransferableDataHelper; class TransferableClipboardListener; class AbstractSvxNameDialog; class SdrLayer; class SvxClipboardFormatItem; struct ESelection; class AbstractSvxObjectNameDialog;
namespace sd {
class DrawView; class LayerTabBar; class Ruler; class AnnotationManager; class ViewOverlayManager;
/** Base class of the stacked shells that provide graphical views to DrawandImpressdocumentsandeditingfunctionality.Incontrast tothisotherstackedshellsareresponsibleforshowingan overviewoverseveralslidesoratextual overviewoverthetextinanImpressdocument(OutlineViewShell).
*/ class SAL_DLLPUBLIC_RTTI DrawViewShell
: public ViewShell, public SfxListener, public utl::ConfigurationListener
{ public:
SFX_DECL_INTERFACE(SD_IF_SDDRAWVIEWSHELL)
public: /** Create a new stackable shell that may take some information (e.g.theframeview)fromthegivenpreviousshell. @paramePageKind Thisparametergivestheinitialpagekindthatthenewshell willshow. @parampFrameView Theframeviewthatmakesitpossibletopassinformationfrom oneviewshelltothenext.
*/
DrawViewShell (
ViewShellBase& rViewShellBase,
vcl::Window* pParentWindow,
PageKind ePageKind,
FrameView* pFrameView);
/** Arrange and resize the GUI elements like rulers, sliders, and buttonsaswellastheactualdocumentviewaccordingtothesizeof theenclosingwindowandcurrentsizesofbuttons,rulers,and sliders.
*/ virtualvoid ArrangeGUIElements() override;
//If we are editing a PresObjKind::Outline return the Outliner and fill rSel //with the current selection
::Outliner* GetOutlinerForMasterPageOutlineTextObj(ESelection &rSel);
void ExecCtrl(SfxRequest& rReq); void GetCtrlState(SfxItemSet& rSet); void GetDrawAttrState(SfxItemSet& rSet); void GetMenuState(SfxItemSet& rSet); void GetTableMenuState(SfxItemSet& rSet); /** Set the items of the given item set that are related to switchingtheeditingmodetothecorrectvalues. <p>Thisfunctionalsosetsthestatesofthemodebuttons (thoseattheupperrightcorner)accordingly.</p>
*/ void GetModeSwitchingMenuState (SfxItemSet &rSet); void GetAttrState(SfxItemSet& rSet); void GetSnapItemState(SfxItemSet& rSet);
void GotoBookmark(std::u16string_view rBookmark); //Realize multi-selection of objects, If object is marked, the //corresponding entry is set true, else the corresponding entry is set //false. void FreshNavigatrTree(); void MakeVisible(const ::tools::Rectangle& rRect, vcl::Window& rWin);
/** Show controls of the UI or hide them, depending on the given flag. Donotcallthismethoddirectly.CallthemethodatViewShellBase instead.
*/ virtualvoid ShowUIControls (bool bVisible) override;
/** Return the number of layers managed by the layer tab control. This willusuallydifferfromthenumberoflayersmanagedbythelayer administrator. @return Thenumberoflayersmanagedbythelayertabcontrol.The returnedvalueisindependentofwhetherthelayermodeis currentlyactiveandthetabcontrolisvisible.
*/ int GetTabLayerCount() const;
/** Return the numerical id of the currently active layer as seen by the layertabcontrol. @return Thereturnedidisanumberbetweenzero(inclusive)andthe numberoflayersasreturnedbythe <member>GetTabLayerCount</member>method(exclusive).
*/ int GetActiveTabLayerIndex() const;
/** Set the active layer at the layer tab control and update the control accordinglytoreflectthechangeonscreen. @paramnId Theidisexpectedtobeanumberbetweenzero(inclusive)and thenumberoflayersasreturnedbythe <member>GetTabLayerCount</member>method(exclusive).Notethat Invalidvaluesareignored.Noexceptionisthrowninthatcase.
*/ void SetActiveTabLayerIndex (int nId);
/** Return a pointer to the tab control for pages.
*/
TabControl& GetPageTabControl() { return *maTabControl; }
/** Return a pointer to the tab control for layers.
*/
SD_DLLPUBLIC LayerTabBar* GetLayerTabControl(); // export for unit test
/** Renames the given slide using an SvxNameDialog
/** Relocation to a new parent window is not supported for DrawViewShell objectssothismethodalwaysreturns<FALSE/>.
*/ virtualbool RelocateToParentWindow (vcl::Window* pParentWindow) override;
/** Depending on the given request create a new page or duplicate an existingone.SeeViewShell::CreateOrDuplicatePage()formore information.
*/ virtual SdPage* CreateOrDuplicatePage (
SfxRequest& rRequest,
PageKind ePageKind,
SdPage* pPage, const sal_Int32 nInsertPosition = -1) override;
/// return true if "Edit Hyperlink" in context menu should be disabled bool ShouldDisableEditHyperlink() const;
private:
std::unique_ptr<DrawView> mpDrawView;
SdPage* mpActualPage;
::tools::Rectangle maMarkRect;
Point maMousePos;
VclPtr<TabControl> maTabControl;
EditMode meEditMode;
PageKind mePageKind; bool mbZoomOnPage; bool mbIsRulerDrag;
sal_uLong mnLockCount; bool mbReadOnly; staticbool mbPipette; /** Prevents grabbing focus while loading - see tdf#83773 that introduced thegrabbing,andtdf#150773thatneedsgrabbingdisabledonloading
*/ bool mbFirstTimeActivation = true; /** This flag controls whether the layer mode is active, i.e. the layer dialogisvisible.
*/ bool mbIsLayerModeActive; /** This item contains the clipboard formats of the current clipboard contentthataresupportedbothbythatcontentandbythe DrawViewShell.
*/
::std::unique_ptr<SvxClipboardFormatItem> mpCurrentClipboardFormats; /** On some occasions it is necessary to make SwitchPage calls asynchronously.
*/
tools::AsynchronousCall maAsynchronousSwitchPageCall; /** This flag is used to prevent nested calls to SwitchPage().
*/ bool mbIsInSwitchPage;
RotateTransliteration m_aRotateCase; /** Listen for selection changes and broadcast context changes for the sidebar.
*/
::rtl::Reference<svx::sidebar::SelectionChangeHandler> mpSelectionChangeHandler;
css::uno::Reference< css::scanner::XScannerManager2 > mxScannerManager;
css::uno::Reference< css::lang::XEventListener > mxScannerListener;
rtl::Reference<TransferableClipboardListener> mxClipEvtLstnr; bool mbPastePossible; bool mbMouseButtonDown; bool mbMouseSelecting;
std::unique_ptr<AnnotationManager> mpAnnotationManager;
std::unique_ptr<ViewOverlayManager> mpViewOverlayManager;
std::vector<std::unique_ptr<SdrExternalToolEdit>> m_ExternalEdits;
/// Merge the background properties together and deposit the result in rMergeAttr
SD_DLLPUBLIC void MergePageBackgroundFilling(SdPage *pPage, SdStyleSheet *pStyleSheet, bool bMasterPage, SfxItemSet& rMergedAttr);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.