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, "stair builder...") ) {
123 } else if( string_equal_nocase(p, "door builder...") ) {
125 } else if( string_equal_nocase(p, "intersect...") ) {
127 } else if( string_equal_nocase(p, "make chain...") ) {
129 } else if( string_equal_nocase(p, "path plotter...") ) {
131 } else if( string_equal_nocase(p, "about...") ) {
132 DoMessageBox(PLUGIN_ABOUT, "About", eMB_OK);
136 const char* QERPlug_GetCommandTitleList()
142 #define NUM_TOOLBARBUTTONS 14
144 std::size_t ToolbarButtonCount( void ) {
145 return NUM_TOOLBARBUTTONS;
148 class CBobtoolzToolbarButton : public IToolbarButton
151 virtual const char* getImage() const
154 case 0: return "bobtoolz_cleanup.bmp";
155 case 1: return "bobtoolz_poly.bmp";
156 case 2: return "bobtoolz_caulk.bmp";
158 case 4: return "bobtoolz_treeplanter.bmp";
159 case 5: return "bobtoolz_trainpathplot.bmp";
160 case 6: return "bobtoolz_dropent.bmp";
162 case 8: return "bobtoolz_merge.bmp";
163 case 9: return "bobtoolz_split.bmp";
164 case 10: return "bobtoolz_splitrow.bmp";
165 case 11: return "bobtoolz_splitcol.bmp";
167 case 13: return "bobtoolz_turnedge.bmp";
171 virtual EType getType() const
174 case 3: return eSpace;
175 case 4: return eToggleButton;
176 case 7: return eSpace;
177 case 12: return eSpace;
178 default: return eButton;
181 virtual const char* getText() const
184 case 0: return "Cleanup";
185 case 1: return "Polygons";
186 case 2: return "Caulk";
187 case 4: return "Tree Planter";
188 case 5: return "Plot Splines";
189 case 6: return "Drop Entity";
190 case 8: return "Merge 2 Patches";
191 case 9: return "Split Patch";
192 case 10: return "Split Patch Rows";
193 case 11: return "Split Patch Columns";
194 case 13: return "Flip Terrain";
198 virtual const char* getTooltip() const
201 case 0: return "Brush Cleanup";
202 case 1: return "Polygons";
203 case 2: return "Caulk selection";
204 case 4: return "Tree Planter";
205 case 5: return "Plot Splines";
206 case 6: return "Drop Entity";
207 case 8: return "Merge 2 Patches";
208 case 9: return "Split Patch";
209 case 10: return "Split Patch Rows";
210 case 11: return "Split Patch Columns";
211 case 13: return "Flip Terrain (Turn Edge)";
216 virtual void activate() const
221 case 0: DoFixBrushes(); break;
222 case 1: DoPolygonsTB(); break;
223 case 2: DoCaulkSelection(); break;
224 case 4: DoTreePlanter(); break;
225 case 5: DoTrainPathPlot(); break;
226 case 6: DoDropEnts(); break;
227 case 8: DoMergePatches(); break;
228 case 9: DoSplitPatch(); break;
229 case 10: DoSplitPatchRows(); break;
230 case 11: DoSplitPatchCols(); break;
231 case 13: DoFlipTerrain(); break;
238 CBobtoolzToolbarButton g_bobtoolzToolbarButtons[NUM_TOOLBARBUTTONS];
240 const IToolbarButton* GetToolbarButton(std::size_t index)
242 g_bobtoolzToolbarButtons[index].mIndex = index;
243 return &g_bobtoolzToolbarButtons[index];
247 #include "modulesystem/singletonmodule.h"
249 #include "iscenegraph.h"
252 #include "ishaders.h"
257 #include "iglrender.h"
260 class BobToolzPluginDependencies :
261 public GlobalRadiantModuleRef,
262 public GlobalUndoModuleRef,
263 public GlobalSceneGraphModuleRef,
264 public GlobalSelectionModuleRef,
265 public GlobalEntityModuleRef,
266 public GlobalEntityClassManagerModuleRef,
267 public GlobalShadersModuleRef,
268 public GlobalShaderCacheModuleRef,
269 public GlobalBrushModuleRef,
270 public GlobalPatchModuleRef,
271 public GlobalOpenGLModuleRef,
272 public GlobalOpenGLStateLibraryModuleRef
275 BobToolzPluginDependencies() :
276 GlobalEntityModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entities")),
277 GlobalShadersModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("shaders")),
278 GlobalBrushModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("brushtypes")),
279 GlobalPatchModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("patchtypes")),
280 GlobalEntityClassManagerModuleRef(GlobalRadiant().getRequiredGameDescriptionKeyValue("entityclass"))
285 class BobToolzPluginModule : public TypeSystemRef
287 _QERPluginTable m_plugin;
289 typedef _QERPluginTable Type;
290 STRING_CONSTANT(Name, "bobToolz");
292 BobToolzPluginModule()
294 m_plugin.m_pfnQERPlug_Init = QERPlug_Init;
295 m_plugin.m_pfnQERPlug_GetName = QERPlug_GetName;
296 m_plugin.m_pfnQERPlug_GetCommandList = QERPlug_GetCommandList;
297 m_plugin.m_pfnQERPlug_GetCommandTitleList = QERPlug_GetCommandTitleList;
298 m_plugin.m_pfnQERPlug_Dispatch = QERPlug_Dispatch;
300 BobToolz_construct();
302 ~BobToolzPluginModule()
306 _QERPluginTable* getTable()
312 typedef SingletonModule<BobToolzPluginModule, BobToolzPluginDependencies> SingletonBobToolzPluginModule;
314 SingletonBobToolzPluginModule g_BobToolzPluginModule;
317 class BobToolzToolbarDependencies :
318 public ModuleRef<_QERPluginTable>
321 BobToolzToolbarDependencies() :
322 ModuleRef<_QERPluginTable>("bobToolz")
327 class BobToolzToolbarModule : public TypeSystemRef
329 _QERPlugToolbarTable m_table;
331 typedef _QERPlugToolbarTable Type;
332 STRING_CONSTANT(Name, "bobToolz");
334 BobToolzToolbarModule()
336 m_table.m_pfnToolbarButtonCount = ToolbarButtonCount;
337 m_table.m_pfnGetToolbarButton = GetToolbarButton;
339 _QERPlugToolbarTable* getTable()
345 typedef SingletonModule<BobToolzToolbarModule, BobToolzToolbarDependencies> SingletonBobToolzToolbarModule;
347 SingletonBobToolzToolbarModule g_BobToolzToolbarModule;
350 extern "C" void RADIANT_DLLEXPORT Radiant_RegisterModules(ModuleServer& server)
352 initialiseModule(server);
354 g_BobToolzPluginModule.selfRegister();
355 g_BobToolzToolbarModule.selfRegister();