⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pl.c

📁 Mplayer源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <dirent.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <gdk/gdkkeysyms.h>#include <gtk/gtk.h>#include "../../config.h"#include "../../help_mp.h"#include "../stream/stream.h"#include "../interface.h"#include "../widgets.h"#include "pl.h"#include "common.h"static char * book_open_xpm[] = {	"16 16 4 1",	"       c None s None",	".      c black",	"X      c #808080",	"o      c white",	"                ",	"  ..            ",	" .Xo.    ...    ",	" .Xoo. ..oo.    ",	" .Xooo.Xooo...  ",	" .Xooo.oooo.X.  ",	" .Xooo.Xooo.X.  ",	" .Xooo.oooo.X.  ",	" .Xooo.Xooo.X.  ",	" .Xooo.oooo.X.  ",	"  .Xoo.Xoo..X.  ",	"   .Xo.o..ooX.  ",	"    .X..XXXXX.  ",	"    ..X.......  ",	"     ..         ",	"                "};static char * book_closed_xpm[] = {	"16 16 6 1",	"       c None s None",	".      c black",	"X      c blue",	"o      c yellow",	"O      c #007FEA",	"#      c white",	"                ",	"       ..       ",	"     ..XX.      ",	"   ..XXXXX.     ",	" ..XXXXXXXX.    ",	".ooXXXXXXXXX.   ",	"..ooXXXXXXXXX.  ",	".X.ooXXXXXXXXX. ",	".XX.ooXXXXXX..  ",	" .XX.ooXXX..#O  ",	"  .XX.oo..##OO. ",	"   .XX..##OO..  ",	"    .X.#OO..    ",	"     ..O..      ",	"      ..        ",	"                "};       GtkWidget * PlayList = NULL;static GtkWidget * CTDirTree;static GtkWidget * CLFiles;static GtkWidget * CLSelected;static GtkWidget * Add;static GtkWidget * Remove;static GtkWidget * Ok;static GtkWidget * Cancel;static GdkPixmap * pxOpenedBook;static GdkPixmap * pxClosedBook;static GdkBitmap * msOpenedBook;static GdkBitmap * msClosedBook;static int   NrOfEntrys = 0;static int   NrOfSelected = 0;static int * CLFileSelected = NULL;static int * CLListSelected = NULL;static int sigSel;static int sigUnsel;typedef struct{ int    scaned; char * path;} DirNodeType;static GtkCTreeNode * sibling;static GtkCTreeNode * parent;static gchar        * current_path;static gchar        * old_path = NULL;static int compare_func(const void *a, const void *b){ char * tmp; int    i; if ( !a || !b || !( (DirNodeType *)a )->path ) return -1; tmp=strdup( (char *)b ); tmp[strlen( tmp )-1]=0; i=strcmp( ( (DirNodeType *)a )->path,tmp ); free( tmp ); return i;}static void scan_dir( char * path );void ShowPlayList( void ){ if ( PlayList ) gtkActive( PlayList );  else PlayList=create_PlayList(); if ( old_path && *old_path )  {   char         * currentdir = strdup( old_path );   char         * tpath,* pos;   GtkCTreeNode * node,* nextnode;   gboolean       leaf;   tpath=strdup( "/" );   pos=strtok( currentdir,"/" );   node=gtk_ctree_find_by_row_data_custom( GTK_CTREE( CTDirTree ),NULL,"/",compare_func );   do    {     char * tpathnew = g_strconcat( tpath,pos,"/",NULL );     free( tpath ); tpath=tpathnew;     nextnode=gtk_ctree_find_by_row_data_custom( GTK_CTREE( CTDirTree ),node,tpath,compare_func );     if ( !nextnode ) break;     node=nextnode;     pos=strtok( NULL,"/" );     gtk_ctree_get_node_info( GTK_CTREE( CTDirTree ),node,NULL,NULL,NULL,NULL,NULL,NULL,&leaf,NULL );     if ( !leaf && pos ) gtk_ctree_expand( GTK_CTREE( CTDirTree ),node );      else        {        DirNodeType * DirNode;        gtk_ctree_select( GTK_CTREE( CTDirTree ),node );	DirNode=gtk_ctree_node_get_row_data( GTK_CTREE( CTDirTree ),node );	current_path=DirNode->path;        scan_dir( DirNode->path );        if ( CLFileSelected ) free( CLFileSelected ); CLFileSelected=calloc( 1,NrOfEntrys * sizeof( int ) );	break;       }    } while( pos );   free( tpath );   free( currentdir );  }  else gtk_ctree_select( GTK_CTREE( CTDirTree ),parent ); gtk_clist_freeze( GTK_CLIST( CLSelected ) ); gtk_clist_clear( GTK_CLIST( CLSelected ) ); if ( plList )  {   plItem * next = plList;   while ( next || next->next )    {     char * text[1][3]; text[0][2]="";     text[0][0]=next->name;     text[0][1]=next->path;     gtk_clist_append( GTK_CLIST( CLSelected ),text[0] );     NrOfSelected++;     if ( next->next ) next=next->next; else break;    }   CLListSelected=calloc( 1,NrOfSelected * sizeof( int ) );  } gtk_clist_thaw( GTK_CLIST( CLSelected ) ); gtk_widget_show( PlayList );}void HidePlayList( void ){ if ( !PlayList ) return; NrOfSelected=NrOfEntrys=0; gfree( (void **)&CLListSelected ); gfree( (void **)&CLFileSelected ); if ( old_path ) free( old_path ); old_path=strdup( current_path ); gtk_widget_hide( PlayList ); gtk_widget_destroy( PlayList ); PlayList=NULL;}static void plRowSelect( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data ){ switch ( (int) user_data )  {   case 0: CLFileSelected[row]=1; break;   case 1: CLListSelected[row]=1; break;  }}static void plUnRowSelect( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data ){ switch ( (int) user_data )  {   case 0: CLFileSelected[row]=0; break;   case 1: CLListSelected[row]=0; break;  }}static void plButtonReleased( GtkButton * button,gpointer user_data ){ switch ( (int) user_data ) {  case 1: // ok       {        int i;	if ( plList ) gtkSet( gtkDelPl,0,NULL );	for ( i=0;i<NrOfSelected;i++ )	 {	  plItem * item;	  char * text[3];	  item=calloc( 1,sizeof( plItem ) );	  gtk_clist_get_text( GTK_CLIST( CLSelected ),i,0,&text[0] );	  gtk_clist_get_text( GTK_CLIST( CLSelected ),i,1,&text[1] );	  item->name=strdup( text[0] );	  item->path=strdup( text[1] );	  gtkSet( gtkAddPlItem,0,(void*)item );	 }	if ( plCurrent )	 {	  mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE );//	  guiSetDF( guiIntfStruct.Filename,plCurrent->path,plCurrent->name );//	  guiIntfStruct.FilenameChanged=1;//	  guiIntfStruct.StreamType=STREAMTYPE_FILE;	 }       }  case 0: // cancel       HidePlayList();        break;  case 2: // remove       {	int i; int j; int c=0;	gtk_signal_handler_block( GTK_OBJECT( CLSelected ),sigSel );	gtk_signal_handler_block( GTK_OBJECT( CLSelected ),sigUnsel );        gtk_clist_freeze( GTK_CLIST( CLSelected ) );        for ( i=0;i<NrOfSelected-c;i++ )  	 if ( CLListSelected[i] ) 	  {	   gtk_clist_remove( GTK_CLIST( CLSelected ),i - c );	   c++;	   for ( j=i;j<NrOfSelected-c;j++ )		CLListSelected[i] = CLListSelected[i+1];	  }	NrOfSelected-=c;	gtk_clist_thaw( GTK_CLIST( CLSelected ) );	gtk_signal_handler_unblock( GTK_OBJECT( CLSelected ),sigSel );	gtk_signal_handler_unblock( GTK_OBJECT( CLSelected ),sigUnsel );       }       break;  case 3: // add       {        int i;        char * itext[1][2];        char * text[1][3]; text[0][2]="";        gtk_clist_freeze( GTK_CLIST( CLSelected ) );        for ( i=0;i<NrOfEntrys;i++ )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -