📄 open.m
字号:
unsigned int i; o_dic = [NSMutableDictionary dictionaryWithObject: [o_mrl stringValue] forKey: @"ITEM_URL"]; if( [o_file_sub_ckbox state] == NSOnState ) { module_config_t * p_item; [o_options addObject: [NSString stringWithFormat: @"sub-file=%@", [o_file_sub_path stringValue]]]; if( [o_file_sub_override state] == NSOnState ) { [o_options addObject: [NSString stringWithFormat: @"sub-delay=%i", (int)( [o_file_sub_delay intValue] * 10 )]]; [o_options addObject: [NSString stringWithFormat: @"sub-fps=%f", [o_file_sub_fps floatValue]]]; } [o_options addObject: [NSString stringWithFormat: @"subsdec-encoding=%@", [o_file_sub_encoding_pop titleOfSelectedItem]]]; [o_options addObject: [NSString stringWithFormat: @"subsdec-align=%i", [o_file_sub_align_pop indexOfSelectedItem]]]; p_item = config_FindConfig( VLC_OBJECT(p_intf), "freetype-rel-fontsize" ); if ( p_item ) { [o_options addObject: [NSString stringWithFormat: @"freetype-rel-fontsize=%i", p_item->pi_list[[o_file_sub_size_pop indexOfSelectedItem]]]]; } } if( [o_output_ckbox state] == NSOnState ) { for (i = 0 ; i < [[o_sout_options getMRL] count] ; i++) { [o_options addObject: [NSString stringWithString: [[(VLCOutput *)o_sout_options getMRL] objectAtIndex: i]]]; } } if( [o_net_timeshift_ckbox state] == NSOnState ) { [o_options addObject: [NSString stringWithString: @"access-filter=timeshift"]]; } [o_dic setObject: (NSArray *)[o_options copy] forKey: @"ITEM_OPTIONS"]; if( b_autoplay ) [o_playlist appendArray: [NSArray arrayWithObject: o_dic] atPos: -1 enqueue:NO]; else [o_playlist appendArray: [NSArray arrayWithObject: o_dic] atPos: -1 enqueue:YES]; }}- (void)tabView:(NSTabView *)o_tv didSelectTabViewItem:(NSTabViewItem *)o_tvi{ NSString *o_label = [o_tvi label]; if( [o_label isEqualToString: _NS("File")] ) { [self openFilePathChanged: nil]; } else if( [o_label isEqualToString: _NS("Disc")] ) { [self openDiscTypeChanged: nil]; } else if( [o_label isEqualToString: _NS("Network")] ) { [self openNetInfoChanged: nil]; } else if( [o_label isEqualToString: _NS("Capture")] ) { [self openCaptureModeChanged: nil]; }}- (void)openFileGeneric{ [self openFilePathChanged: nil]; [self openTarget: 0];}- (void)openDisc{ [self openDiscTypeChanged: nil]; [self openTarget: 1];}- (void)openNet{ [self openNetInfoChanged: nil]; [self openTarget: 2];}- (void)openCapture{ [self openCaptureModeChanged: nil]; [self showCaptureView: o_capture_label_view]; [self openTarget: 3];}- (void)openFilePathChanged:(NSNotification *)o_notification{ NSString *o_mrl_string; NSString *o_filename = [o_file_path stringValue]; NSString *o_ext = [o_filename pathExtension]; bool b_stream = [o_file_stream state]; BOOL b_dir = NO; [[NSFileManager defaultManager] fileExistsAtPath:o_filename isDirectory:&b_dir]; if( b_dir ) { o_mrl_string = [NSString stringWithFormat: @"dir:%@", o_filename]; } else if( [o_ext isEqualToString: @"bin"] || [o_ext isEqualToString: @"cue"] || [o_ext isEqualToString: @"vob"] || [o_ext isEqualToString: @"iso"] ) { o_mrl_string = o_filename; } else { o_mrl_string = [NSString stringWithFormat: @"%s://%@", b_stream ? "stream" : "file", o_filename]; } [o_mrl setStringValue: o_mrl_string];}- (IBAction)openFileBrowse:(id)sender{ NSOpenPanel *o_open_panel = [NSOpenPanel openPanel]; [o_open_panel setAllowsMultipleSelection: NO]; [o_open_panel setCanChooseDirectories: YES]; [o_open_panel setTitle: _NS("Open File")]; [o_open_panel setPrompt: _NS("Open")]; [o_open_panel beginSheetForDirectory:nil file:nil types:nil modalForWindow:[sender window] modalDelegate: self didEndSelector: @selector(pathChosenInPanel: withReturn: contextInfo:) contextInfo: nil];}- (void)pathChosenInPanel: (NSOpenPanel *) sheet withReturn:(int)returnCode contextInfo:(void *)contextInfo{ if (returnCode == NSFileHandlingPanelOKButton) { NSString *o_filename = [[sheet filenames] objectAtIndex: 0]; [o_file_path setStringValue: o_filename]; [self openFilePathChanged: nil]; }}- (IBAction)openFileStreamChanged:(id)sender{ [self openFilePathChanged: nil];}- (IBAction)openDiscTypeChanged:(id)sender{ NSString *o_type; BOOL b_device, b_no_menus, b_title_chapter; [o_disc_device removeAllItems]; b_title_chapter = ![o_disc_dvd_menus state]; o_type = [[o_disc_type selectedCell] title]; if ( [o_type isEqualToString: _NS("VIDEO_TS directory")] ) { b_device = NO; b_no_menus = YES; } else { NSArray *o_devices; NSString *o_disc; const char *psz_class = NULL; b_device = YES; if ( [o_type isEqualToString: _NS("VCD")] ) { psz_class = kIOCDMediaClass; o_disc = o_type; b_no_menus = NO; b_title_chapter = YES; } else if ( [o_type isEqualToString: _NS("Audio CD")]) { psz_class = kIOCDMediaClass; o_disc = o_type; b_no_menus = NO; b_title_chapter = NO; } else { psz_class = kIODVDMediaClass; o_disc = o_type; b_no_menus = YES; } o_devices = GetEjectableMediaOfClass( psz_class ); if ( o_devices != nil ) { int i_devices = [o_devices count]; if ( i_devices ) { for( int i = 0; i < i_devices; i++ ) { [o_disc_device addItemWithObjectValue: [o_devices objectAtIndex: i]]; } [o_disc_device selectItemAtIndex: 0]; } else { [o_disc_device setStringValue: [NSString stringWithFormat: _NS("No %@s found"), o_disc]]; } } } [o_disc_device setEnabled: b_device]; [o_disc_title setEnabled: b_title_chapter]; [o_disc_title_stp setEnabled: b_title_chapter]; [o_disc_chapter setEnabled: b_title_chapter]; [o_disc_chapter_stp setEnabled: b_title_chapter]; [o_disc_videots_folder setEnabled: !b_device]; [o_disc_videots_btn_browse setEnabled: !b_device]; [o_disc_dvd_menus setEnabled: b_no_menus]; [self openDiscInfoChanged: nil];}- (IBAction)openDiscStepperChanged:(id)sender{ int i_tag = [sender tag]; if( i_tag == 0 ) { [o_disc_title setIntValue: [o_disc_title_stp intValue]]; } else if( i_tag == 1 ) { [o_disc_chapter setIntValue: [o_disc_chapter_stp intValue]]; } [self openDiscInfoChanged: nil];}- (void)openDiscInfoChanged:(NSNotification *)o_notification{ NSString *o_type; NSString *o_device; NSString *o_videots; NSString *o_mrl_string; int i_title, i_chapter; BOOL b_no_menus; o_type = [[o_disc_type selectedCell] title]; o_device = [o_disc_device stringValue]; i_title = [o_disc_title intValue]; i_chapter = [o_disc_chapter intValue]; o_videots = [o_disc_videots_folder stringValue]; b_no_menus = [o_disc_dvd_menus state]; if ( [o_type isEqualToString: _NS("VCD")] ) { if ( [o_device isEqualToString: [NSString stringWithFormat: _NS("No %@s found"), o_type]] ) o_device = @""; o_mrl_string = [NSString stringWithFormat: @"vcd://%@@%i:%i", o_device, i_title, i_chapter]; } else if ( [o_type isEqualToString: _NS("Audio CD")] ) { if ( [o_device isEqualToString: [NSString stringWithFormat: _NS("No %@s found"), o_type]] ) o_device = @""; o_mrl_string = [NSString stringWithFormat: @"cdda://%@", o_device]; } else if ( [o_type isEqualToString: _NS("DVD")] ) { if ( [o_device isEqualToString: [NSString stringWithFormat: _NS("No %@s found"), o_type]] ) o_device = @""; if ( b_no_menus ) o_mrl_string = [NSString stringWithFormat: @"dvdread://%@@%i:%i-", o_device, i_title, i_chapter]; else o_mrl_string = [NSString stringWithFormat: @"dvdnav://%@", o_device]; } else /* VIDEO_TS folder */ { if ( b_no_menus ) o_mrl_string = [NSString stringWithFormat: @"dvdread://%@@%i:%i", o_videots, i_title, i_chapter]; else o_mrl_string = [NSString stringWithFormat: @"dvdnav://%@", o_videots]; } [o_mrl setStringValue: o_mrl_string];}- (IBAction)openDiscMenusChanged:(id)sender{ [self openDiscInfoChanged: nil]; [self openDiscTypeChanged: nil];}- (IBAction)openVTSBrowse:(id)sender{ NSOpenPanel *o_open_panel = [NSOpenPanel openPanel]; [o_open_panel setAllowsMultipleSelection: NO]; [o_open_panel setCanChooseFiles: NO]; [o_open_panel setCanChooseDirectories: YES]; [o_open_panel setTitle: _NS("Open VIDEO_TS Directory")]; [o_open_panel setPrompt: _NS("Open")]; if( [o_open_panel runModalForDirectory: nil file: nil types: nil] == NSOKButton ) { NSString *o_dirname = [[o_open_panel filenames] objectAtIndex: 0]; [o_disc_videots_folder setStringValue: o_dirname]; [self openDiscInfoChanged: nil]; }}- (void)textFieldWasClicked:(NSNotification *)o_notification{ if( [o_notification object] == o_net_udp_port ) [o_net_mode selectCellAtRow: 0 column: 0]; else if( [o_notification object] == o_net_udpm_addr || [o_notification object] == o_net_udpm_port ) [o_net_mode selectCellAtRow: 1 column: 0]; else [o_net_mode selectCellAtRow: 2 column: 0]; [self openNetInfoChanged: nil];}- (IBAction)openNetModeChanged:(id)sender{ if( [[sender selectedCell] tag] == 0 ) [o_panel makeFirstResponder: o_net_udp_port]; else if ( [[sender selectedCell] tag] == 1 ) [o_panel makeFirstResponder: o_net_udpm_addr]; else [o_panel makeFirstResponder: o_net_http_url]; [self openNetInfoChanged: nil];}- (IBAction)openNetStepperChanged:(id)sender{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -