Changeset a8855655eb349eea1910b82c57261946f08934e7
- Timestamp:
- 22/09/03 16:40:12 (5 years ago)
- git-parent:
- Files:
-
- include/vlc_help.h (added)
- modules/gui/wxwindows/playlist.cpp (modified) (10 diffs)
- modules/gui/wxwindows/preferences.cpp (modified) (20 diffs)
- modules/gui/wxwindows/wxwindows.h (modified) (2 diffs)
- po/POTFILES.in (modified) (5 diffs)
- po/de.po (modified) (119 diffs)
- po/en_GB.po (modified) (108 diffs)
- po/es.po (modified) (113 diffs)
- po/fr.po (modified) (120 diffs)
- po/it.po (modified) (115 diffs)
- po/ja.po (modified) (113 diffs)
- po/nl.po (modified) (118 diffs)
- po/no.po (modified) (119 diffs)
- po/pl.po (modified) (116 diffs)
- po/pt_BR.po (modified) (118 diffs)
- po/ru.po (modified) (111 diffs)
- po/sv.po (modified) (109 diffs)
- po/vlc.pot (modified) (107 diffs)
- src/libvlc.h (modified) (22 diffs)
- src/playlist/playlist.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
modules/gui/wxwindows/playlist.cpp
rc66b7a8 ra885565 3 3 ***************************************************************************** 4 4 * Copyright (C) 2000-2001 VideoLAN 5 * $Id: playlist.cpp,v 1.2 0 2003/09/21 18:07:51 gbazinExp $5 * $Id: playlist.cpp,v 1.21 2003/09/22 14:40:10 zorglub Exp $ 6 6 * 7 7 * Authors: Olivier Teuli� <ipkiss@via.ecp.fr> … … 60 60 Random_Event, 61 61 Loop_Event, 62 Repeat_Event, 62 63 SelectAll_Event, 63 64 … … 82 83 EVT_MENU(SelectAll_Event, Playlist::OnSelectAll) 83 84 EVT_CHECKBOX(Random_Event, Playlist::OnRandom) 85 EVT_CHECKBOX(Repeat_Event, Playlist::OnRepeat) 84 86 EVT_CHECKBOX(Loop_Event, Playlist::OnLoop) 85 87 … … 108 110 /* Initializations */ 109 111 p_intf = _p_intf; 112 vlc_value_t val; 110 113 i_update_counter = 0; 111 114 b_need_update = VLC_FALSE; 112 115 vlc_mutex_init( p_intf, &lock ); 113 116 SetIcon( *p_intf->p_sys->p_icon ); 117 118 var_Create( p_intf, "random", VLC_VAR_BOOL ); 119 var_Change( p_intf, "random", VLC_VAR_INHERITVALUE, & val, NULL ); 120 var_Create( p_intf, "loop", VLC_VAR_BOOL ); 121 var_Create( p_intf, "loop", VLC_VAR_BOOL ); 122 var_Change( p_intf, "repeat", VLC_VAR_INHERITVALUE, & val, NULL ); 123 var_Change( p_intf, "repeat", VLC_VAR_INHERITVALUE, & val, NULL ); 114 124 115 125 /* Create our "Manage" menu */ … … 148 158 * playlist window is ridiculously small */ 149 159 listview = new wxListView( playlist_panel, ListView_Event, 150 wxDefaultPosition, wxSize( 3 55, 300 ),160 wxDefaultPosition, wxSize( 305, 300 ), 151 161 wxLC_REPORT | wxSUNKEN_BORDER ); 152 162 listview->InsertColumn( 0, wxU(_("Url")) ); 153 listview->InsertColumn( 1, wxU(_("Duration")) ); 154 listview->SetColumnWidth( 0, 250 ); 155 listview->SetColumnWidth( 1, 100 ); 163 #if 0 164 listview->InsertColumn( 1, wxU(_("Duration")) ); 165 #endif 166 listview->SetColumnWidth( 0, 300 ); 167 #if 0 168 listview->SetColumnWidth( 1, 100 ); 169 #endif 156 170 157 171 /* Create the Random checkbox */ 158 172 wxCheckBox *random_checkbox = 159 173 new wxCheckBox( playlist_panel, Random_Event, wxU(_("Random")) ); 160 int b_random = config_GetInt( p_intf, "random") ; 161 random_checkbox->SetValue( b_random ); 174 175 var_Get( p_intf, "random", &val); 176 vlc_bool_t b_random = val.b_bool; 177 random_checkbox->SetValue( b_random == VLC_FALSE ? 0 : 1); 162 178 163 179 /* Create the Loop Checkbox */ 164 180 wxCheckBox *loop_checkbox = 165 181 new wxCheckBox( playlist_panel, Loop_Event, wxU(_("Loop")) ); 166 int b_loop = config_GetInt( p_intf, "loop") ; 182 183 var_Get( p_intf, "loop", &val ); 184 int b_loop = val.b_bool ; 167 185 loop_checkbox->SetValue( b_loop ); 186 187 /* Create the Repeat one checkbox */ 188 wxCheckBox *repeat_checkbox = 189 new wxCheckBox( playlist_panel, Repeat_Event, wxU(_("Repeat one")) ); 190 191 var_Get( p_intf, "repeat", &val ); 192 int b_repeat = val.b_bool ; 193 repeat_checkbox->SetValue( b_repeat ); 168 194 169 195 /* Create the Search Textbox */ 170 196 search_text = 171 197 new wxTextCtrl( playlist_panel, SearchText_Event, wxT(""), 172 wxDefaultPosition, wxSize( 1 00, -1),198 wxDefaultPosition, wxSize( 140, -1), 173 199 wxTE_PROCESS_ENTER); 174 200 … … 179 205 180 206 /* Place everything in sizers */ 181 wxBoxSizer *search_sizer = new wxBoxSizer( wxHORIZONTAL ); 182 search_sizer->Add( search_text, 0, wxEXPAND|wxALL, 5); 183 search_sizer->Add( search_button, 0, wxEXPAND|wxALL, 5); 184 search_sizer->Add( random_checkbox, 0, 185 wxEXPAND|wxALIGN_RIGHT|wxALL, 5); 186 search_sizer->Add( loop_checkbox, 0, 187 wxEXPAND|wxALIGN_RIGHT|wxALL, 5); 207 wxBoxSizer *button_sizer = new wxBoxSizer( wxVERTICAL ); 208 button_sizer->Add( random_checkbox, 0, 209 wxEXPAND|wxALIGN_RIGHT, 5); 210 button_sizer->Add( loop_checkbox, 0, 211 wxEXPAND|wxALIGN_RIGHT, 5); 212 button_sizer->Add( repeat_checkbox, 0, 213 wxEXPAND|wxALIGN_RIGHT, 5); 214 215 button_sizer->Layout(); 216 217 wxBoxSizer *search_sizer = new wxBoxSizer( wxVERTICAL ); 218 search_sizer->Add( search_text, 0, wxALL|wxALIGN_CENTER, 5); 219 search_sizer->Add( search_button, 0, wxALL|wxALIGN_CENTER, 5); 220 188 221 search_sizer->Layout(); 222 223 wxBoxSizer *bottom_sizer = new wxBoxSizer( wxHORIZONTAL ); 224 bottom_sizer->Add( search_sizer , 0, wxALL|wxALIGN_CENTER, 5 ); 225 bottom_sizer->Add( button_sizer , 0, wxALL|wxALIGN_CENTER, 5 ); 226 227 bottom_sizer->Layout(); 189 228 190 229 wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL ); … … 192 231 wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL ); 193 232 panel_sizer->Add( listview, 1, wxEXPAND | wxALL, 5 ); 194 panel_sizer->Add( search_sizer, 0 , wxALIGN_CENTRE); 233 234 panel_sizer->Add( bottom_sizer, 0 , wxALIGN_CENTRE); 195 235 panel_sizer->Layout(); 196 236 … … 255 295 listview->InsertItem( i, filename ); 256 296 /* FIXME: we should try to find the actual duration... */ 257 listview->SetItem( i, 1, wxU(_("no info")) ); 297 /* While we don't use it, hide it, it's ugly */ 298 #if 0 299 listview->SetItem( i, 1, wxU(_("no info")) ); 300 #endif 258 301 } 259 302 vlc_mutex_unlock( &p_playlist->object_lock ); … … 264 307 listitem.SetTextColour( *wxRED ); 265 308 listview->SetItem( listitem ); 309 310 // listview->Select( p_playlist->i_index, TRUE ); 311 listview->Focus( p_playlist->i_index ); 266 312 267 313 vlc_object_release( p_playlist ); … … 519 565 void Playlist::OnRandom( wxCommandEvent& event ) 520 566 { 521 config_PutInt( p_intf , "random" , 522 event.IsChecked() ? VLC_TRUE : VLC_FALSE ); 567 vlc_value_t val; 568 val.b_bool = event.IsChecked(); 569 // ? VLC_TRUE : VLC_FALSE ; 570 playlist_t *p_playlist = 571 (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, 572 FIND_ANYWHERE ); 573 if( p_playlist == NULL ) 574 { 575 return; 576 } 577 var_Set( p_playlist , "random", val); 578 vlc_object_release( p_playlist ); 523 579 } 524 580 void Playlist::OnLoop ( wxCommandEvent& event ) 525 581 { 526 config_PutInt( p_intf, "loop", 527 event.IsChecked() ? VLC_TRUE : VLC_FALSE ); 528 582 vlc_value_t val; 583 val.b_bool = event.IsChecked(); 584 // ? VLC_TRUE : VLC_FALSE ; 585 playlist_t *p_playlist = 586 (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, 587 FIND_ANYWHERE ); 588 if( p_playlist == NULL ) 589 { 590 return; 591 } 592 var_Set( p_playlist , "loop", val); 593 vlc_object_release( p_playlist ); 594 } 595 596 void Playlist::OnRepeat ( wxCommandEvent& event ) 597 { 598 vlc_value_t val; 599 val.b_bool = event.IsChecked(); 600 // ? VLC_TRUE : VLC_FALSE ; 601 playlist_t *p_playlist = 602 (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, 603 FIND_ANYWHERE ); 604 if( p_playlist == NULL ) 605 { 606 return; 607 } 608 var_Set( p_playlist , "repeat", val); 609 vlc_object_release( p_playlist ); 529 610 } 530 611 modules/gui/wxwindows/preferences.cpp
r1b50257 ra885565 3 3 ***************************************************************************** 4 4 * Copyright (C) 2000-2001 VideoLAN 5 * $Id: preferences.cpp,v 1.2 7 2003/09/21 17:52:43 gbazinExp $5 * $Id: preferences.cpp,v 1.28 2003/09/22 14:40:10 zorglub Exp $ 6 6 * 7 7 * Authors: Gildas Bazin <gbazin@netcourrier.com> … … 33 33 #include <vlc/intf.h> 34 34 35 #include <vlc_help.h> 36 35 37 #include "wxwindows.h" 36 38 #include <wx/notebook.h> … … 47 49 #endif 48 50 51 #define GENERAL_ID 1242 52 #define PLUGIN_ID 1243 53 #define CAPABILITY_ID 1244 54 49 55 /***************************************************************************** 50 56 * Classes declarations. … … 79 85 80 86 wxTreeItemId root_item; 87 wxTreeItemId general_item; 81 88 wxTreeItemId plugins_item; 82 89 }; … … 115 122 PrefsPanel() { } 116 123 PrefsPanel( wxWindow *parent, intf_thread_t *_p_intf, 117 PrefsDialog *_p_prefs_dialog, int i_object_id, char * );124 PrefsDialog *_p_prefs_dialog, int i_object_id, char *, char * ); 118 125 virtual ~PrefsPanel() {} 119 126 … … 141 148 142 149 vlc_bool_t b_submodule; 150 151 char *psz_help; 143 152 144 153 PrefsPanel *panel; … … 212 221 PrefsDialog::PrefsDialog( intf_thread_t *_p_intf, wxWindow *p_parent) 213 222 : wxFrame( p_parent, -1, wxU(_("Preferences")), wxDefaultPosition, 214 wxSize( 650,450), wxDEFAULT_FRAME_STYLE )223 wxSize(700,450), wxDEFAULT_FRAME_STYLE ) 215 224 { 216 225 /* Initializations */ … … 331 340 332 341 /***************************************************************************** 342 * GetCapabilityHelp: Display the help for one capability. 343 *****************************************************************************/ 344 static char * GetCapabilityHelp( char *psz_capability) 345 { 346 if( psz_capability == NULL) 347 return NULL; 348 349 if( !strcasecmp(psz_capability,"access") ) 350 return strdup(ACCESS_HELP); 351 if( !strcasecmp(psz_capability,"audio filter") ) 352 return strdup(AUDIO_FILTER_HELP); 353 if( !strcasecmp(psz_capability,"audio output") ) 354 return strdup(AOUT_HELP); 355 if( !strcasecmp(psz_capability,"chroma") ) 356 return strdup(CHROMA_HELP); 357 if( !strcasecmp(psz_capability,"decoder") ) 358 return strdup(DECODER_HELP); 359 if( !strcasecmp(psz_capability,"demux") ) 360 return strdup(DEMUX_HELP); 361 if( !strcasecmp(psz_capability,"interface") ) 362 return strdup(INTERFACE_HELP); 363 if( !strcasecmp(psz_capability,"sout access") ) 364 return strdup(SOUT_HELP); 365 if( !strcasecmp(psz_capability,"subtitle demux") ) 366 return strdup(SUBTITLE_DEMUX_HELP); 367 if( !strcasecmp(psz_capability,"text renderer") ) 368 return strdup(TEXT_HELP); 369 if( !strcasecmp(psz_capability,"video output") ) 370 return strdup(VOUT_HELP); 371 if( !strcasecmp(psz_capability,"video filter") ) 372 return strdup(VIDEO_FILTER_HELP); 373 374 return strdup(UNKNOWN_HELP); 375 } 376 377 /***************************************************************************** 333 378 * PrefsTreeCtrl class definition. 334 379 *****************************************************************************/ … … 362 407 * Build a tree of the main options 363 408 */ 409 ConfigTreeData *config_data = new ConfigTreeData; 410 config_data->psz_section = NULL; 411 config_data->i_object_id = GENERAL_ID; 412 config_data->psz_help = strdup( GENERAL_HELP ); 413 printf("dans pouet: %i\n",config_data->i_object_id); 414 general_item = AppendItem( root_item, wxU(_("General Settings")), 415 -1, -1, config_data ); 416 364 417 for( i_index = 0; i_index < p_list->i_count; i_index++ ) 365 418 { … … 383 436 ConfigTreeData *config_data = new ConfigTreeData; 384 437 config_data->psz_section = strdup(p_item->psz_text); 438 if( p_item->psz_longtext ) 439 { 440 config_data->psz_help = strdup( p_item->psz_longtext); 441 } 442 else 443 { 444 config_data->psz_help = NULL; 445 } 385 446 config_data->i_object_id = p_module->i_object_id; 386 447 387 448 /* Add the category to the tree */ 388 AppendItem( root_item, wxU(p_item->psz_text),449 AppendItem( general_item, wxU(p_item->psz_text), 389 450 -1, -1, config_data ); 390 451 break; … … 393 454 while( p_item->i_type != CONFIG_HINT_END && p_item++ ); 394 455 395 SortChildren( root_item );456 SortChildren( general_item ); 396 457 } 397 458 … … 400 461 * Build a tree of all the plugins 401 462 */ 402 plugins_item = AppendItem( root_item, wxU(_("Plugins")) ); 463 config_data = new ConfigTreeData; 464 config_data->psz_section = NULL; 465 config_data->i_object_id = PLUGIN_ID; 466 config_data->psz_help = strdup( PLUGIN_HELP ); 467 plugins_item = AppendItem( root_item, wxU(_("Plugins")), 468 -1,-1,config_data ); 403 469 404 470 for( i_index = 0; i_index < p_list->i_count; i_index++ ) … … 445 511 { 446 512 /* We didn't find it, add it */ 513 ConfigTreeData *config_data = new ConfigTreeData; 514 config_data->psz_section = NULL; 515 config_data->psz_help = 516 GetCapabilityHelp( p_module->psz_capability ); 517 config_data->i_object_id = CAPABILITY_ID; 447 518 capability_item = AppendItem( plugins_item, 448 wxU(p_module->psz_capability) ); 519 wxU(p_module->psz_capability), 520 -1,-1,config_data ); 449 521 } 450 522 … … 455 527 ((module_t *)p_module->p_parent)->i_object_id : 456 528 p_module->i_object_id; 529 config_data->psz_help = strdup( "" ); 457 530 AppendItem( capability_item, wxU(p_module->psz_object_name), -1, -1, 458 531 config_data ); … … 654 727 new PrefsPanel( p_parent, p_intf, p_prefs_dialog, 655 728 config_data->i_object_id, 656 config_data->psz_section ); 729 config_data->psz_section, 730 config_data->psz_help); 657 731 config_data->panel->SwitchAdvanced( b_advanced ); 658 732 } … … 692 766 PrefsPanel::PrefsPanel( wxWindow* parent, intf_thread_t *_p_intf, 693 767 PrefsDialog *_p_prefs_dialog, 694 int i_object_id, char *psz_section )768 int i_object_id, char *psz_section, char*psz_help ) 695 769 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize ) 696 770 { … … 700 774 701 775 wxStaticText *label; 776 wxStaticText *help; 702 777 wxComboBox *combo; 703 778 wxSpinCtrl *spin; … … 707 782 wxArrayString array; 708 783 784 vlc_bool_t b_has_advanced = VLC_FALSE; 785 module_t *p_module = NULL; 786 709 787 /* Initializations */ 710 788 p_intf = _p_intf; … … 716 794 wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL ); 717 795 718 /* Get a pointer to the module */ 719 module_t *p_module = (module_t *)vlc_object_get( p_intf, i_object_id ); 720 if( p_module->i_object_type != VLC_OBJECT_MODULE ) 721 { 722 /* 0OOoo something went really bad */ 723 return; 724 } 725 726 /* Enumerate config options and add corresponding config boxes 727 * (submodules don't have config options, they are stored in the 728 * parent module) */ 729 if( p_module->b_submodule ) 730 p_item = ((module_t *)p_module->p_parent)->p_config; 796 797 if( i_object_id == PLUGIN_ID || i_object_id == GENERAL_ID || 798 i_object_id == CAPABILITY_ID ) 799 { 800 wxStaticBox *static_box = new wxStaticBox( this, -1, wxT( "" ) ); 801 wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer( static_box, 802 wxVERTICAL ); 803 label = new wxStaticText( this, -1, 804 wxU(_( psz_help) ) ); 805 806 box_sizer->Add( label, 1, wxEXPAND | wxLEFT | wxRIGHT, 5 ); 807 808 sizer->Add( box_sizer, 0, wxEXPAND | wxALL , 5 ); 809 } 731 810 else 732 p_item = p_module->p_config; 733 734 /* Find the category if it has been specified */ 735 if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY ) 736 { 737 while( !p_item->i_type == CONFIG_HINT_CATEGORY || 738 strcmp( psz_section, p_item->psz_text ) ) 739 { 740 if( p_item->i_type == CONFIG_HINT_END ) 741 break; 742 p_item++; 743 } 744 } 745 746 /* Add a head title to the panel */ 747 wxStaticBox *static_box = new wxStaticBox( this, -1, wxT("") ); 748 wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer( static_box, 749 wxHORIZONTAL ); 750 label = new wxStaticText( this, -1, 751 wxU(psz_section ? p_item->psz_text : 752 p_module->psz_longname) ); 753 754 box_sizer->Add( label, 1, wxALL, 5 ); 755 sizer->Add( box_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, 5 ); 756 757 /* Now put all the config options into a scrolled window */ 758 config_sizer = new wxBoxSizer( wxVERTICAL ); 759 config_window = new wxScrolledWindow( this, -1, wxDefaultPosition, 760 wxDefaultSize, wxSTATIC_BORDER | wxHSCROLL | wxVSCROLL ); 761 config_window->SetAutoLayout( TRUE ); 762 config_window->SetScrollRate( 5, 5 ); 763 764 if( p_item ) do 765 { 766 /* If a category has been specified, check we finished the job */ 767 if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY && 768 strcmp( psz_section, p_item->psz_text ) ) 769 break; 770 771 /* put each config option in a separate panel so we can hide advanced 772 * options easily */ 773 wxPanel *panel = new wxPanel( config_window, -1, wxDefaultPosition, 774 wxDefaultSize ); 775 wxBoxSizer *panel_sizer = new wxBoxSizer( wxHORIZONTAL ); 776 ConfigData *config_data = 777 new ConfigData( panel, p_item->i_type, 778 p_item->b_advanced, p_item->psz_name ); 779 780 switch( p_item->i_type ) 781 { 782 case CONFIG_ITEM_MODULE: 783 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 784 combo = new wxComboBox( panel, -1, wxU(p_item->psz_value), 785 wxDefaultPosition, wxDefaultSize, 786 0, NULL, wxCB_READONLY | wxCB_SORT ); 787 788 /* build a list of available modules */ 789 p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, FIND_ANYWHERE ); 790 combo->Append( wxU(_("Default")), (void *)NULL ); 791 combo->SetSelection( 0 ); 792 for( int i_index = 0; i_index < p_list->i_count; i_index++ ) 793 { 794 p_parser = (module_t *)p_list->p_values[i_index].p_object ; 795 796 if( !strcmp( p_parser->psz_capability, 797 p_item->psz_type ) ) 798 { 799 combo->Append( wxU(p_parser->psz_longname), 800 p_parser->psz_object_name ); 801 if( p_item->psz_value && 802 !strcmp(p_item->psz_value, p_parser->psz_object_name) ) 803 combo->SetValue( wxU(p_parser->psz_longname) ); 804 } 805 } 806 vlc_list_release( p_list ); 807 808 combo->SetToolTip( wxU(p_item->psz_longtext) ); 809 config_data->control.combobox = combo; 810 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 811 panel_sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 812 break; 813 814 case CONFIG_ITEM_STRING: 815 case CONFIG_ITEM_FILE: 816 case CONFIG_ITEM_DIRECTORY: 817 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 818 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 819 820 if( !p_item->ppsz_list ) 821 { 822 textctrl = new wxTextCtrl( panel, -1, wxU(p_item->psz_value), 823 wxDefaultPosition, wxDefaultSize, 824 wxTE_PROCESS_ENTER); 825 textctrl->SetToolTip( wxU(p_item->psz_longtext) ); 826 config_data->control.textctrl = textctrl; 827 panel_sizer->Add( textctrl, 1, wxALL, 5 ); 828 } 829 else 830 { 831 combo = new wxComboBox( panel, -1, wxU(p_item->psz_value), 811 { 812 /* Get a pointer to the module */ 813 p_module = (module_t *)vlc_object_get( p_intf, i_object_id ); 814 if( p_module->i_object_type != VLC_OBJECT_MODULE ) 815 { 816 /* 0OOoo something went really bad */ 817 return; 818 } 819 820 /* Enumerate config options and add corresponding config boxes 821 * (submodules don't have config options, they are stored in the 822 * parent module) */ 823 if( p_module->b_submodule ) 824 p_item = ((module_t *)p_module->p_parent)->p_config; 825 else 826 p_item = p_module->p_config; 827 828 /* Find the category if it has been specified */ 829 if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY ) 830 { 831 while( !p_item->i_type == CONFIG_HINT_CATEGORY || 832 strcmp( psz_section, p_item->psz_text ) ) 833 { 834 if( p_item->i_type == CONFIG_HINT_END ) 835 break; 836 p_item++; 837 } 838 } 839 /* Add a head title to the panel */ 840 wxStaticBox *static_box = new wxStaticBox( this, -1, wxT( "" ) ); 841 wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer( static_box, 842 wxVERTICAL ); 843 844 wxStaticBox *help_box = NULL; 845 wxStaticBoxSizer *help_sizer = NULL; 846 847 label = new wxStaticText( this, -1, 848 wxU(_(psz_section ? p_item->psz_text : 849 p_module->psz_longname ))); 850 851 box_sizer->Add( label, 1, wxEXPAND | wxLEFT | wxRIGHT, 5 ); 852 853 sizer->Add( box_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT , 5 ); 854 855 if( psz_help && psz_help[1] ) 856 /* Check that we have at least something */ 857 { 858 help_box = new wxStaticBox( this, -1, wxT( "" ) ); 859 help_sizer = new wxStaticBoxSizer( help_box, 860 wxHORIZONTAL ) ; 861 help = new wxStaticText( this, -1, 862 wxT(_( psz_help) ), 863 wxDefaultPosition, wxDefaultSize, 864 wxST_NO_AUTORESIZE | wxALIGN_LEFT, 865 wxT("") ); 866 867 help_sizer->Add( help, 1, wxALL | wxEXPAND , 5 ); 868 sizer->Add( help_sizer ,0 ,wxEXPAND | wxALL, 5 ); 869 } 870 871 /* Now put all the config options into a scrolled window */ 872 config_sizer = new wxBoxSizer( wxVERTICAL ); 873 config_window = new wxScrolledWindow( this, -1, wxDefaultPosition, 874 wxDefaultSize, wxSTATIC_BORDER | wxHSCROLL | wxVSCROLL ); 875 config_window->SetAutoLayout( TRUE ); 876 config_window->SetScrollRate( 5, 5 ); 877 878 if( p_item ) do 879 { 880 /* If a category has been specified, check we finished the job */ 881 if( psz_section && p_item->i_type == CONFIG_HINT_CATEGORY && 882 strcmp( psz_section, p_item->psz_text ) ) 883 break; 884 885 /* put each config option in a separate panel so we can hide advanced 886 * options easily */ 887 wxPanel *panel = new wxPanel( config_window, -1, wxDefaultPosition, 888 wxDefaultSize ); 889 wxBoxSizer *panel_sizer = new wxBoxSizer( wxHORIZONTAL ); 890 ConfigData *config_data = 891 new ConfigData( panel, p_item->i_type, 892 p_item->b_advanced, p_item->psz_name ); 893 894 switch( p_item->i_type ) 895 { 896 case CONFIG_ITEM_MODULE: 897 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 898 combo = new wxComboBox( panel, -1, wxU(p_item->psz_value), 899 wxDefaultPosition, wxDefaultSize, 900 0, NULL, wxCB_READONLY | wxCB_SORT ); 901 902 /* build a list of available modules */ 903 p_list = vlc_list_find( p_intf, 904 VLC_OBJECT_MODULE, FIND_ANYWHERE ); 905 combo->Append( wxU(_("Default")), (void *)NULL ); 906 combo->SetSelection( 0 ); 907 for( int i_index = 0; i_index < p_list->i_count; i_index++ ) 908 { 909 p_parser = (module_t *)p_list->p_values[i_index].p_object ; 910 911 if( !strcmp( p_parser->psz_capability, 912 p_item->psz_type ) ) 913 { 914 combo->Append( wxU(p_parser->psz_longname), 915 p_parser->psz_object_name ); 916 if( p_item->psz_value && 917 !strcmp(p_item->psz_value, 918 p_parser->psz_object_name) ) 919 combo->SetValue( wxU(p_parser->psz_longname) ); 920 } 921 } 922 vlc_list_release( p_list ); 923 924 combo->SetToolTip( wxU(p_item->psz_longtext) ); 925 config_data->control.combobox = combo; 926 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL 927 | wxALL, 5 ); 928 panel_sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL 929 | wxALL, 5 ); 930 break; 931 932 case CONFIG_ITEM_STRING: 933 case CONFIG_ITEM_FILE: 934 case CONFIG_ITEM_DIRECTORY: 935 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 936 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL 937 | wxALL, 5 ); 938 939 if( !p_item->ppsz_list ) 940 { 941 textctrl = new wxTextCtrl( panel, -1, 942 wxU(p_item->psz_value), 943 wxDefaultPosition, wxDefaultSize, 944 wxTE_PROCESS_ENTER); 945 textctrl->SetToolTip( wxU(p_item->psz_longtext) ); 946 config_data->control.textctrl = textctrl; 947 panel_sizer->Add( textctrl, 1, wxALL, 5 ); 948 } 949 else 950 { 951 combo = new wxComboBox( panel, -1, wxU(p_item->psz_value), 832 952 wxDefaultPosition, wxDefaultSize, 833 953 0, NULL, wxCB_READONLY | wxCB_SORT ); 834 954 835 /* build a list of available options */ 836 for( int i_index = 0; p_item->ppsz_list[i_index]; i_index++ ) 955 /* build a list of available options */ 956 for( int i_index = 0; p_item->ppsz_list[i_index]; 957 i_index++ ) 958 { 959 combo->Append( wxU(p_item->ppsz_list[i_index]) ); 960 if( p_item->psz_value && !strcmp( p_item->psz_value, 961 p_item->ppsz_list[i_index] ) ) 962 combo->SetSelection( i_index ); 963 } 964 965 if( p_item->psz_value ) 966 combo->SetValue( wxU(p_item->psz_value) ); 967 combo->SetToolTip( wxU(p_item->psz_longtext) ); 968 config_data->control.combobox = combo; 969 config_data->b_config_list = VLC_TRUE; 970 panel_sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL 971 |wxALL, 5 ); 972 } 973 974 if( p_item->i_type == CONFIG_ITEM_FILE ) 975 { 976 button = new wxButton( panel, -1, wxU(_("Browse...")) ); 977 panel_sizer->Add( button, 0, wxALIGN_CENTER_VERTICAL 978 |wxALL, 5); 979 button->SetClientData((void *)config_data); 980 } 981 if( p_item->b_advanced ) b_has_advanced = VLC_TRUE; 982 break; 983 984 case CONFIG_ITEM_INTEGER: 985 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 986 spin = new wxSpinCtrl( panel, -1, 987 wxString::Format(wxT("%d"),p_item->i_value), 988 wxDefaultPosition, wxDefaultSize, 989 wxSP_ARROW_KEYS, 990 -16000, 16000, p_item->i_value); 991 spin->SetToolTip( wxU(p_item->psz_longtext) ); 992 config_data->control.spinctrl = spin; 993 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL 994 | wxALL, 5 ); 995 panel_sizer->Add( spin, 0, wxALIGN_CENTER_VERTICAL 996 | wxALL, 5 ); 997 998 spin->SetClientData((void *)config_data); 999 if( p_item->b_advanced ) b_has_advanced = VLC_TRUE; 1000 break; 1001 1002 case CONFIG_ITEM_KEY: 837 1003 { 838 combo->Append( wxU(p_item->ppsz_list[i_index]) ); 839 if( p_item->psz_value && !strcmp( p_item->psz_value, 840 p_item->ppsz_list[i_index] ) ) 841 combo->SetSelection( i_index ); 1004 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 1005 wxCheckBox *alt = new wxCheckBox( panel, -1, wxU(_("Alt")) ); 1006 alt->SetValue( p_item->i_value & KEY_MODIFIER_ALT ); 1007 wxCheckBox *ctrl = new wxCheckBox( panel, -1, wxU(_("Ctrl")) ); 1008 ctrl->SetValue( p_item->i_value & KEY_MODIFIER_CTRL ); 1009 wxCheckBox *shift = new wxCheckBox( panel, -1, 1010 wxU(_("Shift")) ); 1011 shift->SetValue( p_item->i_value & KEY_MODIFIER_SHIFT ); 1012 combo = new wxComboBox( panel, -1, wxU("f"), 1013 wxDefaultPosition, wxDefaultSize, 0 1014 , NULL, wxCB_READONLY | wxCB_SORT ); 1015 for( int i = 0; i < sizeof(keys)/sizeof(key_descriptor_s); 1016 i++ ) 1017 { 1018 combo->Append( wxU(_(keys[i].psz_key_string)), 1019 (void*)&keys[i].i_key_code ); 1020 } 1021 combo->SetValue( wxU( KeyToString( 1022 p_item->i_value&~KEY_MODIFIER ))); 1023 config_data->control.combobox = combo; 1024 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL 1025 | wxALL, 5 ); 1026 panel_sizer->Add( alt, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 1027 panel_sizer->Add( ctrl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 1028 panel_sizer->Add( shift, 0, wxALIGN_CENTER_VERTICAL | 1029 wxALL, 5 ); 1030 panel_sizer->Add( combo, 0, wxALIGN_CENTER_VERTICAL 1031 | wxALL, 5 ); 1032 break; 842 1033 } 843 844 if( p_item->psz_value ) 845 combo->SetValue( wxU(p_item->psz_value) ); 846 combo->SetToolTip( wxU(p_item->psz_longtext) ); 847 config_data->control.combobox = combo; 848 config_data->b_config_list = VLC_TRUE; 849 panel_sizer->Add( combo, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 1034 1035 case CONFIG_ITEM_FLOAT: 1036 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 1037 textctrl = new wxTextCtrl( panel, -1, 1038 wxString::Format(wxT("%f"),p_item->f_value), 1039 wxDefaultPosition, wxDefaultSize, 1040 wxTE_PROCESS_ENTER ); 1041 textctrl->SetToolTip( wxU(p_item->psz_longtext) ); 1042 config_data->control.textctrl = textctrl; 1043 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL 1044 | wxALL, 5 ); 1045 panel_sizer->Add( textctrl, 0, wxALIGN_CENTER_VERTICAL 1046 | wxALL, 5); 1047 if( p_item->b_advanced ) b_has_advanced = VLC_TRUE; 1048 break; 1049 1050 case CONFIG_ITEM_BOOL: 1051 checkbox = new wxCheckBox( panel, -1, wxU(p_item->psz_text) ); 1052 if( p_item->i_value ) checkbox->SetValue(TRUE); 1053 checkbox->SetToolTip( wxU(p_item->psz_longtext) ); 1054 config_data->control.checkbox = checkbox; 1055 panel_sizer->Add( checkbox, 0, wxALL, 5 ); 1056 if( p_item->b_advanced ) b_has_advanced = VLC_TRUE; 1057 break; 1058 1059 1060 default: 1061 delete panel; panel = NULL; 1062 delete panel_sizer; 1063 delete config_data; 1064 break; 850 1065 } 851 1066 852 if( p_item->i_type == CONFIG_ITEM_FILE ) 853 { 854 button = new wxButton( panel, -1, wxU(_("Browse...")) ); 855 panel_sizer->Add( button, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); 856 button->SetClientData((void *)config_data); 857 } 858 break; 859 860 case CONFIG_ITEM_INTEGER: 861 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 862 spin = new wxSpinCtrl( panel, -1, 863 wxString::Format(wxT("%d"),p_item->i_value), 864 wxDefaultPosition, wxDefaultSize, 865 wxSP_ARROW_KEYS, 866 -16000, 16000, p_item->i_value); 867 spin->SetToolTip( wxU(p_item->psz_longtext) ); 868 config_data->control.spinctrl = spin; 869 panel_sizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 870 panel_sizer->Add( spin, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); 871 872 spin->SetClientData((void *)config_data); 873 break; 874 875 case CONFIG_ITEM_KEY: 876 { 877 label = new wxStaticText(panel, -1, wxU(p_item->psz_text)); 878 wxCheckBox *alt = new wxCheckBox( panel, -1, wxU(_("Alt")) ); 879 alt->SetValue( p_item->i_value & KEY_MODIFIER_ALT ); 880 wxCheckBox *ctrl = new wxCheckBox( panel, -1, wxU(_("Ctrl")) ); 881 ctrl->SetValue( p_item->i_value & KEY_MODIFIER_CTRL ); 882 wxCheckBox *shift = new wxCheckBox( panel, -1, wxU(_("Shift")) ); 883 shift->SetValue( p_item->i_value & KEY_MODIFIER_SHIFT ); 884 combo = new wxComboBox( panel, -1, wxU("f"), wxDefaultPosition, 885 wxDefaultSize, 0, NULL, wxCB_READONLY | wxCB_SORT ); 886 for( int i = 0; i < sizeof(keys)/sizeof(key_descriptor_s); i++ ) 887 { 888 combo->
