[vlc-devel] [Patch] Initialize the drop down lists - insidesettings on creation, instead of let the user push buttons...
André Weber
WeberAndre at gmx.de
Thu Feb 28 07:44:04 CET 2008
Hi,
depends on the GUI you are useing - my patches will only change the QT - if
you go
to the settings - and have there drop downlists with an associated "Update
Button"
-- where in the current version you are in need to press it -- to get the
list of choice
- you should have to choices allready on opening of the settings.
I'am not sure - how much this allready works for v4l - I just heard from j-b
that
it is used there too. So it may influence the behaviour of the settings
dialog in this
area. May be the module needs one little change to make use of it.
André
----- Original Message -----
From: "Dennis Lou" <dlou99 at yahoo.com>
To: "Mailing list for VLC media player developers" <vlc-devel at videolan.org>
Sent: Thursday, February 28, 2008 3:00 AM
Subject: Re: [vlc-devel] [Patch] Initialize the drop down lists -
insidesettings on creation, instead of let the user push buttons...
I svn updated and recompiled, but I'm not sure how your patches have changed
the behavior so far. Can you give a v4l example?
-Dennis
----- Original Message ----
From: Andre Weber <WeberAndre at gmx.de>
To: Mailing list for VLC media player developers <vlc-devel at videolan.org>
Sent: Wednesday, February 27, 2008 1:31:56 PM
Subject: [vlc-devel] [Patch] Initialize the drop down lists - inside
settings on creation, instead of let the user push buttons...
Hello,
today I talked to xtophe, j-b and some more... about an option to initialize
the selectionlists
of dropdownfields durring settings dialog creation of the controls.
This "will / should / may" work for options defined with the macros
* change_integer_list
* change_string_list
* change_float_list (seems to be never used?)
these macro's have a third parameter "list_update_func" which isn't
currently used ...
some modules pass 0 to it, and some like DirectShow pass there the same
function pointer to it
- which they use for the refresh button -- what is closer to this? to store
this function pointer
inside "module_config_t" - to call this method durring creation of the input
controls of the setup gui?
to startup with fully functional and initialized drop down lists?
(I think the user - will appreciate this?)
so I added "vlc_callback_t pf_update_list" to this structure, as a possible
callback for initializing/updating
the value lists of such a choice variable. Be aware - that this change will
force a full rebuild of the sourcetree,
and also brake one time the caching...)
But its better to do so --- instead of a bad hack and missuse of a existing
parameter / value inside this
structure - which may break - more than the cache - and gives me / us /
you - more trouble to find
and fix.
To achieve this I modified also the function "vlc_config_set" if it is
called with the ID=VLC_CONFIG_LIST
the last parameter in the open parameter list - is now the function
pointer - I found no code location
which calls this method directly so I see no danger in changing this. this
Method with this signature
is only used in the Macros named above.
My Patches in this mail contain all required changes ... to settings (QT),
WxWidgets may be possible
to also use that option, but this is no must ... the refresh buttons are
still there and will work.
A little bit ... may be more to look after is my change on the function
"setfillVLCConfigCombo" inside
prefrerences_widgets.cpp - which is used in some initialization for the
simple setting gui? so far I understand
- I added there the same initialization code for the list - but I'am not
sure if it could work - so please
check this - before finally applying the patch in the full version...
With best regards
André
----
atmo
-----Inline Attachment Follows-----
Index: entry.c
===================================================================
--- entry.c (Revision 25377)
+++ entry.c (Arbeitskopie)
@@ -368,6 +368,7 @@
}
item->i_list = len;
+ item->pf_update_list = va_arg (ap, vlc_callback_t);
ret = 0;
break;
}
-----Inline Attachment Follows-----
Index: vlc_configuration.h
===================================================================
--- vlc_configuration.h (Revision 25377)
+++ vlc_configuration.h (Arbeitskopie)
@@ -169,6 +169,7 @@
int *pi_list; /* Idem for integers
*/
char **ppsz_list_text; /* Friendly names for list values
*/
int i_list; /* Options list size
*/
+ vlc_callback_t pf_update_list;
/* Actions list */
vlc_callback_t *ppf_action; /* List of possible actions for a config
*/
@@ -435,19 +436,22 @@
vlc_config_set (p_config, VLC_CONFIG_LIST, \
(size_t)(sizeof (list) / sizeof (char *)), \
(const char *const *)(list), \
- (const char *const *)(list_text))
+ (const char *const *)(list_text), \
+ list_update_func)
#define change_integer_list( list, list_text, list_update_func ) \
vlc_config_set (p_config, VLC_CONFIG_LIST, \
(size_t)(sizeof (list) / sizeof (int)), \
(const int *)(list), \
- (const char *const *)(list_text))
+ (const char *const *)(list_text), \
+ list_update_func)
#define change_float_list( list, list_text, list_update_func ) \
vlc_config_set (p_config, VLC_CONFIG_LIST, \
(size_t)(sizeof (list) / sizeof (float)), \
(const float *)(list), \
- (const char *const *)(list_text))
+ (const char *const *)(list_text), \
+ list_update_func)
#define change_integer_range( minv, maxv ) \
vlc_config_set (p_config, VLC_CONFIG_RANGE, (int)(minv), (int)(maxv))
-----Inline Attachment Follows-----
Index: preferences_widgets.cpp
===================================================================
--- preferences_widgets.cpp (Revision 25382)
+++ preferences_widgets.cpp (Arbeitskopie)
@@ -374,6 +374,20 @@
combo->setSizePolicy( QSizePolicy::MinimumExpanding,
QSizePolicy::Preferred );
module_config_t *p_module_config = config_FindConfig( p_this,
getName() );
+ if(p_item->pf_update_list)
+ {
+ vlc_value_t val;
+ val.psz_string = strdup(p_item->value.psz);
+
+ p_item->pf_update_list(p_this, getName(), val, val, NULL);
+
+ // assume in a×y case that dirty was set to VLC_TRUE
+ // because lazy programmes will use the same callback for
+ // this, like the one behind the refresh push button?
+ p_item->b_dirty = VLC_FALSE;
+
+ if(val.psz_string) free(val.psz_string);
+ }
finish( p_module_config, bycat );
if( !l )
@@ -473,6 +487,17 @@
config_FindConfig( VLC_OBJECT(p_intf), configname );
if( p_config )
{
+ if(p_config->pf_update_list)
+ {
+ vlc_value_t val;
+ val.i_int = p_config->value.i;
+ p_config->pf_update_list(VLC_OBJECT(p_intf), configname, val,
val, NULL);
+ // assume in any case that dirty was set to VLC_TRUE
+ // because lazy programmes will use the same callback for
+ // this, like the one behind the refresh push button?
+ p_config->b_dirty = VLC_FALSE;
+ }
+
for ( int i_index = 0; i_index < p_config->i_list; i_index++ )
{
combo->addItem( qfu( p_config->ppsz_list_text[i_index] ),
@@ -838,7 +863,20 @@
combo->setMinimumWidth( MINWIDTH_BOX );
module_config_t *p_module_config = config_FindConfig( p_this,
getName() );
+ if(p_module_config->pf_update_list)
+ {
+ vlc_value_t val;
+ val.i_int = p_module_config->value.i;
+
+ p_module_config->pf_update_list(p_this, getName(), val, val, NULL);
+
+ // assume in any case that dirty was set to VLC_TRUE
+ // because lazy programmes will use the same callback for
+ // this, like the one behind the refresh push button?
+ p_module_config->b_dirty = VLC_FALSE;
+ }
+
finish( p_module_config, bycat );
if( !l )
{
-----Inline Attachment Follows-----
_______________________________________________
vlc-devel mailing list
To unsubscribe or modify your subscription options:
http://mailman.videolan.org/listinfo/vlc-devel
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search.
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
_______________________________________________
vlc-devel mailing list
To unsubscribe or modify your subscription options:
http://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list