⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intf.m

📁 VLC Player Source Code
💻 M
📖 第 1 页 / 共 5 页
字号:
            free(name);            [self setScrollField: aString stopAfter:-1];            [[[self getControls] getFSPanel] setStreamTitle: aString];            [[o_controls getVoutView] updateTitle];             [o_playlist updateRowSelection];            p_intf->p_sys->b_current_title_update = FALSE;        }        if( [o_timeslider isEnabled] )        {            /* Update the slider */            vlc_value_t time;            NSString * o_time;            vlc_value_t pos;            char psz_time[MSTRTIME_MAX_SIZE];            float f_updated;            var_Get( p_input, "position", &pos );            f_updated = 10000. * pos.f_float;            [o_timeslider setFloatValue: f_updated];            var_Get( p_input, "time", &time );            o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];            [o_timefield setStringValue: o_time];            [[[self getControls] getFSPanel] setStreamPos: f_updated andTime: o_time];            [o_embedded_window setTime: o_time position: f_updated];        }        /* Manage Playing status */        var_Get( p_input, "state", &val );        if( p_intf->p_sys->i_play_status != val.i_int )        {            p_intf->p_sys->i_play_status = val.i_int;            [self playStatusUpdated: p_intf->p_sys->i_play_status];            [o_embedded_window playStatusUpdated: p_intf->p_sys->i_play_status];        }        vlc_object_release( p_input );    }    else if( p_input )    {        vlc_object_release( p_input );    }    else    {        p_intf->p_sys->i_play_status = END_S;        [self playStatusUpdated: p_intf->p_sys->i_play_status];        [o_embedded_window playStatusUpdated: p_intf->p_sys->i_play_status];        [self setSubmenusEnabled: FALSE];    }    if( p_intf->p_sys->b_volume_update )    {        NSString *o_text;        int i_volume_step = 0;        o_text = [NSString stringWithFormat: _NS("Volume: %d%%"), i_lastShownVolume * 400 / AOUT_VOLUME_MAX];        if( i_lastShownVolume != -1 )        [self setScrollField:o_text stopAfter:1000000];        i_volume_step = config_GetInt( p_intf->p_libvlc, "volume-step" );        [o_volumeslider setFloatValue: (float)i_lastShownVolume / i_volume_step];        [o_volumeslider setEnabled: TRUE];        [[[self getControls] getFSPanel] setVolumeLevel: (float)i_lastShownVolume / i_volume_step];        p_intf->p_sys->b_mute = ( i_lastShownVolume == 0 );        p_intf->p_sys->b_volume_update = FALSE;    }end:    [self updateMessageArray];    if( ((i_end_scroll != -1) && (mdate() > i_end_scroll)) || !p_input )        [self resetScrollField];    [interfaceTimer autorelease];    interfaceTimer = [[NSTimer scheduledTimerWithTimeInterval: 0.3        target: self selector: @selector(manageIntf:)        userInfo: nil repeats: FALSE] retain];}#pragma mark -#pragma mark Interface update- (void)setupMenus{    playlist_t * p_playlist = pl_Yield( p_intf );    input_thread_t * p_input = playlist_CurrentInput( p_playlist );    if( p_input != NULL )    {        [o_controls setupVarMenuItem: o_mi_program target: (vlc_object_t *)p_input            var: "program" selector: @selector(toggleVar:)];        [o_controls setupVarMenuItem: o_mi_title target: (vlc_object_t *)p_input            var: "title" selector: @selector(toggleVar:)];        [o_controls setupVarMenuItem: o_mi_chapter target: (vlc_object_t *)p_input            var: "chapter" selector: @selector(toggleVar:)];        [o_controls setupVarMenuItem: o_mi_audiotrack target: (vlc_object_t *)p_input            var: "audio-es" selector: @selector(toggleVar:)];        [o_controls setupVarMenuItem: o_mi_videotrack target: (vlc_object_t *)p_input            var: "video-es" selector: @selector(toggleVar:)];        [o_controls setupVarMenuItem: o_mi_subtitle target: (vlc_object_t *)p_input            var: "spu-es" selector: @selector(toggleVar:)];        aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT,                                                    FIND_ANYWHERE );        if( p_aout != NULL )        {            [o_controls setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout                var: "audio-channels" selector: @selector(toggleVar:)];            [o_controls setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout                var: "audio-device" selector: @selector(toggleVar:)];            [o_controls setupVarMenuItem: o_mi_visual target: (vlc_object_t *)p_aout                var: "visual" selector: @selector(toggleVar:)];            vlc_object_release( (vlc_object_t *)p_aout );        }        vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,                                                            FIND_ANYWHERE );        if( p_vout != NULL )        {            vlc_object_t * p_dec_obj;            [o_controls setupVarMenuItem: o_mi_aspect_ratio target: (vlc_object_t *)p_vout                var: "aspect-ratio" selector: @selector(toggleVar:)];            [o_controls setupVarMenuItem: o_mi_crop target: (vlc_object_t *) p_vout                var: "crop" selector: @selector(toggleVar:)];            [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout                var: "video-device" selector: @selector(toggleVar:)];            [o_controls setupVarMenuItem: o_mi_deinterlace target: (vlc_object_t *)p_vout                var: "deinterlace" selector: @selector(toggleVar:)];            p_dec_obj = (vlc_object_t *)vlc_object_find(                                                 (vlc_object_t *)p_vout,                                                 VLC_OBJECT_DECODER,                                                 FIND_PARENT );            if( p_dec_obj != NULL )            {               [o_controls setupVarMenuItem: o_mi_ffmpeg_pp target:                    (vlc_object_t *)p_dec_obj var:"ffmpeg-pp-q" selector:                    @selector(toggleVar:)];                vlc_object_release(p_dec_obj);            }            vlc_object_release( (vlc_object_t *)p_vout );        }        vlc_object_release( p_input );    }    pl_Release( p_intf );}- (void)refreshVoutDeviceMenu:(NSNotification *)o_notification{    int x,y = 0;    vout_thread_t * p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,                                              FIND_ANYWHERE );     if(! p_vout )        return;     /* clean the menu before adding new entries */    if( [o_mi_screen hasSubmenu] )    {        y = [[o_mi_screen submenu] numberOfItems] - 1;        msg_Dbg( VLCIntf, "%i items in submenu", y );        while( x != y )        {            msg_Dbg( VLCIntf, "removing item %i of %i", x, y );            [[o_mi_screen submenu] removeItemAtIndex: x];            x++;        }    }    [o_controls setupVarMenuItem: o_mi_screen target: (vlc_object_t *)p_vout                             var: "video-device" selector: @selector(toggleVar:)];    vlc_object_release( (vlc_object_t *)p_vout );}- (void)setScrollField:(NSString *)o_string stopAfter:(int)timeout{    if( timeout != -1 )        i_end_scroll = mdate() + timeout;    else        i_end_scroll = -1;    [o_scrollfield setStringValue: o_string];}- (void)resetScrollField{    playlist_t * p_playlist = pl_Yield( p_intf );    input_thread_t * p_input = playlist_CurrentInput( p_playlist );    i_end_scroll = -1;    if( p_input && vlc_object_alive (p_input) )    {        NSString *o_temp;        if( input_item_GetNowPlaying ( p_playlist->status.p_item->p_input ) )            o_temp = [NSString stringWithUTF8String:                 input_item_GetNowPlaying ( p_playlist->status.p_item->p_input )];        else            o_temp = [NSString stringWithUTF8String:                p_playlist->status.p_item->p_input->psz_name];        [self setScrollField: o_temp stopAfter:-1];        [[[self getControls] getFSPanel] setStreamTitle: o_temp];        vlc_object_release( p_input );        pl_Release( p_intf );        return;    }    pl_Release( p_intf );    [self setScrollField: _NS("VLC media player") stopAfter:-1];}- (void)playStatusUpdated:(int)i_status{    if( i_status == PLAYING_S )    {        [[[self getControls] getFSPanel] setPause];        [o_btn_play setImage: o_img_pause];        [o_btn_play setAlternateImage: o_img_pause_pressed];        [o_btn_play setToolTip: _NS("Pause")];        [o_mi_play setTitle: _NS("Pause")];        [o_dmi_play setTitle: _NS("Pause")];        [o_vmi_play setTitle: _NS("Pause")];    }    else    {        [[[self getControls] getFSPanel] setPlay];        [o_btn_play setImage: o_img_play];        [o_btn_play setAlternateImage: o_img_play_pressed];        [o_btn_play setToolTip: _NS("Play")];        [o_mi_play setTitle: _NS("Play")];        [o_dmi_play setTitle: _NS("Play")];        [o_vmi_play setTitle: _NS("Play")];    }}- (void)setSubmenusEnabled:(BOOL)b_enabled{    [o_mi_program setEnabled: b_enabled];    [o_mi_title setEnabled: b_enabled];    [o_mi_chapter setEnabled: b_enabled];    [o_mi_audiotrack setEnabled: b_enabled];    [o_mi_visual setEnabled: b_enabled];    [o_mi_videotrack setEnabled: b_enabled];    [o_mi_subtitle setEnabled: b_enabled];    [o_mi_channels setEnabled: b_enabled];    [o_mi_deinterlace setEnabled: b_enabled];    [o_mi_ffmpeg_pp setEnabled: b_enabled];    [o_mi_device setEnabled: b_enabled];    [o_mi_screen setEnabled: b_enabled];    [o_mi_aspect_ratio setEnabled: b_enabled];    [o_mi_crop setEnabled: b_enabled];}- (IBAction)timesliderUpdate:(id)sender{    float f_updated;    playlist_t * p_playlist;    input_thread_t * p_input;    switch( [[NSApp currentEvent] type] )    {        case NSLeftMouseUp:        case NSLeftMouseDown:        case NSLeftMouseDragged:            f_updated = [sender floatValue];            break;        default:            return;    }    p_playlist = pl_Yield( p_intf );    p_input = playlist_CurrentInput( p_playlist );    if( p_input != NULL )    {        vlc_value_t time;        vlc_value_t pos;        NSString * o_time;        char psz_time[MSTRTIME_MAX_SIZE];        pos.f_float = f_updated / 10000.;        var_Set( p_input, "position", pos );        [o_timeslider setFloatValue: f_updated];        var_Get( p_input, "time", &time );        o_time = [NSString stringWithUTF8String: secstotimestr( psz_time, (time.i_time / 1000000) )];        [o_timefield setStringValue: o_time];        [[[self getControls] getFSPanel] setStreamPos: f_updated andTime: o_time];        [o_embedded_window setTime: o_time position: f_updated];        vlc_object_release( p_input );    }    pl_Release( p_intf );}#pragma mark -#pragma mark Recent Items- (IBAction)clearRecentItems:(id)sender{    [[NSDocumentController sharedDocumentController]                          clearRecentDocuments: nil];}- (void)openRecentItem:(id)sender{    [self application: nil openFile: [sender title]];}#pragma mark -#pragma mark Panels- (IBAction)intfOpenFile:(id)sender{    if( !nib_open_loaded )    {        nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self];        [o_open awakeFromNib];        [o_open openFile];    } else {        [o_open openFile];    }}- (IBAction)intfOpenFileGeneric:(id)sender{    if( !nib_open_loaded )    {        nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self];        [o_open awakeFromNib];        [o_open openFileGeneric];    } else {        [o_open openFileGeneric];    }}- (IBAction)intfOpenDisc:(id)sender{    if( !nib_open_loaded )    {        nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self];        [o_open awakeFromNib];        [o_open openDisc];    } else {        [o_open openDisc];    }}- (IBAction)intfOpenNet:(id)sender{    if( !nib_open_loaded )    {        nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self];        [o_open awakeFromNib];        [o_open openNet];    } else {        [o_open openNet];    }}- (IBAction)intfOpenCapture:(id)sender{    if( !nib_open_loaded )    {        nib_open_loaded = [NSBundle loadNibNamed:@"Open" owner:self];        [o_open awakeFromNib];        [o_open openCapture];    } else {        [o_open openCapture];    }}- (IBAction)showWizard:(id)sender{    if( !ni

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -