]> git.sesse.net Git - vlc/commitdiff
PDA Interface:
authorJean-Paul Saman <jpsaman@videolan.org>
Tue, 18 Nov 2003 20:36:40 +0000 (20:36 +0000)
committerJean-Paul Saman <jpsaman@videolan.org>
Tue, 18 Nov 2003 20:36:40 +0000 (20:36 +0000)
- Cleanup code
- Cleanup interface
- Adding items to playlist widgets from File, Camera, Transcode tabs.

modules/gui/pda/pda.c
modules/gui/pda/pda.glade
modules/gui/pda/pda.h
modules/gui/pda/pda_callbacks.c
modules/gui/pda/pda_callbacks.h
modules/gui/pda/pda_interface.c

index 081eb69367b901d37fec1714c6a2d32801be1f33..8c41efc06e41b8348d5e6d7f4c0e263872a460ab 100644 (file)
@@ -2,7 +2,7 @@
  * pda.c : PDA Gtk2 plugin for vlc
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: pda.c,v 1.8 2003/11/07 13:01:51 jpsaman Exp $
+ * $Id: pda.c,v 1.9 2003/11/18 20:36:40 jpsaman Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *          Marc Ariberti <marcari@videolan.org>
@@ -148,6 +148,7 @@ static void Run( intf_thread_t *p_intf )
     GtkCellRenderer   *renderer = NULL;
     GtkTreeViewColumn *column   = NULL;
     GtkListStore      *filelist = NULL;
+    GtkListStore      *playlist = NULL;
 
 #ifndef NEED_GTK2_MAIN
     gtk_set_locale ();
@@ -252,7 +253,7 @@ static void Run( intf_thread_t *p_intf )
                 G_TYPE_UINT64, /* File size */
                 G_TYPE_STRING, /* Owner */
                 G_TYPE_STRING);/* Group */
-    ReadDirectory(filelist, ".");
+    ReadDirectory(p_intf, filelist, ".");
     msg_Dbg(p_intf, "Showing GtkTreeView FileList" );
     gtk_tree_view_set_model(GTK_TREE_VIEW(p_intf->p_sys->p_tvfile), GTK_TREE_MODEL(filelist));
     g_object_unref(filelist);     /* Model will be released by GtkTreeView */
@@ -267,8 +268,7 @@ static void Run( intf_thread_t *p_intf )
     /* BEGIN OF PLAYLIST GTK_TREE_VIEW */
     msg_Dbg(p_intf, "Getting GtkTreeView PlayList" );
     p_intf->p_sys->p_tvplaylist = NULL;
-    p_intf->p_sys->p_tvplaylist = (GtkTreeView *) lookup_widget( p_intf->p_sys->p_window,
-                                                             "tvPlaylist");   
+    p_intf->p_sys->p_tvplaylist = (GtkTreeView *) lookup_widget( p_intf->p_sys->p_window, "tvPlaylist");   
     if (NULL == p_intf->p_sys->p_tvplaylist)
        msg_Err(p_intf, "Error obtaining pointer to Play List");
 
@@ -287,13 +287,13 @@ static void Run( intf_thread_t *p_intf )
 
     /* update the playlist */
     msg_Dbg(p_intf, "Populating GtkTreeView Playlist" );
-    p_intf->p_sys->p_playlist = gtk_list_store_new (2,
-                               G_TYPE_STRING, /* Filename */
-                               G_TYPE_STRING);/* Time */
-    PlaylistRebuildListStore( p_intf->p_sys->p_playlist, vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ));
+    playlist = gtk_list_store_new (2,
+                G_TYPE_STRING, /* Filename */
+                G_TYPE_STRING);/* Time */
+    PlaylistRebuildListStore( playlist, vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ));
     msg_Dbg(p_intf, "Showing GtkTreeView Playlist" );
-    gtk_tree_view_set_model(GTK_TREE_VIEW(p_intf->p_sys->p_tvplaylist), GTK_TREE_MODEL(p_intf->p_sys->p_playlist));
-    g_object_unref(p_intf->p_sys->p_playlist);
+    gtk_tree_view_set_model(GTK_TREE_VIEW(p_intf->p_sys->p_tvplaylist), GTK_TREE_MODEL(playlist));
+    g_object_unref(playlist);
     gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(p_intf->p_sys->p_tvplaylist)),GTK_SELECTION_MULTIPLE);
 
     /* Column properties */
@@ -302,10 +302,6 @@ static void Run( intf_thread_t *p_intf )
     gtk_tree_view_set_headers_clickable(p_intf->p_sys->p_tvplaylist, TRUE);
     /* END OF PLAYLIST GTK_TREE_VIEW */
 
-    /* Save MRL entry object */
-    p_intf->p_sys->p_mrlentry = GTK_ENTRY( gtk_object_get_data(
-        GTK_OBJECT( p_intf->p_sys->p_window ), "mrl_entry" ) );
-
     /* Store p_intf to keep an eye on it */
     msg_Dbg( p_intf, "trying to store p_intf pointer ... " );
     gtk_object_set_data( GTK_OBJECT(p_intf->p_sys->p_window),
index 7c7cdd371a30c92ff59edccb58a57f53fb7c1cc4..5d984189c2009d20fa59e73c25bf223029f8b411 100644 (file)
        <packing>
          <property name="padding">4</property>
          <property name="expand">False</property>
-         <property name="fill">False</property>
+         <property name="fill">True</property>
        </packing>
       </child>
 
                              <property name="reorderable">False</property>
                              <property name="enable_search">True</property>
                              <signal name="row_activated" handler="onFileListRow" last_modification_time="Fri, 26 Sep 2003 13:30:40 GMT"/>
-                             <signal name="select_cursor_row" handler="onFileListRowSelected" last_modification_time="Fri, 26 Sep 2003 13:31:20 GMT"/>
                            </widget>
                          </child>
                        </widget>
                      <property name="case_sensitive">False</property>
                      <property name="enable_arrow_keys">True</property>
                      <property name="enable_arrows_always">False</property>
-                     <signal name="add" handler="onNetworkMRLAdd" last_modification_time="Fri, 07 Nov 2003 14:35:58 GMT"/>
 
                      <child internal-child="entry">
                        <widget class="GtkEntry" id="entryMRL">
                      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
                      <property name="snap_to_ticks">False</property>
                      <property name="wrap">False</property>
-                     <property name="adjustment">1233 0 65535 1 10 10</property>
+                     <property name="adjustment">1234 0 65535 1 10 10</property>
                      <signal name="changed" handler="NetworkBuildMRL" last_modification_time="Sat, 08 Nov 2003 13:34:10 GMT"/>
                    </widget>
                    <packing>
                          <property name="editable">True</property>
                          <property name="visibility">True</property>
                          <property name="max_length">0</property>
-                         <property name="text" translatable="yes">unicast</property>
+                         <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
                          <property name="invisible_char" translatable="yes">*</property>
                          <property name="activates_default">True</property>
                          <property name="editable">True</property>
                          <property name="visibility">True</property>
                          <property name="max_length">0</property>
-                         <property name="text" translatable="yes">udp</property>
+                         <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
                          <property name="invisible_char" translatable="yes">*</property>
                          <property name="activates_default">False</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">/dev/video</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">/dev/dsp</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">pal</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">240x192</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">mono</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">huffyuv</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">127.0.0.1</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">udp</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">ts</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
                                  <property name="editable">True</property>
                                  <property name="visibility">True</property>
                                  <property name="max_length">0</property>
-                                 <property name="text" translatable="yes">alaw</property>
+                                 <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
                                  <property name="invisible_char" translatable="yes">*</property>
                                  <property name="activates_default">True</property>
              <property name="spacing">0</property>
 
              <child>
-               <placeholder/>
+               <widget class="GtkScrolledWindow" id="scrolledwindowPreference">
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="hscrollbar_policy">GTK_POLICY_ALWAYS</property>
+                 <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
+                 <property name="shadow_type">GTK_SHADOW_NONE</property>
+                 <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+                 <child>
+                   <widget class="GtkTreeView" id="tvPreferences">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+                     <property name="headers_visible">False</property>
+                     <property name="rules_hint">False</property>
+                     <property name="reorderable">False</property>
+                     <property name="enable_search">True</property>
+                   </widget>
+                 </child>
+               </widget>
+               <packing>
+                 <property name="padding">0</property>
+                 <property name="expand">True</property>
+                 <property name="fill">True</property>
+               </packing>
              </child>
 
              <child>
                      </child>
 
                      <child>
-                       <widget class="GtkLabel" id="labelProgramName">
-                         <property name="width_request">152</property>
+                       <widget class="GtkLabel" id="labelCopyright">
+                         <property name="width_request">208</property>
                          <property name="height_request">16</property>
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">VLC media player</property>
+                         <property name="label" translatable="yes">(C) 1996-2003 the VideoLAN team</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_CENTER</property>
-                         <property name="wrap">True</property>
+                         <property name="wrap">False</property>
                          <property name="selectable">False</property>
                          <property name="xalign">0.5</property>
                          <property name="yalign">0.5</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="x">48</property>
-                         <property name="y">16</property>
+                         <property name="x">16</property>
+                         <property name="y">48</property>
                        </packing>
                      </child>
 
                      <child>
-                       <widget class="GtkLabel" id="labelCopyright">
-                         <property name="width_request">208</property>
+                       <widget class="GtkLabel" id="labelProgramName">
+                         <property name="width_request">152</property>
                          <property name="height_request">16</property>
                          <property name="visible">True</property>
-                         <property name="label" translatable="yes">(C) 1996-2003 the VideoLAN team</property>
+                         <property name="label" translatable="yes">VLC media player</property>
                          <property name="use_underline">False</property>
                          <property name="use_markup">False</property>
                          <property name="justify">GTK_JUSTIFY_CENTER</property>
-                         <property name="wrap">False</property>
+                         <property name="wrap">True</property>
                          <property name="selectable">False</property>
                          <property name="xalign">0.5</property>
                          <property name="yalign">0.5</property>
                          <property name="ypad">0</property>
                        </widget>
                        <packing>
-                         <property name="x">16</property>
-                         <property name="y">48</property>
+                         <property name="x">48</property>
+                         <property name="y">16</property>
                        </packing>
                      </child>
                    </widget>
index e8ff65ba923cab83965e175296bc50c44abe90a2..e779ec272f05e42db92a6c8710933d2cd8da9856 100644 (file)
@@ -2,7 +2,7 @@
  * pda.h: private Gtk+ interface description
  *****************************************************************************
  * Copyright (C) 1999, 2000 VideoLAN
- * $Id: pda.h,v 1.4 2003/11/07 13:01:51 jpsaman Exp $
+ * $Id: pda.h,v 1.5 2003/11/18 20:36:40 jpsaman Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -33,12 +33,10 @@ struct intf_sys_t
 
     /* windows and widgets */
     GtkWidget          *p_window;                             /* main window */
-    GtkEntry           *p_mrlentry;
     GtkNotebook        *p_notebook;
     GtkHScale          *p_slider;
     GtkTreeView        *p_tvfile;
     GtkTreeView        *p_tvplaylist;
-    GtkListStore       *p_playlist;                      /* Playlist widget  */
 
     /* slider */
     GtkLabel *          p_slider_label;
index 0ced6d5e25bca298182525e1458036832c2439b1..1eb4ac119cd5ec2a3ab8bdad07f5d1f1e32e7993 100644 (file)
@@ -2,7 +2,7 @@
  * pda_callbacks.c : Callbacks for the pda Linux Gtk+ plugin.
  *****************************************************************************
  * Copyright (C) 2000, 2001 VideoLAN
- * $Id: pda_callbacks.c,v 1.13 2003/11/09 21:29:52 jpsaman Exp $
+ * $Id: pda_callbacks.c,v 1.14 2003/11/18 20:36:40 jpsaman Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -35,6 +35,8 @@
 #include <dirent.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <pwd.h>
+#include <grp.h>
 
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
@@ -49,7 +51,7 @@
 
 #define VLC_MAX_MRL     256
 
-static char* get_file_stat(const char *path, uid_t *uid, gid_t *gid, off_t *size);
+static char *get_file_stat(const char *path, off_t *size);
 
 /*****************************************************************************
  * Useful function to retrieve p_intf
@@ -85,7 +87,7 @@ void * E_(__GtkGetIntf)( GtkWidget * widget )
     return p_data;
 }
 
-void PlaylistAddItem( GtkWidget *widget, gchar *name)
+void PlaylistAddItem(GtkWidget *widget, gchar *name)
 {
     GtkTreeView  *p_tvplaylist = NULL;
 
@@ -139,7 +141,6 @@ void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url )
 {
     intf_thread_t *p_intf = GtkGetIntf( widget );
     playlist_t   *p_playlist;
-    GtkTreeView  *p_tvplaylist;
 
     p_playlist = (playlist_t *)
              vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
@@ -163,13 +164,7 @@ void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url )
         }
         vlc_object_release(  p_playlist );
 
-        p_tvplaylist = (GtkTreeView*) lookup_widget( GTK_WIDGET(widget), "tvPlaylist" );
-        if (p_tvplaylist)
-        {
-            GtkListStore *p_liststore;
-            p_liststore = (GtkListStore *) gtk_tree_view_get_model(p_tvplaylist);
-            PlaylistRebuildListStore(p_liststore, p_playlist);
-        }
+        PlaylistAddItem(GTK_WIDGET(widget), psz_url);
     }
 }
 #endif
@@ -177,18 +172,18 @@ void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url )
 /*****************************************************************
  * Read directory helper function.
  ****************************************************************/
-void ReadDirectory(GtkListStore *p_list, char *psz_dir )
+void ReadDirectory(intf_thread_t *p_intf, GtkListStore *p_list, char *psz_dir )
 {
     GtkTreeIter iter;
     struct dirent **namelist;
     int n=-1, status=-1;
 
-    g_print("changing to dir %s\n", psz_dir);
+    msg_Dbg(p_intf, "Changing to dir %s", psz_dir);
     if (psz_dir)
     {
        status = chdir(psz_dir);
        if (status<0)
-          g_print( "permision denied\n" );
+          msg_Dbg(p_intf, "permision denied" );
     }
     n = scandir(".", &namelist, 0, alphasort);
 
@@ -197,17 +192,14 @@ void ReadDirectory(GtkListStore *p_list, char *psz_dir )
     else
     {
         int i;
-        uint32_t uid;
-        uint32_t gid;
         off_t  size;
-        gchar *ppsz_text[5];
+        gchar *ppsz_text[4];
 
         /* XXX : kludge temporaire pour yopy */
-        ppsz_text[0]="..";
-        ppsz_text[1] = get_file_stat("..", &uid, &gid, &size);
-        ppsz_text[2] = "";
-        ppsz_text[3] = "";
-        ppsz_text[4] = "";
+        ppsz_text[0] = "..";
+        ppsz_text[1] = get_file_stat("..", &size);
+        ppsz_text[2] = "?";
+        ppsz_text[3] = "?";        
 
         /* Add a new row to the model */
         gtk_list_store_append (p_list, &iter);
@@ -215,8 +207,8 @@ void ReadDirectory(GtkListStore *p_list, char *psz_dir )
                             0, ppsz_text[0],
                             1, ppsz_text[1],
                             2, size,
-                            3, ppsz_text[3],
-                            4, ppsz_text[4],
+                            3, ppsz_text[2],
+                            4, ppsz_text[3],
                             -1);
 
         if (ppsz_text[1]) free(ppsz_text[1]);
@@ -228,20 +220,19 @@ void ReadDirectory(GtkListStore *p_list, char *psz_dir )
             {
                 /* This is a list of strings. */
                 ppsz_text[0] = namelist[i]->d_name;
-                ppsz_text[1] = get_file_stat(namelist[i]->d_name, &uid, &gid, &size);
-                ppsz_text[2] = "";
-                ppsz_text[3] = "";
-                ppsz_text[4] = "";
-#if 0
-                g_print( "(%d) file: %s permission: %s user: %ull group: %ull size: %ull\n", i, ppsz_text[0], ppsz_text[1], uid, gid, size );
+                ppsz_text[1] = get_file_stat(namelist[i]->d_name, &size);
+                ppsz_text[2] = "?";
+                ppsz_text[3] = "?";
+#if 1
+                msg_Dbg(p_intf, "(%d) file: %s permission: %s user: %s group: %s size: %ull", i, ppsz_text[0], ppsz_text[1], ppsz_text[2], ppsz_text[3], (unsigned long long) size );
 #endif
                 gtk_list_store_append (p_list, &iter);
                 gtk_list_store_set (p_list, &iter,
                                     0, ppsz_text[0],
                                     1, ppsz_text[1],
                                     2, size,
-                                    3, ppsz_text[3],
-                                    4, ppsz_text[4],
+                                    3, ppsz_text[2],
+                                    4, ppsz_text[3],
                                     -1);
 
                 if (ppsz_text[1]) free(ppsz_text[1]);
@@ -251,19 +242,18 @@ void ReadDirectory(GtkListStore *p_list, char *psz_dir )
     }
 }
 
-static char* get_file_stat(const char *path, uid_t *uid, gid_t *gid, off_t *size)
+static char *get_file_stat(const char *path, off_t *size)
 {
-    struct stat st;
-    char *perm;
+    struct passwd *pw  = NULL;
+    struct group  *grp = NULL;
+    struct stat    st;
+    char  *perm;
+    int    ret = -1;
 
     perm = (char *) malloc(sizeof(char)*10);
     strncpy( perm, "----------", sizeof("----------"));
     if (lstat(path, &st)==0)
     {
-        /* user, group, filesize */
-        *uid = st.st_uid;
-        *gid = st.st_gid;
-        *size = st.st_size;
         /* determine permission modes */
         if (S_ISLNK(st.st_mode))
             perm[0]= 'l';
@@ -325,6 +315,24 @@ static char* get_file_stat(const char *path, uid_t *uid, gid_t *gid, off_t *size
         }
         else if (st.st_mode &S_ISVTX)
             perm[9]= 'T';
+
+#if 0
+        *permission = perm;
+
+        /* user, group, filesize */
+        pw  = getpwuid(st.st_uid);
+        grp = getgrgid(st.st_gid);
+        if (NULL == pw)
+            return -1;
+        *uid = (char*) malloc( sizeof(char) * strlen(pw->pw_name) );
+        strcpy(path[2],pw->pw_name);
+        if (NULL == grp)
+            return -1;
+        *gid = (char*) malloc( sizeof(char) * strlen(grp->gr_name) );
+        strcpy(path[3], grp->gr_name);
+#endif
+        *size = st.st_size;
+        ret = 0;
     }
     return perm;
 }
@@ -481,7 +489,6 @@ void addSelectedToPlaylist(GtkTreeModel *model,
 
     gtk_tree_model_get(model, iter, 0, &filename, -1);
 
-    /* Add to playlist object. */
     PlaylistAddItem(GTK_WIDGET(userdata), filename);
 }
 
@@ -491,11 +498,12 @@ onFileListRow                          (GtkTreeView     *treeview,
                                         GtkTreeViewColumn *column,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( GTK_WIDGET(treeview) );
     GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
 
     if (gtk_tree_selection_count_selected_rows(selection) == 1)
     {
-        struct stat st;
+        struct stat   st;
         GtkTreeModel *model;
         GtkTreeIter   iter;
         gchar        *filename;
@@ -503,37 +511,57 @@ onFileListRow                          (GtkTreeView     *treeview,
         /* This might be a directory selection */
         model = gtk_tree_view_get_model(treeview);
         if (!model)
-            g_print( "Error: model is a null pointer\n" );
-        if (!gtk_tree_model_get_iter(model, &iter, path))
-            g_print( "Error: could not get iter from model\n" );
+            msg_Err(p_intf, "PDA: Filelist model contains a NULL pointer\n" );
 
-        gtk_tree_model_get(model, &iter, 0, &filename, -1);
-
-        if (stat((char*)filename, &st)==0)
+        if (path == NULL )
         {
-            if (S_ISDIR(st.st_mode))
+#if 0
+            GList* list;
+
+            list = gtk_tree_selection_get_selected_rows(selection,model);
+            if (g_list_length(list) == 1)
             {
-                GtkListStore *p_model = NULL;
-
-                /* Get new directory listing */
-                p_model = gtk_list_store_new (5,
-                                           G_TYPE_STRING,
-                                           G_TYPE_STRING,
-                                           G_TYPE_UINT64,
-                                           G_TYPE_STRING,
-                                           G_TYPE_STRING);
-                if (p_model)
-                {               
-                    ReadDirectory(p_model, filename);
-
-                    /* Update TreeView with new model */
-                    gtk_tree_view_set_model(treeview, (GtkTreeModel*) p_model);
-                    g_object_unref(p_model);
-                }
+                filename = (gchar *) g_list_nth_data(list,0);
+                msg_Dbg(p_intf, "PDA: filename = %s", (gchar*) filename );
+                PlaylistAddItem(GTK_WIDGET(treeview), filename);
             }
-            else
+            g_list_foreach (list, gtk_tree_path_free, NULL);
+            g_list_free (list);
+#endif
+        }
+        else
+        {
+            if (!gtk_tree_model_get_iter(model, &iter, path))
+                msg_Err( p_intf, "PDA: Could not get iter from model" );
+
+            gtk_tree_model_get(model, &iter, 0, &filename, -1);
+
+            if (stat((char*)filename, &st)==0)
             {
-                gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) treeview);
+                if (S_ISDIR(st.st_mode))
+                {
+                    GtkListStore *p_model = NULL;
+
+                    /* Get new directory listing */
+                    p_model = gtk_list_store_new (5,
+                                               G_TYPE_STRING,
+                                               G_TYPE_STRING,
+                                               G_TYPE_UINT64,
+                                               G_TYPE_STRING,
+                                               G_TYPE_STRING);
+                    if (p_model)
+                    {
+                        ReadDirectory(p_intf, p_model, filename);
+
+                        /* Update TreeView with new model */
+                        gtk_tree_view_set_model(treeview, (GtkTreeModel*) p_model);
+                        g_object_unref(p_model);
+                    }
+                }
+                else
+                {
+                    gtk_tree_selection_selected_foreach(selection, (GtkTreeSelectionForeachFunc) &addSelectedToPlaylist, (gpointer) treeview);
+                }
             }
         }
     }
@@ -543,25 +571,6 @@ onFileListRow                          (GtkTreeView     *treeview,
     }
 }
 
-
-void
-onFileListColumns                      (GtkTreeView     *treeview,
-                                        gpointer         user_data)
-{
-    g_print("onFileListColumn\n");
-}
-
-
-gboolean
-onFileListRowSelected                  (GtkTreeView     *treeview,
-                                        gboolean         start_editing,
-                                        gpointer         user_data)
-{
-    g_print("onFileListRowSelected\n");
-    return FALSE;
-}
-
-
 void
 onAddFileToPlaylist                    (GtkButton       *button,
                                         gpointer         user_data)
@@ -630,7 +639,7 @@ onAddNetworkPlaylist                   (GtkButton       *button,
     {
         mrl_name = gtk_entry_get_text(p_mrl);
 
-        PlaylistAddItem(GTK_WIDGET(button), (gchar *)p_mrl);
+        PlaylistAddItem(GTK_WIDGET(button), (gchar *)mrl_name);
     }
 }
 
@@ -639,6 +648,8 @@ void
 onAddCameraToPlaylist                  (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
+
     GtkSpinButton *entryV4LChannel = NULL;
     GtkSpinButton *entryV4LFrequency = NULL;
     GtkSpinButton *entryV4LSampleRate = NULL;
@@ -721,9 +732,10 @@ onAddCameraToPlaylist                  (GtkButton       *button,
     /* end MJPEG only */
 
     if (pos >= VLC_MAX_MRL)
+    {
         v4l_mrl[VLC_MAX_MRL-1]='\0';
-
-    g_print( "%s\n", v4l_mrl );
+        msg_Err(p_intf, "Media Resource Locator is truncated to: %s", v4l_mrl);
+    }
 
     PlaylistAddItem(GTK_WIDGET(button), (gchar*) &v4l_mrl);
 }
@@ -734,7 +746,6 @@ PlaylistEvent                          (GtkWidget       *widget,
                                         GdkEvent        *event,
                                         gpointer         user_data)
 {
-    g_print("onPlaylistEvent\n");
     return FALSE;
 }
 
@@ -743,7 +754,6 @@ void
 onPlaylistColumnsChanged               (GtkTreeView     *treeview,
                                         gpointer         user_data)
 {
-    g_print("onPlaylistColumnsChanged\n");
 }
 
 
@@ -752,8 +762,7 @@ onPlaylistRowSelected                  (GtkTreeView     *treeview,
                                         gboolean         start_editing,
                                         gpointer         user_data)
 {
-  g_print("onPlaylistRowSelected\n");
-  return FALSE;
+    return FALSE;
 }
 
 
@@ -763,7 +772,6 @@ onPlaylistRow                          (GtkTreeView     *treeview,
                                         GtkTreeViewColumn *column,
                                         gpointer         user_data)
 {
-    g_print("onPlaylistRow\n");
 }
 
 
@@ -787,7 +795,9 @@ void
 onClearPlaylist                        (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
 
+    msg_Dbg(p_intf, "Clear playlist" );
 }
 
 
@@ -795,7 +805,9 @@ void
 onPreferenceSave                       (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
 
+    msg_Dbg(p_intf, "Preferences Save" );
 }
 
 
@@ -803,7 +815,9 @@ void
 onPreferenceApply                      (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
 
+    msg_Dbg(p_intf, "Preferences Apply" );
 }
 
 
@@ -811,23 +825,18 @@ void
 onPreferenceCancel                     (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
 
+    msg_Dbg(p_intf, "Preferences Cancel" );
 }
 
 
-
-void
-onNetworkMRLAdd                        (GtkContainer    *container,
-                                        GtkWidget       *widget,
-                                        gpointer         user_data)
-{
-
-}
-
 void
 onAddTranscodeToPlaylist               (GtkButton       *button,
                                         gpointer         user_data)
 {
+    intf_thread_t *p_intf = GtkGetIntf( button );
+
     GtkEntry       *entryVideoCodec = NULL;
     GtkSpinButton  *entryVideoBitrate = NULL;
     GtkSpinButton  *entryVideoBitrateTolerance = NULL;
@@ -907,11 +916,11 @@ onAddTranscodeToPlaylist               (GtkButton       *button,
 
     pos += snprintf( &mrl[pos], VLC_MAX_MRL - pos, " --ttl=%d", (int)i_std_ttl);
 
-
     if (pos >= VLC_MAX_MRL)
-        _mrl[VLC_MAX_MRL-1]='\0';
-
-    g_print( "%s\n", mrl );
+    {
+        mrl[VLC_MAX_MRL-1]='\0';
+        msg_Err(p_intf, "Media Resource Locator is truncated to: %s", mrl );
+    }
 
     PlaylistAddItem(GTK_WIDGET(button), (gchar*) &mrl);
 }
index a0acf67a3572247cfae2d0e55a77f5f83c941b7a..820ac53e4a9caf29bd25dc522864e84201251c98 100644 (file)
@@ -2,7 +2,7 @@
  * callbacks.h : pda plugin for vlc
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: pda_callbacks.h,v 1.8 2003/11/09 21:29:52 jpsaman Exp $
+ * $Id: pda_callbacks.h,v 1.9 2003/11/18 20:36:40 jpsaman Exp $
  *
  * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
  *
@@ -26,7 +26,7 @@
 #include <vlc/vlc.h>
 #include <vlc/intf.h>
 
-void ReadDirectory( GtkListStore *p_list, char *psz_dir );
+void ReadDirectory( intf_thread_t *p_intf, GtkListStore *p_list, char *psz_dir );
 #if 0
 void MediaURLOpenChanged( GtkWidget *widget, gchar *psz_url );
 #endif
@@ -78,15 +78,6 @@ onFileListRow                          (GtkTreeView     *treeview,
                                         GtkTreeViewColumn *column,
                                         gpointer         user_data);
 
-void
-onFileListColumns                      (GtkTreeView     *treeview,
-                                        gpointer         user_data);
-
-gboolean
-onFileListRowSelected                  (GtkTreeView     *treeview,
-                                        gboolean         start_editing,
-                                        gpointer         user_data);
-
 void
 onAddFileToPlaylist                    (GtkButton       *button,
                                         gpointer         user_data);
@@ -144,11 +135,6 @@ onPreferenceCancel                     (GtkButton       *button,
                                         gpointer         user_data);
 
 
-void
-onNetworkMRLAdd                        (GtkContainer    *container,
-                                        GtkWidget       *widget,
-                                        gpointer         user_data);
-
 void
 NetworkBuildMRL                        (GtkEditable     *editable,
                                         gpointer         user_data);
index e1b34045d3bc82d46b55105da39308e876a01056..6e2607c5463c2e70a27b9a772c9b65efb7c02d74 100644 (file)
@@ -176,6 +176,8 @@ create_pda (void)
   GtkWidget *ClearPlaylist;
   GtkWidget *playlist;
   GtkWidget *vbox2;
+  GtkWidget *scrolledwindowPreference;
+  GtkWidget *tvPreferences;
   GtkWidget *hbox2;
   GtkWidget *PreferenceSave;
   GtkWidget *PreferenceApply;
@@ -187,8 +189,8 @@ create_pda (void)
   GtkWidget *aboutImage;
   GtkWidget *labelDescription;
   GtkWidget *labelAuthors;
-  GtkWidget *labelProgramName;
   GtkWidget *labelCopyright;
+  GtkWidget *labelProgramName;
   GtkWidget *about;
   GtkTooltips *tooltips;
 
@@ -303,7 +305,7 @@ create_pda (void)
   timeSlider = gtk_hscale_new (GTK_ADJUSTMENT (gtk_adjustment_new (3, 0, 100, 1, 6.25, 0)));
   gtk_widget_set_name (timeSlider, "timeSlider");
   gtk_widget_show (timeSlider);
-  gtk_box_pack_start (GTK_BOX (vbox), timeSlider, FALSE, FALSE, 4);
+  gtk_box_pack_start (GTK_BOX (vbox), timeSlider, FALSE, TRUE, 4);
   gtk_scale_set_draw_value (GTK_SCALE (timeSlider), FALSE);
   gtk_scale_set_value_pos (GTK_SCALE (timeSlider), GTK_POS_RIGHT);
   gtk_scale_set_digits (GTK_SCALE (timeSlider), 3);
@@ -426,7 +428,7 @@ create_pda (void)
   gtk_label_set_justify (GTK_LABEL (labelNetworkAddress), GTK_JUSTIFY_LEFT);
   gtk_misc_set_alignment (GTK_MISC (labelNetworkAddress), 0, 0.5);
 
-  entryNetworkPort_adj = gtk_adjustment_new (1233, 0, 65535, 1, 10, 10);
+  entryNetworkPort_adj = gtk_adjustment_new (1234, 0, 65535, 1, 10, 10);
   entryNetworkPort = gtk_spin_button_new (GTK_ADJUSTMENT (entryNetworkPort_adj), 1, 0);
   gtk_widget_set_name (entryNetworkPort, "entryNetworkPort");
   gtk_widget_show (entryNetworkPort);
@@ -464,7 +466,6 @@ create_pda (void)
   entryNetworkType = GTK_COMBO (comboNetworkType)->entry;
   gtk_widget_set_name (entryNetworkType, "entryNetworkType");
   gtk_widget_show (entryNetworkType);
-  gtk_entry_set_text (GTK_ENTRY (entryNetworkType), _("unicast"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryNetworkType), TRUE);
 
   labelNetworkType = gtk_label_new (_("Network: "));
@@ -498,7 +499,6 @@ create_pda (void)
   entryNetworkProtocolType = GTK_COMBO (comboNetworkProtocolType)->entry;
   gtk_widget_set_name (entryNetworkProtocolType, "entryNetworkProtocolType");
   gtk_widget_show (entryNetworkProtocolType);
-  gtk_entry_set_text (GTK_ENTRY (entryNetworkProtocolType), _("udp"));
 
   labelNetworkProtocol = gtk_label_new (_("Protocol:"));
   gtk_widget_set_name (labelNetworkProtocol, "labelNetworkProtocol");
@@ -672,7 +672,6 @@ create_pda (void)
   entryV4LVideoDevice = GTK_COMBO (comboV4lVideoDevice)->entry;
   gtk_widget_set_name (entryV4LVideoDevice, "entryV4LVideoDevice");
   gtk_widget_show (entryV4LVideoDevice);
-  gtk_entry_set_text (GTK_ENTRY (entryV4LVideoDevice), _("/dev/video"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryV4LVideoDevice), TRUE);
 
   comboV4lAudioDevice = gtk_combo_new ();
@@ -693,7 +692,6 @@ create_pda (void)
   entryV4LAudioDevice = GTK_COMBO (comboV4lAudioDevice)->entry;
   gtk_widget_set_name (entryV4LAudioDevice, "entryV4LAudioDevice");
   gtk_widget_show (entryV4LAudioDevice);
-  gtk_entry_set_text (GTK_ENTRY (entryV4LAudioDevice), _("/dev/dsp"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryV4LAudioDevice), TRUE);
 
   entryV4LChannel_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 10);
@@ -723,7 +721,6 @@ create_pda (void)
   entryV4LNorm = GTK_COMBO (comboV4LNorm)->entry;
   gtk_widget_set_name (entryV4LNorm, "entryV4LNorm");
   gtk_widget_show (entryV4LNorm);
-  gtk_entry_set_text (GTK_ENTRY (entryV4LNorm), _("pal"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryV4LNorm), TRUE);
 
   comboV4LSize = gtk_combo_new ();
@@ -747,7 +744,6 @@ create_pda (void)
   entryV4LSize = GTK_COMBO (comboV4LSize)->entry;
   gtk_widget_set_name (entryV4LSize, "entryV4LSize");
   gtk_widget_show (entryV4LSize);
-  gtk_entry_set_text (GTK_ENTRY (entryV4LSize), _("240x192"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryV4LSize), TRUE);
 
   entryV4LFrequency_adj = gtk_adjustment_new (8692, 0, 65535, 1, 10, 10);
@@ -797,7 +793,6 @@ create_pda (void)
   entryV4LSoundDirection = GTK_COMBO (comboV4LSoundDirection)->entry;
   gtk_widget_set_name (entryV4LSoundDirection, "entryV4LSoundDirection");
   gtk_widget_show (entryV4LSoundDirection);
-  gtk_entry_set_text (GTK_ENTRY (entryV4LSoundDirection), _("mono"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryV4LSoundDirection), TRUE);
 
   entryV4LTuner_adj = gtk_adjustment_new (0, -1, 100, 1, 10, 10);
@@ -896,7 +891,6 @@ create_pda (void)
   entryVideoCodec = GTK_COMBO (comboVideoCodec)->entry;
   gtk_widget_set_name (entryVideoCodec, "entryVideoCodec");
   gtk_widget_show (entryVideoCodec);
-  gtk_entry_set_text (GTK_ENTRY (entryVideoCodec), _("huffyuv"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryVideoCodec), TRUE);
 
   labelVideoBitrate = gtk_label_new (_("Video Bitrate:"));
@@ -1006,7 +1000,6 @@ create_pda (void)
   entryStdURL = GTK_COMBO (comboStdURL)->entry;
   gtk_widget_set_name (entryStdURL, "entryStdURL");
   gtk_widget_show (entryStdURL);
-  gtk_entry_set_text (GTK_ENTRY (entryStdURL), _("127.0.0.1"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryStdURL), TRUE);
 
   comboStdMuxer = gtk_combo_new ();
@@ -1024,7 +1017,6 @@ create_pda (void)
   entryStdMuxer = GTK_COMBO (comboStdMuxer)->entry;
   gtk_widget_set_name (entryStdMuxer, "entryStdMuxer");
   gtk_widget_show (entryStdMuxer);
-  gtk_entry_set_text (GTK_ENTRY (entryStdMuxer), _("udp"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryStdMuxer), TRUE);
 
   comboStdAccess = gtk_combo_new ();
@@ -1043,7 +1035,6 @@ create_pda (void)
   entryStdAccess = GTK_COMBO (comboStdAccess)->entry;
   gtk_widget_set_name (entryStdAccess, "entryStdAccess");
   gtk_widget_show (entryStdAccess);
-  gtk_entry_set_text (GTK_ENTRY (entryStdAccess), _("ts"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryStdAccess), TRUE);
 
   entryAudioBitrate_adj = gtk_adjustment_new (256, 0, 65535, 1, 10, 10);
@@ -1074,7 +1065,6 @@ create_pda (void)
   entryAudioCodec = GTK_COMBO (comboAudioCodec)->entry;
   gtk_widget_set_name (entryAudioCodec, "entryAudioCodec");
   gtk_widget_show (entryAudioCodec);
-  gtk_entry_set_text (GTK_ENTRY (entryAudioCodec), _("alaw"));
   gtk_entry_set_activates_default (GTK_ENTRY (entryAudioCodec), TRUE);
 
   checkVideoDeinterlace = gtk_check_button_new_with_mnemonic (_("enable"));
@@ -1185,6 +1175,17 @@ create_pda (void)
   gtk_widget_show (vbox2);
   gtk_container_add (GTK_CONTAINER (notebook), vbox2);
 
+  scrolledwindowPreference = gtk_scrolled_window_new (NULL, NULL);
+  gtk_widget_set_name (scrolledwindowPreference, "scrolledwindowPreference");
+  gtk_widget_show (scrolledwindowPreference);
+  gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindowPreference, TRUE, TRUE, 0);
+
+  tvPreferences = gtk_tree_view_new ();
+  gtk_widget_set_name (tvPreferences, "tvPreferences");
+  gtk_widget_show (tvPreferences);
+  gtk_container_add (GTK_CONTAINER (scrolledwindowPreference), tvPreferences);
+  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tvPreferences), FALSE);
+
   hbox2 = gtk_hbox_new (TRUE, 0);
   gtk_widget_set_name (hbox2, "hbox2");
   gtk_widget_show (hbox2);
