2 BobToolz plugin for GtkRadiant
3 Copyright (C) 2001 Gordon Biggans
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "qerplugin.h"
25 #include "string/string.h"
28 #include "funchandlers.h"
30 #include "DVisDrawer.h"
31 #include "DTrainDrawer.h"
32 #include "DTreePlanter.h"
34 #include "dialogs/dialogs-gtk.h"
35 #include "../../libs/cmdlib.h"
37 void BobToolz_construct()
41 void BobToolz_destroy()
62 char* PLUGIN_NAME = "bobToolz";
64 // commands in the menu
65 static char* PLUGIN_COMMANDS = "About...,-,Reset Textures...,PitOMatic,-,Vis Viewer,Brush Cleanup,Polygon Builder,Caulk Selection,-,Tree Planter,Drop Entity,Plot Splines,-,Merge Patches,Split patches,Split patches cols,Split patches rows,Turn edge";
68 GtkWidget *g_pRadiantWnd = NULL;
70 static const char *PLUGIN_ABOUT = "bobToolz for SDRadiant\n"
71 "by digibob (digibob@splashdamage.com)\n"
72 "http://www.splashdamage.com\n\n"
73 "Additional Contributors:\n"
74 "MarsMattel, RR2DO2\n";
76 extern "C" const char* QERPlug_Init( void* hApp, void* pMainWidget ) {
77 g_pRadiantWnd = (GtkWidget*)pMainWidget;
79 return "bobToolz for GTKradiant";
82 extern "C" const char* QERPlug_GetName() {
86 extern "C" const char* QERPlug_GetCommandList() {
87 return PLUGIN_COMMANDS;
90 extern "C" void QERPlug_Dispatch (const char *p, vec3_t vMin, vec3_t vMax, bool bSingleBrush) {
93 if( string_equal_nocase( p, "brush cleanup" ) ) {
95 } else if( string_equal_nocase( p, "polygon builder" ) ) {
97 } else if( string_equal_nocase( p, "caulk selection" ) ) {
99 } else if( string_equal_nocase( p, "tree planter" ) ) {
101 } else if( string_equal_nocase( p, "plot splines" ) ) {
103 } else if( string_equal_nocase( p, "drop entity" ) ) {
105 } else if( string_equal_nocase( p, "merge patches" ) ) {
107 } else if( string_equal_nocase( p, "split patches" ) ) {
109 } else if( string_equal_nocase( p, "split patches rows" ) ) {
111 } else if( string_equal_nocase( p, "split patches cols" ) ) {
113 } else if( string_equal_nocase( p, "turn edge" ) ) {
115 } else if( string_equal_nocase(p, "reset textures...") ) {
117 } else if( string_equal_nocase(p, "pitomatic") ) {
119 } else if( string_equal_nocase(p, "vis viewer") ) {
121 } else if( string_equal_nocase(p, "about...") ) {
122 DoMessageBox(PLUGIN_ABOUT, "About", eMB_OK);
126 const char* QERPlug_GetCommandTitleList()
132 #define NUM_TOOLBARBUTTONS 9
134 std::size_t ToolbarButtonCount( void ) {
135 return NUM_TOOLBARBUTTONS;
138 class CBobtoolzToolbarButton : public IToolbarButton
141 virtual const char* getImage() const
144 case 0: return "bobtoolz_cleanup.bmp";
145 case 1: return "bobtoolz_poly.bmp";
146 case 2: return "bobtoolz_caulk.bmp";
147 case 3: return "bobtoolz_treeplanter.bmp";
148 case 4: return "bobtoolz_trainpathplot.bmp";
149 case 5: return "bobtoolz_dropent.bmp";
150 case 6: return "bobtoolz_merge.bmp";
151 case 7: return "bobtoolz_split.bmp";
152 case 8: return "bobtoolz_turnedge.bmp";
156 virtual EType getType() const
159 case 3: return eToggleButton;
160 default: return eButton;
163 virtual const char* getText() const
166 case 0: return "Cleanup";
167 case 1: return "Polygons";
168 case 2: return "Caulk";
169 case 3: return "Tree Planter";
170 case 4: return "Plot Splines";
171 case 5: return "Drop Entity";
172 case 6: return "Merge Patches";
173 case 7: return "Split Patches";
174 case 8: return "Flip Terrain";
178 virtual const char* getTooltip() const
181 case 0: return "Brush Cleanup";
182 case 1: return "Polygons";
183 case 2: return "Caulk selection";
184 case 3: return "Tree Planter";
185 case 4: return "Plot Splines";
186 case 5: return "Drop Entity";
187 case 6: return "Merge Patches";
188 case 7: return "Split Patches";
189 case 8: return "Flip Terrain";
194 virtual void activate() const
199 case 0: DoFixBrushes(); break;
200 case 1: DoPolygonsTB(); break;
201 case 2: DoCaulkSelection(); break;
202 case 3: DoTreePlanter(); break;
203 case 4: DoTrainPathPlot(); break;
204 case 5: DoDropEnts(); break;
205 case 6: DoMergePatches(); break;
206 case 7: DoSplitPatch(); break;
207 case 8: DoFlipTerrain(); break;
214 CBobtoolzToolbarButton g_bobtoolzToolbarButtons[NUM_TOOLBARBUTTONS];
216 const IToolbarButton* GetToolbarButton(std::size_t index)
218 g_bobtoolzToolbarButtons[index].mIndex = index;
219 return &g_bobtoolzToolbarButtons[index];
223 #include "modulesystem/singletonmodule.h"
225 #include "iscenegraph.h"
228 #include "ishaders.h"
233 #include "iglrender.h"
236 class BobToolzPluginDependencies :
237 public GlobalRadiantModuleRef,
238 public GlobalUndoModuleRef,
239 public GlobalSceneGraphModuleRef,
240 public GlobalSelectionModuleRef,
241 public GlobalEntityModuleRef,
242 public GlobalEntityClassManagerModuleRef,
243 public GlobalShadersModuleRef,
244 public GlobalShaderCacheModuleRef,
245 public GlobalBrushModuleRef,
246 public GlobalPatchModuleRef,
247 public GlobalOpenGLModuleRef,
248 public GlobalOpenGLStateLibraryModuleRef
251 BobToolzPluginDependencies() :
252 GlobalEntityModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entities")),
253 GlobalShadersModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("shaders")),
254 GlobalBrushModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("brushtypes")),
255 GlobalPatchModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("patchtypes")),
256 GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass"))
261 class BobToolzPluginModule : public TypeSystemRef
263 _QERPluginTable m_plugin;
265 typedef _QERPluginTable Type;
266 STRING_CONSTANT(Name, "bobtoolz");
268 BobToolzPluginModule()
270 m_plugin.m_pfnQERPlug_Init = QERPlug_Init;
271 m_plugin.m_pfnQERPlug_GetName = QERPlug_GetName;
272 m_plugin.m_pfnQERPlug_GetCommandList = QERPlug_GetCommandList;
273 m_plugin.m_pfnQERPlug_GetCommandTitleList = QERPlug_GetCommandTitleList;
274 m_plugin.m_pfnQERPlug_Dispatch = QERPlug_Dispatch;
276 BobToolz_construct();
278 ~BobToolzPluginModule()
282 _QERPluginTable* getTable()
288 typedef SingletonModule<BobToolzPluginModule, BobToolzPluginDependencies> SingletonBobToolzPluginModule;
290 SingletonBobToolzPluginModule g_BobToolzPluginModule;
293 class BobToolzToolbarDependencies :
294 public ModuleRef<_QERPluginTable>
297 BobToolzToolbarDependencies() :
298 ModuleRef<_QERPluginTable>("bobtoolz")
303 class BobToolzToolbarModule : public TypeSystemRef
305 _QERPlugToolbarTable m_table;
307 typedef _QERPlugToolbarTable Type;
308 STRING_CONSTANT(Name, "bobtoolz");
310 BobToolzToolbarModule()
312 m_table.m_pfnToolbarButtonCount = ToolbarButtonCount;
313 m_table.m_pfnGetToolbarButton = GetToolbarButton;
315 _QERPlugToolbarTable* getTable()
321 typedef SingletonModule<BobToolzToolbarModule, BobToolzToolbarDependencies> SingletonBobToolzToolbarModule;
323 SingletonBobToolzToolbarModule g_BobToolzToolbarModule;
326 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
328 initialiseModule(server);
330 g_BobToolzPluginModule.selfRegister();
331 g_BobToolzToolbarModule.selfRegister();