Commit d77ec471 authored by Antoine Cellerier's avatar Antoine Cellerier

Fix a huge bunch of things in the video effects panel. Implement combo box options.

parent d6ce9ba9
...@@ -114,6 +114,7 @@ ExtVideo::ExtVideo( intf_thread_t *_p_intf, QWidget *_parent ) : ...@@ -114,6 +114,7 @@ ExtVideo::ExtVideo( intf_thread_t *_p_intf, QWidget *_parent ) :
} \ } \
CONNECT( ui.widget##Enable, clicked(), this, updateFilters() ); CONNECT( ui.widget##Enable, clicked(), this, updateFilters() );
#define SETUP_VFILTER_OPTION( widget, signal ) \ #define SETUP_VFILTER_OPTION( widget, signal ) \
initComboBoxItems( ui.widget ); \
setWidgetValue( ui.widget ); \ setWidgetValue( ui.widget ); \
CONNECT( ui.widget, signal, this, updateFilterOptions() ); CONNECT( ui.widget, signal, this, updateFilterOptions() );
...@@ -140,7 +141,7 @@ ExtVideo::ExtVideo( intf_thread_t *_p_intf, QWidget *_parent ) : ...@@ -140,7 +141,7 @@ ExtVideo::ExtVideo( intf_thread_t *_p_intf, QWidget *_parent ) :
SETUP_VFILTER_OPTION( gradientTypeCheck, stateChanged(int) ) SETUP_VFILTER_OPTION( gradientTypeCheck, stateChanged(int) )
SETUP_VFILTER_OPTION( gradientCartoonCheck, stateChanged(int) ) SETUP_VFILTER_OPTION( gradientCartoonCheck, stateChanged(int) )
SETUP_VFILTER( blur ) SETUP_VFILTER( motionblur )
SETUP_VFILTER_OPTION( blurFactorSlider, valueChanged(int) ) SETUP_VFILTER_OPTION( blurFactorSlider, valueChanged(int) )
SETUP_VFILTER( motiondetect ) SETUP_VFILTER( motiondetect )
...@@ -211,7 +212,7 @@ void ExtVideo::ChangeVFiltersString( char *psz_name, vlc_bool_t b_add ) ...@@ -211,7 +212,7 @@ void ExtVideo::ChangeVFiltersString( char *psz_name, vlc_bool_t b_add )
vlc_object_find_name( p_intf->p_libvlc_global, psz_name, FIND_CHILD ); vlc_object_find_name( p_intf->p_libvlc_global, psz_name, FIND_CHILD );
if( !p_obj ) if( !p_obj )
{ {
msg_Err( p_intf, "Unable to find filter module." ); msg_Err( p_intf, "Unable to find filter module \"%s\n.", psz_name );
return; return;
} }
...@@ -319,6 +320,32 @@ void ExtVideo::updateFilters() ...@@ -319,6 +320,32 @@ void ExtVideo::updateFilters()
: groupbox->isChecked() ); : groupbox->isChecked() );
} }
void ExtVideo::initComboBoxItems( QObject *widget )
{
QComboBox *combobox = qobject_cast<QComboBox*>(widget);
if( !combobox ) return;
QString option = OptionFromWidgetName( widget );
module_config_t *p_item = config_FindConfig( VLC_OBJECT(p_intf),
option.toStdString().c_str() );
if( p_item )
{
int i_type = p_item->i_type & CONFIG_ITEM;
for( int i_index = 0; i_index < p_item->i_list; i_index++ )
{
if( i_type == CONFIG_ITEM_INTEGER
|| i_type == CONFIG_ITEM_BOOL )
combobox->addItem( qfu( p_item->ppsz_list_text[i_index] ), p_item->pi_list[i_index] );
else if( i_type == CONFIG_ITEM_STRING )
combobox->addItem( qfu( p_item->ppsz_list_text[i_index] ), p_item->ppsz_list[i_index] );
}
}
else
{
msg_Err( p_intf, "Couldn't find option \"%s\".",
option.toStdString().c_str() );
}
}
void ExtVideo::setWidgetValue( QObject *widget ) void ExtVideo::setWidgetValue( QObject *widget )
{ {
QString module = ModuleFromWidgetName( widget->parent() ); QString module = ModuleFromWidgetName( widget->parent() );
...@@ -384,6 +411,8 @@ void ExtVideo::setWidgetValue( QObject *widget ) ...@@ -384,6 +411,8 @@ void ExtVideo::setWidgetValue( QObject *widget )
sprintf( str, "%06X", val.i_int ); sprintf( str, "%06X", val.i_int );
lineedit->setText( str ); lineedit->setText( str );
} }
else if( combobox ) combobox->setCurrentIndex(
combobox->findData( val.i_int ) );
else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ ); else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
} }
else if( i_type == VLC_VAR_FLOAT ) else if( i_type == VLC_VAR_FLOAT )
...@@ -397,6 +426,8 @@ void ExtVideo::setWidgetValue( QObject *widget ) ...@@ -397,6 +426,8 @@ void ExtVideo::setWidgetValue( QObject *widget )
{ {
const char *psz_string = NULL; const char *psz_string = NULL;
if( lineedit ) lineedit->setText( qfu(val.psz_string) ); if( lineedit ) lineedit->setText( qfu(val.psz_string) );
else if( combobox ) combobox->setCurrentIndex(
combobox->findData( qfu( val.psz_string ) ) );
else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ ); else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
free( val.psz_string ); free( val.psz_string );
} }
...@@ -426,13 +457,13 @@ void ExtVideo::updateFilterOptions() ...@@ -426,13 +457,13 @@ void ExtVideo::updateFilterOptions()
} }
int i_type = var_Type( p_obj, option.toStdString().c_str() ); int i_type = var_Type( p_obj, option.toStdString().c_str() );
if( !( i_type & VLC_VAR_ISCOMMAND ) ) bool b_is_command = ( i_type & VLC_VAR_ISCOMMAND );
if( !b_is_command )
{ {
vlc_object_release( p_obj ); msg_Warn( p_intf, "Module %s's %s variable isn't a command. You'll need to restart the filter to take change into account.",
msg_Err( p_intf, "Module %s's %s variable isn't a command.",
module.toStdString().c_str(), module.toStdString().c_str(),
option.toStdString().c_str() ); option.toStdString().c_str() );
return; /* FIXME: restart automatically somewhere near the end of this function */
} }
/* Try to cast to all the widgets we're likely to encounter. Only /* Try to cast to all the widgets we're likely to encounter. Only
...@@ -454,13 +485,17 @@ void ExtVideo::updateFilterOptions() ...@@ -454,13 +485,17 @@ void ExtVideo::updateFilterOptions()
else if( spinbox ) i_int = spinbox->value(); else if( spinbox ) i_int = spinbox->value();
else if( dial ) i_int = (540-dial->value())%360; else if( dial ) i_int = (540-dial->value())%360;
else if( lineedit ) i_int = lineedit->text().toInt(NULL,16); else if( lineedit ) i_int = lineedit->text().toInt(NULL,16);
else if( combobox ) i_int = combobox->itemData(combobox->currentIndex()).toInt();
else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ ); else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
config_PutInt( p_intf, option.toStdString().c_str(), i_int ); config_PutInt( p_intf, option.toStdString().c_str(), i_int );
if( b_is_command )
{
if( i_type == VLC_VAR_INTEGER ) if( i_type == VLC_VAR_INTEGER )
var_SetInteger( p_obj, option.toStdString().c_str(), i_int ); var_SetInteger( p_obj, option.toStdString().c_str(), i_int );
else else
var_SetBool( p_obj, option.toStdString().c_str(), i_int ); var_SetBool( p_obj, option.toStdString().c_str(), i_int );
} }
}
else if( i_type == VLC_VAR_FLOAT ) else if( i_type == VLC_VAR_FLOAT )
{ {
double f_float = 0; double f_float = 0;
...@@ -470,15 +505,21 @@ void ExtVideo::updateFilterOptions() ...@@ -470,15 +505,21 @@ void ExtVideo::updateFilterOptions()
else if( lineedit ) f_float = lineedit->text().toDouble(); else if( lineedit ) f_float = lineedit->text().toDouble();
else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ ); else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
config_PutFloat( p_intf, option.toStdString().c_str(), f_float ); config_PutFloat( p_intf, option.toStdString().c_str(), f_float );
if( b_is_command )
var_SetFloat( p_obj, option.toStdString().c_str(), f_float ); var_SetFloat( p_obj, option.toStdString().c_str(), f_float );
} }
else if( i_type == VLC_VAR_STRING ) else if( i_type == VLC_VAR_STRING )
{ {
char *psz_string = NULL; char *psz_string = NULL;
if( lineedit ) psz_string = qtu(lineedit->text()); if( lineedit ) psz_string = qtu(lineedit->text());
else if( combobox ) psz_string = qtu(combobox->itemData(
combobox->currentIndex()).toString());
else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ ); else msg_Warn( p_intf, "Oops %s %s %d", __FILE__, __func__, __LINE__ );
psz_string = strdup( psz_string );
config_PutPsz( p_intf, option.toStdString().c_str(), psz_string ); config_PutPsz( p_intf, option.toStdString().c_str(), psz_string );
if( b_is_command )
var_SetString( p_obj, option.toStdString().c_str(), psz_string ); var_SetString( p_obj, option.toStdString().c_str(), psz_string );
free( psz_string );
} }
else else
msg_Err( p_intf, msg_Err( p_intf,
......
...@@ -45,6 +45,7 @@ private: ...@@ -45,6 +45,7 @@ private:
Ui::ExtVideoWidget ui; Ui::ExtVideoWidget ui;
QSignalMapper* filterMapper; QSignalMapper* filterMapper;
intf_thread_t *p_intf; intf_thread_t *p_intf;
void initComboBoxItems( QObject* );
void setWidgetValue( QObject* ); void setWidgetValue( QObject* );
void ChangeVFiltersString( char *psz_name, vlc_bool_t b_add ); void ChangeVFiltersString( char *psz_name, vlc_bool_t b_add );
private slots: private slots:
......
...@@ -86,9 +86,24 @@ ...@@ -86,9 +86,24 @@
</item> </item>
<item row="0" column="1" > <item row="0" column="1" >
<widget class="QSlider" name="sharpenSigmaSlider" > <widget class="QSlider" name="sharpenSigmaSlider" >
<property name="maximum" >
<number>200</number>
</property>
<property name="singleStep" >
<number>1</number>
</property>
<property name="pageStep" >
<number>10</number>
</property>
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" >
<number>100</number>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
...@@ -123,6 +138,12 @@ ...@@ -123,6 +138,12 @@
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" >
<number>60</number>
</property>
</widget> </widget>
</item> </item>
<item row="4" column="1" > <item row="4" column="1" >
...@@ -133,6 +154,9 @@ ...@@ -133,6 +154,9 @@
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" > <property name="tickInterval" >
<number>50</number> <number>50</number>
</property> </property>
...@@ -146,6 +170,9 @@ ...@@ -146,6 +170,9 @@
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" > <property name="tickInterval" >
<number>100</number> <number>100</number>
</property> </property>
...@@ -159,6 +186,9 @@ ...@@ -159,6 +186,9 @@
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" > <property name="tickInterval" >
<number>100</number> <number>100</number>
</property> </property>
...@@ -172,6 +202,9 @@ ...@@ -172,6 +202,9 @@
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" > <property name="tickInterval" >
<number>100</number> <number>100</number>
</property> </property>
...@@ -521,7 +554,7 @@ ...@@ -521,7 +554,7 @@
</widget> </widget>
</item> </item>
<item row="0" column="1" > <item row="0" column="1" >
<widget class="QGroupBox" name="blurEnable" > <widget class="QGroupBox" name="motionblurEnable" >
<property name="title" > <property name="title" >
<string>_("Motion blur")</string> <string>_("Motion blur")</string>
</property> </property>
...@@ -547,9 +580,24 @@ ...@@ -547,9 +580,24 @@
</item> </item>
<item row="0" column="1" > <item row="0" column="1" >
<widget class="QSlider" name="blurFactorSlider" > <widget class="QSlider" name="blurFactorSlider" >
<property name="minimum" >
<number>1</number>
</property>
<property name="maximum" >
<number>127</number>
</property>
<property name="value" >
<number>80</number>
</property>
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" >
<number>16</number>
</property>
</widget> </widget>
</item> </item>
</layout> </layout>
...@@ -852,9 +900,18 @@ ...@@ -852,9 +900,18 @@
</item> </item>
<item row="3" column="1" colspan="2" > <item row="3" column="1" colspan="2" >
<widget class="QSlider" name="logoTransparencySlider" > <widget class="QSlider" name="logoTransparencySlider" >
<property name="maximum" >
<number>255</number>
</property>
<property name="orientation" > <property name="orientation" >
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="tickPosition" >
<enum>QSlider::TicksBothSides</enum>
</property>
<property name="tickInterval" >
<number>32</number>
</property>
</widget> </widget>
</item> </item>
<item row="2" column="2" > <item row="2" column="2" >
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment