X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=radiant%2Ffindtexturedialog.cpp;h=2a6c028199d2402385aa5148d1e58f25dce70c7d;hp=8ca4466ce5af32e92b9366bf0b1f425d413b6c1d;hb=9dfae1c9b270ee369c6362903a9205b30751b95f;hpb=771bab14ffa4b131540b125aff6554265662f874 diff --git a/radiant/findtexturedialog.cpp b/radiant/findtexturedialog.cpp index 8ca4466c..2a6c0281 100644 --- a/radiant/findtexturedialog.cpp +++ b/radiant/findtexturedialog.cpp @@ -27,6 +27,8 @@ #include "findtexturedialog.h" +#include + #include "debugging/debugging.h" #include "ishaders.h" @@ -40,224 +42,243 @@ #include "textureentry.h" - -class FindTextureDialog : public Dialog -{ +class FindTextureDialog : public Dialog { public: -static void setReplaceStr( const char* name ); -static void setFindStr( const char* name ); -static bool isOpen(); -static void show(); -typedef FreeCaller<&FindTextureDialog::show> ShowCaller; -static void updateTextures( const char* name ); - -FindTextureDialog(); -virtual ~FindTextureDialog(); -ui::Window BuildDialog(); - -void constructWindow( ui::Window parent ){ - m_parent = parent; - Create(); -} -void destroyWindow(){ - Destroy(); -} + static void setReplaceStr(const char *name); + static void setFindStr(const char *name); -bool m_bSelectedOnly; -CopiedString m_strFind; -CopiedString m_strReplace; -}; + static bool isOpen(); -FindTextureDialog g_FindTextureDialog; -static bool g_bFindActive = true; + static void show(); -namespace -{ -void FindTextureDialog_apply(){ - StringOutputStream find( 256 ); - StringOutputStream replace( 256 ); + typedef FreeCaller ShowCaller; - find << "textures/" << g_FindTextureDialog.m_strFind.c_str(); - replace << "textures/" << g_FindTextureDialog.m_strReplace.c_str(); - FindReplaceTextures( find.c_str(), replace.c_str(), g_FindTextureDialog.m_bSelectedOnly ); -} + static void updateTextures(const char *name); -static void OnApply( ui::Widget widget, gpointer data ){ - g_FindTextureDialog.exportData(); - FindTextureDialog_apply(); -} + FindTextureDialog(); -static void OnFind( GtkWidget* widget, gpointer data ){ - g_FindTextureDialog.exportData(); - FindTextureDialog_apply(); -} + virtual ~FindTextureDialog(); -static void OnOK( GtkWidget* widget, gpointer data ){ - g_FindTextureDialog.exportData(); - FindTextureDialog_apply(); - g_FindTextureDialog.HideDlg(); -} + ui::Window BuildDialog(); -static void OnClose( ui::Widget widget, gpointer data ){ - g_FindTextureDialog.HideDlg(); -} + void constructWindow(ui::Window parent) + { + m_parent = parent; + Create(); + } + void destroyWindow() + { + Destroy(); + } -static gint find_focus_in( ui::Widget widget, GdkEventFocus *event, gpointer data ){ - g_bFindActive = true; - return FALSE; -} -static gint replace_focus_in( ui::Widget widget, GdkEventFocus *event, gpointer data ){ - g_bFindActive = false; - return FALSE; -} + bool m_bSelectedOnly; + CopiedString m_strFind; + CopiedString m_strReplace; +}; + +FindTextureDialog g_FindTextureDialog; +static bool g_bFindActive = true; + +namespace { + void FindTextureDialog_apply() + { + StringOutputStream find(256); + StringOutputStream replace(256); + + find << "textures/" << g_FindTextureDialog.m_strFind.c_str(); + replace << "textures/" << g_FindTextureDialog.m_strReplace.c_str(); + FindReplaceTextures(find.c_str(), replace.c_str(), g_FindTextureDialog.m_bSelectedOnly); + } + + static void OnApply(ui::Widget widget, gpointer data) + { + g_FindTextureDialog.exportData(); + FindTextureDialog_apply(); + } + + static void OnFind(ui::Widget widget, gpointer data) + { + g_FindTextureDialog.exportData(); + FindTextureDialog_apply(); + } + + static void OnOK(ui::Widget widget, gpointer data) + { + g_FindTextureDialog.exportData(); + FindTextureDialog_apply(); + g_FindTextureDialog.HideDlg(); + } + + static void OnClose(ui::Widget widget, gpointer data) + { + g_FindTextureDialog.HideDlg(); + } + + + static gint find_focus_in(ui::Widget widget, GdkEventFocus *event, gpointer data) + { + g_bFindActive = true; + return FALSE; + } + + static gint replace_focus_in(ui::Widget widget, GdkEventFocus *event, gpointer data) + { + g_bFindActive = false; + return FALSE; + } } // ============================================================================= // FindTextureDialog class -FindTextureDialog::FindTextureDialog(){ - m_bSelectedOnly = FALSE; +FindTextureDialog::FindTextureDialog() +{ + m_bSelectedOnly = FALSE; } -FindTextureDialog::~FindTextureDialog(){ +FindTextureDialog::~FindTextureDialog() +{ } -ui::Window FindTextureDialog::BuildDialog(){ - ui::Widget vbox, hbox, table, label; - ui::Widget button, check, entry; - - ui::Window dlg = ui::Window(create_floating_window( "Find / Replace Texture(s)", m_parent )); - - hbox = ui::HBox( FALSE, 5 ); - gtk_widget_show( hbox ); - gtk_container_add( GTK_CONTAINER( dlg ), GTK_WIDGET( hbox ) ); - gtk_container_set_border_width( GTK_CONTAINER( hbox ), 5 ); - - vbox = ui::VBox( FALSE, 5 ); - gtk_widget_show( vbox ); - gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( vbox ), TRUE, TRUE, 0 ); - - table = ui::Table( 2, 2, FALSE ); - gtk_widget_show( table ); - gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( table ), TRUE, TRUE, 0 ); - gtk_table_set_row_spacings( GTK_TABLE( table ), 5 ); - gtk_table_set_col_spacings( GTK_TABLE( table ), 5 ); - - label = ui::Label( "Find:" ); - gtk_widget_show( label ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 0, 1, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 ); - - label = ui::Label( "Replace:" ); - gtk_widget_show( label ); - gtk_table_attach( GTK_TABLE( table ), label, 0, 1, 1, 2, - (GtkAttachOptions) ( GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 ); - - entry = ui::Entry(); - gtk_widget_show( entry ); - gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 0, 1, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - g_signal_connect( G_OBJECT( entry ), "focus_in_event", - G_CALLBACK( find_focus_in ), 0 ); - AddDialogData( *GTK_ENTRY( entry ), m_strFind ); - GlobalTextureEntryCompletion::instance().connect( GTK_ENTRY( entry ) ); - - entry = ui::Entry(); - gtk_widget_show( entry ); - gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2, - (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), - (GtkAttachOptions) ( 0 ), 0, 0 ); - g_signal_connect( G_OBJECT( entry ), "focus_in_event", - G_CALLBACK( replace_focus_in ), 0 ); - AddDialogData( *GTK_ENTRY( entry ), m_strReplace ); - GlobalTextureEntryCompletion::instance().connect( GTK_ENTRY( entry ) ); - - check = ui::CheckButton( "Within selected brushes only" ); - gtk_widget_show( check ); - gtk_box_pack_start( GTK_BOX( vbox ), check, TRUE, TRUE, 0 ); - AddDialogData( *GTK_TOGGLE_BUTTON( check ), m_bSelectedOnly ); - - vbox = ui::VBox( FALSE, 5 ); - gtk_widget_show( vbox ); - gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( vbox ), FALSE, FALSE, 0 ); - - button = ui::Button( "Apply" ); - gtk_widget_show( button ); - gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); - g_signal_connect( G_OBJECT( button ), "clicked", - G_CALLBACK( OnApply ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); - - button = ui::Button( "Close" ); - gtk_widget_show( button ); - gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); - g_signal_connect( G_OBJECT( button ), "clicked", - G_CALLBACK( OnClose ), 0 ); - gtk_widget_set_size_request( button, 60, -1 ); - - return dlg; +ui::Window FindTextureDialog::BuildDialog() +{ + ui::Widget label{ui::null}; + ui::Widget button{ui::null}; + ui::Entry entry{ui::null}; + + auto dlg = ui::Window(create_floating_window("Find / Replace Texture(s)", m_parent)); + + auto hbox = ui::HBox(FALSE, 5); + hbox.show(); + dlg.add(hbox); + gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); + + auto vbox = ui::VBox(FALSE, 5); + vbox.show(); + hbox.pack_start(vbox, TRUE, TRUE, 0); + + auto table = ui::Table(2, 2, FALSE); + table.show(); + vbox.pack_start(table, TRUE, TRUE, 0); + gtk_table_set_row_spacings(table, 5); + gtk_table_set_col_spacings(table, 5); + + label = ui::Label("Find:"); + label.show(); + table.attach(label, {0, 1, 0, 1}, {GTK_FILL, 0}); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + + label = ui::Label("Replace:"); + label.show(); + table.attach(label, {0, 1, 1, 2}, {GTK_FILL, 0}); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + + entry = ui::Entry(ui::New); + entry.show(); + table.attach(entry, {1, 2, 0, 1}, {GTK_EXPAND | GTK_FILL, 0}); + entry.connect("focus_in_event", + G_CALLBACK(find_focus_in), 0); + AddDialogData(entry, m_strFind); + GlobalTextureEntryCompletion::instance().connect(entry); + + entry = ui::Entry(ui::New); + entry.show(); + table.attach(entry, {1, 2, 1, 2}, {GTK_EXPAND | GTK_FILL, 0}); + entry.connect("focus_in_event", + G_CALLBACK(replace_focus_in), 0); + AddDialogData(entry, m_strReplace); + GlobalTextureEntryCompletion::instance().connect(entry); + + auto check = ui::CheckButton("Within selected brushes only"); + check.show(); + vbox.pack_start(check, TRUE, TRUE, 0); + AddDialogData(check, m_bSelectedOnly); + + vbox = ui::VBox(FALSE, 5); + vbox.show(); + hbox.pack_start(vbox, FALSE, FALSE, 0); + + button = ui::Button("Apply"); + button.show(); + vbox.pack_start(button, FALSE, FALSE, 0); + button.connect("clicked", + G_CALLBACK(OnApply), 0); + button.dimensions(60, -1); + + button = ui::Button("Close"); + button.show(); + vbox.pack_start(button, FALSE, FALSE, 0); + button.connect("clicked", + G_CALLBACK(OnClose), 0); + button.dimensions(60, -1); + + return dlg; } -void FindTextureDialog::updateTextures( const char* name ){ - if ( isOpen() ) { - if ( g_bFindActive ) { - setFindStr( name + 9 ); - } - else - { - setReplaceStr( name + 9 ); - } - } +void FindTextureDialog::updateTextures(const char *name) +{ + if (isOpen()) { + if (g_bFindActive) { + setFindStr(name + 9); + } else { + setReplaceStr(name + 9); + } + } } -bool FindTextureDialog::isOpen(){ - return gtk_widget_get_visible( g_FindTextureDialog.GetWidget() ) == TRUE; +bool FindTextureDialog::isOpen() +{ + return g_FindTextureDialog.GetWidget().visible(); } -void FindTextureDialog::setFindStr( const char* name ){ - g_FindTextureDialog.exportData(); - g_FindTextureDialog.m_strFind = name; - g_FindTextureDialog.importData(); +void FindTextureDialog::setFindStr(const char *name) +{ + g_FindTextureDialog.exportData(); + g_FindTextureDialog.m_strFind = name; + g_FindTextureDialog.importData(); } -void FindTextureDialog::setReplaceStr( const char* name ){ - g_FindTextureDialog.exportData(); - g_FindTextureDialog.m_strReplace = name; - g_FindTextureDialog.importData(); +void FindTextureDialog::setReplaceStr(const char *name) +{ + g_FindTextureDialog.exportData(); + g_FindTextureDialog.m_strReplace = name; + g_FindTextureDialog.importData(); } -void FindTextureDialog::show(){ - g_FindTextureDialog.ShowDlg(); +void FindTextureDialog::show() +{ + g_FindTextureDialog.ShowDlg(); } -void FindTextureDialog_constructWindow( ui::Window main_window ){ - g_FindTextureDialog.constructWindow( main_window ); +void FindTextureDialog_constructWindow(ui::Window main_window) +{ + g_FindTextureDialog.constructWindow(main_window); } -void FindTextureDialog_destroyWindow(){ - g_FindTextureDialog.destroyWindow(); +void FindTextureDialog_destroyWindow() +{ + g_FindTextureDialog.destroyWindow(); } -bool FindTextureDialog_isOpen(){ - return g_FindTextureDialog.isOpen(); +bool FindTextureDialog_isOpen() +{ + return g_FindTextureDialog.isOpen(); } -void FindTextureDialog_selectTexture( const char* name ){ - g_FindTextureDialog.updateTextures( name ); +void FindTextureDialog_selectTexture(const char *name) +{ + g_FindTextureDialog.updateTextures(name); } -void FindTextureDialog_Construct(){ - GlobalCommands_insert( "FindReplaceTextures", FindTextureDialog::ShowCaller() ); +void FindTextureDialog_Construct() +{ + GlobalCommands_insert("FindReplaceTextures", FindTextureDialog::ShowCaller()); } -void FindTextureDialog_Destroy(){ +void FindTextureDialog_Destroy() +{ }