changeset 17914:f9cb6fc1608a

Add an option to list the properties: -list-properties
author albeu
date Wed, 22 Mar 2006 16:35:17 +0000
parents f000129a16b3
children 02d7b7f2c939
files cfg-mplayer.h help/help_mp-en.h m_property.c m_property.h mplayer.c
diffstat 5 files changed, 42 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cfg-mplayer.h	Wed Mar 22 12:23:55 2006 +0000
+++ b/cfg-mplayer.h	Wed Mar 22 16:35:17 2006 +0000
@@ -397,6 +397,7 @@
 #include "cfg-common.h"
 #undef MAIN_CONF
         
+	{"list-properties", &list_properties, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
 	{"identify", &identify, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
 	{"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
 	{"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG|CONF_GLOBAL, 0, 0, NULL},
--- a/help/help_mp-en.h	Wed Mar 22 12:23:55 2006 +0000
+++ b/help/help_mp-en.h	Wed Mar 22 16:35:17 2006 +0000
@@ -503,6 +503,10 @@
 #define MSGTR_UnknownProfile "Unknown profile '%s'.\n"
 #define MSGTR_Profile "Profile %s: %s\n"
 
+// m_property.c
+#define MSGTR_PropertyListHeader "\n Name                 Type            Min        Max\n\n"
+#define MSGTR_TotalProperties "\nTotal: %d properties\n"
+
 // open.c, stream.c:
 #define MSGTR_CdDevNotfound "CD-ROM Device '%s' not found.\n"
 #define MSGTR_ErrTrackSelect "Error selecting VCD track."
--- a/m_property.c	Wed Mar 22 12:23:55 2006 +0000
+++ b/m_property.c	Wed Mar 22 16:35:17 2006 +0000
@@ -9,6 +9,7 @@
 
 #include "m_option.h"
 #include "m_property.h"
+#include "mp_msg.h"
 #include "help_mp.h"
 
 #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5))
@@ -142,6 +143,34 @@
     return ret;
 }
 
+void m_properties_print_help_list(m_option_t* list) {
+    char min[50],max[50];
+    int i,count = 0;
+    
+    mp_msg(MSGT_CFGPARSER, MSGL_INFO, MSGTR_PropertyListHeader);
+    for(i = 0 ; list[i].name ; i++) {
+        m_option_t* opt = &list[i];
+        if(opt->flags & M_OPT_MIN)
+            sprintf(min,"%-8.0f",opt->min);
+        else
+            strcpy(min,"No");
+        if(opt->flags & M_OPT_MAX)
+            sprintf(max,"%-8.0f",opt->max);
+        else
+            strcpy(max,"No");
+        mp_msg(MSGT_CFGPARSER, MSGL_INFO, " %-20.20s %-15.15s %-10.10s %-10.10s\n",
+               opt->name,
+               opt->type->name,
+               min,
+               max,
+               opt->flags & CONF_GLOBAL ? "Yes" : "No",
+               opt->flags & CONF_NOCMD ? "No" : "Yes",
+               opt->flags & CONF_NOCFG ? "No" : "Yes");
+        count++;
+    }
+    mp_msg(MSGT_CFGPARSER, MSGL_INFO, MSGTR_TotalProperties, count);
+}
+
 // Some generic property implementations
 
 int m_property_int_ro(m_option_t* prop,int action,
--- a/m_property.h	Wed Mar 22 12:23:55 2006 +0000
+++ b/m_property.h	Wed Mar 22 16:35:17 2006 +0000
@@ -33,6 +33,8 @@
 
 int m_property_parse(m_option_t* prop, char* txt);
 
+void m_properties_print_help_list(m_option_t* list);
+
 char* m_properties_expand_string(m_option_t* prop_list,char* str);
 
 #define M_PROPERTY_CLAMP(prop,val) do {                                 \
--- a/mplayer.c	Wed Mar 22 12:23:55 2006 +0000
+++ b/mplayer.c	Wed Mar 22 16:35:17 2006 +0000
@@ -227,6 +227,8 @@
 int enqueue=0;
 #endif
 
+static int list_properties = 0;
+
 #define MAX_OSD_LEVEL 3
 #define MAX_TERM_OSD_LEVEL 1
 
@@ -1815,6 +1817,10 @@
       mp_msg(MSGT_CPLAYER, MSGL_INFO, "\n");
       opt_exit = 1;
     }
+    if(list_properties) {
+      m_properties_print_help_list(mp_properties);
+      opt_exit = 1;
+    }
 
     if(opt_exit)
       exit_player(NULL);