+ menuItem = new BMenuItem( vlc_keys[i].psz_key_string, NULL );
+ fPopUpMenu->AddItem( menuItem );
+ }
+ r.right = r.left - 10; r.left = r.left - 60;
+ fShiftCheck = new BCheckBox( r, NULL, "Shift",
+ new BMessage(), B_FOLLOW_RIGHT | B_FOLLOW_TOP );
+ r.right = r.left - 10; r.left = r.left - 60;
+ fCtrlCheck = new BCheckBox( r, NULL, "Ctrl",
+ new BMessage(), B_FOLLOW_RIGHT | B_FOLLOW_TOP );
+ r.right = r.left - 10; r.left = r.left - 60;
+ fAltCheck = new BCheckBox( r, NULL, "Alt",
+ new BMessage(), B_FOLLOW_RIGHT | B_FOLLOW_TOP );
+ r.right = r.left - 10; r.left = 0; r.bottom -= 10;
+ fStringView = new BStringView( r, NULL, p_item->psz_text,
+ B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
+ AddChild( fStringView );
+ AddChild( fAltCheck );
+ AddChild( fCtrlCheck );
+ AddChild( fShiftCheck );
+ AddChild( fMenuField );
+ break;
+ case CONFIG_ITEM_BOOL:
+ ResizeTo( Bounds().Width(), 25 );
+ fCheckBox = new BCheckBox( Bounds(), NULL, p_item->psz_text,
+ new BMessage(), B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP );
+ AddChild( fCheckBox );
+ break;
+ case CONFIG_SECTION:
+ fInitOK = false;
+ break;
+ default:
+ fInitOK = false;
+ }
+}
+
+ConfigWidget::~ConfigWidget()
+{
+ free( fName );
+}
+
+/***********************************************************************
+ * ConfigWidget::Apply
+ ***********************************************************************
+ *
+ **********************************************************************/
+void ConfigWidget::Apply( bool doIt )
+{
+ BMenuItem * menuItem;
+ char string[256];
+ vlc_value_t val;
+
+ switch( fType )
+ {
+ case CONFIG_ITEM_STRING:
+ case CONFIG_ITEM_FILE:
+ case CONFIG_ITEM_MODULE:
+ case CONFIG_ITEM_MODULE_CAT:
+ case CONFIG_ITEM_MODULE_LIST_CAT:
+ case CONFIG_ITEM_DIRECTORY:
+ if( doIt )
+ {
+ config_PutPsz( p_intf, fName, fTextControl->Text() );
+ }
+ else
+ {
+ fTextControl->SetText( config_GetPsz( p_intf, fName ) );
+ }
+ break;
+
+ case CONFIG_ITEM_INTEGER:
+ if( doIt )
+ {
+ config_PutInt( p_intf, fName, atoi( fTextControl->Text() ) );
+ }
+ else
+ {
+ snprintf( string, 256, "%d", config_GetInt( p_intf, fName ) );
+ fTextControl->SetText( string );
+ }
+ break;
+
+ case CONFIG_ITEM_FLOAT:
+ if( doIt )
+ {
+ config_PutFloat( p_intf, fName, atof( fTextControl->Text() ) );
+ }
+ else
+ {
+ snprintf( string, 256, "%f", config_GetFloat( p_intf, fName ) );
+ fTextControl->SetText( string );
+ }
+ break;
+
+ case CONFIG_ITEM_KEY:
+ if( doIt )
+ {
+ menuItem = fPopUpMenu->FindMarked();
+ if( menuItem )
+ {
+ val.i_int = vlc_keys[fPopUpMenu->IndexOf( menuItem )].i_key_code;
+ if( fAltCheck->Value() )