2 * This file is part of MPlayer.
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.
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.
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.
22 #include <sys/types.h>
29 #include <gdk/gdkprivate.h>
30 #include <gdk/gdkkeysyms.h>
41 #include "gui/wm/ws.h"
48 GtkWidget
* PopUpMenu
= NULL
;
50 GtkWidget
* WarningPixmap
;
51 GtkWidget
* ErrorPixmap
;
54 int gtkPopupMenuParam
= 0;
55 int gtkInitialized
= 0;
61 #include "gtk/about.h"
64 #include "gtk/gtk_url.h"
67 #include "pixmaps/MPlayer_mini.xpm"
69 // --- init & close gtk
71 GdkPixmap
* gtkIcon
= NULL
;
72 GdkBitmap
* gtkIconMask
= NULL
;
78 mp_dbg( MSGT_GPLAYER
,MSGL_DBG2
,"[widget] init GTK ...\n" );
80 gtk_disable_setlocale();
83 // gdk_set_use_xshm( TRUE );
87 win
=gtk_window_new( GTK_WINDOW_TOPLEVEL
);
90 gtkIcon
=gdk_pixmap_colormap_create_from_xpm_d( win
->window
,gdk_colormap_get_system(),>kIconMask
,&win
->style
->bg
[GTK_STATE_NORMAL
],MPlayer_mini_xpm
);
92 guiIcon
=GDK_WINDOW_XWINDOW( gtkIcon
);
93 guiIconMask
=GDK_WINDOW_XWINDOW( gtkIconMask
);
95 gtk_widget_destroy( win
);
101 void gtkAddIcon( GtkWidget
* window
)
102 { wsSetIcon( gdk_display
,GDK_WINDOW_XWINDOW( window
->window
),guiIcon
,guiIconMask
); }
104 void gtkClearList( GtkWidget
* list
)
105 { gtk_clist_clear( GTK_CLIST( list
) ); }
107 int gtkFindCList( GtkWidget
* list
,char * item
)
111 for( t
=0,j
=0;j
<GTK_CLIST( list
)->rows
;j
++ )
113 gtk_clist_get_text( GTK_CLIST( list
),j
,0,&tmpstr
);
114 if ( !strcmp( tmpstr
,item
) ) return j
;
119 void gtkSetDefaultToCList( GtkWidget
* list
,char * item
)
122 if ( ( i
=gtkFindCList( list
,item
) ) > -1 ) gtk_clist_select_row( GTK_CLIST( list
),i
,0 );
125 void gtkEventHandling( void )
128 for( i
=0;i
< 25;i
++ ) gtk_main_iteration_do( 0 );
133 void gtkMessageBox( int type
,const gchar
* str
)
135 if ( !gtkInitialized
) return;
136 ShowMessageBox( str
);
137 gtk_label_set_text( GTK_LABEL( gtkMessageBoxText
),str
);
138 /* enable linewrapping by alex */
139 // GTK_LABEL(gtkMessageBoxText)->max_width = 80;
140 if (strlen(str
) > 80)
141 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText
), TRUE
);
143 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText
), FALSE
);
147 gtk_window_set_title( GTK_WINDOW( MessageBox
),MSGTR_MSGBOX_LABEL_FatalError
);
148 gtk_widget_hide( WarningPixmap
);
149 gtk_widget_show( ErrorPixmap
);
152 gtk_window_set_title( GTK_WINDOW( MessageBox
),MSGTR_MSGBOX_LABEL_Error
);
153 gtk_widget_hide( WarningPixmap
);
154 gtk_widget_show( ErrorPixmap
);
157 gtk_window_set_title( GTK_WINDOW( MessageBox
),MSGTR_MSGBOX_LABEL_Warning
);
158 gtk_widget_show( WarningPixmap
);
159 gtk_widget_hide( ErrorPixmap
);
162 gtk_widget_show( MessageBox
);
163 gtkSetLayer( MessageBox
);
164 if ( type
== GTK_MB_FATAL
)
165 while ( MessageBox
) gtk_main_iteration_do( 0 );
168 void gtkSetLayer( GtkWidget
* wdg
)
170 wsSetLayer( gdk_display
,GDK_WINDOW_XWINDOW( wdg
->window
),appMPlayer
.subWindow
.isFullScreen
);
174 void gtkActive( GtkWidget
* wdg
)
175 { wsMoveTopWindow( gdk_display
,GDK_WINDOW_XWINDOW( wdg
->window
)); }
177 void gtkShow( int type
,char * param
)
183 gtkSetLayer( Equalizer
);
187 // gtkClearList( SkinList );
188 if ( gtkFillSkinList( sbMPlayerPrefixDir
) &&
189 gtkFillSkinList( sbMPlayerPrefixDir_obsolete
) &&
190 gtkFillSkinList( sbMPlayerDirInHome
) &&
191 gtkFillSkinList( sbMPlayerDirInHome_obsolete
) )
193 gtkSetDefaultToCList( SkinList
,param
);
194 gtk_clist_sort( GTK_CLIST( SkinList
) );
195 gtk_widget_show( SkinBrowser
);
196 gtkSetLayer( SkinBrowser
);
200 gtk_widget_destroy( SkinBrowser
);
201 gtkMessageBox( GTK_MB_ERROR
,"Skin dirs not found ... Please install skins." );
209 gtkSetLayer( PlayList
);
212 ShowFileSelect( fsVideoSelector
,0 );
213 gtkSetLayer( fsFileSelect
);
216 ShowFileSelect( fsVideoSelector
,0 );
217 gtkSetLayer( fsFileSelect
);
220 ShowFileSelect( fsSubtitleSelector
,0 );
221 gtkSetLayer( fsFileSelect
);
223 case evLoadAudioFile
:
224 ShowFileSelect( fsAudioSelector
,0 );
225 gtkSetLayer( fsFileSelect
);
229 gtkSetLayer( About
);
231 case evShowPopUpMenu
:
236 gtk_widget_hide( PopUpMenu
);
237 gtk_widget_destroy( PopUpMenu
);
239 PopUpMenu
=create_PopUpMenu();
240 gtk_menu_popup( GTK_MENU( PopUpMenu
),NULL
,NULL
,NULL
,NULL
,0,0 );
242 case evHidePopUpMenu
:
245 gtk_widget_hide( PopUpMenu
);
246 gtk_widget_destroy( PopUpMenu
);