@@ -1249,6 +1250,12 @@ create_pda (void)
   gtk_label_set_justify (GTK_LABEL (labelAuthors), GTK_JUSTIFY_LEFT);
   gtk_label_set_line_wrap (GTK_LABEL (labelAuthors), TRUE);
 
+  labelCopyright = gtk_label_new (_("(C) 1996-2003 the VideoLAN team"));
+  gtk_widget_set_name (labelCopyright, "labelCopyright");
+  gtk_widget_show (labelCopyright);
+  gtk_fixed_put (GTK_FIXED (fixed2), labelCopyright, 16, 48);
+  gtk_widget_set_size_request (labelCopyright, 208, 16);
+
   labelProgramName = gtk_label_new (_("VLC media player"));
   gtk_widget_set_name (labelProgramName, "labelProgramName");
   gtk_widget_show (labelProgramName);
@@ -1256,12 +1263,6 @@ create_pda (void)
   gtk_widget_set_size_request (labelProgramName, 152, 16);
   gtk_label_set_line_wrap (GTK_LABEL (labelProgramName), TRUE);
 
-  labelCopyright = gtk_label_new (_("(C) 1996-2003 the VideoLAN team"));
-  gtk_widget_set_name (labelCopyright, "labelCopyright");
-  gtk_widget_show (labelCopyright);
-  gtk_fixed_put (GTK_FIXED (fixed2), labelCopyright, 16, 48);
-  gtk_widget_set_size_request (labelCopyright, 208, 16);
-
   about = gtk_label_new (_("About"));
   gtk_widget_set_name (about, "about");
   gtk_widget_show (about);
