LibreOffice Module svx (master) 1
fmexpl.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#ifndef INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
20#define INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
21
22#include <config_options.h>
23#include <svl/lstner.hxx>
25#include <vcl/window.hxx>
26#include <sfx2/childwin.hxx>
27#include <svl/poolitem.hxx>
28#include <sfx2/bindings.hxx>
29#include <sfx2/dockwin.hxx>
30#include <sfx2/ctrlitem.hxx>
31
32#include <com/sun/star/form/XForm.hpp>
33#include <com/sun/star/form/XFormComponent.hpp>
34#include <com/sun/star/beans/PropertyChangeEvent.hpp>
35#include <com/sun/star/container/XContainerListener.hpp>
36#include <com/sun/star/beans/XPropertyChangeListener.hpp>
37#include <com/sun/star/container/XIndexContainer.hpp>
38
39#include <svx/fmview.hxx>
40
41#include "fmexch.hxx"
42#include <vector>
43#include <set>
45
46class SdrObjListIter;
47class FmFormShell;
48class SdrObject;
49class FmFormModel;
50class FmFormView;
51class SdrMarkList;
52
53
54class FmEntryData;
55class FmNavInsertedHint final : public SfxHint
56{
58 sal_uInt32 nPos;
59
60public:
61 FmNavInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos );
62 virtual ~FmNavInsertedHint() override;
63
64 FmEntryData* GetEntryData() const { return pEntryData; }
65 sal_uInt32 GetRelPos() const { return nPos; }
66};
67
68
69class FmNavModelReplacedHint final : public SfxHint
70{
71 FmEntryData* pEntryData; // the data of the entry that has got a new model
72
73public:
74 FmNavModelReplacedHint( FmEntryData* pAffectedEntryData );
75 virtual ~FmNavModelReplacedHint() override;
76
77 FmEntryData* GetEntryData() const { return pEntryData; }
78};
79
80
81class FmNavRemovedHint final : public SfxHint
82{
84
85public:
86 FmNavRemovedHint( FmEntryData* pInsertedEntryData );
87 virtual ~FmNavRemovedHint() override;
88
89 FmEntryData* GetEntryData() const { return pEntryData; }
90};
91
92
93class FmNavNameChangedHint final : public SfxHint
94{
96 OUString aNewName;
97
98public:
99 FmNavNameChangedHint( FmEntryData* pData, OUString aNewName );
100 virtual ~FmNavNameChangedHint() override;
101
103 const OUString& GetNewName() const { return aNewName; }
104};
105
106
107class FmNavClearedHint final : public SfxHint
108{
109public:
111 virtual ~FmNavClearedHint() override;
112};
113
114
115class FmNavViewMarksChanged final : public SfxHint
116{
118public:
119 FmNavViewMarksChanged(FmFormView* pWhichView) { pView = pWhichView; }
120
121 const FmFormView* GetAffectedView() const { return pView; }
122};
123
124
125class FmEntryDataList;
127{
128private:
129 css::uno::Reference< css::uno::XInterface > m_xNormalizedIFace;
130 css::uno::Reference< css::beans::XPropertySet > m_xProperties;
131 css::uno::Reference< css::container::XChild > m_xChild;
132
133protected:
135 OUString aText;
136
137 std::unique_ptr<FmEntryDataList>
140
141protected:
142 void newObject( const css::uno::Reference< css::uno::XInterface >& _rxIFace );
143
144public:
145
146 FmEntryData( FmEntryData* pParentData, const css::uno::Reference< css::uno::XInterface >& _rIFace );
147 FmEntryData( const FmEntryData& rEntryData );
148 virtual ~FmEntryData();
149
150 void SetText( const OUString& rText ){ aText = rText; }
151 void SetParent( FmEntryData* pParentData ){ pParent = pParentData; }
152
153 const OUString& GetNormalImage() const { return m_aNormalImage; }
154
155 const OUString& GetText() const { return aText; }
156 FmEntryData* GetParent() const { return pParent; }
157 FmEntryDataList* GetChildList() const { return pChildList.get(); }
158
159 virtual bool IsEqualWithoutChildren( FmEntryData* pEntryData );
160 virtual std::unique_ptr<FmEntryData> Clone() = 0;
161
162 // note that the interface returned is normalized, i.e. querying the given XInterface of the object
163 // for XInterface must return the interface itself.
164 const css::uno::Reference< css::uno::XInterface >& GetElement() const
165 {
166 return m_xNormalizedIFace;
167 }
168
169 const css::uno::Reference< css::beans::XPropertySet >& GetPropertySet() const
170 {
171 return m_xProperties;
172 }
173
174 const css::uno::Reference< css::container::XChild >& GetChildIFace() const
175 {
176 return m_xChild;
177 }
178};
179
180
182{
183private:
184 std::vector< std::unique_ptr<FmEntryData> > maEntryDataList;
185
186public:
189
191 { return maEntryDataList.at(Index).get(); }
192
193 size_t size() const { return maEntryDataList.size(); }
194 void removeNoDelete( FmEntryData* pItem );
195 void insert( std::unique_ptr<FmEntryData> pItem, size_t Index );
196 void clear();
197};
198
199
200// FmNavRequestSelectHint - someone tells the NavigatorTree to select certain entries
201
202typedef std::set<FmEntryData*> FmEntryDataArray;
203
204class FmNavRequestSelectHint final : public SfxHint
205{
208public:
210 : m_bMixedSelection(false)
211 {
212 }
213
214 void SetMixedSelection(bool bMixedSelection) { m_bMixedSelection = bMixedSelection; }
215 bool IsMixedSelection() const { return m_bMixedSelection; }
216 void AddItem(FmEntryData* pEntry) { m_arredToSelect.insert(pEntry); }
217 void ClearItems() { m_arredToSelect.clear(); }
219};
220
221
222class FmFormData final : public FmEntryData
223{
224 css::uno::Reference< css::form::XForm > m_xForm;
225
226public:
227 FmFormData(const css::uno::Reference< css::form::XForm >& _rxForm, FmFormData* _pParent);
228 FmFormData( const FmFormData& rFormData );
229 virtual ~FmFormData() override;
230
231 const css::uno::Reference< css::form::XForm >& GetFormIface() const { return m_xForm; }
232
233 virtual bool IsEqualWithoutChildren( FmEntryData* pEntryData ) override;
234 virtual std::unique_ptr<FmEntryData> Clone() override;
235};
236
237
238class FmControlData final : public FmEntryData
239{
240 css::uno::Reference< css::form::XFormComponent > m_xFormComponent;
241
242 OUString GetImage() const;
243
244public:
245
247 const css::uno::Reference< css::form::XFormComponent >& _rxComponent,
248 FmFormData* _pParent
249 );
250 FmControlData( const FmControlData& rControlData );
251 virtual ~FmControlData() override;
252
253 const css::uno::Reference< css::form::XFormComponent >& GetFormComponent() const { return m_xFormComponent; }
254 virtual bool IsEqualWithoutChildren( FmEntryData* pEntryData ) override;
255 virtual std::unique_ptr<FmEntryData> Clone() override;
256
257 void ModelReplaced(const css::uno::Reference< css::form::XFormComponent >& _rxNew);
258};
259
260
261namespace svxform
262{
263
264
265 class NavigatorTreeModel;
266
268 :public ::cppu::WeakImplHelper < css::beans::XPropertyChangeListener
269 , css::container::XContainerListener
270 >
271 {
273 sal_uInt32 m_nLocks;
275
276 public:
278
279 // XEventListenerListener
280 virtual void SAL_CALL disposing(const css::lang::EventObject& Source) override;
281
282 // css::beans::XPropertyChangeListener
283 virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent& evt) override;
284
285 // css::container::XContainerListener
286
287 virtual void SAL_CALL elementInserted(const css::container::ContainerEvent& rEvent) override;
288 virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent& rEvent) override;
289 virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent& rEvent) override;
290
291 void Lock() { m_nLocks++; }
292 void UnLock() { m_nLocks--; }
293 bool IsLocked() const { return m_nLocks != 0; }
294 bool CanUndo() const { return m_bCanUndo; }
295 void ReleaseModel() { m_pNavModel = nullptr; }
296 private:
297 void Insert(const css::uno::Reference< css::uno::XInterface >& xIface, sal_Int32 nIndex);
298 void Remove( const css::uno::Reference< css::uno::XInterface >& _rxElement );
299 };
300
302 ,public SfxListener
303 {
304 friend class NavigatorTree;
306
307 std::unique_ptr<FmEntryDataList>
313
314 void UpdateContent( const css::uno::Reference< css::form::XForms >& xForms );
315
316 void InsertForm(const css::uno::Reference< css::form::XForm >& xForm, sal_uInt32 nRelPos);
317 void RemoveForm(FmFormData const * pFormData);
318
319 void InsertFormComponent(const css::uno::Reference< css::form::XFormComponent >& xComp, sal_uInt32 nRelPos);
320 void RemoveFormComponent(FmControlData const * pControlData);
321 void InsertSdrObj(const SdrObject* pSdrObj);
322 void RemoveSdrObj(const SdrObject* pSdrObj);
323
324 void ReplaceFormComponent(const css::uno::Reference< css::form::XFormComponent >& xOld, const css::uno::Reference< css::form::XFormComponent >& xNew);
325
326 void BroadcastMarkedObjects(const SdrMarkList& mlMarked);
327 // send a RequestSelectHint with the currently selected objects
329 // is a helper for previous, manages the ... in SdrObjGroups;
330 // returns sal_True if the object is a FormComponent (or recursively consists only of such)
331
332 public:
334 virtual ~NavigatorTreeModel() override;
335
336 void FillBranch( FmFormData* pParentData );
337 void UpdateContent( FmFormShell* pNewShell );
338
339 void Insert(FmEntryData* pEntryData, sal_uInt32 nRelPos = SAL_MAX_UINT32,
340 bool bAlterModel = false);
341 void Remove(FmEntryData* pEntryData, bool bAlterModel = false);
342
343 static bool Rename( FmEntryData* pEntryData, const OUString& rNewText );
344
345 void Clear();
346 void SetModified();
347
348 css::uno::Reference< css::form::XForms > GetForms() const;
350 FmFormPage* GetFormPage() const { return m_pFormPage; }
351 FmEntryData* FindData( const css::uno::Reference< css::uno::XInterface >& xElement, FmEntryDataList* pDataList, bool bRecurs=true );
352 FmEntryData* FindData( const OUString& rText, FmFormData const * pParentData, bool bRecurs );
353 FmEntryDataList* GetRootList() const { return m_pRootList.get(); }
354 static css::uno::Reference< css::container::XIndexContainer > GetFormComponents( FmFormData const * pParentFormData );
355
356 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
357 };
358
359 class NavigatorTree;
360
361 class NavigatorTreeDropTarget final : public DropTargetHelper
362 {
363 private:
365
366 virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) override;
367 virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) override;
368
369 public:
371 };
372
373 typedef std::set<std::unique_ptr<weld::TreeIter>> SvLBoxEntrySortedArray;
374
375 class NavigatorTree final : public SfxListener
376 {
377 std::unique_ptr<weld::TreeView> m_xTreeView;
379
381
383 // the meta-data about my current selection
385 // the entries which, in the view, are currently marked as "cut" (painted semi-transparent)
387
389
390 std::unique_ptr<NavigatorTreeModel> m_pNavModel;
391 std::unique_ptr<weld::TreeIter> m_xRootEntry;
392 std::unique_ptr<weld::TreeIter> m_xEditEntry;
393
395
397
398 sal_uInt16 m_nSelectLock;
401 sal_uInt16 m_nHiddenControls; // (the number is included in m_nControlsSelected)
402
403 bool m_bDragDataDirty : 1; // ditto
406 bool m_bInitialUpdate : 1; // am I the first time in the UpdateContent?
408 bool m_bEditing : 1;
409
410 FmControlData* NewControl(const OUString& rServiceName, const weld::TreeIter& rParentEntry, bool bEditName);
411 void NewForm(const weld::TreeIter& rParentEntry);
412 std::unique_ptr<weld::TreeIter> Insert(const FmEntryData* pEntryData, int nRelPos);
413 void Remove( FmEntryData* pEntryData );
414
415
417 // Collects the currently selected entries in m_arrCurrentSelection, normalizes the list if requested.
418 // - SDI_NORMALIZED simply means that all entries that already have a selected ancestor are not collected.
419 // - SDI_NORMALIZED_FORMARK means that the procedure is the same as for SDI_NORMALIZED,
420 // but entries whose direct parent is not selected are collected (independent of the
421 // status of further ancestors). The same applies for forms that are selected,
422 // regardless of the status of any ancestors.
423 // For both normalized modes, the m_nFormsSelected, ... contain the correct number,
424 // even if not all of these entries end up in m_arrCurrentSelection.
425 // SDI_DIRTY is of course not allowed as a parameter.
426
427 // a single interface for all selected entries
428 void ShowSelectionProperties(bool bForce = false);
429 // delete all selected elements
430 void DeleteSelection();
431
432 void SynchronizeSelection(FmEntryDataArray& arredToSelect);
433 // after calling this method, exactly the entries marked in the array are selected
435 // makes the same, takes the MarkList of the View
436 void SynchronizeMarkList();
437 // reverse direction of SynchronizeMarkList: selects in the view all controls corresponding to the current selection
438
439 void CollectObjects(FmFormData const * pFormData, bool bDeep, ::std::set< css::uno::Reference< css::form::XFormComponent > >& _rObjects);
440
441 // in the Select I usually update the Marklist of the corresponding view,
442 // with the following functions I can control the locking of this behavior
445 bool IsSelectionHandlingLocked() const { return m_nSelectLock>0; }
446
447 bool IsEditingActive() const { return m_bEditing; }
448
449 static bool IsHiddenControl(FmEntryData const * pEntryData);
450
451 DECL_LINK( KeyInputHdl, const KeyEvent&, bool );
452 DECL_LINK( PopupMenuHdl, const CommandEvent&, bool );
453
454 DECL_LINK(EditingEntryHdl, const weld::TreeIter&, bool);
455 typedef std::pair<const weld::TreeIter&, OUString> IterString;
456 DECL_LINK(EditedEntryHdl, const IterString&, bool);
457
458 DECL_LINK( OnEdit, void*, void );
459
460 DECL_LINK( OnEntrySelDesel, weld::TreeView&, void );
461 DECL_LINK( OnSynchronizeTimer, Timer*, void );
462
463 DECL_LINK( OnClipboardAction, OLocalExchange&, void );
464
465 DECL_LINK( DragBeginHdl, bool&, bool );
466
467 public:
468 NavigatorTree(std::unique_ptr<weld::TreeView> xTreeView);
469 virtual ~NavigatorTree() override;
470
471 void Clear();
472 void UpdateContent( FmFormShell* pFormShell );
473 void MarkViewObj( FmFormData const * pFormData, bool bDeep );
474 void MarkViewObj( FmControlData const * pControlData );
475 void UnmarkAllViewObj();
476
477 void GrabFocus() { m_xTreeView->grab_focus(); }
478
479 bool IsFormEntry(const weld::TreeIter& rEntry);
480 bool IsFormComponentEntry(const weld::TreeIter& rEntry);
481
482 OUString GenerateName( FmEntryData const * pEntryData );
483
484 NavigatorTreeModel* GetNavModel() const { return m_pNavModel.get(); }
485 std::unique_ptr<weld::TreeIter> FindEntry(FmEntryData* pEntryData);
486
487 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
488
490
493
494 private:
495 sal_Int8 implAcceptDataTransfer( const DataFlavorExVector& _rFlavors, sal_Int8 _nAction, const weld::TreeIter* _pTargetEntry, bool _bDnD );
496
497 sal_Int8 implExecuteDataTransfer( const OControlTransferData& _rData, sal_Int8 _nAction, const Point& _rDropPos, bool _bDnD );
498 sal_Int8 implExecuteDataTransfer( const OControlTransferData& _rData, sal_Int8 _nAction, const weld::TreeIter* _pTargetEntry, bool _bDnD );
499
500 // check if a cut, copy, or drag operation can be started in the current situation
501 bool implAllowExchange( sal_Int8 _nAction, bool* _pHasNonHidden = nullptr );
502 // check if a paste with the current clipboard content can be accepted
503 bool implAcceptPaste( );
504
505 // fills m_aControlExchange in preparation of a DnD or clipboard operation
506 bool implPrepareExchange( sal_Int8 _nAction );
507
508 void ModelHasRemoved(const weld::TreeIter* _pEntry);
509
510 void doPaste();
511 void doCopy();
512 void doCut();
513
514 bool doingKeyboardCut( ) const { return m_bKeyboardCut; }
515 };
516
518 {
519 private:
520 std::unique_ptr<NavigatorTree> m_xNavigatorTree;
521
522 virtual bool Close() override;
523 virtual void GetFocus() override;
524 virtual Size CalcDockingSize( SfxChildAlignment ) override;
526
528
529 public:
531 vcl::Window* pParent );
532 virtual ~NavigatorFrame() override;
533 virtual void dispose() override;
534
535 void UpdateContent( FmFormShell* pFormShell );
536 void StateChangedAtToolBoxControl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) override;
537 void FillInfo( SfxChildWinInfo& rInfo ) const override;
538 };
539
540 class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) NavigatorFrameManager final : public SfxChildWindow
541 {
542 public:
543 SVX_DLLPRIVATE NavigatorFrameManager( vcl::Window *pParent, sal_uInt16 nId, SfxBindings *pBindings,
544 SfxChildWinInfo *pInfo );
545 SFX_DECL_CHILDWINDOW( NavigatorFrameManager );
546 };
547}
548
549#endif // INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
550
551/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
struct _ADOIndex Index
SfxChildAlignment
#define SFX_DECL_CHILDWINDOW(Class)
const css::uno::Reference< css::form::XFormComponent > & GetFormComponent() const
Definition: fmexpl.hxx:253
virtual ~FmControlData() override
Definition: fmexpl.cxx:288
css::uno::Reference< css::form::XFormComponent > m_xFormComponent
Definition: fmexpl.hxx:240
OUString GetImage() const
Definition: fmexpl.cxx:306
FmControlData(const css::uno::Reference< css::form::XFormComponent > &_rxComponent, FmFormData *_pParent)
void ModelReplaced(const css::uno::Reference< css::form::XFormComponent > &_rxNew)
Definition: fmexpl.cxx:429
virtual std::unique_ptr< FmEntryData > Clone() override
Definition: fmexpl.cxx:300
virtual bool IsEqualWithoutChildren(FmEntryData *pEntryData) override
Definition: fmexpl.cxx:414
void removeNoDelete(FmEntryData *pItem)
Definition: fmexpl.cxx:114
size_t size() const
Definition: fmexpl.hxx:193
FmEntryData * at(size_t Index)
Definition: fmexpl.hxx:190
void clear()
Definition: fmexpl.cxx:140
std::vector< std::unique_ptr< FmEntryData > > maEntryDataList
Definition: fmexpl.hxx:184
void insert(std::unique_ptr< FmEntryData > pItem, size_t Index)
Definition: fmexpl.cxx:129
const css::uno::Reference< css::container::XChild > & GetChildIFace() const
Definition: fmexpl.hxx:174
const OUString & GetText() const
Definition: fmexpl.hxx:155
const css::uno::Reference< css::uno::XInterface > & GetElement() const
Definition: fmexpl.hxx:164
const css::uno::Reference< css::beans::XPropertySet > & GetPropertySet() const
Definition: fmexpl.hxx:169
virtual bool IsEqualWithoutChildren(FmEntryData *pEntryData)
Definition: fmexpl.cxx:193
FmEntryData(FmEntryData *pParentData, const css::uno::Reference< css::uno::XInterface > &_rIFace)
virtual ~FmEntryData()
Definition: fmexpl.cxx:155
FmEntryDataList * GetChildList() const
Definition: fmexpl.hxx:157
OUString aText
Definition: fmexpl.hxx:135
std::unique_ptr< FmEntryDataList > pChildList
Definition: fmexpl.hxx:138
FmEntryData * pParent
Definition: fmexpl.hxx:139
OUString m_aNormalImage
Definition: fmexpl.hxx:134
void newObject(const css::uno::Reference< css::uno::XInterface > &_rxIFace)
Definition: fmexpl.cxx:161
FmEntryData * GetParent() const
Definition: fmexpl.hxx:156
const OUString & GetNormalImage() const
Definition: fmexpl.hxx:153
css::uno::Reference< css::beans::XPropertySet > m_xProperties
Definition: fmexpl.hxx:130
void SetText(const OUString &rText)
Definition: fmexpl.hxx:150
css::uno::Reference< css::container::XChild > m_xChild
Definition: fmexpl.hxx:131
void SetParent(FmEntryData *pParentData)
Definition: fmexpl.hxx:151
css::uno::Reference< css::uno::XInterface > m_xNormalizedIFace
Definition: fmexpl.hxx:129
virtual std::unique_ptr< FmEntryData > Clone()=0
FmFormData(const css::uno::Reference< css::form::XForm > &_rxForm, FmFormData *_pParent)
virtual std::unique_ptr< FmEntryData > Clone() override
Definition: fmexpl.cxx:251
virtual bool IsEqualWithoutChildren(FmEntryData *pEntryData) override
Definition: fmexpl.cxx:257
const css::uno::Reference< css::form::XForm > & GetFormIface() const
Definition: fmexpl.hxx:231
css::uno::Reference< css::form::XForm > m_xForm
Definition: fmexpl.hxx:224
virtual ~FmFormData() override
Definition: fmexpl.cxx:240
virtual ~FmNavClearedHint() override
Definition: fmexpl.cxx:99
FmNavInsertedHint(FmEntryData *pInsertedEntryData, sal_uInt32 nRelPos)
Definition: fmexpl.cxx:49
sal_uInt32 nPos
Definition: fmexpl.hxx:58
sal_uInt32 GetRelPos() const
Definition: fmexpl.hxx:65
FmEntryData * GetEntryData() const
Definition: fmexpl.hxx:64
virtual ~FmNavInsertedHint() override
Definition: fmexpl.cxx:57
FmEntryData * pEntryData
Definition: fmexpl.hxx:57
virtual ~FmNavModelReplacedHint() override
Definition: fmexpl.cxx:69
FmEntryData * GetEntryData() const
Definition: fmexpl.hxx:77
FmNavModelReplacedHint(FmEntryData *pAffectedEntryData)
Definition: fmexpl.cxx:63
FmEntryData * pEntryData
Definition: fmexpl.hxx:71
const OUString & GetNewName() const
Definition: fmexpl.hxx:103
OUString aNewName
Definition: fmexpl.hxx:96
FmEntryData * GetEntryData() const
Definition: fmexpl.hxx:102
FmNavNameChangedHint(FmEntryData *pData, OUString aNewName)
Definition: fmexpl.cxx:83
FmEntryData * pEntryData
Definition: fmexpl.hxx:95
virtual ~FmNavNameChangedHint() override
Definition: fmexpl.cxx:90
virtual ~FmNavRemovedHint() override
Definition: fmexpl.cxx:79
FmEntryData * GetEntryData() const
Definition: fmexpl.hxx:89
FmNavRemovedHint(FmEntryData *pInsertedEntryData)
Definition: fmexpl.cxx:73
FmEntryData * pEntryData
Definition: fmexpl.hxx:83
FmEntryDataArray m_arredToSelect
Definition: fmexpl.hxx:206
void SetMixedSelection(bool bMixedSelection)
Definition: fmexpl.hxx:214
FmEntryDataArray & GetItems()
Definition: fmexpl.hxx:218
void AddItem(FmEntryData *pEntry)
Definition: fmexpl.hxx:216
bool IsMixedSelection() const
Definition: fmexpl.hxx:215
FmNavViewMarksChanged(FmFormView *pWhichView)
Definition: fmexpl.hxx:119
const FmFormView * GetAffectedView() const
Definition: fmexpl.hxx:121
FmFormView * pView
Definition: fmexpl.hxx:117
Abstract DrawObject.
Definition: svdobj.hxx:261
SfxBindings * pBindings
virtual void StateChanged(StateChangedType nStateChange) override
SfxChildWindow * pMgr
NavigatorFrame(SfxBindings *pBindings, SfxChildWindow *pMgr, vcl::Window *pParent)
Definition: fmexpl.cxx:440
void UpdateContent(FmFormShell *pFormShell)
Definition: fmexpl.cxx:464
virtual void GetFocus() override
Definition: fmexpl.cxx:483
virtual ~NavigatorFrame() override
Definition: fmexpl.cxx:452
std::unique_ptr< NavigatorTree > m_xNavigatorTree
Definition: fmexpl.hxx:520
virtual SfxChildAlignment CheckAlignment(SfxChildAlignment, SfxChildAlignment) override
Definition: fmexpl.cxx:511
virtual Size CalcDockingSize(SfxChildAlignment) override
Definition: fmexpl.cxx:503
void FillInfo(SfxChildWinInfo &rInfo) const override
Definition: fmexpl.cxx:497
virtual void dispose() override
Definition: fmexpl.cxx:457
void StateChangedAtToolBoxControl(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem *pState) override
Definition: fmexpl.cxx:469
virtual bool Close() override
Definition: fmexpl.cxx:491
virtual sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt) override
virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt) override
NavigatorTreeDropTarget(NavigatorTree &rTreeView)
void InsertForm(const css::uno::Reference< css::form::XForm > &xForm, sal_uInt32 nRelPos)
void InsertSdrObj(const SdrObject *pSdrObj)
void RemoveForm(FmFormData const *pFormData)
void UpdateContent(const css::uno::Reference< css::form::XForms > &xForms)
void FillBranch(FmFormData *pParentData)
css::uno::Reference< css::form::XForms > GetForms() const
void BroadcastMarkedObjects(const SdrMarkList &mlMarked)
rtl::Reference< OFormComponentObserver > m_pPropChangeList
Definition: fmexpl.hxx:312
FmFormPage * GetFormPage() const
Definition: fmexpl.hxx:350
void Insert(FmEntryData *pEntryData, sal_uInt32 nRelPos=SAL_MAX_UINT32, bool bAlterModel=false)
FmFormPage * m_pFormPage
Definition: fmexpl.hxx:310
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
void RemoveSdrObj(const SdrObject *pSdrObj)
std::unique_ptr< FmEntryDataList > m_pRootList
Definition: fmexpl.hxx:308
FmEntryDataList * GetRootList() const
Definition: fmexpl.hxx:353
FmEntryData * FindData(const css::uno::Reference< css::uno::XInterface > &xElement, FmEntryDataList *pDataList, bool bRecurs=true)
void ReplaceFormComponent(const css::uno::Reference< css::form::XFormComponent > &xOld, const css::uno::Reference< css::form::XFormComponent > &xNew)
FmFormShell * GetFormShell() const
Definition: fmexpl.hxx:349
void Remove(FmEntryData *pEntryData, bool bAlterModel=false)
FmFormModel * m_pFormModel
Definition: fmexpl.hxx:311
static bool Rename(FmEntryData *pEntryData, const OUString &rNewText)
static css::uno::Reference< css::container::XIndexContainer > GetFormComponents(FmFormData const *pParentFormData)
void RemoveFormComponent(FmControlData const *pControlData)
FmFormShell * m_pFormShell
Definition: fmexpl.hxx:309
virtual ~NavigatorTreeModel() override
void InsertFormComponent(const css::uno::Reference< css::form::XFormComponent > &xComp, sal_uInt32 nRelPos)
void UpdateContent(FmFormShell *pFormShell)
void CollectSelectionData(SELDATA_ITEMS sdiHow)
void Remove(FmEntryData *pEntryData)
bool doingKeyboardCut() const
Definition: fmexpl.hxx:514
sal_Int8 implExecuteDataTransfer(const OControlTransferData &_rData, sal_Int8 _nAction, const Point &_rDropPos, bool _bDnD)
FmControlData * NewControl(const OUString &rServiceName, const weld::TreeIter &rParentEntry, bool bEditName)
void UnlockSelectionHandling()
Definition: fmexpl.hxx:444
NavigatorTreeDropTarget m_aDropTargetHelper
Definition: fmexpl.hxx:378
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
DECL_LINK(DragBeginHdl, bool &, bool)
sal_uInt16 m_nHiddenControls
Definition: fmexpl.hxx:401
DECL_LINK(EditingEntryHdl, const weld::TreeIter &, bool)
DECL_LINK(PopupMenuHdl, const CommandEvent &, bool)
std::unique_ptr< NavigatorTreeModel > m_pNavModel
Definition: fmexpl.hxx:390
bool implAllowExchange(sal_Int8 _nAction, bool *_pHasNonHidden=nullptr)
sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt)
bool IsEditingActive() const
Definition: fmexpl.hxx:447
DECL_LINK(OnEntrySelDesel, weld::TreeView &, void)
sal_Int8 implAcceptDataTransfer(const DataFlavorExVector &_rFlavors, sal_Int8 _nAction, const weld::TreeIter *_pTargetEntry, bool _bDnD)
sal_uInt16 m_nSelectLock
Definition: fmexpl.hxx:398
SvLBoxEntrySortedArray m_arrCurrentSelection
Definition: fmexpl.hxx:384
void LockSelectionHandling()
Definition: fmexpl.hxx:443
std::unique_ptr< weld::TreeView > m_xTreeView
Definition: fmexpl.hxx:377
std::unique_ptr< weld::TreeIter > m_xRootEntry
Definition: fmexpl.hxx:391
bool IsSelectionHandlingLocked() const
Definition: fmexpl.hxx:445
ListBoxEntrySet m_aCutEntries
Definition: fmexpl.hxx:386
DECL_LINK(OnClipboardAction, OLocalExchange &, void)
DECL_LINK(EditedEntryHdl, const IterString &, bool)
sal_uInt16 m_nFormsSelected
Definition: fmexpl.hxx:399
void MarkViewObj(FmFormData const *pFormData, bool bDeep)
SELDATA_ITEMS m_sdiState
Definition: fmexpl.hxx:396
DECL_LINK(OnEdit, void *, void)
OUString GenerateName(FmEntryData const *pEntryData)
virtual ~NavigatorTree() override
::svxform::OControlExchangeHelper m_aControlExchange
Definition: fmexpl.hxx:388
NavigatorTree(std::unique_ptr< weld::TreeView > xTreeView)
std::unique_ptr< weld::TreeIter > FindEntry(FmEntryData *pEntryData)
std::pair< const weld::TreeIter &, OUString > IterString
Definition: fmexpl.hxx:455
void CollectObjects(FmFormData const *pFormData, bool bDeep, ::std::set< css::uno::Reference< css::form::XFormComponent > > &_rObjects)
DECL_LINK(KeyInputHdl, const KeyEvent &, bool)
NavigatorTreeModel * GetNavModel() const
Definition: fmexpl.hxx:484
void ShowSelectionProperties(bool bForce=false)
void NewForm(const weld::TreeIter &rParentEntry)
std::unique_ptr< weld::TreeIter > Insert(const FmEntryData *pEntryData, int nRelPos)
weld::TreeView & get_widget()
Definition: fmexpl.hxx:489
DECL_LINK(OnSynchronizeTimer, Timer *, void)
bool IsFormComponentEntry(const weld::TreeIter &rEntry)
bool implPrepareExchange(sal_Int8 _nAction)
static bool IsHiddenControl(FmEntryData const *pEntryData)
sal_uInt16 m_nControlsSelected
Definition: fmexpl.hxx:400
sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt)
ImplSVEvent * nEditEvent
Definition: fmexpl.hxx:394
bool IsFormEntry(const weld::TreeIter &rEntry)
void ModelHasRemoved(const weld::TreeIter *_pEntry)
std::unique_ptr< weld::TreeIter > m_xEditEntry
Definition: fmexpl.hxx:392
OFormComponentObserver(::svxform::NavigatorTreeModel *pModel)
virtual void SAL_CALL propertyChange(const css::beans::PropertyChangeEvent &evt) override
void Insert(const css::uno::Reference< css::uno::XInterface > &xIface, sal_Int32 nIndex)
virtual void SAL_CALL elementReplaced(const css::container::ContainerEvent &rEvent) override
virtual void SAL_CALL elementRemoved(const css::container::ContainerEvent &rEvent) override
virtual void SAL_CALL disposing(const css::lang::EventObject &Source) override
::svxform::NavigatorTreeModel * m_pNavModel
Definition: fmexpl.hxx:272
void Remove(const css::uno::Reference< css::uno::XInterface > &_rxElement)
virtual void SAL_CALL elementInserted(const css::container::ContainerEvent &rEvent) override
::std::vector< DataFlavorEx > DataFlavorExVector
std::set< FmEntryData * > FmEntryDataArray
Definition: fmexpl.hxx:202
class FmSearchEngine - Impl class for FmSearchDialog
std::set< std::unique_ptr< weld::TreeIter > > SvLBoxEntrySortedArray
Definition: fmexpl.hxx:373
::std::set< std::unique_ptr< weld::TreeIter > > ListBoxEntrySet
Definition: fmexch.hxx:38
SfxItemState
#define SVX_DLLPRIVATE
Definition: svxdllapi.h:30
signed char sal_Int8