2 #include <gtk/gtktoolbar.h>
4 #include "gtkutil/widget.h"
5 #include "stream/stringstream.h"
8 #include "preferences.h"
11 #include "gtkutil/accelerator.h"
12 #include "generic/callback.h"
17 int ToggleActions = 0;
20 gboolean ToggleActions0( GtkWidget *widget, GdkEvent *event, gpointer user_data ){
23 //globalOutputStream() << "ToggleActions\n";
26 void SetCommonShader( const char* key, const char* shader ){
27 const char* gotShader = g_pGameDescription->getKeyValue( key );
28 UndoableCommand undo( "textureNameSetSelected" );
29 if ( gotShader && *gotShader ){
30 Select_SetShader( gotShader );
33 Select_SetShader( shader );
38 gboolean Areaportals_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
39 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
40 if ( ButtonNum == 1 ){
47 if( ToggleActions == 0 ){
48 SetCommonShader( "shader_nodraw", "textures/common/nodraw" );
50 else if( ToggleActions == 1 ){
51 SetCommonShader( "shader_nodrawnonsolid", "textures/common/nodrawnonsolid" );
53 //SetCommonShader( "shader_caulk", "textures/common/caulk" );
54 //globalOutputStream() << "Found '" << "fullname" << "'\n";
62 gboolean Caulk_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
63 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
64 SetCommonShader( "shader_caulk", "textures/common/caulk" );
71 gboolean Clip_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
72 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
73 if ( ButtonNum == 3 ){
80 if( ToggleActions == 0 ){
81 SetCommonShader( "shader_clip", "textures/common/clip" );
83 else if( ToggleActions == 1 ){
84 SetCommonShader( "shader_weapclip", "textures/common/weapclip" );
92 gboolean Liquids_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
93 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
94 if ( ButtonNum == 4 ){
101 if( ToggleActions == 0 ){
102 SetCommonShader( "shader_watercaulk", "textures/common/watercaulk" );
104 else if( ToggleActions == 1 ){
105 SetCommonShader( "shader_lavacaulk", "textures/common/lavacaulk" );
107 else if( ToggleActions == 2 ){
108 SetCommonShader( "shader_slimecaulk", "textures/common/slimecaulk" );
117 gboolean Hint_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
118 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
119 if ( ButtonNum == 5 ){
126 if( ToggleActions == 0 ){
127 SetCommonShader( "shader_hint", "textures/common/hint" );
129 else if( ToggleActions == 1 ){
130 SetCommonShader( "shader_hintlocal", "textures/common/hintlocal" );
132 else if( ToggleActions == 2 ){
133 SetCommonShader( "shader_hintskip", "textures/common/hintskip" );
141 gboolean Trigger_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
142 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
143 SetCommonShader( "shader_trigger", "textures/common/trigger" );
150 gboolean Func_Groups_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
151 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
152 UndoableCommand undo( "create func_group" );
153 Entity_createFromSelection( "func_group", g_vector3_identity );
160 gboolean Detail_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
161 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
162 GlobalCommands_find( "MakeDetail" ).m_callback();
169 gboolean Structural_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
170 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
171 GlobalCommands_find( "MakeStructural" ).m_callback();
178 gboolean Region_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
179 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
180 GlobalCommands_find( "RegionOff" ).m_callback();
187 gboolean Hide_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
188 if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
189 GlobalCommands_find( "ShowHidden" ).m_callback();
196 GtkToolbar* create_filter_toolbar(){
197 GtkToolbar* toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
198 gtk_toolbar_set_style( toolbar, GTK_TOOLBAR_ICONS );
199 // gtk_toolbar_set_show_arrow( toolbar, TRUE );
200 gtk_widget_show( GTK_WIDGET( toolbar ) );
201 g_signal_connect( G_OBJECT( toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 );
203 GtkToggleButton* button;
205 toolbar_append_toggle_button( toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" );
207 button = toolbar_append_toggle_button( toolbar, "Structural (CTRL + SHIFT + D)\nRightClick: MakeStructural", "f-structural.png", "FilterStructural" );
208 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Structural_button_press ), 0 );
210 button = toolbar_append_toggle_button( toolbar, "Details (CTRL + D)\nRightClick: MakeDetail", "f-details.png", "FilterDetails" );
211 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Detail_button_press ), 0 );
213 button = toolbar_append_toggle_button( toolbar, "Func_Groups\nRightClick: create func_group", "f-funcgroups.png", "FilterFuncGroups" );
214 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Func_Groups_button_press ), 0 );
216 toolbar_append_toggle_button( toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" );
217 gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
219 if ( g_pGameDescription->mGameType == "doom3" ) {
220 button = toolbar_append_toggle_button( toolbar, "Visportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterVisportals" );
223 button = toolbar_append_toggle_button( toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" );
225 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 );
228 toolbar_append_toggle_button( toolbar, "Translucent (ALT + 4)", "f-translucent.png", "FilterTranslucent" );
230 button = toolbar_append_toggle_button( toolbar, "Liquids (ALT + 5)\nRightClick: toggle tex\n\twaterCaulk\n\tlavaCaulk\n\tslimeCaulk", "f-liquids.png", "FilterLiquids" );
231 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Liquids_button_press ), 0 );
233 button = toolbar_append_toggle_button( toolbar, "Caulk (ALT + 6)\nRightClick: tex Caulk", "f-caulk.png", "FilterCaulk" );
234 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Caulk_button_press ), 0 );
236 button = toolbar_append_toggle_button( toolbar, "Clips (ALT + 7)\nRightClick: toggle tex\n\tplayerClip\n\tweapClip", "f-clip.png", "FilterClips" );
237 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Clip_button_press ), 0 );
239 button = toolbar_append_toggle_button( toolbar, "HintsSkips (CTRL + H)\nRightClick: toggle tex\n\thint\n\thintLocal\n\thintSkip", "f-hint.png", "FilterHintsSkips" );
240 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hint_button_press ), 0 );
242 //toolbar_append_toggle_button( toolbar, "Paths (ALT + 8)", "texture_lock.png", "FilterPaths" );
243 gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
244 toolbar_append_toggle_button( toolbar, "Entities (ALT + 2)", "f-entities.png", "FilterEntities" );
245 toolbar_append_toggle_button( toolbar, "Lights (ALT + 0)", "f-lights.png", "FilterLights" );
246 toolbar_append_toggle_button( toolbar, "Models (SHIFT + M)", "f-models.png", "FilterModels" );
248 button = toolbar_append_toggle_button( toolbar, "Triggers (CTRL + SHIFT + T)\nRightClick: tex Trigger", "f-triggers.png", "FilterTriggers" );
249 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Trigger_button_press ), 0 );
251 //toolbar_append_toggle_button( toolbar, "Decals (SHIFT + D)", "f-decals.png", "FilterDecals" );
252 gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
253 //toolbar_append_button( toolbar, "InvertFilters", "f-invert.png", "InvertFilters" );
255 toolbar_append_button( toolbar, "ResetFilters", "f-reset.png", "ResetFilters" );
257 gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
258 button = toolbar_append_toggle_button( toolbar, "Region Set Selection (CTRL + SHIFT + R)\nRightClick: Region Off", "f-region.png", "RegionSetSelection" );
259 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Region_button_press ), 0 );
261 button = toolbar_append_toggle_button( toolbar, "Hide Selected (H)\nRightClick: Show Hidden (SHIFT + H)", "f-hide.png", "HideSelected" );
262 g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hide_button_press ), 0 );