📄 prefs_widgets.m
字号:
/***************************************************************************** * prefs_widgets.m: Preferences controls ***************************************************************************** * Copyright (C) 2002-2003 VideoLAN * $Id: prefs_widgets.m 11093 2005-05-21 15:07:46Z xtophe $ * * Authors: Derk-Jan Hartman <hartman at videolan.org> * J閞鬽e Decoodt <djc at videolan.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#include <stdlib.h> /* malloc(), free() */#include <string.h>#include <vlc/vlc.h>#include "vlc_keys.h"#include "intf.h"#include "prefs_widgets.h"#define PREFS_WRAP 300#define OFFSET_RIGHT 20#define OFFSET_BETWEEN 2#define UPWARDS_WHITE_ARROW "\xE2\x87\xA7" #define OPTION_KEY "\xE2\x8C\xA5"#define UP_ARROWHEAD "\xE2\x8C\x83"#define PLACE_OF_INTEREST_SIGN "\xE2\x8C\x98"#define POPULATE_A_KEY( o_menu, string, value ) \{ \ NSMenuItem *o_mi; \/* Normal */ \ o_mi = [[NSMenuItem alloc] initWithTitle:string \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ 0]; \if( MACOS_VERSION >= 10.3 ) \ [o_mi setAlternate: NO]; \ [o_mi setTag: \ ( value )]; \ [o_menu addItem: o_mi]; \if( MACOS_VERSION >= 10.3 ) \{ \/* Ctrl */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ KEY_MODIFIER_CTRL | ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Alt */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD OPTION_KEY \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSAlternateKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_ALT) | ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Shift */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD UPWARDS_WHITE_ARROW \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSShiftKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_SHIFT) | ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_COMMAND) | ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Alt+Shift */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD OPTION_KEY UPWARDS_WHITE_ARROW \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSAlternateKeyMask | NSShiftKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_ALT | KEY_MODIFIER_SHIFT) | \ ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Alt+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD OPTION_KEY PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_ALT | KEY_MODIFIER_COMMAND) | \ ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Shift+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD UPWARDS_WHITE_ARROW PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSShiftKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_SHIFT | KEY_MODIFIER_COMMAND) | \ ( value )]; \ [o_menu addItem: o_mi]; \/* Ctrl+Alt+Shift+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UP_ARROWHEAD OPTION_KEY UPWARDS_WHITE_ARROW \ PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSControlKeyMask | NSAlternateKeyMask | NSShiftKeyMask | \ NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_CTRL | KEY_MODIFIER_ALT | KEY_MODIFIER_SHIFT | \ KEY_MODIFIER_COMMAND) | ( value )]; \ [o_menu addItem: o_mi]; \/* Alt */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ OPTION_KEY \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSAlternateKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ KEY_MODIFIER_ALT | ( value )]; \ [o_menu addItem: o_mi]; \/* Alt+Shift */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ OPTION_KEY UPWARDS_WHITE_ARROW \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSAlternateKeyMask | NSShiftKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_ALT | KEY_MODIFIER_SHIFT) | ( value )]; \ [o_menu addItem: o_mi]; \/* Alt+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ OPTION_KEY PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSAlternateKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_ALT | KEY_MODIFIER_COMMAND) | ( value )]; \ [o_menu addItem: o_mi]; \/* Alt+Shift+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ OPTION_KEY UPWARDS_WHITE_ARROW PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSAlternateKeyMask | NSShiftKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_ALT | KEY_MODIFIER_SHIFT | KEY_MODIFIER_COMMAND) | \ ( value )]; \ [o_menu addItem: o_mi]; \/* Shift */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UPWARDS_WHITE_ARROW \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSShiftKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ KEY_MODIFIER_SHIFT | ( value )]; \ [o_menu addItem: o_mi]; \/* Shift+Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ UPWARDS_WHITE_ARROW PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSShiftKeyMask | NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ (KEY_MODIFIER_SHIFT | KEY_MODIFIER_COMMAND) | ( value )]; \ [o_menu addItem: o_mi]; \/* Apple */ \ o_mi = [[NSMenuItem alloc] initWithTitle: \ [[NSString stringWithUTF8String: \ PLACE_OF_INTEREST_SIGN \ ] stringByAppendingString: string] \ action:nil keyEquivalent:@""]; \ [o_mi setKeyEquivalentModifierMask: \ NSCommandKeyMask]; \ [o_mi setAlternate: YES]; \ [o_mi setTag: \ KEY_MODIFIER_COMMAND | ( value )]; \ [o_menu addItem: o_mi]; \} \}#define ADD_LABEL( o_label, superFrame, x_offset, my_y_offset, label ) \{ \ NSRect s_rc = superFrame; \ s_rc.size.height = 17; \ s_rc.origin.x = x_offset - 3; \ s_rc.origin.y = superFrame.size.height - 17 + my_y_offset; \ o_label = [[[NSTextField alloc] initWithFrame: s_rc] retain]; \ [o_label setDrawsBackground: NO]; \ [o_label setBordered: NO]; \ [o_label setEditable: NO]; \ [o_label setSelectable: NO]; \ [o_label setStringValue: label]; \ [o_label setFont:[NSFont systemFontOfSize:0]]; \ [o_label sizeToFit]; \}#define ADD_TEXTFIELD( o_textfield, superFrame, x_offset, my_y_offset, \ my_width, tooltip, init_value ) \{ \ NSRect s_rc = superFrame; \ s_rc.origin.x = x_offset; \ s_rc.origin.y = my_y_offset; \ s_rc.size.height = 22; \ s_rc.size.width = my_width; \ o_textfield = [[[NSTextField alloc] initWithFrame: s_rc] retain]; \ [o_textfield setFont:[NSFont systemFontOfSize:0]]; \ [o_textfield setToolTip: tooltip]; \ [o_textfield setStringValue: init_value]; \}#define ADD_COMBO( o_combo, superFrame, x_offset, my_y_offset, x2_offset, \ tooltip ) \{ \ NSRect s_rc = superFrame; \ s_rc.origin.x = x_offset + 2; \ s_rc.origin.y = my_y_offset; \ s_rc.size.height = 26; \ s_rc.size.width = superFrame.size.width + 2 - s_rc.origin.x - \ (x2_offset); \ o_combo = [[[NSComboBox alloc] initWithFrame: s_rc] retain]; \ [o_combo setFont:[NSFont systemFontOfSize:0]]; \ [o_combo setToolTip: tooltip]; \ [o_combo setUsesDataSource:TRUE]; \ [o_combo setDataSource:self]; \ [o_combo setNumberOfVisibleItems:10]; \ [o_combo setCompletes:YES]; \}#define ADD_RIGHT_BUTTON( o_button, superFrame, x_offset, my_y_offset, \ tooltip, title ) \{ \ NSRect s_rc = superFrame; \ o_button = [[[NSButton alloc] initWithFrame: s_rc] retain]; \ [o_button setButtonType: NSMomentaryPushInButton]; \ [o_button setBezelStyle: NSRoundedBezelStyle]; \ [o_button setTitle: title]; \ [o_button setFont:[NSFont systemFontOfSize:0]]; \ [o_button sizeToFit]; \ s_rc = [o_button frame]; \ s_rc.origin.x = superFrame.size.width - [o_button frame].size.width - 6;\ s_rc.origin.y = my_y_offset - 6; \ s_rc.size.width += 12; \ [o_button setFrame: s_rc]; \ [o_button setToolTip: tooltip]; \ [o_button setTarget: self]; \ [o_button setAction: @selector(openFileDialog:)]; \}#define ADD_POPUP( o_popup, superFrame, x_offset, my_y_offset, x2_offset, \ tooltip ) \{ \ NSRect s_rc = superFrame; \ s_rc.origin.x = x_offset - 1; \ s_rc.origin.y = my_y_offset; \ s_rc.size.height = 26; \ s_rc.size.width = superFrame.size.width + 2 - s_rc.origin.x - \ (x2_offset); \ o_popup = [[[NSPopUpButton alloc] initWithFrame: s_rc] retain]; \ [o_popup setFont:[NSFont systemFontOfSize:0]]; \ [o_popup setToolTip: tooltip]; \}#define ADD_STEPPER( o_stepper, superFrame, x_offset, my_y_offset, tooltip, \ lower, higher ) \{ \ NSRect s_rc = superFrame; \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -