- Updated UFA:Plugin (mattn2)
[xonotic/netradiant.git] / plugins / sample / sample.cpp
1 /*
2 Copyright (C) 2001-2006, William Joseph.
3 All Rights Reserved.
4
5 This file is part of GtkRadiant.
6
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 */
21
22 #include "sample.h"
23
24 #include "debugging/debugging.h"
25
26 #include "iplugin.h"
27
28 #include "string/string.h"
29 #include "modulesystem/singletonmodule.h"
30 #include "typesystem.h"
31
32 namespace Sample
33 {
34   const char* init(void* hApp, void* pMainWidget)
35   {
36     return "";
37   }
38   const char* getName()
39   {
40     return "Sample Plugin";
41   }
42   const char* getCommandList()
43   {
44     return "About;Do Something";
45   }
46   const char* getCommandTitleList()
47   {
48     return "";
49   }
50   void dispatch(const char* command, float* vMin, float* vMax, bool bSingleBrush)
51   {
52     if(string_equal(command, "About"))
53     {
54       globalOutputStream() << "Sample Demo Plugin\n";
55     }
56     if(string_equal(command, "Do Something"))
57     {
58       globalOutputStream() << "Sample Command\n";
59     }
60   }
61
62 } // namespace
63
64 class SamplePluginModule : public TypeSystemRef
65 {
66   _QERPluginTable m_plugin;
67 public:
68   typedef _QERPluginTable Type;
69   STRING_CONSTANT(Name, "sample");
70
71   SamplePluginModule()
72   {
73     m_plugin.m_pfnQERPlug_Init = &Sample::init;
74     m_plugin.m_pfnQERPlug_GetName = &Sample::getName;
75     m_plugin.m_pfnQERPlug_GetCommandList = &Sample::getCommandList;
76     m_plugin.m_pfnQERPlug_GetCommandTitleList = &Sample::getCommandTitleList;
77     m_plugin.m_pfnQERPlug_Dispatch = &Sample::dispatch;
78   }
79   _QERPluginTable* getTable()
80   {
81     return &m_plugin;
82   }
83 };
84
85 typedef SingletonModule<SamplePluginModule> SingletonSamplePluginModule;
86
87 SingletonSamplePluginModule g_SamplePluginModule;
88
89
90 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
91 {
92   initialiseModule(server);
93
94   g_SamplePluginModule.selfRegister();
95 }