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 + -
显示快捷键?