Mercurial > mplayer.hg
annotate gui/mplayer/widgets.c @ 33538:64e43eb13ebf
Cosmetic: Format to MPlayer coding style.
author | ib |
---|---|
date | Thu, 16 Jun 2011 12:30:24 +0000 |
parents | 7ced3616af42 |
children | 107084241b00 |
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 #include "play.h" | |
46 #include "gtk/fs.h" | |
47 | |
33538 | 48 GtkWidget *PopUpMenu = NULL; |
23077 | 49 |
33538 | 50 GtkWidget *WarningPixmap; |
51 GtkWidget *ErrorPixmap; | |
23077 | 52 |
33538 | 53 int gtkPopupMenu = 0; |
23077 | 54 int gtkPopupMenuParam = 0; |
33538 | 55 int gtkInitialized = 0; |
23077 | 56 |
57 #include "gtk/sb.h" | |
58 #include "gtk/pl.h" | |
59 #include "gtk/fs.h" | |
60 #include "gtk/mb.h" | |
61 #include "gtk/about.h" | |
62 #include "gtk/opts.h" | |
30531
704903d34069
Rename gui/mplayer/gtk/menu.[ch] --> gui/mplayer/gtk/gtkmenu.[ch].
diego
parents:
29263
diff
changeset
|
63 #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
|
64 #include "gtk/gtk_url.h" |
23077 | 65 #include "gtk/eq.h" |
66 | |
33484
4f940d7917f0
Provide a desktop icon of reasonable size (48x48) and quality.
ib
parents:
33466
diff
changeset
|
67 #include "pixmaps/mplayer.xpm" |
23077 | 68 |
69 // --- init & close gtk | |
70 | |
33529 | 71 guiIcon_t guiIcon; |
23077 | 72 |
33538 | 73 void gtkInit(void) |
23077 | 74 { |
33538 | 75 int argc = 0; |
76 char *arg[3], **argv = arg; | |
77 GdkPixmap *gdkIcon; | |
78 GdkBitmap *gdkIconMask; | |
33465 | 79 |
33538 | 80 mp_msg(MSGT_GPLAYER, MSGL_V, "GTK init.\n"); |
33528 | 81 |
33538 | 82 arg[argc++] = GMPlayer; |
33465 | 83 |
33538 | 84 if (mDisplayName) { // MPlayer option '-display' was given |
85 arg[argc++] = "--display"; // Pass corresponding command line arguments to GTK, | |
86 arg[argc++] = mDisplayName; // to open the requested display for the GUI, too. | |
87 } | |
33465 | 88 |
27343 | 89 #ifdef CONFIG_GTK2 |
33538 | 90 gtk_disable_setlocale(); |
23077 | 91 #endif |
33528 | 92 |
33538 | 93 gtk_init(&argc, &argv); |
94 | |
95 gdkIcon = gdk_pixmap_colormap_create_from_xpm_d(NULL, gdk_colormap_get_system(), &gdkIconMask, NULL, (gchar **)mplayer_xpm); | |
23077 | 96 |
33538 | 97 // start up GTK which realizes the pixmaps |
98 gtk_main_iteration_do(FALSE); | |
99 | |
100 guiIcon.normal = GDK_PIXMAP_XID(gdkIcon); | |
101 guiIcon.normal_mask = GDK_PIXMAP_XID(gdkIconMask); | |
23077 | 102 |
33538 | 103 gtkInitialized = 1; |
104 } | |
23077 | 105 |
33538 | 106 void gtkAddIcon(GtkWidget *window) |
107 { | |
108 wsSetIcon(gdk_display, GDK_WINDOW_XWINDOW(window->window), &guiIcon); | |
109 } | |
23077 | 110 |
33538 | 111 void gtkClearList(GtkWidget *list) |
112 { | |
113 gtk_clist_clear(GTK_CLIST(list)); | |
23077 | 114 } |
115 | |
33538 | 116 int gtkFindCList(GtkWidget *list, char *item) |
23077 | 117 { |
33538 | 118 gint j; |
119 gchar *tmpstr; | |
120 | |
121 for (j = 0; j < GTK_CLIST(list)->rows; j++) { | |
122 gtk_clist_get_text(GTK_CLIST(list), j, 0, &tmpstr); | |
123 | |
124 if (!strcmp(tmpstr, item)) | |
125 return j; | |
126 } | |
127 | |
128 return -1; | |
23077 | 129 } |
130 | |
33538 | 131 void gtkSetDefaultToCList(GtkWidget *list, char *item) |
23077 | 132 { |
33538 | 133 gint i; |
134 | |
135 if ((i = gtkFindCList(list, item)) > -1) | |
136 gtk_clist_select_row(GTK_CLIST(list), i, 0); | |
23077 | 137 } |
138 | |
33538 | 139 void gtkEventHandling(void) |
23077 | 140 { |
33538 | 141 int i; |
142 | |
143 for (i = 0; i < 25; i++) | |
144 gtk_main_iteration_do(0); | |
23077 | 145 } |
146 | |
147 // --- funcs | |
148 | |
33538 | 149 void gtkMessageBox(int type, const gchar *str) |
23077 | 150 { |
33538 | 151 if (!gtkInitialized) |
152 return; | |
153 | |
154 ShowMessageBox(str); | |
155 gtk_label_set_text(GTK_LABEL(gtkMessageBoxText), str); | |
156 | |
157 /* enable linewrapping by alex */ | |
23077 | 158 // GTK_LABEL(gtkMessageBoxText)->max_width = 80; |
33538 | 159 if (strlen(str) > 80) |
160 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText), TRUE); | |
161 else | |
162 gtk_label_set_line_wrap(GTK_LABEL(gtkMessageBoxText), FALSE); | |
163 | |
164 switch (type) { | |
23077 | 165 case GTK_MB_FATAL: |
33538 | 166 gtk_window_set_title(GTK_WINDOW(MessageBox), MSGTR_MSGBOX_LABEL_FatalError); |
167 gtk_widget_hide(WarningPixmap); | |
168 gtk_widget_show(ErrorPixmap); | |
169 break; | |
170 | |
23077 | 171 case GTK_MB_ERROR: |
33538 | 172 gtk_window_set_title(GTK_WINDOW(MessageBox), MSGTR_MSGBOX_LABEL_Error); |
173 gtk_widget_hide(WarningPixmap); | |
174 gtk_widget_show(ErrorPixmap); | |
175 break; | |
176 | |
23077 | 177 case GTK_MB_WARNING: |
33538 | 178 gtk_window_set_title(GTK_WINDOW(MessageBox), MSGTR_MSGBOX_LABEL_Warning); |
179 gtk_widget_show(WarningPixmap); | |
180 gtk_widget_hide(ErrorPixmap); | |
181 break; | |
182 } | |
183 | |
184 gtk_widget_show(MessageBox); | |
185 gtkSetLayer(MessageBox); | |
186 | |
187 if (type == GTK_MB_FATAL) | |
188 while (MessageBox) | |
189 gtk_main_iteration_do(0); | |
23077 | 190 } |
191 | |
33538 | 192 void gtkSetLayer(GtkWidget *wdg) |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27343
diff
changeset
|
193 { |
33538 | 194 wsSetLayer(gdk_display, GDK_WINDOW_XWINDOW(wdg->window), appMPlayer.subWindow.isFullScreen); |
195 gtkActive(wdg); | |
196 } | |
197 | |
198 void gtkActive(GtkWidget *wdg) | |
199 { | |
200 wsMoveTopWindow(gdk_display, GDK_WINDOW_XWINDOW(wdg->window)); | |
23077 | 201 } |
202 | |
33538 | 203 void gtkShow(int type, char *param) |
23077 | 204 { |
33538 | 205 switch (type) { |
206 case evEqualizer: | |
207 ShowEqualizer(); | |
208 gtkSetLayer(Equalizer); | |
209 break; | |
210 | |
211 case evSkinBrowser: | |
212 ShowSkinBrowser(); | |
213 | |
23077 | 214 // gtkClearList( SkinList ); |
33538 | 215 if (gtkFillSkinList(sbMPlayerPrefixDir) && |
216 gtkFillSkinList(sbMPlayerDirInHome)) { | |
217 gtkSetDefaultToCList(SkinList, param); | |
218 gtk_clist_sort(GTK_CLIST(SkinList)); | |
219 gtk_widget_show(SkinBrowser); | |
220 gtkSetLayer(SkinBrowser); | |
221 } else { | |
222 gtk_widget_destroy(SkinBrowser); | |
223 gtkMessageBox(GTK_MB_ERROR, "Skin dirs not found ... Please install skins."); | |
224 } | |
225 | |
23077 | 226 break; |
33538 | 227 |
228 case evPreferences: | |
23077 | 229 ShowPreferences(); |
230 break; | |
33538 | 231 |
232 case evPlayList: | |
23077 | 233 ShowPlayList(); |
33538 | 234 gtkSetLayer(PlayList); |
23077 | 235 break; |
33538 | 236 |
237 case evLoad: | |
238 ShowFileSelect(fsVideoSelector, 0); | |
239 gtkSetLayer(fsFileSelect); | |
23077 | 240 break; |
33538 | 241 |
242 case evFirstLoad: | |
243 ShowFileSelect(fsVideoSelector, 0); | |
244 gtkSetLayer(fsFileSelect); | |
23077 | 245 break; |
33538 | 246 |
247 case evLoadSubtitle: | |
248 ShowFileSelect(fsSubtitleSelector, 0); | |
249 gtkSetLayer(fsFileSelect); | |
23077 | 250 break; |
33538 | 251 |
252 case evLoadAudioFile: | |
253 ShowFileSelect(fsAudioSelector, 0); | |
254 gtkSetLayer(fsFileSelect); | |
255 break; | |
256 | |
257 case evAbout: | |
258 ShowAboutBox(); | |
259 gtkSetLayer(About); | |
23077 | 260 break; |
33538 | 261 |
262 case evShowPopUpMenu: | |
263 gtkPopupMenu = evNone; | |
264 gtkPopupMenuParam = 0; | |
265 | |
266 if (PopUpMenu) { | |
267 gtk_widget_hide(PopUpMenu); | |
268 gtk_widget_destroy(PopUpMenu); | |
269 } | |
270 | |
271 PopUpMenu = create_PopUpMenu(); | |
272 gtk_menu_popup(GTK_MENU(PopUpMenu), NULL, NULL, NULL, NULL, 0, 0); | |
23077 | 273 break; |
33538 | 274 |
275 case evHidePopUpMenu: | |
276 | |
277 if (PopUpMenu) { | |
278 gtk_widget_hide(PopUpMenu); | |
279 gtk_widget_destroy(PopUpMenu); | |
280 PopUpMenu = NULL; | |
281 } | |
282 | |
23077 | 283 break; |
33538 | 284 |
285 case evPlayNetwork: | |
286 ShowURLDialogBox(); | |
287 gtkSetLayer(URL); | |
288 break; | |
289 } | |
23077 | 290 } |