sync master with lastest vba changes
[ooovba.git] / binfilter / inc / bf_svx / svdview.hxx
blob6b62b5af81df3183754b778ce71881754276565c
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: svdview.hxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #ifndef _SVDVIEW_HXX
32 #define _SVDVIEW_HXX
34 // HACK to avoid too deep includes and to have some
35 // levels free in svdmark itself (MS compiler include depth limit)
36 #ifndef _SVDHDL_HXX
37 #include <bf_svx/svdhdl.hxx>
38 #endif
40 #include <bf_svx/svdcrtv.hxx>
41 namespace binfilter {
43 ////////////////////////////////////////////////////////////////////////////////////////////////////
45 // Klassenhierarchie der View:
46 // SfxListener
47 // SdrPaintView PntV Action ModChg Attr Notify
48 // SdrSnapView SnpV Action
50 // SdrMarkView MrkV Action MrkChg ModChg Notify
52 // SdrEditView EdtV MrkChg ModChg Attr
53 // SdrPolyEditView PoEV
54 // SdrGlueEditView GlEV
55 // SdrObjEditView EdxV Action ModChg Attr Notify
57 // SdrExchangeView XcgV
58 // SdrDragView DrgV Action
60 // SdrCreateView CrtV Action
61 // SdrView View
63 ////////////////////////////////////////////////////////////////////////////////////////////////////
65 //************************************************************
66 // Vorausdeklarationen
67 //************************************************************
69 class SvxURLField;
71 //************************************************************
72 // Defines
73 //************************************************************
75 enum SdrViewContext {SDRCONTEXT_STANDARD,
76 SDRCONTEXT_POINTEDIT,
77 SDRCONTEXT_GLUEPOINTEDIT,
78 SDRCONTEXT_TEXTEDIT,
79 SDRCONTEXT_GRAPHIC};
81 enum SdrEventKind {SDREVENT_NONE,
82 SDREVENT_TEXTEDIT,
83 SDREVENT_MOVACTION,
84 SDREVENT_ENDACTION,
85 SDREVENT_BCKACTION,
86 SDREVENT_BRKACTION,
87 SDREVENT_ENDCREATE,
88 SDREVENT_ENDDRAG,
89 SDREVENT_MARKOBJ,
90 SDREVENT_MARKPOINT,
91 SDREVENT_MARKGLUEPOINT,
92 SDREVENT_BEGMARK,
93 SDREVENT_BEGINSOBJPOINT,
94 SDREVENT_ENDINSOBJPOINT,
95 SDREVENT_BEGINSGLUEPOINT,
96 SDREVENT_BEGDRAGHELPLINE,
97 SDREVENT_BEGDRAGOBJ,
98 SDREVENT_BEGCREATEOBJ,
99 SDREVENT_BEGMACROOBJ,
100 SDREVENT_BEGTEXTEDIT,
101 SDREVENT_ENDMARK,
102 SDREVENT_BRKMARK,
103 SDREVENT_EXECUTEURL};
105 #define SDRMOUSEBUTTONDOWN 1
106 #define SDRMOUSEMOVE 2
107 #define SDRMOUSEBUTTONUP 3
109 ////////////////////////////////////////////////////////////////////////////////////////////////////
110 ////////////////////////////////////////////////////////////////////////////////////////////////////
112 // @@ @@ @@ @@@@@ @@ @@
113 // @@ @@ @@ @@ @@ @@
114 // @@ @@ @@ @@ @@ @ @@
115 // @@@@@ @@ @@@@ @@@@@@@
116 // @@@ @@ @@ @@@@@@@
117 // @@@ @@ @@ @@@ @@@
118 // @ @@ @@@@@ @@ @@
120 ////////////////////////////////////////////////////////////////////////////////////////////////////
121 ////////////////////////////////////////////////////////////////////////////////////////////////////
123 class SdrView: public SdrCreateView
125 friend class SdrPageView;
127 unsigned bNoExtendedMouseDispatcher : 1;
128 unsigned bNoExtendedKeyDispatcher : 1;
129 unsigned bNoExtendedCommandDispatcher : 1;
130 unsigned bTextEditOnObjectsWithoutTextIfTextTool : 1;
132 protected:
133 // Abgeleitete Klassen ueberladen lediglich die Methoden ReadData() und
134 // WriteData(). Diese werden von den Streamoperatoren der View gerufen.
135 // Wichtig ist, dass die ueberladen Methoden der abgeleiteten Klasse
136 // als erstes die Methode der Basisklasse rufen, da sonst der CharSet
137 // am Stream nicht korrekt gesetzt wird, ...
138 virtual void WriteRecords(SvStream& rOut) const;
139 virtual BOOL ReadRecord(const SdrIOHeader& rViewHead, const SdrNamedSubRecord& rSubHead, SvStream& rIn);
141 virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType);
143 public:
144 TYPEINFO();
145 SdrView(SdrModel* pModel1, OutputDevice* pOut);
146 SdrView(SdrModel* pModel1);
147 virtual ~SdrView();
149 // Default sind alle Dispatcher aktiviert. Will die App z.B. fuer
150 // Sonderbehandlungen im MouseDispatcher eingreifen, so muss sie
151 // den erweiterten MouseDispather mit unten stehender Methode deaktivieren
152 // und selbst nachimplementieren. Beispiel fuer MouseButtonDown:
153 // SdrHitKind eHit=pSdrView->PickAnything(rMEvt,SDRMOUSEBUTTONDOWN,aVEvt);
154 // ... hier Applikationsspezifischer Eingriff ...
155 // pSdrView->DoMouseEvent(aVEvt);
156 // SetPointer(GetPreferedPointer(...))
157 // CaptureMouse(...)
158 void EnableExtendedMouseEventDispatcher(BOOL bOn) { bNoExtendedMouseDispatcher = !bOn; }
159 BOOL IsExtendedMouseEventDispatcherEnabled() const { return bNoExtendedMouseDispatcher; }
161 void EnableExtendedKeyInputDispatcher(BOOL bOn) { bNoExtendedKeyDispatcher=!bOn; }
162 BOOL IsExtendedKeyInputDispatcherEnabled() const { return bNoExtendedKeyDispatcher; }
164 void EnableExtendedCommandEventDispatcher(BOOL bOn) { bNoExtendedCommandDispatcher=!bOn; }
165 BOOL IsExtendedCommandEventDispatcherEnabled() const { return bNoExtendedCommandDispatcher; }
167 void EnableTextEditOnObjectsWithoutTextIfTextTool(BOOL bOn) { bTextEditOnObjectsWithoutTextIfTextTool=bOn; }
168 BOOL IsEnableTextEditOnObjectsWithoutTextIfTextToolEnabled() const { return bTextEditOnObjectsWithoutTextIfTextTool; }
171 // Die Methoden beruecksichtigen den jeweiligen Kontex:
172 // - Einfaches Zeichnen
173 // - Punktbearbeitungs-Mode
174 // - Klebepunkt-Editmode
175 // - TextEdit
176 // - ... to be continued
177 BOOL HasMarked() const { return HasMarkedObj(); }
178 void UnmarkAll();
181 virtual void DeleteMarked();
183 // Strings werden beim rausstreamen in den am Stream eingestellten
184 // StreamCharSet konvertiert.
185 // Abgeleitete Klassen mit eigenen persistenten Membern ueberladen
186 // die virtuellen Methoden ReadData() und WriteData().
187 friend SvStream& operator<<(SvStream& rOut, const SdrView& rView);
189 // Wenn das Model im Stream in einem fremden CharSet vorliegt
190 // wird beim einstreamen implizit auf den SystemCharSet konvertiert.
191 // Abgeleitete Klassen mit eigenen persistenten Membern ueberladen
192 // die virtuellen Methoden ReadData() und WriteData().
193 friend SvStream& operator>>(SvStream& rIn, SdrView& rView);
196 virtual void onAccessibilityOptionsChanged();
199 }//end of namespace binfilter
200 #endif //_SVDVIEW_HXX
202 ////////////////////////////////////////////////////////////////////////////////////////////////////
204 // Die App macht sich zunaechst ein SdrModel.
205 // Anschliessend oeffnet sie ein Win und erzeugt dann eine SdrView.
206 // An der SdrView meldet sie dann mit der Methode ShowPage() eine Seite an.
207 // Eine SdrView kann in beliebig vielen Fenstern gleichzeitig angezeigt werden.
208 // Intern:
209 // Eine SdrView kann beliebig viele Seiten gleichzeitig anzeigen. Seiten
210 // werden an- und abgemeldet mit ShowPage()/HidePage(). Fuer jede angemeldete
211 // Seite wird eine SdrPageView-Instanz im Container aPages angelegt. Bei
212 // gleichzeitiger Anzeige mehrerer Seiten ist darauf zu achten, dass der Offset-
213 // Parameter von ShowPage() der Seitengroesse angepasst ist, da sich sonst die
214 // Seiten ueberlappen koennten.
216 // Elementare Methoden:
217 // ~~~~~~~~~~~~~~~~~~~~
218 // Einfache Events:
219 // ~~~~~~~~~~~~~~~~
220 // BOOL KeyInput(const KeyEvent& rKEvt, Window* pWin);
221 // BOOL MouseButtonDown(const MouseEvent& rMEvt, Window* pWin);
222 // BOOL MouseButtonUp(const MouseEvent& rMEvt, Window* pWin);
223 // BOOL MouseMove(const MouseEvent& rMEvt, Window* pWin);
224 // BOOL Command(const CommandEvent& rCEvt, Window* pWin);
226 // Exchange (Clipboard derzeit noch ohne SdrPrivateData):
227 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
228 // BOOL Cut(ULONG nFormat=SDR_ANYFORMAT);
229 // BOOL Yank(ULONG nFormat=SDR_ANYFORMAT);
230 // BOOL Paste(Window* pWin=NULL, ULONG nFormat=SDR_ANYFORMAT);
232 // SfxItems:
233 // ~~~~~~~~~
234 // BOOL GetAttributes(SfxItemSet& rTargetSet, BOOL bOnlyHardAttr=FALSE) const;
235 // BOOL SetAttributes(const SfxItemSet& rSet, BOOL bReplaceAll);
236 // SfxStyleSheet* GetStyleSheet() const;
237 // BOOL SetStyleSheet(SfxStyleSheet* pStyleSheet, BOOL bDontRemoveHardAttr);
239 ///////////////////////////////////////////////////////////////////////////////////////////////// */