prefs.m
来自「VLC媒体播放程序」· M 代码 · 共 1,147 行 · 第 1/3 页
M
1,147 行
s_vrc = [[o_prefs_view contentView] bounds]; s_vrc.size.height -= 4; o_view = [[VLCFlippedView alloc] initWithFrame: s_vrc]; [o_view setAutoresizingMask: NSViewWidthSizable]; s_rc.origin.x = X_ORIGIN; s_rc.origin.y = Y_ORIGIN; BOOL b_right_cat = TRUE; if( p_item ) do { if( p_item->i_type == CONFIG_HINT_CATEGORY ) { if( !strcmp( p_parser->psz_object_name, "main" ) && [o_item_name isEqualToString: [NSApp localizedString: p_item->psz_text]] ) { b_right_cat = TRUE; } else if( strcmp( p_parser->psz_object_name, "main" ) ) { b_right_cat = TRUE; } else b_right_cat = FALSE; } else if( p_item->i_type == CONFIG_HINT_END && !strcmp( p_parser->psz_object_name, "main" ) ) { b_right_cat = FALSE; } if( (p_item->b_advanced && !b_advanced ) || !b_right_cat ) { continue; } switch( p_item->i_type ) { case CONFIG_ITEM_MODULE: { VLCPopUpButton *o_modules; module_t *p_a_module; char * psz_duptip = NULL; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.size.height = 25; s_rc.size.width = 200; s_rc.origin.y += 10; CHECK_VIEW_HEIGHT; o_modules = [[VLCPopUpButton alloc] initWithFrame: s_rc]; CONTROL_CONFIG( o_modules, o_module_name, CONFIG_ITEM_MODULE, p_item->psz_name ); [o_modules setTarget: self]; [o_modules setAction: @selector(configChanged:)]; [o_modules sendActionOn:NSLeftMouseUpMask]; if ( psz_duptip != NULL ) { [o_modules setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP]]; free( psz_duptip ); } [o_view addSubview: [o_modules autorelease]]; [o_modules addItemWithTitle: _NS("Default")]; [[o_modules lastItem] setTag: -1]; [o_modules selectItem: [o_modules lastItem]]; /* build a list of available modules */ { for( i_index = 0; i_index < p_list->i_count; i_index++ ) { p_a_module = (module_t *)p_list->p_values[i_index].p_object ; if( !strcmp( p_a_module->psz_capability, p_item->psz_type ) ) { NSString *o_description = [NSApp localizedString: p_a_module->psz_longname]; [o_modules addItemWithTitle: o_description]; [[o_modules lastItem] setTag: p_a_module->i_object_id]; if( p_item->psz_value && !strcmp( p_item->psz_value, p_a_module->psz_object_name ) ) { [o_modules selectItem:[o_modules lastItem]]; } } } } CONTROL_LABEL( p_item->psz_text ); s_rc.origin.y += s_rc.size.height; s_rc.origin.x = X_ORIGIN; } break; case CONFIG_ITEM_FILE: case CONFIG_ITEM_DIRECTORY: { char *psz_duptip = NULL; char *psz_value = p_item->psz_value ? p_item->psz_value : ""; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.origin.y += 10; s_rc.size.width = - 10; s_rc.size.height = 25; CHECK_VIEW_HEIGHT; CONTROL_LABEL( p_item->psz_text ); s_rc.origin.x = X_ORIGIN; s_rc.origin.y += s_rc.size.height; CHECK_VIEW_HEIGHT; VLCButton *button = [[VLCButton alloc] initWithFrame: s_rc]; CONTROL_CONFIG( button, o_module_name, CONFIG_ITEM_STRING , p_item->psz_name ); [button setButtonType: NSMomentaryPushInButton]; [button setBezelStyle: NSRoundedBezelStyle]; [button setTitle: _NS("Browse...")]; [button sizeToFit]; [button setAutoresizingMask:NSViewMinXMargin]; [button setFrameOrigin: NSMakePoint( s_vrc.size.width - ( 10 + [button frame].size.width), s_rc.origin.y)]; [button setTarget: self]; [button setAction: @selector(openFileDialog:)]; s_rc.size.height = 25; s_rc.size.width = s_vrc.size.width - ( 35 + [button frame].size.width); o_text_field = [[VLCTextField alloc] initWithFrame: s_rc]; CONTROL_CONFIG( o_text_field, o_module_name, CONFIG_ITEM_STRING , p_item->psz_name ); [o_text_field setStringValue: [NSApp localizedString: psz_value]]; if ( psz_duptip != NULL ) { [o_text_field setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP ]]; free(psz_duptip); } [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(configChanged:) name: NSControlTextDidChangeNotification object: o_text_field]; [o_text_field setAutoresizingMask:NSViewWidthSizable]; [button setTag: (int) o_text_field ]; /* FIXME */ [o_view addSubview: [o_text_field autorelease]]; [o_view addSubview: [button autorelease]]; s_rc.origin.y += s_rc.size.height; s_rc.origin.x = X_ORIGIN; } break; case CONFIG_ITEM_STRING: { if( !p_item->ppsz_list ) { char *psz_value = p_item->psz_value ? p_item->psz_value : ""; INPUT_FIELD_STRING( p_item->psz_name, p_item->psz_text, 200, [NSApp localizedString: psz_value], p_item->psz_longtext ); } else { int i; VLCComboBox *o_combo_box; char * psz_duptip = NULL; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.size.height = 25; s_rc.size.width = 200; s_rc.origin.y += 10; CHECK_VIEW_HEIGHT; o_combo_box = [[VLCComboBox alloc] initWithFrame: s_rc]; CONTROL_CONFIG( o_combo_box, o_module_name, CONFIG_ITEM_STRING, p_item->psz_name ); [o_combo_box setTarget: self]; [o_combo_box setAction: @selector(configChanged:)]; [o_combo_box sendActionOn:NSLeftMouseUpMask]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(configChanged:) name: NSControlTextDidChangeNotification object: o_combo_box]; if ( psz_duptip != NULL ) { [o_combo_box setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP]]; free( psz_duptip ); } [o_view addSubview: [o_combo_box autorelease]]; for( i=0; p_item->ppsz_list[i]; i++ ) { [o_combo_box addItemWithObjectValue: [NSApp localizedString: p_item->ppsz_list[i]]]; } [o_combo_box setStringValue: [NSApp localizedString: p_item->psz_value ? p_item->psz_value : ""]]; CONTROL_LABEL( p_item->psz_text ); s_rc.origin.y += s_rc.size.height; s_rc.origin.x = X_ORIGIN; } } break; case CONFIG_ITEM_INTEGER: { if( p_item->i_min == p_item->i_max ) { INPUT_FIELD_INTEGER( p_item->psz_name, p_item->psz_text, 70, p_item->i_value, p_item->psz_longtext ); } else { /*create a slider */ VLCSlider *o_slider; char * psz_duptip = NULL; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.size.height = 27; s_rc.size.width = 200; s_rc.origin.y += 10; CHECK_VIEW_HEIGHT; o_slider = [[VLCSlider alloc] initWithFrame: s_rc]; [o_slider setMinValue: p_item->i_min]; [o_slider setMaxValue: p_item->i_max]; [o_slider setIntValue: p_item->i_value]; if ( psz_duptip != NULL ) { [o_slider setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP]]; free( psz_duptip ); } [o_slider setTarget: self]; [o_slider setAction: @selector(configChanged:)]; [o_slider sendActionOn:NSLeftMouseUpMask]; CONTROL_CONFIG( o_slider, o_module_name, CONFIG_ITEM_INTEGER, p_item->psz_name ); [o_view addSubview: [o_slider autorelease]]; CONTROL_LABEL( p_item->psz_text ); s_rc.origin.y += s_rc.size.height; s_rc.origin.x = X_ORIGIN; } } break; case CONFIG_ITEM_FLOAT: { if( p_item->f_min == p_item->f_max ) { INPUT_FIELD_FLOAT( p_item->psz_name, p_item->psz_text, 70, p_item->f_value, p_item->psz_longtext ); } else { /* create a slider */ VLCSlider *o_slider; char * psz_duptip = NULL; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.size.height = 27; s_rc.size.width = 200; s_rc.origin.y += 10; CHECK_VIEW_HEIGHT; o_slider = [[VLCSlider alloc] initWithFrame: s_rc]; [o_slider setMinValue: p_item->f_min]; [o_slider setMaxValue: p_item->f_max]; [o_slider setFloatValue: p_item->f_value]; if ( psz_duptip != NULL ) { [o_slider setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP]]; free( psz_duptip ); } [o_slider setTarget: self]; [o_slider setAction: @selector(configChanged:)]; [o_slider sendActionOn:NSLeftMouseUpMask]; CONTROL_CONFIG( o_slider, o_module_name, CONFIG_ITEM_FLOAT, p_item->psz_name ); [o_view addSubview: [o_slider autorelease]]; CONTROL_LABEL( p_item->psz_text ); s_rc.origin.y += s_rc.size.height; s_rc.origin.x = X_ORIGIN; } } break; case CONFIG_ITEM_BOOL: { VLCButton *o_btn_bool; char * psz_duptip = NULL; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.size.height = 27; s_rc.size.width = s_vrc.size.width - X_ORIGIN * 2 - 20; s_rc.origin.y += 10; CHECK_VIEW_HEIGHT; o_btn_bool = [[VLCButton alloc] initWithFrame: s_rc]; [o_btn_bool setButtonType: NSSwitchButton]; [o_btn_bool setIntValue: p_item->i_value]; [o_btn_bool setTitle: [NSApp localizedString: p_item->psz_text]]; if ( psz_duptip != NULL ) { [o_btn_bool setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP]]; free( psz_duptip ); } [o_btn_bool setTarget: self]; [o_btn_bool setAction: @selector(configChanged:)]; CONTROL_CONFIG( o_btn_bool, o_module_name, CONFIG_ITEM_BOOL, p_item->psz_name ); [o_view addSubview: [o_btn_bool autorelease]]; s_rc.origin.y += s_rc.size.height; } break; case CONFIG_ITEM_KEY: { int i; char *psz_duptip = NULL; VLCComboBox *o_combo_box; if ( p_item->psz_longtext != NULL ) psz_duptip = strdup( p_item->psz_longtext ); s_rc.origin.y += 10; s_rc.size.width = - 10; s_rc.size.height = 20; CHECK_VIEW_HEIGHT; CONTROL_LABEL( p_item->psz_text ); s_rc.origin.x = X_ORIGIN; s_rc.origin.y += s_rc.size.height; s_rc.size.width = s_vrc.size.width - X_ORIGIN * 2; CHECK_VIEW_HEIGHT; VLCMatrix *o_matrix = [[VLCMatrix alloc] initWithFrame: s_rc mode: NSHighlightModeMatrix cellClass: [NSButtonCell class] numberOfRows:2 numberOfColumns:2]; NSArray *o_cells = [o_matrix cells]; for( i=0; i < [o_cells count]; i++ ) { NSButtonCell *o_current_cell = [o_cells objectAtIndex:i]; [o_current_cell setButtonType: NSSwitchButton]; [o_current_cell setControlSize: NSSmallControlSize]; if( psz_duptip != NULL ) { [o_matrix setToolTip: [NSApp wrapString: [NSApp localizedString: psz_duptip] toWidth: PREFS_WRAP] forCell: o_current_cell]; } switch( i ) { case 0: [o_current_cell setTitle:_NS("Command")]; [o_current_cell setState: p_item->i_value & KEY_MODIFIER_COMMAND]; break; case 1: [o_current_cell setTitle:_NS("Control")]; [o_current_cell setState: p_item->i_value & KEY_MODIFIER_CTRL]; break; case 2: [o_current_cell setTitle:_NS("Option/Alt")]; [o_current_cell setState: p_item->i_value & KEY_MODIFIER_ALT]; break; case 3: [o_current_cell setTitle:_NS("Shift")]; [o_current_cell setState: p_item->i_value & KEY_MODIFIER_SHIFT]; break; } [o_current_cell setTarget: self];
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?