annotate gui/dialog/fileselect.c @ 35959:acec130e2ab2

Free list and hash table data on widget destruction. This immediately releases the memory and doesn't wait until next widget construction to free old data then.
author ib
date Sun, 24 Mar 2013 14:16:34 +0000
parents b522bc621d3c
children 13d09ba17e97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
1 /*
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
2 * This file is part of MPlayer.
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
3 *
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
7 * (at your option) any later version.
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
8 *
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
12 * GNU General Public License for more details.
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
13 *
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
17 */
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
18
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
19 #include <stdlib.h>
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
20 #include <stdio.h>
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
21 #include <string.h>
35903
389d43c448b3 Add missing strings.h #includes for strcasecmp().
diego
parents: 35852
diff changeset
22 #include <strings.h>
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
23 #include <sys/stat.h>
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
24 #include <glob.h>
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
25 #include <unistd.h>
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
26
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
27 #include "config.h"
35772
3fec1d4b2736 Relocate uiMainEvent() prototype.
ib
parents: 35770
diff changeset
28 #include "gui/ui/actions.h"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
29
35526
3c901704a27c Rebuild GUI directory structure.
ib
parents: 35525
diff changeset
30 #include "pixmaps/up.xpm"
3c901704a27c Rebuild GUI directory structure.
ib
parents: 35525
diff changeset
31 #include "pixmaps/dir.xpm"
3c901704a27c Rebuild GUI directory structure.
ib
parents: 35525
diff changeset
32 #include "pixmaps/file.xpm"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
33
35525
e27855a45128 Rebuild GUI directory structure.
ib
parents: 35521
diff changeset
34 #include "gui/app/app.h"
e27855a45128 Rebuild GUI directory structure.
ib
parents: 35521
diff changeset
35 #include "gui/app/gui.h"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
36 #include "gui/interface.h"
35350
ee265b18d653 Rename import_file_into_gui() add_to_gui_playlist().
ib
parents: 35348
diff changeset
37 #include "gui/util/list.h"
33739
9f6d46d325de Remove gfree() from interface.c.
ib
parents: 33737
diff changeset
38 #include "gui/util/mem.h"
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33731
diff changeset
39 #include "gui/util/string.h"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
40 #include "help_mp.h"
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
41 #include "mpcommon.h"
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
42 #include "stream/stream.h"
33751
c28c967e40e9 Replace numeric constant fsPersistant_MaxPos for fsHistory array size.
ib
parents: 33740
diff changeset
43 #include "libavutil/common.h"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
44
35529
8ad4d2fb46e8 Rebuild GUI directory structure.
ib
parents: 35528
diff changeset
45 #include "dialog.h"
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
46 #include "fileselect.h"
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
47 #include "preferences.h"
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
48 #include "tools.h"
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
49
35926
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
50 #define CFG_OLD_FILESELECT 1
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
51 #include "gui/app/cfg-old.c"
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
52
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
53 #ifndef __linux__
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
54 #define get_current_dir_name() getcwd(NULL, PATH_MAX)
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
55 #else
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
56 char * get_current_dir_name( void );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
57 #endif
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
58
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
59 char * fsSelectedFile = NULL;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
60 unsigned char * fsThatDir = ".";
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
61 const gchar * fsFilter = "*";
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
62
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
63 int fsType = 0;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
64
34364
b02b6ad1b7fb Remember the lastly selected file in file selector.
ib
parents: 34351
diff changeset
65 static gint fsCurrFNameListSelected, fsLastFNameListSelected;
b02b6ad1b7fb Remember the lastly selected file in file selector.
ib
parents: 34351
diff changeset
66
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
67 char * fsVideoFilterNames[][2] =
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
68 {
34857
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
69 { MSGTR_Filter_AVIFiles, "*.avi" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
70 { MSGTR_Filter_DivXFiles, "*.divx" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
71 { MSGTR_Filter_FlashVideo, "*.flv" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
72 { MSGTR_Filter_MP3Files, "*.mp3" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
73 { MSGTR_Filter_MP4Files, "*.aac,*.f4a,*.f4b,*.f4v,*.m4a,*.m4b,*.m4v,*.mp4" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
74 { MSGTR_Filter_MPEGFiles, "*.m1v,*.m2v,*.mp2,*.mpe,*.mpeg,*.mpg,*.mpga,*.vdr,*.vob" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
75 { MSGTR_Filter_MP2TS, "*.bdm,*.bdmv,*.clpi,*.cpi,*.m2t,*.m2ts,*.mpl,*.mpls,*.mts,*.rec,*.trp,*.ts,*.ty" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
76 { MSGTR_Filter_MatroskaMedia, "*.mka,*.mkv" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
77 { MSGTR_Filter_OGGMedia, "*.oga,*.ogg,*.ogm,*.ogv,*.ogx,*.spx" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
78 { MSGTR_Filter_QTMedia, "*.moov,*.mov,*.qt,*.qtvr" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
79 { MSGTR_Filter_RNMedia, "*.ra,*.rm,*.rmvb,*.rv" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
80 { MSGTR_Filter_VideoCDImages, "*.bin" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
81 { MSGTR_Filter_WAVFiles, "*.wav" },
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
82 { MSGTR_Filter_WindowsMedia, "*.asf,*.wma,*.wmv" },
34869
30fad98fad6e Add Windows Media Station file (application/x-netshow-channel) support.
ib
parents: 34868
diff changeset
83 { MSGTR_Filter_Playlists, "*.asx,*.m3u,*.m3u8,*.nsc,*.pls,*.ram,*.smi,*.smil,*.sml,*.vlc,*.wax,*.wmx,*.wvx" },
35142
1accad685563 Add TAK file extension to the audio file filter of the file selector.
ib
parents: 34892
diff changeset
84 { MSGTR_Filter_AllAudioFiles, "*.aac,*.ac3,*.aif,*.aifc,*.aiff,*.amr,*.ape,*.au,*.awb,*.cdg,*.f4a,*.f4b,*.flac,*.m4a,*.m4b,*.mka,*.mp+,*.mp2,*.mp3,*.mpc,*.mpga,*.mpp,*.nsa,*.oga,*.ogg,*.pcm,*.qcp,*.ra,*.snd,*.spx,*.tak,*.voc,*.vqf,*.w64,*.wav,*.wma,*.wv,*.wvp" },
34892
b538985dfaac Add some file extensions to the video file filter of the file selector.
ib
parents: 34871
diff changeset
85 { MSGTR_Filter_AllVideoFiles, "*.264,*.3g2,*.3ga,*.3gp,*.3gp2,*.3gpp,*.3gpp2,*.asf,*.avi,*.bdm,*.bdmv,*.bin,*.clpi,*.cpi,*.cpk,*.divx,*.dv,*.f4v,*.flc,*.fli,*.flv,*.m1v,*.m2t,*.m2ts,*.m2v,*.m4v,*.mjpg,*.mkv,*.moov,*.mov,*.mp2,*.mp4,*.mpe,*.mpeg,*.mpg,*.mpl,*.mpls,*.mts,*.mxf,*.nsv,*.nuv,*.ogg,*.ogm,*.ogv,*.ogx,*.pva,*.qt,*.qtvr,*.rec,*.rm,*.rmvb,*.roq,*.rv,*.spl,*.str,*.swf,*.trp,*.ts,*.ty,*.vdr,*.viv,*.vivo,*.vob,*.webm,*.wmv,*.y4m" },
34857
cceef8552b0c Enable translation of video and audio file filter items.
ib
parents: 34856
diff changeset
86 { MSGTR_Filter_AllFiles, "*" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
87 { NULL,NULL }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
88 };
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
89 int fsLastVideoFilterSelected = -1;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
90
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
91 char * fsSubtitleFilterNames[][2] =
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
92 {
34849
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
93 { "AQTitle (*.aqt)", "*.aqt" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
94 { "Advanced SubStation Alpha (*.ass)", "*.ass" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
95 { "JACOSub (*.jss) ", "*.jss" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
96 { "RealText (*.rt) ", "*.rt" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
97 { "SAMI (*.smi)", "*.smi" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
98 { "SubRip (*.srt)", "*.srt" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
99 { "SubStation Alpha (*.ssa)", "*.ssa" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
100 { "MicroDVD (*.sub)", "*.sub" },
8e39cb975b4e Update subtitle file filter for file selector.
ib
parents: 34838
diff changeset
101 { "Text (*.txt)", "*.txt" },
34868
1a07230149a0 Revise UTF-8 encoded subtitle file filter for file selector.
ib
parents: 34867
diff changeset
102 { MSGTR_Filter_UTF8Subtitles, "*.utf,*.utf-8,*.utf8" },
34850
470c696cc5cf Enable translation of subtitle file filter items.
ib
parents: 34849
diff changeset
103 { MSGTR_Filter_AllSubtitles, "*.aqt,*.ass,*.jss,*.rt,*.smi,*.srt,*.ssa,*.sub,*.txt,*.utf" },
470c696cc5cf Enable translation of subtitle file filter items.
ib
parents: 34849
diff changeset
104 { MSGTR_Filter_AllFiles, "*" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
105 { NULL,NULL }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
106 };
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
107 int fsLastSubtitleFilterSelected = -1;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
108
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
109 char * fsOtherFilterNames[][2] =
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
110 {
34854
5f876a4fa781 Enable translation of other file filter item.
ib
parents: 34853
diff changeset
111 { MSGTR_Filter_AllFiles, "*" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
112 { NULL,NULL }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
113 };
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
114
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
115 char * fsAudioFileNames[][2] =
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
116 {
34853
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
117 { MSGTR_Filter_DDRawAudio, "*.ac3,*.pcm" },
34856
707029278e04 Cosmetic: Arrange all file extensions alphabetically.
ib
parents: 34855
diff changeset
118 { MSGTR_Filter_MPEGAudio, "*.aac,*.f4a,*.m4a,*.mp2,*.mp3,*.mpga" },
34853
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
119 { MSGTR_Filter_MatroskaAudio, "*.mka" },
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
120 { MSGTR_Filter_OGGAudio, "*.oga,*.ogg,*.spx" },
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
121 { MSGTR_Filter_WAVAudio, "*.wav" },
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
122 { MSGTR_Filter_WMAAudio, "*.wma" },
34856
707029278e04 Cosmetic: Arrange all file extensions alphabetically.
ib
parents: 34855
diff changeset
123 { MSGTR_Filter_AllAudioFiles, "*.aac,*.ac3,*.f4a,*.m4a,*.mka,*.mp2,*.mp3,*.mpga,*.oga,*.ogg,*.pcm,*.spx,*.wav,*.wma" },
34853
f6f1cfdaaccf Enable translation of external audio file filter items.
ib
parents: 34852
diff changeset
124 { MSGTR_Filter_AllFiles, "*" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
125 { NULL, NULL }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
126 };
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
127 int fsLastAudioFilterSelected = -1;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
128
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
129 char * fsFontFileNames[][2] =
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
130 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
131 #ifdef CONFIG_FREETYPE
34851
4c5ef823ee0f Enable translation of font file filter items.
ib
parents: 34850
diff changeset
132 { MSGTR_Filter_TTF, "*.ttf" },
4c5ef823ee0f Enable translation of font file filter items.
ib
parents: 34850
diff changeset
133 { MSGTR_Filter_Type1, "*.pfb" },
34856
707029278e04 Cosmetic: Arrange all file extensions alphabetically.
ib
parents: 34855
diff changeset
134 { MSGTR_Filter_AllFonts, "*.pfb,*.ttf" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
135 #else
34851
4c5ef823ee0f Enable translation of font file filter items.
ib
parents: 34850
diff changeset
136 { MSGTR_Filter_FontFiles, "*.desc" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
137 #endif
34851
4c5ef823ee0f Enable translation of font file filter items.
ib
parents: 34850
diff changeset
138 { MSGTR_Filter_AllFiles, "*" },
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
139 { NULL,NULL }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
140 };
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
141 int fsLastFontFilterSelected = -1;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
142
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
143 GtkWidget * fsFileNamesList;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
144 GtkWidget * fsFNameList;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
145 GtkWidget * fsFileSelect = NULL;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
146 GdkColormap * fsColorMap;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
147 GtkWidget * fsOk;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
148 GtkWidget * fsUp;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
149 GtkWidget * fsCancel;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
150 GtkWidget * fsCombo4;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
151 GtkWidget * fsPathCombo;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
152 GList * fsList_items = NULL;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
153 GList * fsTopList_items = NULL;
35926
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
154 GHashTable * fsPathTable;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
155 GtkWidget * List;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
156 GtkWidget * fsFilterCombo;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
157
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
158 GtkStyle * style;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
159 GdkPixmap * dpixmap;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
160 GdkPixmap * fpixmap;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
161 GdkBitmap * dmask;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
162 GdkBitmap * fmask;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
163
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
164 static char * get_current_dir_name_utf8( void )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
165 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
166 char * dir, * utf8dir;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
167 dir = get_current_dir_name();
35926
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
168 utf8dir = g_filename_display_name( dir );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
169 free( dir );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
170 return utf8dir;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
171 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
172
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
173 static void clist_append_fname(GtkWidget * list, char *fname,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
174 GdkPixmap *pixmap, GdkPixmap *mask) {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
175 gint pos;
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
176 gchar *str[2];
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
177 str[0] = NULL;
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
178 str[1] = g_filename_display_name(fname);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
179 pos = gtk_clist_append(GTK_CLIST(list), str);
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
180 gtk_clist_set_row_data_full(GTK_CLIST(list), pos, strdup(fname), free);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
181 gtk_clist_set_pixmap(GTK_CLIST(list), pos, 0, pixmap, mask);
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
182 g_free(str[1]);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
183 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
184
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
185 static void CheckDir( GtkWidget * list )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
186 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
187 struct stat fs;
34838
716f2ddf8773 Use unsigned int instead of type casting.
ib
parents: 34837
diff changeset
188 unsigned int i, j, fn;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
189 glob_t gg;
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
190 gchar *filter, **fext;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
191
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
192 if ( !fsFilter[0] ) return;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
193
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
194 gtk_widget_hide( list );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
195 gtk_clist_clear( GTK_CLIST( list ) );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
196
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
197 clist_append_fname(list, ".", dpixmap, dmask);
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
198 clist_append_fname(list, "..", dpixmap, dmask);
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
199
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
200 glob( "*",0,NULL,&gg );
34838
716f2ddf8773 Use unsigned int instead of type casting.
ib
parents: 34837
diff changeset
201 for( i=0;i<gg.gl_pathc;i++ )
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
202 {
35399
4d7adee0a7ba Check stat() return value before utilizing its information.
ib
parents: 35353
diff changeset
203 if( ( stat( gg.gl_pathv[i],&fs ) != 0 ) || !S_ISDIR( fs.st_mode ) ) continue;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
204 clist_append_fname(list, gg.gl_pathv[i], dpixmap, dmask);
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
205 }
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
206
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
207 for (fn = 1, i = 0; fsFilter[i]; i++)
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
208 if (fsFilter[i] == ',') fn++;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
209
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
210 filter = g_strdup(fsFilter);
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
211 fext = calloc(fn, sizeof(gchar *));
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
212
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
213 if (filter && fext)
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
214 {
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
215 for (j = 0, i = 0; filter[i]; i++)
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
216 {
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
217 if (filter[i] == '.') fext[j] = filter + i;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
218
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
219 if (filter[i] == ',')
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
220 {
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
221 filter[i] = 0;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
222 j++;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
223 }
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
224 }
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
225
34838
716f2ddf8773 Use unsigned int instead of type casting.
ib
parents: 34837
diff changeset
226 for( i=0;i<gg.gl_pathc;i++ )
34837
b56cc3fd7b8a Cosmetic: Adjust indent.
ib
parents: 34836
diff changeset
227 {
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
228 char *ext;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
229
35399
4d7adee0a7ba Check stat() return value before utilizing its information.
ib
parents: 35353
diff changeset
230 if( ( stat( gg.gl_pathv[i],&fs ) != 0 ) || S_ISDIR( fs.st_mode ) ) continue;
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
231
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
232 ext = strrchr(gg.gl_pathv[i], '.');
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
233
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
234 if (ext || !fext[0])
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
235 {
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
236 for (j = 0; j < fn; j++)
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
237 {
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
238 if (fext[j] == NULL || strcasecmp(fext[j], ext) == 0)
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
239 {
34837
b56cc3fd7b8a Cosmetic: Adjust indent.
ib
parents: 34836
diff changeset
240 clist_append_fname(list, gg.gl_pathv[i], fpixmap, fmask);
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
241 break;
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
242 }
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
243 }
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
244 }
34837
b56cc3fd7b8a Cosmetic: Adjust indent.
ib
parents: 34836
diff changeset
245 }
34836
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
246 }
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
247
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
248 free(fext);
34c835d22130 Improve filter on file selector's file list.
ib
parents: 34684
diff changeset
249 g_free(filter);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
250 globfree( &gg );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
251
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
252 gtk_clist_set_column_width( GTK_CLIST( list ),0,17 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
253 gtk_widget_show( list );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
254 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
255
35940
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
256 static void fs_AddPathUtf8 (const char *name, GtkPositionType pos)
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
257 {
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
258 gchar *utf8name;
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
259
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
260 utf8name = g_filename_display_name(name);
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
261
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
262 if (pos == GTK_POS_TOP) fsTopList_items = g_list_prepend(fsTopList_items, utf8name);
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
263 else fsTopList_items = g_list_append(fsTopList_items, utf8name);
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
264
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
265 g_hash_table_insert(fsPathTable, strdup(utf8name), strdup(name));
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
266 }
0d59a87d2e28 Transfer almost identical code into a function.
ib
parents: 35939
diff changeset
267
35958
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
268 static void HideFileSelect( void )
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
269 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
270 if ( !fsFileSelect ) return;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
271 gtk_widget_hide( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
272 gtk_widget_destroy( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
273 fsFileSelect=NULL;
34364
b02b6ad1b7fb Remember the lastly selected file in file selector.
ib
parents: 34351
diff changeset
274 fsLastFNameListSelected = fsCurrFNameListSelected;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
275 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
276
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
277 static void fs_PersistantHistory( char * subject )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
278 {
33751
c28c967e40e9 Replace numeric constant fsPersistant_MaxPos for fsHistory array size.
ib
parents: 33740
diff changeset
279 unsigned int i;
35847
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
280 char * entry;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
281
35848
19863172756d Change return condition in fs_PersistantHistory().
ib
parents: 35847
diff changeset
282 if ( !subject ) return;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
283
33751
c28c967e40e9 Replace numeric constant fsPersistant_MaxPos for fsHistory array size.
ib
parents: 33740
diff changeset
284 for ( i=0;i < FF_ARRAY_ELEMS(fsHistory);i++ )
35849
4d8a46729aea Simplify comparison.
ib
parents: 35848
diff changeset
285 if ( gstrcmp( fsHistory[i],subject ) == 0 )
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
286 {
35847
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
287 entry=fsHistory[i];
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
288 break;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
289 }
35850
95ff5695a70b Change condition.
ib
parents: 35849
diff changeset
290 if ( i == FF_ARRAY_ELEMS(fsHistory) )
35847
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
291 {
35848
19863172756d Change return condition in fs_PersistantHistory().
ib
parents: 35847
diff changeset
292 entry=strdup( subject );
35852
1eb092275eb8 Replace nfree() by free().
ib
parents: 35851
diff changeset
293 free( fsHistory[--i] );
35847
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
294 }
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
295 for ( ;i;i-- ) fsHistory[i]=fsHistory[i - 1];
25af0fce844f Keep GUI history entries in order.
ib
parents: 35833
diff changeset
296 fsHistory[0]=entry;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
297 }
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34518
diff changeset
298 /* ----------------------------------------------- */
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
299
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
300 static void fs_fsFilterCombo_activate( GtkEntry * entry,
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
301 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
302 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
303 fsFilter=gtk_entry_get_text( GTK_ENTRY( user_data ) );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
304 CheckDir( fsFNameList );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
305 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
306
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
307 static void fs_fsFilterCombo_changed( GtkEditable * editable,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
308 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
309 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
310 const char * str;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
311 int i;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
312
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
313 str=gtk_entry_get_text( GTK_ENTRY(user_data ) );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
314
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
315 switch ( fsType )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
316 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
317 case fsVideoSelector:
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
318 for( i=0;fsVideoFilterNames[i][0];i++ )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
319 if( !strcmp( str,fsVideoFilterNames[i][0] ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
320 { fsFilter=fsVideoFilterNames[i][1]; fsLastVideoFilterSelected = i; break; }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
321 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
322 case fsSubtitleSelector:
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
323 for( i=0;fsSubtitleFilterNames[i][0];i++ )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
324 if( !strcmp( str,fsSubtitleFilterNames[i][0] ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
325 { fsFilter=fsSubtitleFilterNames[i][1]; fsLastSubtitleFilterSelected = i; break; }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
326 break;
33776
4fae8b19fbbd Remove member Othername from struct guiInterface_t.
ib
parents: 33763
diff changeset
327 /* case fsOtherSelector:
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
328 for( i=0;fsOtherFilterNames[i][0];i++ )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
329 if( !strcmp( str,fsOtherFilterNames[i][0] ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
330 { fsFilter=fsOtherFilterNames[i][1]; break; }
33776
4fae8b19fbbd Remove member Othername from struct guiInterface_t.
ib
parents: 33763
diff changeset
331 break;*/
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
332 case fsAudioSelector:
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
333 for( i=0;fsAudioFileNames[i][0];i++ )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
334 if( !strcmp( str,fsAudioFileNames[i][0] ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
335 { fsFilter=fsAudioFileNames[i][1]; fsLastAudioFilterSelected = i; break; }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
336 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
337 case fsFontSelector:
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
338 for( i=0;fsFontFileNames[i][0];i++ )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
339 if( !strcmp( str,fsFontFileNames[i][0] ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
340 { fsFilter=fsFontFileNames[i][1]; fsLastFontFilterSelected = i; break; }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
341 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
342 default: return;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
343 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
344 CheckDir( fsFNameList );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
345 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
346
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
347 static void fs_fsPathCombo_activate( GtkEntry * entry,
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
348 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
349 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
350 const unsigned char * str;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
351 gchar * dirname;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
352
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
353 str=gtk_entry_get_text( GTK_ENTRY( user_data ) );
35926
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
354 dirname=g_hash_table_lookup(fsPathTable, str);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
355 if ( chdir( dirname ? (const unsigned char *)dirname : str ) != -1 ) CheckDir( fsFNameList );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
356 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
357
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
358 static void fs_fsPathCombo_changed( GtkEditable * editable,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
359 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
360 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
361 const unsigned char * str;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
362 gchar * dirname;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
363
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
364 str=gtk_entry_get_text( GTK_ENTRY( user_data ) );
35926
eab9c3e8a565 Support mixed filename encodings.
ib
parents: 35925
diff changeset
365 dirname=g_hash_table_lookup(fsPathTable, str);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
366 if ( chdir( dirname ? (const unsigned char *)dirname : str ) != -1 ) CheckDir( fsFNameList );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
367 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
368
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
369 static void fs_Up_released( GtkButton * button, gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
370 {
35934
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
371 char *utf8dir;
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
372
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
373 chdir( ".." );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
374 fsSelectedFile=fsThatDir;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
375 CheckDir( fsFNameList );
35934
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
376 utf8dir = get_current_dir_name_utf8();
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
377 gtk_entry_set_text( GTK_ENTRY( fsPathCombo ),(unsigned char *)utf8dir );
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
378 g_free(utf8dir);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
379 return;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
380 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
381
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
382 static void fs_Ok_released( GtkButton * button, gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
383 {
35931
dd2264983633 Make fsSelectedDirectory a local variable.
ib
parents: 35926
diff changeset
384 char * fsSelectedDirectory;
35935
5a953e0b001b Remove pointless code.
ib
parents: 35934
diff changeset
385 int l;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
386 struct stat fs;
35348
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
387 gchar * selected;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
388
35399
4d7adee0a7ba Check stat() return value before utilizing its information.
ib
parents: 35353
diff changeset
389 if( ( stat( fsSelectedFile,&fs ) == 0 ) && S_ISDIR( fs.st_mode ) )
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
390 {
35934
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
391 char *utf8dir;
35401
0c93b5400dc7 Check chdir() return value to avoid race condition.
ib
parents: 35399
diff changeset
392 if ( chdir( fsSelectedFile ) != 0 ) return;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
393 fsSelectedFile=fsThatDir;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
394 CheckDir( fsFNameList );
35934
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
395 utf8dir = get_current_dir_name_utf8();
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
396 gtk_entry_set_text( GTK_ENTRY( fsPathCombo ),(unsigned char *)utf8dir );
445773b8c373 Fix get_current_dir_name_utf8() memory leaks.
ib
parents: 35931
diff changeset
397 g_free(utf8dir);
34364
b02b6ad1b7fb Remember the lastly selected file in file selector.
ib
parents: 34351
diff changeset
398 gtk_widget_grab_focus( fsFNameList );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
399 return;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
400 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
401
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
402 fsSelectedDirectory=(unsigned char *)get_current_dir_name();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
403 switch ( fsType )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
404 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
405 case fsVideoSelector:
34859
203d0d5cac1f Add playlist support to the GUI.
ib
parents: 34857
diff changeset
406 for (l = 0; fsVideoFilterNames[l][0]; l++)
203d0d5cac1f Add playlist support to the GUI.
ib
parents: 34857
diff changeset
407 if (strcmp(fsVideoFilterNames[l][0], MSGTR_Filter_Playlists) == 0) break;
35452
f42cc2361ee4 Cosmetic: Rename uiSetFileName().
ib
parents: 35401
diff changeset
408 uiSetFile( fsSelectedDirectory,fsSelectedFile, fsLastVideoFilterSelected == l ? STREAMTYPE_PLAYLIST : STREAMTYPE_FILE );
35348
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
409 selected = g_strconcat(fsSelectedDirectory, "/", fsSelectedFile, NULL);
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
410 if (selected)
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
411 {
35352
96cda43fe250 Don't unconditionally delete the old playlist.
ib
parents: 35350
diff changeset
412 listMgr(PLAYLIST_DELETE, 0);
35350
ee265b18d653 Rename import_file_into_gui() add_to_gui_playlist().
ib
parents: 35348
diff changeset
413 add_to_gui_playlist(selected, PLAYLIST_ITEM_APPEND);
35348
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
414 g_free(selected);
3aba69339390 Add a file loaded by the GUI to its playlist.
ib
parents: 35142
diff changeset
415 }
33894
b2e63fe7fe17 Remove needless guiInfo member FilenameChanged.
ib
parents: 33787
diff changeset
416 guiInfo.NewPlay=GUI_FILE_NEW; sub_fps=0;
35931
dd2264983633 Make fsSelectedDirectory a local variable.
ib
parents: 35926
diff changeset
417 fs_PersistantHistory( fsSelectedDirectory );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
418 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
419 case fsSubtitleSelector:
33897
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
420 setddup( &guiInfo.SubtitleFilename,fsSelectedDirectory,fsSelectedFile );
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
421 mplayerLoadSubtitle( guiInfo.SubtitleFilename );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
422 break;
33776
4fae8b19fbbd Remove member Othername from struct guiInterface_t.
ib
parents: 33763
diff changeset
423 /* case fsOtherSelector:
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33739
diff changeset
424 setddup( &guiInfo.Othername,fsSelectedDirectory,fsSelectedFile );
33776
4fae8b19fbbd Remove member Othername from struct guiInterface_t.
ib
parents: 33763
diff changeset
425 break;*/
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
426 case fsAudioSelector:
33897
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
427 setddup( &guiInfo.AudioFilename,fsSelectedDirectory,fsSelectedFile );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
428 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
429 case fsFontSelector:
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33739
diff changeset
430 setddup( &font_name,fsSelectedDirectory,fsSelectedFile );
33763
03824cf8728d Cosmetic: Rename two functions that do MPlayer calls.
ib
parents: 33755
diff changeset
431 mplayerLoadFont();
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
432 if ( Preferences ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),font_name );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
433 break;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
434 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
435
35937
f5b0d03fbc3b Swap statements (for cosmetic reasons).
ib
parents: 35936
diff changeset
436 free(fsSelectedDirectory);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
437
35937
f5b0d03fbc3b Swap statements (for cosmetic reasons).
ib
parents: 35936
diff changeset
438 HideFileSelect();
35931
dd2264983633 Make fsSelectedDirectory a local variable.
ib
parents: 35926
diff changeset
439
35773
c688b0dcbe66 Cosmetic: Rename uiMainEvent() uiEvent().
ib
parents: 35772
diff changeset
440 if ( uiLoadPlay ) { uiLoadPlay=False; uiEvent( evPlay,0 ); }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33725
diff changeset
441 else gui( GUI_SET_STATE,(void *) GUI_STOP );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
442 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
443
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
444 static void fs_Cancel_released( GtkButton * button,gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
445 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
446 HideFileSelect();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
447 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
448
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
449 static void fs_fsFNameList_select_row( GtkCList * clist, gint row, gint column,
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
450 GdkEvent * event, gpointer user_data)
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
451 {
34364
b02b6ad1b7fb Remember the lastly selected file in file selector.
ib
parents: 34351
diff changeset
452 fsCurrFNameListSelected = row;
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
453 fsSelectedFile = gtk_clist_get_row_data(clist, row);
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
454 if( event && event->type == GDK_BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
455 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
456
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
457 static gboolean on_FileSelect_key_release_event( GtkWidget * widget,
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
458 GdkEvent * event,
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
459 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
460 {
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
461 if ( GTK_WIDGET_TYPE( widget ) == GTK_TYPE_BUTTON )
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
462 {
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
463 if (event->key.keyval == GDK_Return) gtk_button_released( GTK_BUTTON( widget ) );
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
464 }
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
465 else
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
466 {
34466
a650895d50a5 Use correct data types and common variable names in GTK callback functions.
ib
parents: 34368
diff changeset
467 switch ( event->key.keyval )
34345
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
468 {
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
469 case GDK_Escape:
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
470 gtk_button_released( GTK_BUTTON( fsCancel ) );
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
471 break;
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
472 case GDK_Return:
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
473 gtk_button_released( GTK_BUTTON( fsOk ) );
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
474 break;
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
475 case GDK_BackSpace:
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
476 gtk_button_released( GTK_BUTTON( fsUp ) );
34351
52a18f850c28 Leave the focus in fsFNameList after key event in file selector.
ib
parents: 34346
diff changeset
477 gtk_widget_grab_focus( fsFNameList );
34345
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
478 break;
1f6e77b8cb1d Cosmetic: Adjust indent.
ib
parents: 34344
diff changeset
479 }
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
480 }
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
481 return FALSE;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
482 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
483
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
484 static gboolean fs_fsFNameList_event( GtkWidget * widget,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
485 GdkEvent * event,
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
486 gpointer user_data )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
487 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
488 GdkEventButton *bevent;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
489 gint row, col;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
490
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
491 bevent = (GdkEventButton *) event;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
492
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
493 if ( event->type == GDK_BUTTON_RELEASE && bevent->button == 2 )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
494 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
495 if ( gtk_clist_get_selection_info( GTK_CLIST( widget ), bevent->x, bevent->y, &row, &col ) )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
496 {
35925
59c6618f384b Support mixed filename encodings.
ib
parents: 35903
diff changeset
497 fsSelectedFile = gtk_clist_get_row_data(GTK_CLIST(widget), row);
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
498 gtk_button_released( GTK_BUTTON( fsOk ) );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
499 return TRUE;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
500 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
501 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
502
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
503 return FALSE;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
504 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
505
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
506 static void fs_Destroy( void )
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
507 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
508 WidgetDestroy( fsFileSelect, &fsFileSelect );
35959
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
509
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
510 g_hash_table_destroy( fsPathTable );
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
511
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
512 g_list_foreach(fsTopList_items, (GFunc) g_free, NULL);
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
513 g_list_free(fsTopList_items);
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
514 fsTopList_items = NULL;
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
515 }
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
516
35958
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
517 static GtkWidget * create_FileSelect( void )
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
518 {
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
519 GtkWidget * vbox4;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
520 GtkWidget * hbox4;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
521 GtkWidget * vseparator1;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
522 GtkWidget * hbox6;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
523 GtkWidget * fsFNameListWindow;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
524 GtkWidget * hbuttonbox3;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
525
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
526 GtkWidget * uppixmapwid;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
527 GdkPixmap * uppixmap;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
528 GdkBitmap * upmask;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
529 GtkStyle * upstyle;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
530
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
531
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
532 fsFileSelect=gtk_window_new( GTK_WINDOW_TOPLEVEL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
533 gtk_widget_set_name( fsFileSelect,"fsFileSelect" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
534 gtk_object_set_data( GTK_OBJECT( fsFileSelect ),"fsFileSelect",fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
535 gtk_widget_set_usize( fsFileSelect,512,300 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
536 GTK_WIDGET_SET_FLAGS( fsFileSelect,GTK_CAN_DEFAULT );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
537 gtk_widget_set_events( fsFileSelect,GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
538 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
539 gtk_window_set_position( GTK_WINDOW( fsFileSelect ),GTK_WIN_POS_CENTER );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
540 gtk_window_set_policy( GTK_WINDOW( fsFileSelect ),TRUE,TRUE,TRUE );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
541 gtk_window_set_wmclass( GTK_WINDOW( fsFileSelect ),"FileSelect","MPlayer" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
542 fsColorMap=gdk_colormap_get_system();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
543
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
544 gtk_widget_realize( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
545 gtkAddIcon( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
546
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
547 style=gtk_widget_get_style( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
548 dpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&dmask,&style->bg[GTK_STATE_NORMAL],(gchar **)dir_xpm );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
549 fpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&fmask,&style->bg[GTK_STATE_NORMAL],(gchar **)file_xpm );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
550
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
551 vbox4=AddVBox( AddDialogFrame( fsFileSelect ),0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
552 hbox4=AddHBox( vbox4,1 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
553
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
554 fsCombo4=gtk_combo_new();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
555 gtk_widget_set_name( fsCombo4,"fsCombo4" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
556 gtk_widget_show( fsCombo4 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
557 gtk_box_pack_start( GTK_BOX( hbox4 ),fsCombo4,TRUE,TRUE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
558 gtk_widget_set_usize( fsCombo4,-2,20 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
559
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
560 fsPathCombo=GTK_COMBO( fsCombo4 )->entry;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
561 gtk_widget_set_name( fsPathCombo,"fsPathCombo" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
562 gtk_widget_show( fsPathCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
563 gtk_widget_set_usize( fsPathCombo,-2,20 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
564
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
565 vseparator1=gtk_vseparator_new();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
566 gtk_widget_set_name( vseparator1,"vseparator1" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
567 gtk_widget_show( vseparator1 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
568 gtk_box_pack_start( GTK_BOX( hbox4 ),vseparator1,FALSE,TRUE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
569 gtk_widget_set_usize( vseparator1,7,20 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
570
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
571 upstyle=gtk_widget_get_style( fsFileSelect );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
572 uppixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&upmask,&upstyle->bg[GTK_STATE_NORMAL],(gchar **)up_xpm );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
573 uppixmapwid=gtk_pixmap_new( uppixmap,upmask );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
574 gtk_widget_show( uppixmapwid );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
575
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
576 fsUp=gtk_button_new();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
577 gtk_container_add( GTK_CONTAINER(fsUp ),uppixmapwid );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
578 gtk_widget_show( fsUp );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
579 gtk_box_pack_start( GTK_BOX( hbox4 ),fsUp,FALSE,FALSE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
580 gtk_widget_set_usize( fsUp,65,15 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
581
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
582 AddHSeparator( vbox4 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
583
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
584 hbox6=AddHBox( NULL,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
585 gtk_box_pack_start( GTK_BOX( vbox4 ),hbox6,TRUE,TRUE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
586
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
587 fsFNameListWindow=gtk_scrolled_window_new( NULL,NULL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
588 gtk_widget_set_name( fsFNameListWindow,"fsFNameListWindow" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
589 gtk_widget_show( fsFNameListWindow );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
590 gtk_box_pack_start( GTK_BOX( hbox6 ),fsFNameListWindow,TRUE,TRUE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
591 gtk_widget_set_usize( fsFNameListWindow,-2,145 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
592 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( fsFNameListWindow ),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
593
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
594 fsFNameList=gtk_clist_new( 2 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
595 gtk_widget_set_name( fsFNameList,"fsFNameList" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
596 gtk_container_add( GTK_CONTAINER( fsFNameListWindow ),fsFNameList );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
597 gtk_clist_set_column_width( GTK_CLIST( fsFNameList ),0,80 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
598 gtk_clist_set_selection_mode( GTK_CLIST( fsFNameList ),GTK_SELECTION_BROWSE );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
599 gtk_clist_column_titles_hide( GTK_CLIST( fsFNameList ) );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
600 gtk_clist_set_shadow_type( GTK_CLIST( fsFNameList ),GTK_SHADOW_ETCHED_OUT );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
601
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
602 AddHSeparator( vbox4 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
603
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
604 List=gtk_combo_new();
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
605 gtk_widget_set_name( List,"List" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
606 gtk_widget_ref( List );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
607 gtk_object_set_data_full( GTK_OBJECT( fsFileSelect ),"List",List,(GtkDestroyNotify)gtk_widget_unref );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
608 gtk_widget_show( List );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
609 gtk_box_pack_start( GTK_BOX( vbox4 ),List,FALSE,FALSE,0 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
610 gtk_widget_set_usize( List,-2,20 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
611
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
612 fsFilterCombo=GTK_COMBO( List )->entry;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
613 gtk_widget_set_name( fsFilterCombo,"fsFilterCombo" );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
614 gtk_widget_show( fsFilterCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
615 gtk_entry_set_editable (GTK_ENTRY( fsFilterCombo ),FALSE );
34871
3441d7ebea3e Fix wrong (too large) height of filter combo box.
ib
parents: 34869
diff changeset
616 gtk_widget_set_usize( fsFilterCombo,-2,20 );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
617
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
618 AddHSeparator( vbox4 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
619
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
620 hbuttonbox3=AddHButtonBox( vbox4 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
621 gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox3 ),GTK_BUTTONBOX_END );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
622 gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox3 ),10 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
623
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
624 fsOk=AddButton( MSGTR_Ok,hbuttonbox3 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
625 fsCancel=AddButton( MSGTR_Cancel,hbuttonbox3 );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
626
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
627 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy",GTK_SIGNAL_FUNC( fs_Destroy ), NULL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
628 gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
629
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
630 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsFilterCombo_changed ),fsFilterCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
631 gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"activate",GTK_SIGNAL_FUNC( fs_fsFilterCombo_activate ),fsFilterCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
632 gtk_signal_connect( GTK_OBJECT( fsPathCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsPathCombo_changed ),fsPathCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
633 gtk_signal_connect( GTK_OBJECT( fsPathCombo ),"activate",GTK_SIGNAL_FUNC( fs_fsPathCombo_activate ),fsPathCombo );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
634 gtk_signal_connect( GTK_OBJECT( fsUp ),"released",GTK_SIGNAL_FUNC( fs_Up_released ),fsFNameList );
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
635 gtk_signal_connect( GTK_OBJECT( fsUp ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
636 gtk_signal_connect( GTK_OBJECT( fsOk ),"released",GTK_SIGNAL_FUNC( fs_Ok_released ),fsCombo4 );
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
637 gtk_signal_connect( GTK_OBJECT( fsOk ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
638 gtk_signal_connect( GTK_OBJECT( fsCancel ),"released",GTK_SIGNAL_FUNC( fs_Cancel_released ),NULL );
34344
5a7bb8f06478 Add Return key events to file selector buttons.
ib
parents: 34065
diff changeset
639 gtk_signal_connect( GTK_OBJECT( fsCancel ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL );
33572
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
640 gtk_signal_connect( GTK_OBJECT( fsFNameList ),"select_row",(GtkSignalFunc)fs_fsFNameList_select_row,NULL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
641 gtk_signal_connect( GTK_OBJECT( fsFNameList ),"event", (GtkSignalFunc)fs_fsFNameList_event,NULL );
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
642
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
643 return fsFileSelect;
d9b805602aa1 Rename some gtk files.
ib
parents:
diff changeset
644 }
35958
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
645
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
646 void ShowFileSelect( int type,int modal )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
647 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
648 int i, k, fsMedium;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
649 char * tmp = NULL, * dir = NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
650 const gchar *fname;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
651 struct stat f;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
652
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
653 if ( fsFileSelect ) gtkActive( fsFileSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
654 else fsFileSelect=create_FileSelect();
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
655
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
656 fsType=type;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
657 switch ( type )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
658 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
659 case fsVideoSelector:
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
660 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
661 fsList_items=NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
662 for( i=0;fsVideoFilterNames[i][0];i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
663 fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
664 k = fsLastVideoFilterSelected;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
665 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
666 g_list_free( fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
667 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[k >= 0 ? k : i-2][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
668 tmp=guiInfo.Filename;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
669 break;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
670 case fsSubtitleSelector:
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
671 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
672 fsList_items=NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
673 for( i=0;fsSubtitleFilterNames[i][0];i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
674 fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
675 k = fsLastSubtitleFilterSelected;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
676 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
677 g_list_free( fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
678 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[k >= 0 ? k : i-2][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
679 tmp=guiInfo.SubtitleFilename;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
680 break;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
681 /* case fsOtherSelector:
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
682 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
683 fsList_items=NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
684 for( i=0;fsOtherFilterNames[i][0];i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
685 fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
686 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
687 g_list_free( fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
688 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[0][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
689 tmp=guiInfo.Othername;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
690 break;*/
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
691 case fsAudioSelector:
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
692 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
693 fsList_items=NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
694 for( i=0;fsAudioFileNames[i][0];i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
695 fsList_items=g_list_append( fsList_items,fsAudioFileNames[i][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
696 k = fsLastAudioFilterSelected;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
697 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
698 g_list_free( fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
699 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[k >= 0 ? k : i-2][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
700 tmp=guiInfo.AudioFilename;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
701 break;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
702 case fsFontSelector:
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
703 gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FontSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
704 fsList_items=NULL;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
705 for( i=0;fsFontFileNames[i][0];i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
706 fsList_items=g_list_append( fsList_items,fsFontFileNames[i][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
707 k = fsLastFontFilterSelected;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
708 gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
709 g_list_free( fsList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
710 gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsFontFileNames[k >= 0 ? k : i-2][0] );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
711 tmp=font_name;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
712 break;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
713 }
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
714
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
715 fsMedium=(fsType == fsVideoSelector || fsType == fsSubtitleSelector || fsType == fsAudioSelector);
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
716
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
717 if ( !tmp && fsMedium ) tmp=guiInfo.Filename;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
718
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
719 if ( tmp && tmp[0] && !strstr( tmp,"://" ) )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
720 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
721 dir = strdup( tmp );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
722
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
723 do
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
724 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
725 char * c = strrchr( dir,'/' );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
726 if ( ( stat( dir,&f ) == 0 ) && S_ISDIR( f.st_mode ) ) break;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
727 if ( c ) *c=0;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
728 } while ( strrchr( dir,'/' ) );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
729
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
730 if ( !dir[0] ) nfree( dir );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
731 }
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
732
35959
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
733 fsPathTable = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
acec130e2ab2 Free list and hash table data on widget destruction.
ib
parents: 35958
diff changeset
734
35958
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
735 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
736 unsigned int i, c = 1;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
737
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
738 if ( fsMedium )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
739 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
740 for ( i=0;i < FF_ARRAY_ELEMS(fsHistory);i++ )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
741 if ( fsHistory[i] )
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
742 {
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
743 fname = cfg_old_filename_from_utf8(fsHistory[i]);
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
744 fs_AddPathUtf8(fname, GTK_POS_BOTTOM);
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
745 if ( c ) c=gstrcmp( dir,fname );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
746 }
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
747 }
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
748 if ( c && dir ) fs_AddPathUtf8(dir, GTK_POS_TOP);
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
749 }
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
750 free( dir );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
751 fname = getenv( "HOME" );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
752 if ( fname ) fs_AddPathUtf8(fname, GTK_POS_BOTTOM);
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
753 else fsTopList_items=g_list_append( fsTopList_items,g_strdup( "/home" ) );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
754 if (stat( "/media",&f ) == 0) fsTopList_items=g_list_append( fsTopList_items,g_strdup( "/media" ) );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
755 if (stat( "/mnt",&f ) == 0) fsTopList_items=g_list_append( fsTopList_items,g_strdup( "/mnt" ) );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
756 fsTopList_items=g_list_append( fsTopList_items,g_strdup( "/" ) );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
757 gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
758
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
759 gtk_widget_grab_focus( fsFNameList );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
760 if (fsLastFNameListSelected + 1 > ((GtkCList *)fsFNameList)->rows) fsLastFNameListSelected = 0;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
761 ((GtkCList *)fsFNameList)->focus_row = fsLastFNameListSelected;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
762 gtk_clist_select_row( GTK_CLIST( fsFNameList ),fsLastFNameListSelected,1 );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
763 fsLastFNameListSelected = 0;
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
764
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
765 gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
766
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
767 gtk_widget_show( fsFileSelect );
b522bc621d3c Make create_FileSelect() and HideFileSelect() static.
ib
parents: 35944
diff changeset
768 }