Mercurial > mplayer.hg
annotate gui/mplayer/widgets.c @ 33528:6f20f2a42b76
Do some gtkInit() cleanup.
Move debug message at top of function and revise message text.
Remove commented code.
author | ib |
---|---|
date | Tue, 14 Jun 2011 18:01:22 +0000 |
parents | 9f0812ccc421 |
children | 276eef06fb3d |
rev | line source |
---|---|
26458 | 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 */ | |
23077 | 18 |
19 #include <stdlib.h> | |
20 #include <stdio.h> | |
21 | |
22 #include <sys/types.h> | |
23 #include <sys/stat.h> | |
24 #include <sys/wait.h> | |
25 #include <unistd.h> | |
26 #include <string.h> | |
27 #include <signal.h> | |
28 | |
29 #include <gdk/gdkprivate.h> | |
30 #include <gdk/gdkkeysyms.h> | |
31 #include <gdk/gdkx.h> | |
32 #include <gdk/gdk.h> | |
33 #include <gtk/gtk.h> | |
34 | |
26382
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
35 #include "config.h" |
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
36 #include "help_mp.h" |
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
37 #include "mp_msg.h" |
33465 | 38 #include "libvo/x11_common.h" |
26382
b2f4abcf20ed
Make include paths consistent; do not use ../ in them.
diego
parents:
26365
diff
changeset
|
39 |
23077 | 40 #include "widgets.h" |
26365
10dfbc523184
Add gui/ prefix to some #include paths so that compilation from the
diego
parents:
26203
diff
changeset
|
41 #include "gui/app.h" |
33466 | 42 #include "gui/interface.h" |
26365
10dfbc523184
Add gui/ prefix to some #include paths so that compilation from the
diego
parents:
26203
diff
changeset
|
43 #include "gui/wm/ws.h" |
23077 | 44 |
45 | |
46 #include "play.h" | |
47 #include "gtk/fs.h" | |
48 | |
49 GtkWidget * PopUpMenu = NULL; | |
50 | |
51 GtkWidget * WarningPixmap; | |
52 GtkWidget * ErrorPixmap; | |
53 | |
54 int gtkPopupMenu = 0; | |
55 int gtkPopupMenuParam = 0; | |
25962 | 56 int gtkInitialized = 0; |
23077 | 57 |
58 #include "gtk/sb.h" | |
59 #include "gtk/pl.h" | |
60 #include "gtk/fs.h" | |
61 #include "gtk/mb.h" | |
62 #include "gtk/about.h" | |
63 #include "gtk/opts.h" | |
30531
704903d34069
Rename gui/mplayer/gtk/menu.[ch] --> gui/mplayer/gtk/gtkmenu.[ch].
diego
parents:
29263
diff
changeset
|
64 #include "gtk/gtk_menu.h" |
26137
02a08fffb1dc
Rename url.c/url.h to the less generic gtk_url.c/gtk_url.h.
diego
parents:
25962
diff
changeset
|
65 #include "gtk/gtk_url.h" |
23077 | 66 #include "gtk/eq.h" |
67 | |
33484
4f940d7917f0
Provide a desktop icon of reasonable size (48x48) and quality.
ib
parents:
33466
diff
changeset
|
68 #include "pixmaps/mplayer.xpm" |
23077 | 69 |
70 // --- init & close gtk | |
71 | |
72 Pixmap guiIcon; | |
73 Pixmap guiIconMask; | |
74 | |
75 void gtkInit( void ) | |
76 { | |
33465 | 77 int argc = 0; |
78 char *arg[3], **argv = arg; | |
33526 | 79 GdkPixmap *gdkIcon; |
80 GdkBitmap *gdkIconMask; | |
33465 | 81 |
33528 | 82 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[widget] GTK init\n" ); |
83 | |
33466 | 84 arg[argc++] = GMPlayer; |
33465 | 85 |
86 if (mDisplayName) // MPlayer option '-display' was given | |
87 { | |
88 arg[argc++] = "--display"; // Pass corresponding command line arguments to GTK, | |
89 arg[argc++] = mDisplayName; // to open the requested display for the GUI, too. | |
90 } | |
91 | |
27343 | 92 #ifdef CONFIG_GTK2 |
23077 | 93 gtk_disable_setlocale(); |
94 #endif | |
33528 | 95 |
33465 | 96 gtk_init( &argc, &argv ); |
23077 | 97 |
33527 | 98 gdkIcon=gdk_pixmap_colormap_create_from_xpm_d( NULL,gdk_colormap_get_system(),&gdkIconMask,NULL,(gchar **) mplayer_xpm ); |
23077 | 99 |
33526 | 100 // start up GTK which realizes the pixmaps |
101 gtk_main_iteration_do(FALSE); | |
23077 | 102 |
33527 | 103 guiIcon=GDK_PIXMAP_XID( gdkIcon ); |
104 guiIconMask=GDK_PIXMAP_XID( gdkIconMask ); | |
23077 | 105 |
25962 | 106 gtkInitialized=1; |
23077 | 107 } |
108 | |
109 void gtkAddIcon( GtkWidget * window ) | |
110 { wsSetIcon( gdk_display,GDK_WINDOW_XWINDOW( window->window ),guiIcon,guiIconMask ); } | |
111 | |
112 void gtkClearList( GtkWidget * list ) | |
113 { gtk_clist_clear( GTK_CLIST( list ) ); } | |
114 | |
115 int gtkFindCList( GtkWidget * list,char * item ) | |
116 { | |
33314 | 117 gint j; |
23077 | 118 gchar * tmpstr; |
33314 | 119 for( j=0;j<GTK_CLIST( list )->rows;j++ ) |
23077 | 120 { |
121 gtk_clist_get_text( GTK_CLIST( list ),j,0,&tmpstr ); | |
122 if ( !strcmp( tmpstr,item ) ) return j; | |
123 } | |
124 return -1; | |
125 } | |
126 | |
127 void gtkSetDefaultToCList( GtkWidget * list,char * item ) | |
128 { | |
129 gint i; | |
130 if ( ( i=gtkFindCList( list,item ) ) > -1 ) gtk_clist_select_row( GTK_CLIST( list ),i,0 ); | |
131 } | |
132 | |
133 void gtkEventHandling( void ) | |
134 { | |
135 int i; | |
136 for( i=0;i < 25;i++ ) gtk_main_iteration_do( 0 ); | |
137 } | |
138 | |
139 // --- funcs | |
140 | |
141 void gtkMessageBox( int type,const gchar * str ) | |
142 { | |
25962 | 143 if ( !gtkInitialized ) return; |
23077 | 144 ShowMessageBox( str ); |
145 gtk_label_set_text( GTK_LABEL( gtkMessageBoxText ),str ); | |
146 /* enable linewrapping by alex */ | |
147 // GTK_LABEL(gtkMessageBoxText)->max_width = 80; | |
148 if (strlen(str) > 80) | |
149 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText), TRUE); | |
150 else | |
151 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText), FALSE); | |
152 switch( type) | |
153 { | |
154 case GTK_MB_FATAL: | |
155 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_FatalError ); | |
156 gtk_widget_hide( WarningPixmap ); | |
157 gtk_widget_show( ErrorPixmap ); | |
158 break; | |
159 case GTK_MB_ERROR: | |
160 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Error ); | |
161 gtk_widget_hide( WarningPixmap ); | |
162 gtk_widget_show( ErrorPixmap ); | |
163 break; | |
164 case GTK_MB_WARNING: | |
165 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Warning ); | |
166 gtk_widget_show( WarningPixmap ); | |
167 gtk_widget_hide( ErrorPixmap ); | |
168 break; | |
169 } | |
170 gtk_widget_show( MessageBox ); | |
171 gtkSetLayer( MessageBox ); | |
172 if ( type == GTK_MB_FATAL ) | |
173 while ( MessageBox ) gtk_main_iteration_do( 0 ); | |
174 } | |
175 | |
176 void gtkSetLayer( GtkWidget * wdg ) | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
177 { |
23077 | 178 wsSetLayer( gdk_display,GDK_WINDOW_XWINDOW( wdg->window ),appMPlayer.subWindow.isFullScreen ); |
179 gtkActive( wdg ); | |
180 } | |
181 | |
182 void gtkActive( GtkWidget * wdg ) | |
183 { wsMoveTopWindow( gdk_display,GDK_WINDOW_XWINDOW( wdg->window )); } | |
184 | |
185 void gtkShow( int type,char * param ) | |
186 { | |
187 switch( type ) | |
188 { | |
189 case evEqualizer: | |
190 ShowEqualizer(); | |
191 gtkSetLayer( Equalizer ); | |
192 break; | |
193 case evSkinBrowser: | |
194 ShowSkinBrowser(); | |
195 // gtkClearList( SkinList ); | |
196 if ( gtkFillSkinList( sbMPlayerPrefixDir ) && | |
32847
12ae3b893c59
Remove support for skins directories using the obsolete name 'Skin'.
ib
parents:
32741
diff
changeset
|
197 gtkFillSkinList( sbMPlayerDirInHome ) ) |
23077 | 198 { |
199 gtkSetDefaultToCList( SkinList,param ); | |
200 gtk_clist_sort( GTK_CLIST( SkinList ) ); | |
201 gtk_widget_show( SkinBrowser ); | |
202 gtkSetLayer( SkinBrowser ); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
203 } |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
204 else |
23077 | 205 { |
206 gtk_widget_destroy( SkinBrowser ); | |
207 gtkMessageBox( GTK_MB_ERROR,"Skin dirs not found ... Please install skins." ); | |
208 } | |
209 break; | |
210 case evPreferences: | |
211 ShowPreferences(); | |
212 break; | |
213 case evPlayList: | |
214 ShowPlayList(); | |
215 gtkSetLayer( PlayList ); | |
216 break; | |
217 case evLoad: | |
218 ShowFileSelect( fsVideoSelector,0 ); | |
219 gtkSetLayer( fsFileSelect ); | |
220 break; | |
221 case evFirstLoad: | |
222 ShowFileSelect( fsVideoSelector,0 ); | |
223 gtkSetLayer( fsFileSelect ); | |
224 break; | |
225 case evLoadSubtitle: | |
226 ShowFileSelect( fsSubtitleSelector,0 ); | |
227 gtkSetLayer( fsFileSelect ); | |
228 break; | |
229 case evLoadAudioFile: | |
230 ShowFileSelect( fsAudioSelector,0 ); | |
231 gtkSetLayer( fsFileSelect ); | |
232 break; | |
233 case evAbout: | |
234 ShowAboutBox(); | |
235 gtkSetLayer( About ); | |
236 break; | |
237 case evShowPopUpMenu: | |
238 gtkPopupMenu=evNone; | |
239 gtkPopupMenuParam=0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
240 if ( PopUpMenu ) |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
241 { |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
242 gtk_widget_hide( PopUpMenu ); |
23077 | 243 gtk_widget_destroy( PopUpMenu ); |
244 } | |
245 PopUpMenu=create_PopUpMenu(); | |
246 gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 ); | |
247 break; | |
248 case evHidePopUpMenu: | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
249 if ( PopUpMenu ) |
23077 | 250 { |
251 gtk_widget_hide( PopUpMenu ); | |
252 gtk_widget_destroy( PopUpMenu ); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
253 PopUpMenu=NULL; |
23077 | 254 } |
255 break; | |
256 case evPlayNetwork: | |
257 ShowURLDialogBox(); | |
258 gtkSetLayer( URL ); | |
259 break; | |
260 } | |
261 } |