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 
10 #ifndef INCLUDED_SVX_EXTEDIT_HXX
11 #define INCLUDED_SVX_EXTEDIT_HXX
12 
13 #include <svx/svxdllapi.h>
14 #include <svl/lstner.hxx>
15 #include <rtl/ustring.hxx>
16 #include <memory>
17 
18 class Graphic;
19 class GraphicObject;
20 class FileChangedChecker;
21 
22 class SAL_WARN_UNUSED SVX_DLLPUBLIC ExternalToolEdit
23 {
24 protected:
25     OUString m_aFileName;
26 
27     ::std::unique_ptr<FileChangedChecker> m_pChecker;
28 
29 public:
30 
31     ExternalToolEdit();
32     virtual ~ExternalToolEdit();
33 
34     virtual void Update( Graphic& aGraphic ) = 0;
35     void Edit(GraphicObject const*const pGraphic);
36 
37     void StartListeningEvent();
38 
39     static void HandleCloseEvent( ExternalToolEdit* pData );
40 };
41 
42 class FmFormView;
43 class SdrObject;
44 
45 class SAL_WARN_UNUSED SVX_DLLPUBLIC SdrExternalToolEdit final
46 :   public ExternalToolEdit
47     ,public SfxListener
48 {
49 private:
50     FmFormView* m_pView;
51     SdrObject*  m_pObj;
52 
53     SAL_DLLPRIVATE virtual void Update(Graphic&) override;
54     SAL_DLLPRIVATE virtual void Notify(SfxBroadcaster&, const SfxHint&) override;
55 
56 public:
57     SdrExternalToolEdit(
58         FmFormView* pView,
59         SdrObject* pObj);
60 };
61 
62 #endif
63