X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=radiant%2Ffilterbar.cpp;h=424280ce2f9da105cbe6b710b0e2832819e13d9d;hb=27c40808591e2f4671686039165bac7b402af012;hp=918f3d808b3ae12d9420333a71cf333fc14229bb;hpb=dfc3e9c2a59fec2feaf5c808f316eed17ea227e2;p=xonotic%2Fnetradiant.git diff --git a/radiant/filterbar.cpp b/radiant/filterbar.cpp index 918f3d80..424280ce 100644 --- a/radiant/filterbar.cpp +++ b/radiant/filterbar.cpp @@ -1,5 +1,7 @@ #include "filterbar.h" -#include + +#include "gtk/gtk.h" + #include "gtkmisc.h" #include "gtkutil/widget.h" #include "stream/stringstream.h" @@ -12,17 +14,17 @@ #include "generic/callback.h" - - int ToggleActions = 0; int ButtonNum = 0; -gboolean ToggleActions0( GtkWidget *widget, GdkEvent *event, gpointer user_data ){ + +gboolean ToggleActions0( ui::Widget widget, GdkEvent *event, gpointer user_data ){ ToggleActions = 0; return FALSE; //globalOutputStream() << "ToggleActions\n"; } + void SetCommonShader( const char* key, const char* shader ){ const char* gotShader = g_pGameDescription->getKeyValue( key ); UndoableCommand undo( "textureNameSetSelected" ); @@ -35,7 +37,7 @@ void SetCommonShader( const char* key, const char* shader ){ } -gboolean Areaportals_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ +gboolean Areaportals_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { if ( ButtonNum == 1 ){ ToggleActions %= 2; @@ -59,7 +61,7 @@ gboolean Areaportals_button_press( GtkWidget *widget, GdkEventButton *event, gpo } -gboolean Caulk_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ +gboolean Caulk_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { SetCommonShader( "shader_caulk", "textures/common/caulk" ); ToggleActions = 0; @@ -68,7 +70,8 @@ gboolean Caulk_button_press( GtkWidget *widget, GdkEventButton *event, gpointer return FALSE; } -gboolean Clip_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ + +gboolean Clip_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { if ( ButtonNum == 3 ){ ToggleActions %= 2; @@ -89,7 +92,8 @@ gboolean Clip_button_press( GtkWidget *widget, GdkEventButton *event, gpointer d return FALSE; } -gboolean Liquids_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ + +gboolean Liquids_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { if ( ButtonNum == 4 ){ ToggleActions %= 3; @@ -114,7 +118,7 @@ gboolean Liquids_button_press( GtkWidget *widget, GdkEventButton *event, gpointe } -gboolean Hint_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ +gboolean Hint_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { if ( ButtonNum == 5 ){ ToggleActions %= 3; @@ -138,7 +142,8 @@ gboolean Hint_button_press( GtkWidget *widget, GdkEventButton *event, gpointer d return FALSE; } -gboolean Trigger_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ + +gboolean Trigger_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { SetCommonShader( "shader_trigger", "textures/common/trigger" ); ToggleActions = 0; @@ -147,7 +152,8 @@ gboolean Trigger_button_press( GtkWidget *widget, GdkEventButton *event, gpointe return FALSE; } -gboolean Detail_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ + +gboolean Detail_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { GlobalCommands_find( "MakeDetail" ).m_callback(); ToggleActions = 0; @@ -156,7 +162,8 @@ gboolean Detail_button_press( GtkWidget *widget, GdkEventButton *event, gpointer return FALSE; } -gboolean Structural_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){ + +gboolean Structural_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){ if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) { GlobalCommands_find( "MakeStructural" ).m_callback(); ToggleActions = 0; @@ -166,55 +173,77 @@ gboolean Structural_button_press( GtkWidget *widget, GdkEventButton *event, gpoi } -GtkToolbar* create_filter_toolbar(){ - GtkToolbar* filter_toolbar = GTK_TOOLBAR( gtk_toolbar_new() ); - gtk_widget_show( GTK_WIDGET( filter_toolbar ) ); - g_signal_connect( G_OBJECT( filter_toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 ); +ui::Toolbar create_filter_toolbar(){ + auto filter_toolbar = ui::Toolbar::from( gtk_toolbar_new() ); + gtk_orientable_set_orientation( GTK_ORIENTABLE(filter_toolbar), GTK_ORIENTATION_HORIZONTAL ); + gtk_toolbar_set_style( filter_toolbar, GTK_TOOLBAR_ICONS ); + filter_toolbar.show(); - GtkToggleButton* button; - toolbar_append_toggle_button( filter_toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" ); + auto space = [&]() { + auto btn = ui::ToolItem::from(gtk_separator_tool_item_new()); + btn.show(); + filter_toolbar.add(btn); + }; - button = toolbar_append_toggle_button( filter_toolbar, "Structural (CTRL + SHIFT + D)\nRightClick: MakeStructural", "f-structural.png", "FilterStructural" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Structural_button_press ), 0 ); + g_signal_connect( G_OBJECT( filter_toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 ); + + toolbar_append_toggle_button( filter_toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" ); - button = toolbar_append_toggle_button( filter_toolbar, "Details (CTRL + D)\nRightClick: MakeDetail", "f-details.png", "FilterDetails" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Detail_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Structural (CTRL + SHIFT + D)\nRightClick: MakeStructural", "f-structural.png", "FilterStructural" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Structural_button_press ), 0 ); + } + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Details (CTRL + D)\nRightClick: MakeDetail", "f-details.png", "FilterDetails" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Detail_button_press ), 0 ); + } toolbar_append_toggle_button( filter_toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" ); - gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) ); - - button = toolbar_append_toggle_button( filter_toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 ); + space(); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 ); + } toolbar_append_toggle_button( filter_toolbar, "Translucent (ALT + 4)", "f-translucent.png", "FilterTranslucent" ); - button = toolbar_append_toggle_button( filter_toolbar, "Liquids (ALT + 5)\nRightClick: toggle tex\n\twaterCaulk\n\tlavaCaulk\n\tslimeCaulk", "f-liquids.png", "FilterLiquids" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Liquids_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Liquids (ALT + 5)\nRightClick: toggle tex\n\twaterCaulk\n\tlavaCaulk\n\tslimeCaulk", "f-liquids.png", "FilterLiquids" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Liquids_button_press ), 0 ); + } - button = toolbar_append_toggle_button( filter_toolbar, "Caulk (ALT + 6)\nRightClick: tex Caulk", "f-caulk.png", "FilterCaulk" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Caulk_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Caulk (ALT + 6)\nRightClick: tex Caulk", "f-caulk.png", "FilterCaulk" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Caulk_button_press ), 0 ); + } - button = toolbar_append_toggle_button( filter_toolbar, "Clips (ALT + 7)\nRightClick: toggle tex\n\tplayerClip\n\tweapClip", "f-clip.png", "FilterClips" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Clip_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Clips (ALT + 7)\nRightClick: toggle tex\n\tplayerClip\n\tweapClip", "f-clip.png", "FilterClips" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Clip_button_press ), 0 ); + } - button = toolbar_append_toggle_button( filter_toolbar, "HintsSkips (CTRL + H)\nRightClick: toggle tex\n\thint\n\thintLocal\n\thintSkip", "f-hint.png", "FilterHintsSkips" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hint_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "HintsSkips (CTRL + H)\nRightClick: toggle tex\n\thint\n\thintLocal\n\thintSkip", "f-hint.png", "FilterHintsSkips" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hint_button_press ), 0 ); + } //toolbar_append_toggle_button( filter_toolbar, "Paths (ALT + 8)", "texture_lock.png", "FilterPaths" ); - gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) ); + space(); toolbar_append_toggle_button( filter_toolbar, "Entities (ALT + 2)", "f-entities.png", "FilterEntities" ); toolbar_append_toggle_button( filter_toolbar, "Lights (ALT + 0)", "f-lights.png", "FilterLights" ); toolbar_append_toggle_button( filter_toolbar, "Models (SHIFT + M)", "f-models.png", "FilterModels" ); - button = toolbar_append_toggle_button( filter_toolbar, "Triggers (CTRL + SHIFT + T)\nRightClick: tex Trigger", "f-triggers.png", "FilterTriggers" ); - g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Trigger_button_press ), 0 ); + { + auto button = toolbar_append_toggle_button( filter_toolbar, "Triggers (CTRL + SHIFT + T)\nRightClick: tex Trigger", "f-triggers.png", "FilterTriggers" ); + g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Trigger_button_press ), 0 ); + } //toolbar_append_toggle_button( filter_toolbar, "Decals (SHIFT + D)", "f-decals.png", "FilterDecals" ); - gtk_toolbar_append_space( GTK_TOOLBAR( filter_toolbar ) ); + space(); toolbar_append_button( filter_toolbar, "InvertFilters", "f-invert.png", "InvertFilters" ); toolbar_append_button( filter_toolbar, "ResetFilters", "f-reset.png", "ResetFilters" ); return filter_toolbar;