]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/filterbar.cpp
Merge commit 'd079351041fe957ab2cf6b36dab38e5546003dc3' into garux-merge
[xonotic/netradiant.git] / radiant / filterbar.cpp
index 22535702717cccb5b15a54b20c82f4cdfc656c09..d8fb9936cc789d97468ba4e301cf3091d238a3d9 100644 (file)
@@ -1,5 +1,7 @@
 #include "filterbar.h"
-#include <gtk/gtktoolbar.h>
+
+#include "gtk/gtk.h"
+
 #include "gtkmisc.h"
 #include "gtkutil/widget.h"
 #include "stream/stringstream.h"
 #include "generic/callback.h"
 
 #include "entity.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;
@@ -157,7 +162,8 @@ gboolean Func_Groups_button_press( GtkWidget *widget, GdkEventButton *event, gpo
        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;
@@ -166,7 +172,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;
@@ -175,7 +182,7 @@ gboolean Structural_button_press( GtkWidget *widget, GdkEventButton *event, gpoi
        return FALSE;
 }
 
-gboolean Region_button_press( GtkWidget *widget, GdkEventButton *event, gpointer data ){
+gboolean Region_button_press( ui::Widget widget, GdkEventButton *event, gpointer data ){
        if ( event->button == 3 && event->type == GDK_BUTTON_PRESS ) {
                GlobalCommands_find( "RegionOff" ).m_callback();
                ToggleActions = 0;
@@ -193,73 +200,108 @@ gboolean Hide_button_press( GtkWidget *widget, GdkEventButton *event, gpointer d
        return FALSE;
 }
 
-GtkToolbar* create_filter_toolbar(){
-                       GtkToolbar* toolbar = GTK_TOOLBAR( gtk_toolbar_new() );
+ui::Toolbar create_filter_toolbar(){
+                       auto toolbar = ui::Toolbar::from( gtk_toolbar_new() );
+                       gtk_orientable_set_orientation( GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL );
                        gtk_toolbar_set_style( toolbar, GTK_TOOLBAR_ICONS );
 //                     gtk_toolbar_set_show_arrow( toolbar, TRUE );
-                       gtk_widget_show( GTK_WIDGET( toolbar ) );
-                       g_signal_connect( G_OBJECT( toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 );
+                       toolbar.show();
 
-                       GtkToggleButton* button;
 
-                       toolbar_append_toggle_button( toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" );
-
-                       button = toolbar_append_toggle_button( 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 space = [&]() {
+                               auto btn = ui::ToolItem::from(gtk_separator_tool_item_new());
+                               btn.show();
+                               toolbar.add(btn);
+                       };
 
-                       button = toolbar_append_toggle_button( 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 );
+                       g_signal_connect( G_OBJECT( toolbar ), "enter_notify_event", G_CALLBACK( ToggleActions0 ), 0 );
 
-                       button = toolbar_append_toggle_button( toolbar, "Func_Groups\nRightClick: create func_group", "f-funcgroups.png", "FilterFuncGroups" );
-                       g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Func_Groups_button_press ), 0 );
+                       toolbar_append_toggle_button( toolbar, "World (ALT + 1)", "f-world.png", "FilterWorldBrushes" );
 
-                       toolbar_append_toggle_button( toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" );
-                       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+                       {
+                               auto button = toolbar_append_toggle_button( 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 );
+                       }
 
-                       if ( g_pGameDescription->mGameType == "doom3" ) {
-                               button = toolbar_append_toggle_button( toolbar, "Visportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterVisportals" );
+                       {
+                               auto button = toolbar_append_toggle_button( 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 );
                        }
-                       else{
-                               button = toolbar_append_toggle_button( toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterAreaportals" );
+
+                       {
+                               auto button = toolbar_append_toggle_button( toolbar, "Func_Groups\nRightClick: create func_group", "f-funcgroups.png", "FilterFuncGroups" );
+                               g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Func_Groups_button_press ), 0 );
+
+                               toolbar_append_toggle_button( toolbar, "Patches (CTRL + P)", "patch_wireframe.png", "FilterPatches" );
                        }
-                       g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 );
 
+                       space();
+
+                       {
+                               if ( g_pGameDescription->mGameType == "doom3" ) {
+                                       auto button = toolbar_append_toggle_button( toolbar, "Areaportals (ALT + 3)\nRightClick: toggle tex\n\tnoDraw\n\tnoDrawNonSolid", "f-areaportal.png", "FilterVisportals" );
+                                       g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Areaportals_button_press ), 0 );
+                               }
+                               else{
+                                       auto button = toolbar_append_toggle_button( 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( toolbar, "Translucent (ALT + 4)", "f-translucent.png", "FilterTranslucent" );
 
-                       button = toolbar_append_toggle_button( 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( 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( 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( 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( 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( 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( 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( 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( toolbar, "Paths (ALT + 8)", "texture_lock.png", "FilterPaths" );
-                       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
+
+                       space();
+
                        toolbar_append_toggle_button( toolbar, "Entities (ALT + 2)", "f-entities.png", "FilterEntities" );
                        toolbar_append_toggle_button( toolbar, "Lights (ALT + 0)", "f-lights.png", "FilterLights" );
                        toolbar_append_toggle_button( toolbar, "Models (SHIFT + M)", "f-models.png", "FilterModels" );
 
-                       button = toolbar_append_toggle_button( 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( 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( toolbar, "Decals (SHIFT + D)", "f-decals.png", "FilterDecals" );
-                       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-                       //toolbar_append_button( toolbar, "InvertFilters", "f-invert.png", "InvertFilters" );
+
+                       space();
+
+                       toolbar_append_button( toolbar, "InvertFilters", "f-invert.png", "InvertFilters" );
 
                        toolbar_append_button( toolbar, "ResetFilters", "f-reset.png", "ResetFilters" );
 
-                       gtk_toolbar_append_space( GTK_TOOLBAR( toolbar ) );
-                       button = toolbar_append_toggle_button( toolbar, "Region Set Selection (CTRL + SHIFT + R)\nRightClick: Region Off", "f-region.png", "RegionSetSelection" );
-                       g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Region_button_press ), 0 );
+                       space();
+
+                       {
+                               auto button = toolbar_append_toggle_button( toolbar, "Region Set Selection (CTRL + SHIFT + R)\nRightClick: Region Off", "f-region.png", "RegionSetSelection" );
+                               g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Region_button_press ), 0 );
+                       }
 
-                       button = toolbar_append_toggle_button( toolbar, "Hide Selected (H)\nRightClick: Show Hidden (SHIFT + H)", "f-hide.png", "HideSelected" );
-                       g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hide_button_press ), 0 );
+                       {
+                               auto button = toolbar_append_toggle_button( toolbar, "Hide Selected (H)\nRightClick: Show Hidden (SHIFT + H)", "f-hide.png", "HideSelected" );
+                               g_signal_connect( G_OBJECT( button ), "button_press_event", G_CALLBACK( Hide_button_press ), 0 );
+                       }
 
                        return toolbar;
 }