ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvStdPluginInterface.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // QT
11 #include <QActionGroup>
12 #include <QWidget>
13 
14 // CV_DB_LIB
15 #include <ecvHObject.h>
16 
17 // LOCAL
19 #include "ecvMainAppInterface.h"
20 
21 // UI Modification flags
22 #define CC_PLUGIN_REFRESH_ENTITY_BROWSER 0x00000002
23 #define CC_PLUGIN_EXPAND_DB_TREE 0x00000004
24 
26 
32 public:
34  ccStdPluginInterface(const QString& resourcePath = QString())
35  : ccDefaultPluginInterface(resourcePath), m_app(nullptr) {}
36 
38  virtual ~ccStdPluginInterface() override = default;
39 
40  // inherited from ccPluginInterface
41  virtual CC_PLUGIN_TYPE getType() const override { return ECV_STD_PLUGIN; }
42 
44 
47  m_app = app;
48 
49  if (m_app) {
50  // we use the same 'unique ID' generator in plugins as in the main
51  // application (otherwise we'll have issues with 'unique IDs'!)
53  }
54  }
55 
57 
60 
62  virtual QList<QAction*> getActions() = 0;
63 
66 
69  virtual void onNewSelection(
71  selectedEntities) { /*ignored by default*/ }
72 
74  inline virtual void dispToConsole(
75  QString message,
78  if (m_app) {
79  m_app->dispToConsole(message, level);
80  }
81  }
82 
83 protected:
86 };
87 
89 
90 Q_DECLARE_INTERFACE(ccStdPluginInterface,
91  "edf.rd.cloudviewer.ccStdPluginInterface/1.5")
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Definition: ecvHObject.h:337
static void SetUniqueIDGenerator(ccUniqueIDGenerator::Shared generator)
Sets the unique ID generator.
Standard ECV plugin interface.
virtual void dispToConsole(QString message, ecvMainAppInterface::ConsoleMessageLevel level=ecvMainAppInterface::STD_CONSOLE_MESSAGE)
Shortcut to ecvMainAppInterface::dispToConsole.
ccStdPluginInterface(const QString &resourcePath=QString())
Default constructor.
virtual CC_PLUGIN_TYPE getType() const override
Returns plugin type (standard or OpenGL filter)
virtual void setMainAppInterface(ecvMainAppInterface *app)
Sets application entry point.
virtual ecvMainAppInterface * getMainAppInterface()
A callback pointer to the main app interface for use by plugins.
virtual void onNewSelection(const ccHObject::Container &selectedEntities)
virtual QList< QAction * > getActions()=0
Get a list of actions for this plugin.
ecvMainAppInterface * m_app
Main application interface.
virtual ~ccStdPluginInterface() override=default
Destructor.
Main application interface (for plugins)
ConsoleMessageLevel
Console message level (see dispToConsole)
virtual void dispToConsole(QString message, ConsoleMessageLevel level=STD_CONSOLE_MESSAGE)=0
virtual ccUniqueIDGenerator::Shared getUniqueIDGenerator()=0
Returns the unique ID generator.
CC_PLUGIN_TYPE
Plugin type.
@ ECV_STD_PLUGIN
Q_DECLARE_METATYPE(const ccStdPluginInterface *)