@@ -1297,15 +1298,9 @@ create_pda (void)
   g_signal_connect ((gpointer) tvFileList, "row_activated",
                     G_CALLBACK (onFileListRow),
                     NULL);
-  g_signal_connect ((gpointer) tvFileList, "select_cursor_row",
-                    G_CALLBACK (onFileListRowSelected),
-                    NULL);
   g_signal_connect ((gpointer) AddFileToPlaylist, "pressed",
                     G_CALLBACK (onAddFileToPlaylist),
                     NULL);
-  g_signal_connect ((gpointer) comboMRL, "add",
-                    G_CALLBACK (onNetworkMRLAdd),
-                    NULL);
   g_signal_connect ((gpointer) entryNetworkPort, "changed",
                     G_CALLBACK (NetworkBuildMRL),
                     NULL);
@@ -1479,6 +1474,8 @@ create_pda (void)
   GLADE_HOOKUP_OBJECT (pda, ClearPlaylist, "ClearPlaylist");
   GLADE_HOOKUP_OBJECT (pda, playlist, "playlist");
   GLADE_HOOKUP_OBJECT (pda, vbox2, "vbox2");
+  GLADE_HOOKUP_OBJECT (pda, scrolledwindowPreference, "scrolledwindowPreference");
+  GLADE_HOOKUP_OBJECT (pda, tvPreferences, "tvPreferences");
   GLADE_HOOKUP_OBJECT (pda, hbox2, "hbox2");
   GLADE_HOOKUP_OBJECT (pda, PreferenceSave, "PreferenceSave");
   GLADE_HOOKUP_OBJECT (pda, PreferenceApply, "PreferenceApply");
@@ -1490,8 +1487,8 @@ create_pda (void)
   GLADE_HOOKUP_OBJECT (pda, aboutImage, "aboutImage");
   GLADE_HOOKUP_OBJECT (pda, labelDescription, "labelDescription");
   GLADE_HOOKUP_OBJECT (pda, labelAuthors, "labelAuthors");
-  GLADE_HOOKUP_OBJECT (pda, labelProgramName, "labelProgramName");
   GLADE_HOOKUP_OBJECT (pda, labelCopyright, "labelCopyright");
+  GLADE_HOOKUP_OBJECT (pda, labelProgramName, "labelProgramName");
   GLADE_HOOKUP_OBJECT (pda, about, "about");
   GLADE_HOOKUP_OBJECT_NO_REF (pda, tooltips, "tooltips");