Mercurial > mplayer.hg
annotate gui/dialog/msgbox.c @ 36008:d154d0035cb0
Don't use WidgetDestroy().
(It's not the best idea to call gtk_widget_destroy() there while the
object is currently being destroyed.)
In order to set the widget pointer to NULL, use gtk_widget_destroyed().
Simply destroy the widget to automatically get the pointer set to NULL
then.
author | ib |
---|---|
date | Sat, 30 Mar 2013 14:32:07 +0000 |
parents | 90ff4280cc80 |
children | 5c720c434d56 |
rev | line source |
---|---|
33572 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
18 | |
33738 | 19 #include <string.h> |
20 | |
35525 | 21 #include "gui/app/app.h" |
33572 | 22 #include "help_mp.h" |
23 | |
35526 | 24 #include "pixmaps/error.xpm" |
25 #include "pixmaps/warning.xpm" | |
33572 | 26 |
35529 | 27 #include "dialog.h" |
33572 | 28 #include "msgbox.h" |
29 #include "tools.h" | |
30 | |
31 GtkWidget * gtkMessageBoxText; | |
32 GtkWidget * MessageBox = NULL; | |
33 | |
34 static void on_Ok_released( GtkButton * button,gpointer user_data ) | |
35 { | |
36 gtk_widget_destroy( MessageBox ); | |
37 } | |
38 | |
35996 | 39 static GtkWidget * CreateMessageBox( void ) |
33572 | 40 { |
41 GtkWidget * vbox1; | |
42 GtkWidget * hbox1; | |
43 GtkWidget * hbuttonbox1; | |
44 GtkWidget * Ok; | |
45 GtkAccelGroup * accel_group; | |
46 GtkStyle * pixmapstyle; | |
47 GdkPixmap * pixmapwid; | |
48 GdkBitmap * mask; | |
49 | |
50 accel_group=gtk_accel_group_new(); | |
51 | |
52 MessageBox=gtk_window_new( GTK_WINDOW_TOPLEVEL ); | |
53 gtk_widget_set_name( MessageBox,"MessageBox" ); | |
54 gtk_object_set_data( GTK_OBJECT( MessageBox ),"MessageBox",MessageBox ); | |
55 gtk_widget_set_events( MessageBox,GDK_EXPOSURE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_VISIBILITY_NOTIFY_MASK ); | |
56 gtk_window_set_title( GTK_WINDOW( MessageBox ),"MPlayer ..." ); | |
57 gtk_window_set_position( GTK_WINDOW( MessageBox ),GTK_WIN_POS_CENTER ); | |
58 gtk_window_set_modal( GTK_WINDOW( MessageBox ),TRUE ); | |
59 gtk_window_set_policy( GTK_WINDOW( MessageBox ),TRUE,TRUE,FALSE ); | |
60 gtk_window_set_wmclass( GTK_WINDOW( MessageBox ),"Message","MPlayer" ); | |
61 | |
62 gtk_widget_realize( MessageBox ); | |
63 gtkAddIcon( MessageBox ); | |
64 | |
65 vbox1=AddVBox( AddDialogFrame( MessageBox ),0 ); | |
66 hbox1=AddHBox( vbox1,1 ); | |
67 | |
68 pixmapstyle=gtk_widget_get_style( MessageBox ); | |
69 | |
70 pixmapwid=gdk_pixmap_colormap_create_from_xpm_d( MessageBox->window,gdk_colormap_get_system(),&mask,&pixmapstyle->bg[GTK_STATE_NORMAL],(gchar ** )warning_xpm ); | |
71 WarningPixmap=gtk_pixmap_new( pixmapwid,mask ); | |
72 pixmapwid=gdk_pixmap_colormap_create_from_xpm_d( MessageBox->window,gdk_colormap_get_system(),&mask,&pixmapstyle->bg[GTK_STATE_NORMAL],(gchar ** )error_xpm ); | |
73 ErrorPixmap=gtk_pixmap_new( pixmapwid,mask ); | |
74 | |
75 gtk_widget_set_name( WarningPixmap,"pixmap1" ); | |
76 gtk_widget_hide( WarningPixmap ); | |
77 gtk_box_pack_start( GTK_BOX( hbox1 ),WarningPixmap,FALSE,FALSE,0 ); | |
78 gtk_widget_set_usize( WarningPixmap,55,-2 ); | |
79 | |
80 gtk_widget_set_name( ErrorPixmap,"pixmap1" ); | |
81 gtk_widget_hide( ErrorPixmap ); | |
82 gtk_box_pack_start( GTK_BOX( hbox1 ),ErrorPixmap,FALSE,FALSE,0 ); | |
83 gtk_widget_set_usize( ErrorPixmap,55,-2 ); | |
84 | |
85 gtkMessageBoxText=gtk_label_new( "Text jol. Ha ezt megerted,akkor neked nagyon jo a magyar tudasod,te." ); | |
86 gtk_widget_set_name( gtkMessageBoxText,"gtkMessageBoxText" ); | |
87 gtk_widget_show( gtkMessageBoxText ); | |
88 gtk_box_pack_start( GTK_BOX( hbox1 ),gtkMessageBoxText,TRUE,TRUE,0 ); | |
89 // gtk_label_set_justify( GTK_LABEL( gtkMessageBoxText ),GTK_JUSTIFY_FILL ); | |
90 gtk_label_set_justify( GTK_LABEL( gtkMessageBoxText ),GTK_JUSTIFY_CENTER ); | |
91 gtk_label_set_line_wrap( GTK_LABEL( gtkMessageBoxText ),FALSE ); | |
92 | |
93 AddHSeparator( vbox1 ); | |
94 hbuttonbox1=AddHButtonBox( vbox1 ); | |
95 Ok=AddButton( MSGTR_Ok,hbuttonbox1 ); | |
96 | |
97 gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); | |
98 gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); | |
99 | |
36008 | 100 gtk_signal_connect( GTK_OBJECT( MessageBox ),"destroy",GTK_SIGNAL_FUNC( gtk_widget_destroyed ),&MessageBox ); |
33572 | 101 gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( on_Ok_released ),NULL ); |
102 | |
103 gtk_window_add_accel_group( GTK_WINDOW( MessageBox ),accel_group ); | |
104 | |
105 return MessageBox; | |
106 } | |
35991 | 107 |
108 void ShowMessageBox( const char * msg ) | |
109 { | |
36007
90ff4280cc80
There is no need to hide the widget prior to destruction.
ib
parents:
35996
diff
changeset
|
110 if ( MessageBox ) gtk_widget_destroy( MessageBox ); |
35996 | 111 MessageBox=CreateMessageBox(); |
35991 | 112 if ( strlen( msg ) < 20 ) gtk_widget_set_usize( MessageBox,196,-1 ); |
113 } |