finished hotkeys settings in simple prefs
[vlc.git] / modules / gui / macosx / simple_prefs.h
1 /*****************************************************************************
2 * simple_prefs.h: Simple Preferences for Mac OS X
3 *****************************************************************************
4 * Copyright (C) 2008 the VideoLAN team
5 * $Id$
6 *
7 * Authors: Felix Paul K├╝hne <fkuehne at videolan dot org>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
23
24 #import <Cocoa/Cocoa.h>
25 #import "intf.h"
26 #import <vlc/vlc.h>
27
28 @interface VLCSimplePrefs : NSObject
29 {
30     IBOutlet id o_audio_dolby_pop;
31     IBOutlet id o_audio_dolby_txt;
32     IBOutlet id o_audio_effects_box;
33     IBOutlet id o_audio_enable_ckb;
34     IBOutlet id o_audio_general_box;
35     IBOutlet id o_audio_headphone_ckb;
36     IBOutlet id o_audio_lang_fld;
37     IBOutlet id o_audio_lang_txt;
38     IBOutlet id o_audio_last_box;
39     IBOutlet id o_audio_last_ckb;
40     IBOutlet id o_audio_lastpwd_fld;
41     IBOutlet id o_audio_lastpwd_txt;
42     IBOutlet id o_audio_lastuser_fld;
43     IBOutlet id o_audio_lastuser_txt;
44     IBOutlet id o_audio_norm_ckb;
45     IBOutlet id o_audio_norm_fld;
46     IBOutlet id o_audio_spdif_ckb;
47     IBOutlet id o_audio_view;
48     IBOutlet id o_audio_visual_pop;
49     IBOutlet id o_audio_visual_txt;
50     IBOutlet id o_audio_vol_fld;
51     IBOutlet id o_audio_vol_sld;
52     IBOutlet id o_audio_vol_txt;
53
54     IBOutlet id o_hotkeys_change_btn;
55     IBOutlet id o_hotkeys_change_lbl;
56     IBOutlet id o_hotkeys_change_keys_lbl;
57     IBOutlet id o_hotkeys_change_taken_lbl;
58     IBOutlet id o_hotkeys_change_win;
59     IBOutlet id o_hotkeys_change_cancel_btn;
60     IBOutlet id o_hotkeys_change_ok_btn;
61     IBOutlet id o_hotkeys_clear_btn;
62     IBOutlet id o_hotkeys_lbl;
63     IBOutlet id o_hotkeys_listbox;
64     IBOutlet id o_hotkeys_view;
65
66     IBOutlet id o_input_access_box;
67     IBOutlet id o_input_avi_pop;
68     IBOutlet id o_input_avi_txt;
69     IBOutlet id o_input_bandwidth_ckb;
70     IBOutlet id o_input_cachelevel_pop;
71     IBOutlet id o_input_cachelevel_txt;
72     IBOutlet id o_input_caching_box;
73     IBOutlet id o_input_dump_ckb;
74     IBOutlet id o_input_httpproxy_fld;
75     IBOutlet id o_input_httpproxy_txt;
76     IBOutlet id o_input_mux_box;
77     IBOutlet id o_input_net_box;
78     IBOutlet id o_input_postproc_fld;
79     IBOutlet id o_input_postproc_txt;
80     IBOutlet id o_input_record_ckb;
81     IBOutlet id o_input_rtsp_ckb;
82     IBOutlet id o_input_serverport_fld;
83     IBOutlet id o_input_serverport_txt;
84     IBOutlet id o_input_timeshift_ckb;
85     IBOutlet id o_input_view;
86
87     IBOutlet id o_intf_art_pop;
88     IBOutlet id o_intf_art_txt;
89     IBOutlet id o_intf_embedded_ckb;
90     IBOutlet id o_intf_fspanel_ckb;
91     IBOutlet id o_intf_lang_pop;
92     IBOutlet id o_intf_lang_txt;
93     IBOutlet id o_intf_meta_ckb;
94     IBOutlet id o_intf_network_box;
95     IBOutlet id o_intf_view;
96
97     IBOutlet id o_osd_encoding_pop;
98     IBOutlet id o_osd_encoding_txt;
99     IBOutlet id o_osd_font_box;
100     IBOutlet id o_osd_font_btn;
101     IBOutlet id o_osd_font_color_pop;
102     IBOutlet id o_osd_font_color_txt;
103     IBOutlet id o_osd_font_effect_pop;
104     IBOutlet id o_osd_font_effect_txt;
105     IBOutlet id o_osd_font_fld;
106     IBOutlet id o_osd_font_size_pop;
107     IBOutlet id o_osd_font_size_txt;
108     IBOutlet id o_osd_font_txt;
109     IBOutlet id o_osd_lang_box;
110     IBOutlet id o_osd_lang_fld;
111     IBOutlet id o_osd_lang_txt;
112     IBOutlet id o_osd_osd_box;
113     IBOutlet id o_osd_osd_ckb;
114     IBOutlet id o_osd_view;
115
116     IBOutlet id o_sprefs_basic_box;
117     IBOutlet id o_sprefs_basicFull_matrix;
118     IBOutlet id o_sprefs_cancel_btn;
119     IBOutlet id o_sprefs_controls_box;
120     IBOutlet id o_sprefs_reset_btn;
121     IBOutlet id o_sprefs_save_btn;
122     IBOutlet id o_sprefs_win;
123
124     IBOutlet id o_video_black_ckb;
125     IBOutlet id o_video_device_pop;
126     IBOutlet id o_video_device_txt;
127     IBOutlet id o_video_display_box;
128     IBOutlet id o_video_enable_ckb;
129     IBOutlet id o_video_fullscreen_ckb;
130     IBOutlet id o_video_onTop_ckb;
131     IBOutlet id o_video_output_pop;
132     IBOutlet id o_video_output_txt;
133     IBOutlet id o_video_skipFrames_ckb;
134     IBOutlet id o_video_snap_box;
135     IBOutlet id o_video_snap_folder_btn;
136     IBOutlet id o_video_snap_folder_fld;
137     IBOutlet id o_video_snap_folder_txt;
138     IBOutlet id o_video_snap_format_pop;
139     IBOutlet id o_video_snap_format_txt;
140     IBOutlet id o_video_snap_prefix_fld;
141     IBOutlet id o_video_snap_prefix_txt;
142     IBOutlet id o_video_snap_seqnum_ckb;
143     IBOutlet id o_video_view;
144
145     BOOL b_audioSettingChanged;
146     BOOL b_intfSettingChanged;
147     BOOL b_videoSettingChanged;
148     BOOL b_osdSettingChanged;
149     BOOL b_inputSettingChanged;
150     BOOL b_hotkeyChanged;
151     id o_currentlyShownCategoryView;
152
153     NSToolbar *o_sprefs_toolbar;
154     NSOpenPanel *o_selectFolderPanel;
155     NSArray *o_hotkeyDescriptions;
156     NSArray *o_hotkeysNonUseableKeys;
157     NSMutableArray *o_hotkeySettings;
158     NSNumber *o_keyInTransition;
159
160     intf_thread_t *p_intf;
161 }
162 + (VLCSimplePrefs *)sharedInstance;
163 - (NSString *)OSXKeyToString:(int)val;
164
165 /* toolbar */
166 - (NSToolbarItem *) toolbar: (NSToolbar *)o_toolbar 
167       itemForItemIdentifier: (NSString *)o_itemIdent 
168   willBeInsertedIntoToolbar: (BOOL)b_willBeInserted;
169 - (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar;
170 - (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar;
171
172 - (void)initStrings;
173 - (void)resetControls;
174 - (void)showSimplePrefs;
175
176 - (IBAction)buttonAction:(id)sender;
177 - (void)sheetDidEnd:(NSWindow *)o_sheet 
178          returnCode:(int)i_return
179         contextInfo:(void *)o_context;
180
181 - (void)saveChangedSettings;
182
183 /* interface */
184 - (IBAction)interfaceSettingChanged:(id)sender;
185 - (void)showInterfaceSettings;
186
187 /* audio */
188 - (IBAction)audioSettingChanged:(id)sender;
189 - (void)showAudioSettings;
190
191 /* video */
192 - (IBAction)videoSettingChanged:(id)sender;
193 - (void)showVideoSettings;
194
195 /* OSD / subtitles */
196 - (IBAction)osdSettingChanged:(id)sender;
197 - (void)showOSDSettings;
198
199 /* input & codecs */
200 - (IBAction)inputSettingChanged:(id)sender;
201 - (void)showInputSettings;
202
203 /* hotkeys */
204 - (IBAction)hotkeySettingChanged:(id)sender;
205 - (void)showHotkeySettings;
206 - (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView;
207 - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
208 - (void)changeHotkeyTo: (int)i_theNewKey;
209
210 @end
211
212 @interface VLCHotkeyChangeWindow : NSWindow
213
214 - (void)keyDown:(NSEvent *)theEvent;
215
216 @end