annotate gui/mplayer/gtk/pl.c @ 23978:ef6e50c3c172

Revert setting audio output channel count for FFmpeg The FFmpeg API needs to be fixed before this can be done sanely. ffdca wants the desired output channel count to be set in avctx->channels. Unfortunately it also completely fails if the requested number of channels is not available rather than returning a different amount (if 6 channels are requested we'd probably rather use stereo than fail completely). ffvorbis ignores caller-set values in avctx->channels. It writes the channel count there once during init. This means the caller can only set the count before init because later there would be no indication whether the channel count in avctx reflects real output. ffwma requires the caller to supply the encoded channel count in avctx->channels during init or it fails. So it is not possible to set a different number of desired output channels there before init either.
author uau
date Thu, 02 Aug 2007 21:54:14 +0000
parents 17bf4f4b0715
children 8a0adeba5910
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
2 #include <sys/types.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
3 #include <sys/stat.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
4 #include <string.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
5 #include <dirent.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
6 #include <unistd.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
7 #include <stdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
8 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
9
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
10 #include <gdk/gdkkeysyms.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
11 #include <gtk/gtk.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
12
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
13 #include "config.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
14 #include "help_mp.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
15 #include "stream/stream.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
16
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
17 #include "interface.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
18 #include "../widgets.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
19 #include "pl.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
20 #include "common.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
22 static char * book_open_xpm[] = {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 "16 16 4 1",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 " c None s None",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 ". c black",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26 "X c #808080",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27 "o c white",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
28 " ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29 " .. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
30 " .Xo. ... ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
31 " .Xoo. ..oo. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
32 " .Xooo.Xooo... ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
33 " .Xooo.oooo.X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
34 " .Xooo.Xooo.X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
35 " .Xooo.oooo.X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
36 " .Xooo.Xooo.X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
37 " .Xooo.oooo.X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
38 " .Xoo.Xoo..X. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
39 " .Xo.o..ooX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
40 " .X..XXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
41 " ..X....... ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
42 " .. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
43 " "};
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
45 static char * book_closed_xpm[] = {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
46 "16 16 6 1",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
47 " c None s None",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
48 ". c black",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
49 "X c blue",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 "o c yellow",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51 "O c #007FEA",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52 "# c white",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
53 " ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 " .. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 " ..XX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56 " ..XXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
57 " ..XXXXXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 ".ooXXXXXXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 "..ooXXXXXXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60 ".X.ooXXXXXXXXX. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61 ".XX.ooXXXXXX.. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62 " .XX.ooXXX..#O ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 " .XX.oo..##OO. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64 " .XX..##OO.. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65 " .X.#OO.. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 " ..O.. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67 " .. ",
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
68 " "};
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70 GtkWidget * PlayList = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71 static GtkWidget * CTDirTree;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72 static GtkWidget * CLFiles;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73 static GtkWidget * CLSelected;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74 static GtkWidget * Add;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
75 static GtkWidget * Remove;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76 static GtkWidget * Ok;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77 static GtkWidget * Cancel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78 static GdkPixmap * pxOpenedBook;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79 static GdkPixmap * pxClosedBook;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
80 static GdkBitmap * msOpenedBook;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81 static GdkBitmap * msClosedBook;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83 static int NrOfEntrys = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84 static int NrOfSelected = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85 static int * CLFileSelected = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 static int * CLListSelected = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
87
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 static int sigSel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 static int sigUnsel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
91 typedef struct
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 int scaned;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94 char * path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95 } DirNodeType;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
97 static GtkCTreeNode * sibling;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
98 static GtkCTreeNode * parent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
99 static gchar * current_path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
100 static gchar * old_path = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
101
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
102 static int compare_func(const void *a, const void *b)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
103 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
104 char * tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
105 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
106 if ( !a || !b || !( (DirNodeType *)a )->path ) return -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
107 tmp=strdup( (char *)b ); tmp[strlen( tmp )-1]=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
108 i=strcmp( ( (DirNodeType *)a )->path,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
109 free( tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
110 return i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
111 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
113 static void scan_dir( char * path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
114
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 void ShowPlayList( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
117 if ( PlayList ) gtkActive( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
118 else PlayList=create_PlayList();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
119
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
120 if ( old_path && *old_path )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
122 char * currentdir = strdup( old_path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 char * tpath,* pos;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124 GtkCTreeNode * node,* nextnode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 gboolean leaf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 tpath=strdup( "/" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 pos=strtok( currentdir,"/" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128 node=gtk_ctree_find_by_row_data_custom( GTK_CTREE( CTDirTree ),NULL,"/",compare_func );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 do
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 char * tpathnew = g_strconcat( tpath,pos,"/",NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 free( tpath ); tpath=tpathnew;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 nextnode=gtk_ctree_find_by_row_data_custom( GTK_CTREE( CTDirTree ),node,tpath,compare_func );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134 if ( !nextnode ) break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 node=nextnode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 pos=strtok( NULL,"/" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 gtk_ctree_get_node_info( GTK_CTREE( CTDirTree ),node,NULL,NULL,NULL,NULL,NULL,NULL,&leaf,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138 if ( !leaf && pos ) gtk_ctree_expand( GTK_CTREE( CTDirTree ),node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141 DirNodeType * DirNode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 gtk_ctree_select( GTK_CTREE( CTDirTree ),node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 DirNode=gtk_ctree_node_get_row_data( GTK_CTREE( CTDirTree ),node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 current_path=DirNode->path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 scan_dir( DirNode->path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 } while( pos );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 free( tpath );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 free( currentdir );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 else gtk_ctree_select( GTK_CTREE( CTDirTree ),parent );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 gtk_clist_freeze( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 gtk_clist_clear( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 if ( plList )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 plItem * next = plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 while ( next || next->next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 char * text[1][3]; text[0][2]="";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 text[0][0]=next->name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 text[0][1]=next->path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 gtk_clist_append( GTK_CLIST( CLSelected ),text[0] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 NrOfSelected++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 if ( next->next ) next=next->next; else break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 CLListSelected=calloc( 1,NrOfSelected * sizeof( int ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 gtk_clist_thaw( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
172
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
173 gtk_widget_show( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
175
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176 void HidePlayList( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178 if ( !PlayList ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
179 NrOfSelected=NrOfEntrys=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
180 gfree( (void **)&CLListSelected ); gfree( (void **)&CLFileSelected );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181 if ( old_path ) free( old_path ); old_path=strdup( current_path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182 gtk_widget_hide( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183 gtk_widget_destroy( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
184 PlayList=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 static void plRowSelect( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 switch ( (int) user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 case 0: CLFileSelected[row]=1; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 case 1: CLListSelected[row]=1; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 static void plUnRowSelect( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
197 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 switch ( (int) user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 case 0: CLFileSelected[row]=0; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201 case 1: CLListSelected[row]=0; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205 static void plButtonReleased( GtkButton * button,gpointer user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 switch ( (int) user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 case 1: // ok
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 if ( plList ) gtkSet( gtkDelPl,0,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 for ( i=0;i<NrOfSelected;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 plItem * item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 char * text[3];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217 item=calloc( 1,sizeof( plItem ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 gtk_clist_get_text( GTK_CLIST( CLSelected ),i,0,&text[0] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 gtk_clist_get_text( GTK_CLIST( CLSelected ),i,1,&text[1] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 item->name=strdup( text[0] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 item->path=strdup( text[1] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 gtkSet( gtkAddPlItem,0,(void*)item );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 if ( plCurrent )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 // guiSetDF( guiIntfStruct.Filename,plCurrent->path,plCurrent->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 // guiIntfStruct.FilenameChanged=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 // guiIntfStruct.StreamType=STREAMTYPE_FILE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 case 0: // cancel
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 HidePlayList();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 case 2: // remove
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 int i; int j; int c=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 gtk_signal_handler_block( GTK_OBJECT( CLSelected ),sigSel );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240 gtk_signal_handler_block( GTK_OBJECT( CLSelected ),sigUnsel );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 gtk_clist_freeze( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 for ( i=0;i<NrOfSelected-c;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 if ( CLListSelected[i] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246 gtk_clist_remove( GTK_CLIST( CLSelected ),i - c );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
247 c++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
248 for ( j=i;j<NrOfSelected-c;j++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249 CLListSelected[i] = CLListSelected[i+1];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251 NrOfSelected-=c;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 gtk_clist_thaw( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 gtk_signal_handler_unblock( GTK_OBJECT( CLSelected ),sigSel );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 gtk_signal_handler_unblock( GTK_OBJECT( CLSelected ),sigUnsel );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
259 case 3: // add
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 char * itext[1][2];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263 char * text[1][3]; text[0][2]="";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264 gtk_clist_freeze( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 for ( i=0;i<NrOfEntrys;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
266 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267 if ( CLFileSelected[i] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269 gtk_clist_get_text( GTK_CLIST( CLFiles ),i,0,(char **)&itext );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 text[0][0]=itext[0][0]; text[0][1]=current_path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271 gtk_clist_append( GTK_CLIST( CLSelected ),text[0] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 NrOfSelected++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 CLListSelected=realloc( CLListSelected,NrOfSelected * sizeof( int ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274 CLListSelected[NrOfSelected - 1]=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277 gtk_clist_thaw( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
278 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 static int check_for_subdir( gchar * path )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 DIR * dir;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 struct dirent * dirent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 struct stat statbuf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 gchar * npath;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 if ( (dir=opendir( path )) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 while ( (dirent=readdir( dir )) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294 if ( dirent->d_name[0] != '.' )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 npath=calloc( 1,strlen( path ) + strlen( dirent->d_name ) + 3 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 sprintf( npath,"%s/%s",path,dirent->d_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 if ( stat( npath,&statbuf ) != -1 && S_ISDIR( statbuf.st_mode ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 { free( npath ); closedir( dir ); return 1; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300 free( npath );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 closedir( dir );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 static void plCTree( GtkCTree * ctree,GtkCTreeNode * parent_node,gpointer user_data )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 GtkCTreeNode * node;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 DirNodeType * DirNode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312 gchar * text;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
313 gchar * dummy = "dummy";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 int subdir = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 DIR * dir = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 struct dirent * dirent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 gchar * path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 struct stat statbuf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 DirNode=gtk_ctree_node_get_row_data( ctree,parent_node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 if ( !DirNode->scaned )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 DirNode->scaned=1; current_path=DirNode->path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 gtk_clist_freeze( GTK_CLIST( ctree ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 node=gtk_ctree_find_by_row_data( ctree,parent_node,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 gtk_ctree_remove_node( ctree,node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328 if ( (dir=opendir( DirNode->path ) ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
329 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 while( (dirent=readdir( dir )) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 path=calloc( 1,strlen( DirNode->path ) + strlen( dirent->d_name ) + 2 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 if ( !strcmp( current_path,"/" ) ) sprintf( path,"/%s",dirent->d_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334 else sprintf( path,"%s/%s",current_path,dirent->d_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
335 text=dirent->d_name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
336
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 if ( stat( path,&statbuf ) != -1 && S_ISDIR( statbuf.st_mode ) && dirent->d_name[0] != '.' )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 DirNode=malloc( sizeof( DirNodeType ) ); DirNode->scaned=0; DirNode->path=strdup( path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340 subdir=check_for_subdir( path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
341 node=gtk_ctree_insert_node( ctree,parent_node,NULL,&text,4,pxOpenedBook,msOpenedBook,pxClosedBook,msClosedBook,!subdir,FALSE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342 gtk_ctree_node_set_row_data_full( ctree,node,DirNode,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
343 if ( subdir ) node=gtk_ctree_insert_node( ctree,node,NULL,&dummy,4,NULL,NULL,NULL,NULL,FALSE,FALSE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
345 free( path ); path=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
347 closedir( dir );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 gtk_ctree_sort_node( ctree,parent_node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 gtk_clist_thaw( GTK_CLIST( ctree ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
353 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
355 static void scan_dir( char * path )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
356 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
357 DIR * dir = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
358 char * curr;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
359 struct dirent * dirent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 struct stat statbuf;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
361 char * text[1][2]; text[0][1]="";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
363 gtk_clist_clear( GTK_CLIST( CLFiles ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 if ( (dir=opendir( path )) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
365 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366 NrOfEntrys=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
367 while( (dirent=readdir( dir )) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 curr=calloc( 1,strlen( path ) + strlen( dirent->d_name ) + 3 ); sprintf( curr,"%s/%s",path,dirent->d_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
370 if ( stat( curr,&statbuf ) != -1 && ( S_ISREG( statbuf.st_mode ) || S_ISLNK( statbuf.st_mode ) ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
371 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
372 text[0][0]=dirent->d_name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
373 gtk_clist_append( GTK_CLIST( CLFiles ),text[0] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
374 NrOfEntrys++;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
375 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
376 free( curr );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
377 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 closedir( dir );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
379 gtk_clist_sort( GTK_CLIST( CLFiles ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
380 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
381 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
382
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
383 static void plCTRow(GtkWidget * widget, gint row, gint column, GdkEventButton * bevent, gpointer data)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
384 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
385 DirNodeType * DirNode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
386 GtkCTreeNode * node;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
387 node=gtk_ctree_node_nth( GTK_CTREE( widget ),row );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
388 DirNode=gtk_ctree_node_get_row_data( GTK_CTREE( widget ),node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
389 current_path=DirNode->path;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
390 gtk_ctree_expand( GTK_CTREE( widget ),node );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
391 scan_dir( DirNode->path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
392 if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
393 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
394
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 GtkWidget * create_PlayList( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 GtkWidget * vbox1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 GtkWidget * hbox1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399 GtkWidget * scrolledwindow1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
400 GtkWidget * vbox2;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
401 GtkWidget * scrolledwindow2;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
402 GtkWidget * scrolledwindow3;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
403 GtkWidget * hbuttonbox1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
404 GtkAccelGroup * accel_group;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 GdkColor transparent = { 0,0,0,0 };
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
406 gchar * root = "/";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407 gchar * dummy = "dummy";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
408 DirNodeType * DirNode;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
409
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
410 accel_group=gtk_accel_group_new();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
411
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
412 PlayList=gtk_window_new( GTK_WINDOW_TOPLEVEL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 gtk_object_set_data( GTK_OBJECT( PlayList ),"PlayList",PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414 gtk_widget_set_usize( PlayList,512,384 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
415 gtk_window_set_title( GTK_WINDOW( PlayList ),MSGTR_PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 gtk_window_set_position( GTK_WINDOW( PlayList ),GTK_WIN_POS_CENTER );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
417 // gtk_window_set_policy( GTK_WINDOW( PlayList ),FALSE,FALSE,FALSE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418 gtk_window_set_wmclass( GTK_WINDOW( PlayList ),"Playlist","MPlayer" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 gtk_widget_realize( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 gtkAddIcon( PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 vbox1=AddVBox( AddDialogFrame( PlayList ),0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 hbox1=AddHBox( NULL,1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 gtk_box_pack_start( GTK_BOX( vbox1 ),hbox1,TRUE,TRUE,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 scrolledwindow1=gtk_scrolled_window_new( NULL,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 gtk_widget_show( scrolledwindow1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429 gtk_container_add( GTK_CONTAINER(
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 AddFrame( NULL,0,hbox1,1 ) ),scrolledwindow1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow1 ),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 CTDirTree=gtk_ctree_new( 1,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
434 gtk_signal_connect( GTK_OBJECT( CTDirTree ),"tree_expand",GTK_SIGNAL_FUNC( plCTree ),(void*)0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 gtk_signal_connect( GTK_OBJECT( CTDirTree ),"select_row",GTK_SIGNAL_FUNC( plCTRow ),(void *)0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
436 gtk_container_add( GTK_CONTAINER( scrolledwindow1 ),CTDirTree );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
437 gtk_clist_set_column_auto_resize( GTK_CLIST( CTDirTree ),0,TRUE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
438 gtk_clist_set_column_width( GTK_CLIST( CTDirTree ),0,80 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439 gtk_clist_set_selection_mode( GTK_CLIST( CTDirTree ),GTK_SELECTION_SINGLE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 gtk_ctree_set_line_style( GTK_CTREE( CTDirTree ),GTK_CTREE_LINES_SOLID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
441 gtk_clist_column_titles_show( GTK_CLIST( CTDirTree ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442 gtk_clist_set_shadow_type( GTK_CLIST( CTDirTree ),GTK_SHADOW_NONE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
443
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444 if ( !pxOpenedBook ) pxOpenedBook=gdk_pixmap_create_from_xpm_d( PlayList->window,&msOpenedBook,&transparent,book_closed_xpm );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
445 if ( !pxClosedBook ) pxClosedBook=gdk_pixmap_create_from_xpm_d( PlayList->window,&msClosedBook,&transparent,book_open_xpm );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 parent=gtk_ctree_insert_node( GTK_CTREE( CTDirTree ),NULL,NULL,&root,4,pxOpenedBook,msOpenedBook,pxClosedBook,msClosedBook,FALSE,FALSE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448 DirNode=malloc( sizeof( DirNodeType ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 DirNode->scaned=0; DirNode->path=strdup( root );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 gtk_ctree_node_set_row_data_full(GTK_CTREE( CTDirTree ),parent,DirNode,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
451 sibling=gtk_ctree_insert_node( GTK_CTREE( CTDirTree ),parent,NULL,&dummy,4,NULL,NULL,NULL,NULL,TRUE,TRUE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452 gtk_ctree_expand( GTK_CTREE( CTDirTree ),parent );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453 gtk_widget_show( CTDirTree );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 gtk_clist_set_column_widget( GTK_CLIST( CTDirTree ),0,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 AddLabel( MSGTR_PLAYLIST_DirectoryTree,NULL ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
458
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 vbox2=AddVBox(
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
460 AddFrame( NULL,1,hbox1,1 ),0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
462 scrolledwindow2=gtk_scrolled_window_new( NULL,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
463 gtk_widget_show( scrolledwindow2 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
464 gtk_box_pack_start( GTK_BOX( vbox2 ),scrolledwindow2,TRUE,TRUE,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
465 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow2 ),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
466
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
467 CLFiles=gtk_clist_new( 1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
468 gtk_widget_show( CLFiles );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
469 gtk_container_add( GTK_CONTAINER( scrolledwindow2 ),CLFiles );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470 gtk_clist_set_column_width( GTK_CLIST( CLFiles ),0,80 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 gtk_clist_set_selection_mode( GTK_CLIST( CLFiles ),GTK_SELECTION_EXTENDED );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
472 gtk_clist_column_titles_show( GTK_CLIST( CLFiles ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473 gtk_clist_set_shadow_type( GTK_CLIST( CLFiles ),GTK_SHADOW_NONE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
475 gtk_clist_set_column_widget( GTK_CLIST( CLFiles ),0,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
476 AddLabel( MSGTR_PLAYLIST_Files,NULL ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
478 AddHSeparator( vbox2 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
479
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
480 scrolledwindow3=gtk_scrolled_window_new( NULL,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 gtk_widget_show( scrolledwindow3 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
482 gtk_box_pack_start( GTK_BOX( vbox2 ),scrolledwindow3,TRUE,TRUE,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
483 gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow3 ),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
484
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
485 CLSelected=gtk_clist_new( 2 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486 gtk_widget_show( CLSelected );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487 gtk_container_add( GTK_CONTAINER( scrolledwindow3 ),CLSelected );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
488 gtk_clist_set_column_width( GTK_CLIST( CLSelected ),0,295 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489 gtk_clist_set_column_width( GTK_CLIST( CLSelected ),1,295 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
490 gtk_clist_set_selection_mode( GTK_CLIST( CLSelected ),GTK_SELECTION_MULTIPLE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 gtk_clist_column_titles_show( GTK_CLIST( CLSelected ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
492 gtk_clist_set_shadow_type( GTK_CLIST( CLSelected ),GTK_SHADOW_NONE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
493
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
494 gtk_clist_set_column_widget( GTK_CLIST( CLSelected ),0,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495 AddLabel( MSGTR_PLAYLIST_Selected,NULL ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
496
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
497 gtk_clist_set_column_widget( GTK_CLIST( CLSelected ),1,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
498 AddLabel( MSGTR_PLAYLIST_Path,NULL ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
499
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
500 AddHSeparator( vbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
501
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
502 hbuttonbox1=AddHButtonBox( vbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
503 gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
504 gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
505
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
506 Add=AddButton( MSGTR_Add,hbuttonbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
507 Remove=AddButton( MSGTR_Remove,hbuttonbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
508 Ok=AddButton( MSGTR_Ok,hbuttonbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
509 Cancel=AddButton( MSGTR_Cancel,hbuttonbox1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
510
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
511 gtk_widget_add_accelerator( Cancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
512
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
513 gtk_signal_connect( GTK_OBJECT( PlayList ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&PlayList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
514
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
515 gtk_signal_connect( GTK_OBJECT( CLFiles ),"select_row",GTK_SIGNAL_FUNC( plRowSelect ),(void *)0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
516 gtk_signal_connect( GTK_OBJECT( CLFiles ),"unselect_row",GTK_SIGNAL_FUNC( plUnRowSelect ),(void *)0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
517 sigSel=gtk_signal_connect( GTK_OBJECT( CLSelected ),"select_row",GTK_SIGNAL_FUNC( plRowSelect ),(void*)1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
518 sigUnsel=gtk_signal_connect( GTK_OBJECT( CLSelected ),"unselect_row",GTK_SIGNAL_FUNC( plUnRowSelect ),(void*)1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
519
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
520 gtk_signal_connect( GTK_OBJECT( Add ),"clicked",GTK_SIGNAL_FUNC( plButtonReleased ),(void*)3 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
521 gtk_signal_connect( GTK_OBJECT( Remove ),"clicked",GTK_SIGNAL_FUNC( plButtonReleased ),(void*)2 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
522 gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( plButtonReleased ),(void*)1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
523 gtk_signal_connect( GTK_OBJECT( Cancel ),"clicked",GTK_SIGNAL_FUNC( plButtonReleased ),(void*)0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
524
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
525 gtk_window_add_accel_group( GTK_WINDOW( PlayList ),accel_group );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
526
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
527 return PlayList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
528 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
529