X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fintf.h;h=08af1b786c1b7acaf924201b4dea542574052496;hb=cd19d6a43b618d1be6bd3a904931f49278cdf347;hp=42ff7d8a8f29e99de6b1667aea13682928726e3d;hpb=553f1be2aae8e2b9dbadfb6d23af8116c4b4e642;p=vlc diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 42ff7d8a8f..08af1b786c 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -1,18 +1,19 @@ /***************************************************************************** - * intf.h: MacOS X interface plugin + * intf.h: MacOS X interface module ***************************************************************************** - * Copyright (C) 2002 VideoLAN - * $Id: intf.h,v 1.18 2003/01/27 00:08:31 jlj Exp $ + * Copyright (C) 2002-2006 the VideoLAN team + * $Id$ * * Authors: Jon Lech Johansen * Christophe Massiot - * Derk-Jan Hartman + * Derk-Jan Hartman + * Felix KŸhne * * 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 @@ -20,33 +21,38 @@ * * 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. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #include -#include -#include +#include +#include +#include +#include +#include #include /***************************************************************************** - * VLCApplication interface + * Local prototypes. *****************************************************************************/ -@interface VLCApplication : NSApplication -{ - NSStringEncoding i_encoding; - intf_thread_t *p_intf; -} +int ExecuteOnMainThread( id target, SEL sel, void * p_arg ); +unsigned int CocoaKeyToVLC( unichar i_key ); -- (void)initIntlSupport; -- (NSString *)localizedString:(char *)psz; +#define VLCIntf [[VLCMain sharedInstance] getIntf] -- (void)setIntf:(intf_thread_t *)p_intf; -- (intf_thread_t *)getIntf; +#define _NS(s) [[VLCMain sharedInstance] localizedString: _(s)] +/* Get an alternate version of the string. + * This string is stored as '1:string' but when displayed it only displays + * the translated string. the translation should be '1:translatedstring' though */ +#define _ANS(s) [[[VLCMain sharedInstance] localizedString: _(s)] substringFromIndex:2] -@end +#define MACOS_VERSION [[[NSDictionary dictionaryWithContentsOfFile: \ + @"/System/Library/CoreServices/SystemVersion.plist"] \ + objectForKey: @"ProductVersion"] floatValue] -#define _NS(s) [NSApp localizedString: _(s)] +/* switch this to 1, if you want to use Obj-C with GC */ +#define GC_ENABLED 0 /***************************************************************************** * intf_sys_t: description and status of the interface @@ -56,74 +62,103 @@ struct intf_sys_t NSAutoreleasePool * o_pool; NSPort * o_sendport; + /* the current input */ + input_thread_t * p_input; + /* special actions */ - vlc_bool_t b_loop; - vlc_bool_t b_playing; - vlc_bool_t b_stopping; vlc_bool_t b_mute; + int i_play_status; + + /* interface update */ + vlc_bool_t b_intf_update; + vlc_bool_t b_playlist_update; + vlc_bool_t b_playmode_update; + vlc_bool_t b_current_title_update; + vlc_bool_t b_fullscreen_update; + vlc_bool_t b_volume_update; + vlc_bool_t b_intf_show; /* menus handlers */ - vlc_bool_t b_chapter_update; - vlc_bool_t b_program_update; - vlc_bool_t b_title_update; - vlc_bool_t b_audio_update; - vlc_bool_t b_spu_update; + vlc_bool_t b_input_update; vlc_bool_t b_aout_update; vlc_bool_t b_vout_update; - /* The input thread */ - input_thread_t * p_input; - /* The messages window */ msg_subscription_t * p_sub; - /* DVD mode */ - unsigned int i_part; }; /***************************************************************************** - * VLCMain interface + * VLCMain interface *****************************************************************************/ +@class AppleRemote; @interface VLCMain : NSObject { + intf_thread_t *p_intf; /* The main intf object */ id o_prefs; /* VLCPrefs */ + id o_about; /* VLAboutBox */ + id o_open; /* VLCOpen */ + id o_wizard; /* VLCWizard */ + id o_extended; /* VLCExtended */ + id o_bookmarks; /* VLCBookmarks */ + id o_embedded_list; /* VLCEmbeddedList*/ + id o_interaction_list; /* VLCInteractionList*/ + id o_sfilters; /* VLCsFilters */ + id o_update; /* VLCUpdate */ + BOOL nib_main_loaded; /* reference to the main-nib */ + BOOL nib_open_loaded; /* reference to the open-nib */ + BOOL nib_about_loaded; /* reference to the about-nib */ + BOOL nib_wizard_loaded; /* reference to the wizard-nib */ + BOOL nib_extended_loaded; /* reference to the extended-nib */ + BOOL nib_bookmarks_loaded; /* reference to the bookmarks-nib */ + BOOL nib_sfilters_loaded; /* reference to the sfilters-nib */ + BOOL nib_update_loaded; /* reference to the update-nib */ IBOutlet id o_window; /* main window */ + IBOutlet id o_playlist_view;/* playlist view */ + IBOutlet id o_scrollfield; /* info field */ IBOutlet id o_timefield; /* time field */ IBOutlet id o_timeslider; /* time slider */ + IBOutlet id o_embedded_window; /* Embedded Vout Window */ float f_slider; /* slider value */ - float f_slider_old; /* old slider val */ + float f_slider_old; /* old slider val */ IBOutlet id o_volumeslider; /* volume slider */ - IBOutlet id o_btn_playlist; /* btn playlist */ + IBOutlet id o_main_pgbar; /* main interface progress bar */ IBOutlet id o_btn_prev; /* btn previous */ - IBOutlet id o_btn_slowmotion; /* btn slowmotion */ + IBOutlet id o_btn_rewind; /* btn rewind */ IBOutlet id o_btn_play; /* btn play */ IBOutlet id o_btn_stop; /* btn stop */ - IBOutlet id o_btn_fastforward; /* btn fastforward */ + IBOutlet id o_btn_ff; /* btn fast forward */ IBOutlet id o_btn_next; /* btn next */ - IBOutlet id o_btn_prefs; /* btn prefs */ + IBOutlet id o_btn_fullscreen;/* btn fullscreen */ + IBOutlet id o_btn_playlist; /* btn playlist */ + + NSImage * o_img_play; /* btn play img */ + NSImage * o_img_pause; /* btn pause img */ + NSImage * o_img_play_pressed; /* btn play img */ + NSImage * o_img_pause_pressed; /* btn pause img */ IBOutlet id o_controls; /* VLCControls */ IBOutlet id o_playlist; /* VLCPlaylist */ + IBOutlet id o_info; /* VLCInfo */ IBOutlet id o_messages; /* messages tv */ IBOutlet id o_msgs_panel; /* messages panel */ - IBOutlet id o_msgs_btn_ok; /* messages btn */ NSMutableArray * o_msg_arr; /* messages array */ NSLock * o_msg_lock; /* messages lock */ + IBOutlet id o_msgs_btn_crashlog; /* messages open crashlog */ - IBOutlet id o_error; /* error panel */ - IBOutlet id o_err_msg; /* NSTextView */ - IBOutlet id o_err_lbl; - IBOutlet id o_err_bug_lbl; - IBOutlet id o_err_btn_msgs; /* Open Messages */ - IBOutlet id o_err_btn_dismiss; + IBOutlet id o_info_window; /* Info panel */ /* main menu */ IBOutlet id o_mi_about; IBOutlet id o_mi_prefs; + IBOutlet id o_mi_checkForUpdate; + IBOutlet id o_mi_add_intf; + IBOutlet id o_mu_add_intf; + IBOutlet id o_mi_services; IBOutlet id o_mi_hide; IBOutlet id o_mi_hide_others; IBOutlet id o_mi_show_all; @@ -136,6 +171,7 @@ struct intf_sys_t IBOutlet id o_mi_open_net; IBOutlet id o_mi_open_recent; IBOutlet id o_mi_open_recent_cm; + IBOutlet id o_mi_open_wizard; IBOutlet id o_mu_edit; IBOutlet id o_mi_cut; @@ -151,74 +187,176 @@ struct intf_sys_t IBOutlet id o_mi_slower; IBOutlet id o_mi_previous; IBOutlet id o_mi_next; + IBOutlet id o_mi_random; + IBOutlet id o_mi_repeat; IBOutlet id o_mi_loop; + IBOutlet id o_mi_fwd; + IBOutlet id o_mi_bwd; + IBOutlet id o_mi_fwd1m; + IBOutlet id o_mi_bwd1m; + IBOutlet id o_mi_fwd5m; + IBOutlet id o_mi_bwd5m; IBOutlet id o_mi_program; + IBOutlet id o_mu_program; IBOutlet id o_mi_title; + IBOutlet id o_mu_title; IBOutlet id o_mi_chapter; - IBOutlet id o_mi_language; - IBOutlet id o_mi_subtitle; + IBOutlet id o_mu_chapter; IBOutlet id o_mu_audio; IBOutlet id o_mi_vol_up; IBOutlet id o_mi_vol_down; IBOutlet id o_mi_mute; + IBOutlet id o_mi_audiotrack; + IBOutlet id o_mu_audiotrack; IBOutlet id o_mi_channels; + IBOutlet id o_mu_channels; IBOutlet id o_mi_device; + IBOutlet id o_mu_device; + IBOutlet id o_mi_visual; + IBOutlet id o_mu_visual; IBOutlet id o_mu_video; + IBOutlet id o_mi_half_window; + IBOutlet id o_mi_normal_window; + IBOutlet id o_mi_double_window; + IBOutlet id o_mi_fittoscreen; IBOutlet id o_mi_fullscreen; + IBOutlet id o_mi_floatontop; + IBOutlet id o_mi_snapshot; + IBOutlet id o_mi_videotrack; + IBOutlet id o_mu_videotrack; IBOutlet id o_mi_screen; + IBOutlet id o_mu_screen; + IBOutlet id o_mi_aspect_ratio; + IBOutlet id o_mu_aspect_ratio; + IBOutlet id o_mi_crop; + IBOutlet id o_mu_crop; + IBOutlet id o_mi_subtitle; + IBOutlet id o_mu_subtitle; IBOutlet id o_mi_deinterlace; + IBOutlet id o_mu_deinterlace; + IBOutlet id o_mi_ffmpeg_pp; + IBOutlet id o_mu_ffmpeg_pp; IBOutlet id o_mu_window; IBOutlet id o_mi_minimize; IBOutlet id o_mi_close_window; IBOutlet id o_mi_controller; + IBOutlet id o_mi_equalizer; + IBOutlet id o_mi_extended; + IBOutlet id o_mi_bookmarks; IBOutlet id o_mi_playlist; + IBOutlet id o_mi_info; IBOutlet id o_mi_messages; IBOutlet id o_mi_bring_atf; - + IBOutlet id o_mu_help; IBOutlet id o_mi_readme; + IBOutlet id o_mi_documentation; IBOutlet id o_mi_reportabug; IBOutlet id o_mi_website; IBOutlet id o_mi_license; + IBOutlet id o_mi_donation; + IBOutlet id o_mi_forum; + IBOutlet id o_mi_errorsAndWarnings; /* dock menu */ IBOutlet id o_dmi_play; IBOutlet id o_dmi_stop; + IBOutlet id o_dmi_next; + IBOutlet id o_dmi_previous; + IBOutlet id o_dmi_mute; + + /* vout menu */ + IBOutlet id o_vout_menu; + IBOutlet id o_vmi_play; + IBOutlet id o_vmi_stop; + IBOutlet id o_vmi_prev; + IBOutlet id o_vmi_next; + IBOutlet id o_vmi_volup; + IBOutlet id o_vmi_voldown; + IBOutlet id o_vmi_mute; + IBOutlet id o_vmi_fullscreen; + IBOutlet id o_vmi_snapshot; + + bool b_small_window; + + mtime_t i_end_scroll; + + NSSize o_size_with_playlist; + + int i_lastShownVolume; + + AppleRemote * o_remote; + BOOL b_remote_button_hold; /* true as long as the user holds the left,right,plus or minus on the remote control */ } ++ (VLCMain *)sharedInstance; + +- (intf_thread_t *)getIntf; +- (void)setIntf:(intf_thread_t *)p_mainintf; + +- (id)getControls; +- (id)getPlaylist; +- (id)getInfo; +- (id)getWizard; +- (id)getBookmarks; +- (id)getEmbeddedList; +- (id)getInteractionList; +- (id)getMainIntfPgbar; +- (id)getControllerWindow; +- (id)getVoutMenu; - (void)terminate; +- (NSString *)localizedString:(char *)psz; +- (char *)delocalizeString:(NSString *)psz; +- (NSString *)wrapString: (NSString *)o_in_string toWidth: (int)i_width; +- (BOOL)hasDefinedShortcutKey:(NSEvent *)o_event; -- (void)manage; -- (void)manageMode; -- (void)setControlItems; +- (void)initStrings; +- (void)manage; +- (void)manageIntf:(NSTimer *)o_timer; - (void)setupMenus; -- (void)setupLangMenu:(NSMenuItem *)o_mi - es:(es_descriptor_t *)p_es - category:(int)i_cat - selector:(SEL)pf_callback; -- (void)setupVarMenu:(NSMenuItem *)o_mi - target:(vlc_object_t *)p_object - var:(const char *)psz_var - selector:(SEL)pf_callback; +- (void)refreshVoutDeviceMenu:(NSNotification *)o_notification; +- (void)setScrollField:(NSString *)o_string stopAfter:(int )timeout; +- (void)resetScrollField; + +- (void)updateMessageArray; +- (void)playStatusUpdated:(int) i_status; +- (void)setSubmenusEnabled:(BOOL)b_enabled; +- (void)manageVolumeSlider; +- (IBAction)timesliderUpdate:(id)sender; - (IBAction)clearRecentItems:(id)sender; - (void)openRecentItem:(id)sender; -- (IBAction)viewPreferences:(id)sender; - -- (IBAction)timesliderUpdate:(id)sender; -- (void)displayTime; +- (IBAction)intfOpenFile:(id)sender; +- (IBAction)intfOpenFileGeneric:(id)sender; +- (IBAction)intfOpenDisc:(id)sender; +- (IBAction)intfOpenNet:(id)sender; -- (IBAction)closeError:(id)sender; +- (IBAction)showWizard:(id)sender; +- (IBAction)showExtended:(id)sender; +- (IBAction)showBookmarks:(id)sender; +- (IBAction)showSFilters:(id)sender; +- (IBAction)viewAbout:(id)sender; +- (IBAction)viewPreferences:(id)sender; +- (IBAction)checkForUpdate:(id)sender; - (IBAction)openReadMe:(id)sender; +- (IBAction)openDocumentation:(id)sender; - (IBAction)reportABug:(id)sender; - (IBAction)openWebsite:(id)sender; - (IBAction)openLicense:(id)sender; +- (IBAction)openForum:(id)sender; +- (IBAction)openDonate:(id)sender; +- (IBAction)openCrashLog:(id)sender; +- (IBAction)viewErrorsAndWarnings:(id)sender; +- (IBAction)showMessagesPanel:(id)sender; + +- (IBAction)togglePlaylist:(id)sender; +- (void)updateTogglePlaylistState; - (void)windowDidBecomeKey:(NSNotification *)o_notification;