- unsigned int i, i_nb_items;
- NSMenuItem * o_item;
- NSString * o_menu_title;
- char psz_title[ 256 ];
-
- es_descriptor_t * p_audio_es = NULL;
- es_descriptor_t * p_spu_es = NULL;
-
- intf_thread_t * p_intf = [NSApp getIntf];
-
- p_intf->p_sys->b_chapter_update |= p_intf->p_sys->b_title_update;
- p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_title_update |
- p_intf->p_sys->b_program_update;
- p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_title_update |
- p_intf->p_sys->b_program_update;
-
- if( p_intf->p_sys->b_program_update )
- {
- NSMenu * o_program;
- SEL pf_toggle_program;
- pgrm_descriptor_t * p_pgrm;
-
- if( p_input->stream.p_new_program )
- {
- p_pgrm = p_input->stream.p_new_program;
- }
- else
- {
- p_pgrm = p_input->stream.p_selected_program;
- }
-
- o_program = [o_mi_program submenu];
- pf_toggle_program = @selector(toggleProgram:);
-
- /* remove previous program items */
- i_nb_items = [o_program numberOfItems];
- for( i = 0; i < i_nb_items; i++ )
- {
- [o_program removeItemAtIndex: 0];
- }
-
- /* make (un)sensitive */
- [o_mi_program setEnabled:
- p_input->stream.i_pgrm_number > 1];
-
- /* add program items */
- for( i = 0 ; i < p_input->stream.i_pgrm_number ; i++ )
- {
- snprintf( psz_title, sizeof(psz_title), "id %d",
- p_input->stream.pp_programs[i]->i_number );
- psz_title[sizeof(psz_title) - 1] = '\0';
-
- o_menu_title = [NSApp localizedString: psz_title];
-
- o_item = [o_program addItemWithTitle: o_menu_title
- action: pf_toggle_program keyEquivalent: @""];
- [o_item setTag: p_input->stream.pp_programs[i]->i_number];
- [o_item setTarget: o_controls];
-
- if( p_pgrm == p_input->stream.pp_programs[i] )
- {
- [o_item setState: NSOnState];
- }
- }
-
- p_intf->p_sys->b_program_update = 0;
- }
-
- if( p_intf->p_sys->b_title_update )
- {
- NSMenu * o_title;
- SEL pf_toggle_title;
-
- o_title = [o_mi_title submenu];
- pf_toggle_title = @selector(toggleTitle:);
-
- /* remove previous title items */
- i_nb_items = [o_title numberOfItems];
- for( i = 0; i < i_nb_items; i++ )
- {
- [o_title removeItemAtIndex: 0];
- }
-
- /* make (un)sensitive */
- [o_mi_title setEnabled:
- p_input->stream.i_area_nb > 1];
-
- /* add title items */
- for( i = 1 ; i < p_input->stream.i_area_nb ; i++ )
- {
- snprintf( psz_title, sizeof(psz_title), "Title %d (%d)", i,
- p_input->stream.pp_areas[i]->i_part_nb );
- psz_title[sizeof(psz_title) - 1] = '\0';
-
- o_menu_title = [NSApp localizedString: psz_title];
-
- o_item = [o_title addItemWithTitle: o_menu_title
- action: pf_toggle_title keyEquivalent: @""];
- [o_item setTag: i];
- [o_item setTarget: o_controls];
-
- if( ( p_input->stream.pp_areas[i] ==
- p_input->stream.p_selected_area ) )
- {
- [o_item setState: NSOnState];
- }
- }
-
- p_intf->p_sys->b_title_update = 0;
- }
-
- if( p_intf->p_sys->b_chapter_update )
- {
- NSMenu * o_chapter;
- SEL pf_toggle_chapter;
-
- o_chapter = [o_mi_chapter submenu];
- pf_toggle_chapter = @selector(toggleChapter:);
-
- /* remove previous chapter items */
- i_nb_items = [o_chapter numberOfItems];
- for( i = 0; i < i_nb_items; i++ )
- {
- [o_chapter removeItemAtIndex: 0];
- }
-
- /* make (un)sensitive */
- [o_mi_chapter setEnabled:
- p_input->stream.p_selected_area->i_part_nb > 1];
-
- /* add chapter items */
- for( i = 0 ; i < p_input->stream.p_selected_area->i_part_nb ; i++ )
- {
- snprintf( psz_title, sizeof(psz_title), "Chapter %d", i + 1 );
- psz_title[sizeof(psz_title) - 1] = '\0';
-
- o_menu_title = [NSApp localizedString: psz_title];
-
- o_item = [o_chapter addItemWithTitle: o_menu_title
- action: pf_toggle_chapter keyEquivalent: @""];
- [o_item setTag: i + 1];
- [o_item setTarget: o_controls];
-
- if( ( p_input->stream.p_selected_area->i_part == i + 1 ) )
- {
- [o_item setState: NSOnState];
- }
- }
-
- p_intf->p_sys->i_part =
- p_input->stream.p_selected_area->i_part;
-
- p_intf->p_sys->b_chapter_update = 0;
- }
-
- for( i = 0 ; i < p_input->stream.i_selected_es_number ; i++ )
- {
- if( p_input->stream.pp_selected_es[i]->i_cat == AUDIO_ES )
- {
- p_audio_es = p_input->stream.pp_selected_es[i];
- }
- else if( p_input->stream.pp_selected_es[i]->i_cat == SPU_ES )
- {
- p_spu_es = p_input->stream.pp_selected_es[i];
- }
- }
-
- if( p_intf->p_sys->b_audio_update )
- {
- [self setupLangMenu: p_input mi: o_mi_language es: p_audio_es
- category: AUDIO_ES selector: @selector(toggleLanguage:)];
-
- p_intf->p_sys->b_audio_update = 0;
- }
-
- if( p_intf->p_sys->b_spu_update )
- {
- [self setupLangMenu: p_input mi: o_mi_subtitle es: p_spu_es
- category: SPU_ES selector: @selector(toggleLanguage:)];
-
- p_intf->p_sys->b_spu_update = 0;
- }