X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=radiant%2Ffindtexturedialog.cpp;h=b09ce4a7c823e85988d295e0e449c9349e908f9b;hp=9cbe68d80dbc1c47aefad50bdb7f9e62c8f835dd;hb=686a211fc38285905245e537acf9d96e66b9675c;hpb=80378101101ca1762bbf5638a9e3566893096d8a diff --git a/radiant/findtexturedialog.cpp b/radiant/findtexturedialog.cpp index 9cbe68d8..b09ce4a7 100644 --- a/radiant/findtexturedialog.cpp +++ b/radiant/findtexturedialog.cpp @@ -1,289 +1,270 @@ -/* -Copyright (C) 1999-2007 id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. - -This file is part of GtkRadiant. - -GtkRadiant is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -GtkRadiant is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -// -// Find/Replace textures dialogs -// -// Leonardo Zide (leo@lokigames.com) -// - -#include "stdafx.h" -#include "findtexturedialog.h" - -FindTextureDialog g_TexFindDlg; -FindTextureDialog& g_dlgFind = g_TexFindDlg; -static bool g_bFindActive = true; - -static void OnApply(GtkWidget *widget, gpointer data) -{ - g_dlgFind.UpdateData(TRUE); - FindReplaceTextures(g_dlgFind.m_strFind, g_dlgFind.m_strReplace, - g_dlgFind.m_bSelectedOnly, g_dlgFind.m_bForce, FALSE); -} - -static void OnFind(GtkWidget *widget, gpointer data) -{ - g_dlgFind.UpdateData(TRUE); - FindReplaceTextures(g_dlgFind.m_strFind, g_dlgFind.m_strReplace, - g_dlgFind.m_bSelectedOnly, FALSE, TRUE); -} - -static void OnOK(GtkWidget *widget, gpointer data) -{ - g_dlgFind.UpdateData(TRUE); - FindReplaceTextures(g_dlgFind.m_strFind, g_dlgFind.m_strReplace, - g_dlgFind.m_bSelectedOnly, g_dlgFind.m_bForce, FALSE); - g_dlgFind.HideDlg (); -} - -static void OnClose(GtkWidget *widget, gpointer data) -{ - g_dlgFind.HideDlg (); -} - -static void popup_selected (GtkWidget *widget, gpointer data) -{ - gchar *str; - - gtk_label_get (GTK_LABEL (GTK_BIN (widget)->child), &str); - gtk_entry_set_text (GTK_ENTRY (data), str); -} - -static void find_clicked (GtkWidget *widget, gpointer data) -{ - GtkWidget *menu, *item; - menu = gtk_menu_new (); - - for (int i = 0; i < QERApp_GetActiveShaderCount (); i++) - { - IShader *pShader = QERApp_ActiveShader_ForIndex (i); - - item = gtk_menu_item_new_with_label (pShader->getName ()); - gtk_signal_connect (GTK_OBJECT (item), "activate", GTK_SIGNAL_FUNC (popup_selected), data); - gtk_widget_show (item); - gtk_menu_append (GTK_MENU (menu), item); - } - - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME); -} - -static gint find_focus_in (GtkWidget *widget, GdkEventFocus *event, gpointer data) -{ - g_bFindActive = true; - return FALSE; -} - -static gint replace_focus_in (GtkWidget *widget, GdkEventFocus *event, gpointer data) -{ - g_bFindActive = false; - return FALSE; -} - -// ============================================================================= -// FindTextureDialog class - -FindTextureDialog::FindTextureDialog () -{ - m_bSelectedOnly = FALSE; - m_strFind = ""; - m_strReplace = ""; - m_bForce = FALSE; - m_bLive = TRUE; -} - -FindTextureDialog::~FindTextureDialog () -{ -} - -void FindTextureDialog::BuildDialog () -{ - GtkWidget *dlg, *vbox, *hbox, *table, *label; - GtkWidget *button, *check, *entry, *arrow; - - dlg = m_pWidget; - gtk_window_set_title (GTK_WINDOW (dlg), "Find / Replace Texture(s)"); - gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (g_pParentWnd->m_pWidget)); - - hbox = gtk_hbox_new (FALSE, 5); - gtk_widget_show (hbox); - gtk_container_add (GTK_CONTAINER (dlg), hbox); - gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); - - vbox = gtk_vbox_new (FALSE, 5); - gtk_widget_show (vbox); - gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); - - table = gtk_table_new (2, 3, FALSE); - gtk_widget_show (table); - gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0); - gtk_table_set_row_spacings (GTK_TABLE (table), 5); - gtk_table_set_col_spacings (GTK_TABLE (table), 5); - - label = gtk_label_new ("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 = gtk_label_new ("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 = gtk_entry_new (); - gtk_widget_show (entry); - gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_signal_connect (GTK_OBJECT (entry), "focus_in_event", - GTK_SIGNAL_FUNC (find_focus_in), NULL); - AddDialogData (entry, &m_strFind, DLG_ENTRY_TEXT); - - button = gtk_button_new (); - gtk_widget_show (button); - gtk_table_attach (GTK_TABLE (table), button, 2, 3, 0, 1, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (find_clicked), entry); - - arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT); - gtk_widget_show (arrow); - gtk_container_add (GTK_CONTAINER (button), arrow); - - entry = gtk_entry_new (); - gtk_widget_show (entry); - gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_signal_connect (GTK_OBJECT (entry), "focus_in_event", - GTK_SIGNAL_FUNC (replace_focus_in), NULL); - AddDialogData (entry, &m_strReplace, DLG_ENTRY_TEXT); - - button = gtk_button_new (); - gtk_widget_show (button); - gtk_table_attach (GTK_TABLE (table), button, 2, 3, 1, 2, - (GtkAttachOptions) (GTK_FILL), - (GtkAttachOptions) (GTK_FILL), 0, 0); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (find_clicked), entry); - - arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT); - gtk_widget_show (arrow); - gtk_container_add (GTK_CONTAINER (button), arrow); - - check = gtk_check_button_new_with_label ("Use selected brushes only"); - gtk_widget_show (check); - gtk_box_pack_start (GTK_BOX (vbox), check, TRUE, TRUE, 0); - AddDialogData (check, &m_bSelectedOnly, DLG_CHECK_BOOL); - - check = gtk_check_button_new_with_label ("Replace everywhere (selected/active), don't test against Find"); - gtk_widget_show (check); - gtk_box_pack_start (GTK_BOX (vbox), check, TRUE, TRUE, 0); - AddDialogData (check, &m_bForce, DLG_CHECK_BOOL); - - check = gtk_check_button_new_with_label ("Live updates from Texture/Camera windows"); - gtk_widget_show (check); - gtk_box_pack_start (GTK_BOX (vbox), check, TRUE, TRUE, 0); - AddDialogData (check, &m_bLive, DLG_CHECK_BOOL); - - vbox = gtk_vbox_new (FALSE, 5); - gtk_widget_show (vbox); - gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); - - button = gtk_button_new_with_label( "Find" ); - gtk_widget_show( button ); - gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); - gtk_signal_connect( GTK_OBJECT( button ), "clicked", - GTK_SIGNAL_FUNC( OnFind ), NULL ); - gtk_widget_set_usize( button, 60, -2 ); - - button = gtk_button_new_with_label ("OK"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (OnOK), NULL); - gtk_widget_set_usize (button, 60, -2); - - button = gtk_button_new_with_label ("Apply"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (OnApply), NULL); - gtk_widget_set_usize (button, 60, -2); - - button = gtk_button_new_with_label ("Close"); - gtk_widget_show (button); - gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (OnClose), NULL); - gtk_widget_set_usize (button, 60, -2); - - gtk_widget_show (dlg); -} - -void FindTextureDialog::updateTextures(const char *p) -{ - if (isOpen()) - { - if (g_bFindActive) - { - setFindStr(p); - } - else - { - setReplaceStr(p); - } - } -} - -bool FindTextureDialog::isOpen() -{ - return (g_dlgFind.m_pWidget == NULL || GTK_WIDGET_VISIBLE (g_dlgFind.m_pWidget) == FALSE) ? false : true; -} - -void FindTextureDialog::setFindStr(const char * p) -{ - g_dlgFind.UpdateData(TRUE); - if (g_dlgFind.m_bLive) - { - g_dlgFind.m_strFind = p; - g_dlgFind.UpdateData(FALSE); - } -} - -void FindTextureDialog::setReplaceStr(const char * p) -{ - g_dlgFind.UpdateData(TRUE); - if (g_dlgFind.m_bLive) - { - g_dlgFind.m_strReplace = p; - g_dlgFind.UpdateData(FALSE); - } -} - -void FindTextureDialog::show() -{ - g_dlgFind.ShowDlg (); -} +/* + Copyright (C) 1999-2007 id Software, Inc. and contributors. + For a list of contributors, see the accompanying CONTRIBUTORS file. + + This file is part of GtkRadiant. + + GtkRadiant is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + GtkRadiant is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +// +// Find/Replace textures dialogs +// +// Leonardo Zide (leo@lokigames.com) +// + +#include "stdafx.h" +#include "findtexturedialog.h" +#include + +FindTextureDialog g_TexFindDlg; +FindTextureDialog& g_dlgFind = g_TexFindDlg; +static bool g_bFindActive = true; + +static void OnApply( GtkWidget *widget, gpointer data ){ + g_dlgFind.UpdateData( TRUE ); + FindReplaceTextures( g_dlgFind.m_strFind, g_dlgFind.m_strReplace, + g_dlgFind.m_bSelectedOnly, g_dlgFind.m_bForce, FALSE ); +} + +static void OnFind( GtkWidget *widget, gpointer data ){ + g_dlgFind.UpdateData( TRUE ); + FindReplaceTextures( g_dlgFind.m_strFind, g_dlgFind.m_strReplace, + g_dlgFind.m_bSelectedOnly, FALSE, TRUE ); +} + +static void OnOK( GtkWidget *widget, gpointer data ){ + g_dlgFind.UpdateData( TRUE ); + FindReplaceTextures( g_dlgFind.m_strFind, g_dlgFind.m_strReplace, + g_dlgFind.m_bSelectedOnly, g_dlgFind.m_bForce, FALSE ); + g_dlgFind.HideDlg(); +} + +static void OnClose( GtkWidget *widget, gpointer data ){ + g_dlgFind.HideDlg(); +} + +static void popup_selected( GtkWidget *widget, gpointer data ){ + gchar *str; + + gtk_label_get( GTK_LABEL( GTK_BIN( widget )->child ), &str ); + gtk_entry_set_text( GTK_ENTRY( data ), str ); +} + +static void find_clicked( GtkWidget *widget, gpointer data ){ + GtkWidget *menu, *item; + menu = gtk_menu_new(); + + for ( int i = 0; i < QERApp_GetActiveShaderCount(); i++ ) + { + IShader *pShader = QERApp_ActiveShader_ForIndex( i ); + + item = gtk_menu_item_new_with_label( pShader->getName() ); + gtk_signal_connect( GTK_OBJECT( item ), "activate", GTK_SIGNAL_FUNC( popup_selected ), data ); + gtk_widget_show( item ); + gtk_menu_append( GTK_MENU( menu ), item ); + } + + gtk_menu_popup( GTK_MENU( menu ), NULL, NULL, NULL, NULL, 1, GDK_CURRENT_TIME ); +} + +static gint find_focus_in( GtkWidget *widget, GdkEventFocus *event, gpointer data ){ + g_bFindActive = true; + return FALSE; +} + +static gint replace_focus_in( GtkWidget *widget, GdkEventFocus *event, gpointer data ){ + g_bFindActive = false; + return FALSE; +} + +// ============================================================================= +// FindTextureDialog class + +FindTextureDialog::FindTextureDialog (){ + m_bSelectedOnly = FALSE; + m_strFind = ""; + m_strReplace = ""; + m_bForce = FALSE; + m_bLive = TRUE; +} + +FindTextureDialog::~FindTextureDialog (){ +} + +void FindTextureDialog::BuildDialog(){ + GtkWidget *dlg, *vbox, *hbox, *table, *label; + GtkWidget *button, *check, *entry, *arrow; + + dlg = m_pWidget; + gtk_window_set_title( GTK_WINDOW( dlg ), "Find / Replace Texture(s)" ); + gtk_window_set_transient_for( GTK_WINDOW( dlg ), GTK_WINDOW( g_pParentWnd->m_pWidget ) ); + + hbox = gtk_hbox_new( FALSE, 5 ); + gtk_widget_show( hbox ); + gtk_container_add( GTK_CONTAINER( dlg ), hbox ); + gtk_container_set_border_width( GTK_CONTAINER( hbox ), 5 ); + + vbox = gtk_vbox_new( FALSE, 5 ); + gtk_widget_show( vbox ); + gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 0 ); + + table = gtk_table_new( 2, 3, FALSE ); + gtk_widget_show( table ); + gtk_box_pack_start( GTK_BOX( vbox ), table, TRUE, TRUE, 0 ); + gtk_table_set_row_spacings( GTK_TABLE( table ), 5 ); + gtk_table_set_col_spacings( GTK_TABLE( table ), 5 ); + + label = gtk_label_new( "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 = gtk_label_new( "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 = gtk_entry_new(); + gtk_widget_show( entry ); + gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 0, 1, + (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), + (GtkAttachOptions) ( 0 ), 0, 0 ); + gtk_signal_connect( GTK_OBJECT( entry ), "focus_in_event", + GTK_SIGNAL_FUNC( find_focus_in ), NULL ); + AddDialogData( entry, &m_strFind, DLG_ENTRY_TEXT ); + + button = gtk_button_new(); + gtk_widget_show( button ); + gtk_table_attach( GTK_TABLE( table ), button, 2, 3, 0, 1, + (GtkAttachOptions) ( GTK_FILL ), + (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( find_clicked ), entry ); + + arrow = gtk_arrow_new( GTK_ARROW_DOWN, GTK_SHADOW_OUT ); + gtk_widget_show( arrow ); + gtk_container_add( GTK_CONTAINER( button ), arrow ); + + entry = gtk_entry_new(); + gtk_widget_show( entry ); + gtk_table_attach( GTK_TABLE( table ), entry, 1, 2, 1, 2, + (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), + (GtkAttachOptions) ( 0 ), 0, 0 ); + gtk_signal_connect( GTK_OBJECT( entry ), "focus_in_event", + GTK_SIGNAL_FUNC( replace_focus_in ), NULL ); + AddDialogData( entry, &m_strReplace, DLG_ENTRY_TEXT ); + + button = gtk_button_new(); + gtk_widget_show( button ); + gtk_table_attach( GTK_TABLE( table ), button, 2, 3, 1, 2, + (GtkAttachOptions) ( GTK_FILL ), + (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( find_clicked ), entry ); + + arrow = gtk_arrow_new( GTK_ARROW_DOWN, GTK_SHADOW_OUT ); + gtk_widget_show( arrow ); + gtk_container_add( GTK_CONTAINER( button ), arrow ); + + check = gtk_check_button_new_with_label( "Use selected brushes only" ); + gtk_widget_show( check ); + gtk_box_pack_start( GTK_BOX( vbox ), check, TRUE, TRUE, 0 ); + AddDialogData( check, &m_bSelectedOnly, DLG_CHECK_BOOL ); + + check = gtk_check_button_new_with_label( "Replace everywhere (selected/active), don't test against Find" ); + gtk_widget_show( check ); + gtk_box_pack_start( GTK_BOX( vbox ), check, TRUE, TRUE, 0 ); + AddDialogData( check, &m_bForce, DLG_CHECK_BOOL ); + + check = gtk_check_button_new_with_label( "Live updates from Texture/Camera windows" ); + gtk_widget_show( check ); + gtk_box_pack_start( GTK_BOX( vbox ), check, TRUE, TRUE, 0 ); + AddDialogData( check, &m_bLive, DLG_CHECK_BOOL ); + + vbox = gtk_vbox_new( FALSE, 5 ); + gtk_widget_show( vbox ); + gtk_box_pack_start( GTK_BOX( hbox ), vbox, TRUE, TRUE, 0 ); + + button = gtk_button_new_with_label( _( "Find" ) ); + gtk_widget_show( button ); + gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( OnFind ), NULL ); + gtk_widget_set_usize( button, 60, -2 ); + + button = gtk_button_new_with_label( _( "OK" ) ); + gtk_widget_show( button ); + gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( OnOK ), NULL ); + gtk_widget_set_usize( button, 60, -2 ); + + button = gtk_button_new_with_label( _( "Apply" ) ); + gtk_widget_show( button ); + gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( OnApply ), NULL ); + gtk_widget_set_usize( button, 60, -2 ); + + button = gtk_button_new_with_label( _( "Close" ) ); + gtk_widget_show( button ); + gtk_box_pack_start( GTK_BOX( vbox ), button, FALSE, FALSE, 0 ); + gtk_signal_connect( GTK_OBJECT( button ), "clicked", + GTK_SIGNAL_FUNC( OnClose ), NULL ); + gtk_widget_set_usize( button, 60, -2 ); + + gtk_widget_show( dlg ); +} + +void FindTextureDialog::updateTextures( const char *p ){ + if ( isOpen() ) { + if ( g_bFindActive ) { + setFindStr( p ); + } + else + { + setReplaceStr( p ); + } + } +} + +bool FindTextureDialog::isOpen(){ + return ( g_dlgFind.m_pWidget == NULL || GTK_WIDGET_VISIBLE( g_dlgFind.m_pWidget ) == FALSE ) ? false : true; +} + +void FindTextureDialog::setFindStr( const char * p ){ + g_dlgFind.UpdateData( TRUE ); + if ( g_dlgFind.m_bLive ) { + g_dlgFind.m_strFind = p; + g_dlgFind.UpdateData( FALSE ); + } +} + +void FindTextureDialog::setReplaceStr( const char * p ){ + g_dlgFind.UpdateData( TRUE ); + if ( g_dlgFind.m_bLive ) { + g_dlgFind.m_strReplace = p; + g_dlgFind.UpdateData( FALSE ); + } +} + +void FindTextureDialog::show(){ + g_dlgFind.ShowDlg(); +}