intf.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:16k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * intf.h: MacOS X interface module
  3.  *****************************************************************************
  4.  * Copyright (C) 2002-2009 the VideoLAN team
  5.  * $Id: 3d1f899191869397ee288755eb63da8d7b0a8d30 $
  6.  *
  7.  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  8.  *          Christophe Massiot <massiot@via.ecp.fr>
  9.  *          Derk-Jan Hartman <hartman at videolan dot org>
  10.  *          Felix Paul Kühne <fkuehne at videolan dot org>
  11.  *
  12.  * This program is free software; you can redistribute it and/or modify
  13.  * it under the terms of the GNU General Public License as published by
  14.  * the Free Software Foundation; either version 2 of the License, or
  15.  * (at your option) any later version.
  16.  *
  17.  * This program is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.  * GNU General Public License for more details.
  21.  *
  22.  * You should have received a copy of the GNU General Public License
  23.  * along with this program; if not, write to the Free Software
  24.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  25.  *****************************************************************************/
  26. #ifdef HAVE_CONFIG_H
  27. #   include "config.h"
  28. #endif
  29. #include <vlc_common.h>
  30. #include <vlc_interface.h>
  31. #include <vlc_playlist.h>
  32. #include <vlc_vout.h>
  33. #include <vlc_aout.h>
  34. #include <vlc_input.h>
  35. #include <Cocoa/Cocoa.h>
  36. /*****************************************************************************
  37.  * Local prototypes.
  38.  *****************************************************************************/
  39. unsigned int CocoaKeyToVLC( unichar i_key );
  40. #define VLCIntf [[VLCMain sharedInstance] intf]
  41. #define _NS(s) [[VLCMain sharedInstance] localizedString: _(s)]
  42. /* Get an alternate version of the string.
  43.  * This string is stored as '1:string' but when displayed it only displays
  44.  * the translated string. the translation should be '1:translatedstring' though */
  45. #define _ANS(s) [[[VLCMain sharedInstance] localizedString: _(s)] substringFromIndex:2]
  46. #define MACOS_VERSION [[[NSDictionary dictionaryWithContentsOfFile: 
  47.             @"/System/Library/CoreServices/SystemVersion.plist"] 
  48.             objectForKey: @"ProductVersion"] floatValue]
  49. /*****************************************************************************
  50.  * intf_sys_t: description and status of the interface
  51.  *****************************************************************************/
  52. struct intf_sys_t
  53. {
  54.     /* special actions */
  55.     bool b_mute;
  56.     int i_play_status;
  57.     /* interface update */
  58.     bool b_intf_update;
  59.     bool b_playlist_update;
  60.     bool b_playmode_update;
  61.     bool b_current_title_update;
  62.     bool b_fullscreen_update;
  63.     bool b_volume_update;
  64.     bool b_intf_show;
  65.     /* menus handlers */
  66.     bool b_input_update;
  67.     bool b_aout_update;
  68.     bool b_vout_update;
  69.     /* The messages window */
  70.     msg_subscription_t * p_sub;
  71. };
  72. /*****************************************************************************
  73.  * VLCMain interface
  74.  *****************************************************************************/
  75. @class AppleRemote;
  76. @class VLCInformation;
  77. @class VLCControllerWindow;
  78. @class VLCEmbeddedWindow;
  79. @class VLCControls;
  80. @class VLCPlaylist;
  81. @interface VLCMain : NSObject
  82. {
  83.     intf_thread_t *p_intf;      /* The main intf object */
  84.     id o_prefs;                 /* VLCPrefs       */
  85.     id o_sprefs;                /* VLCSimplePrefs */
  86.     id o_about;                 /* VLAboutBox     */
  87.     id o_open;                  /* VLCOpen        */
  88.     id o_wizard;                /* VLCWizard      */
  89.     id o_extended;              /* VLCExtended    */
  90.     id o_bookmarks;             /* VLCBookmarks   */
  91.     id o_embedded_list;         /* VLCEmbeddedList*/
  92.     id o_coredialogs;           /* VLCCoreDialogProvider */
  93.     VLCInformation * o_info;                  /* VLCInformation */
  94. #ifdef UPDATE_CHECK
  95.     id o_update;                /* VLCUpdate      */
  96. #endif
  97.     id o_eyetv;                 /* VLCEyeTVController */
  98.     BOOL nib_main_loaded;       /* main nibfile */
  99.     BOOL nib_open_loaded;       /* open nibfile */
  100.     BOOL nib_about_loaded;      /* about nibfile */
  101.     BOOL nib_wizard_loaded;     /* wizard nibfile */
  102.     BOOL nib_extended_loaded;   /* extended nibfile */
  103.     BOOL nib_bookmarks_loaded;  /* bookmarks nibfile */
  104.     BOOL nib_prefs_loaded;      /* preferences nibfile */
  105.     BOOL nib_update_loaded;     /* update nibfile */
  106.     BOOL nib_info_loaded;       /* information panel nibfile */
  107.     BOOL nib_coredialogs_loaded; /* CoreDialogs nibfile */
  108.     IBOutlet VLCControllerWindow * o_window;                     /* main window */
  109.     IBOutlet NSView * o_playlist_view;                          /* playlist view  */
  110.     IBOutlet id o_scrollfield;                                  /* info field */
  111.     IBOutlet NSTextField * o_timefield;                         /* time field */
  112.     IBOutlet NSSlider * o_timeslider;                           /* time slider */
  113.     BOOL b_time_remaining;                                      /* show remaining time or playtime ? */
  114.     IBOutlet VLCEmbeddedWindow * o_embedded_window;             /* Embedded Vout Window */
  115.     float f_slider;                                             /* slider value */
  116.     float f_slider_old;                                         /* old slider val */
  117.     IBOutlet NSSlider * o_volumeslider;                         /* volume slider */
  118.     IBOutlet NSView * toolbarMediaControl;   /* view with the controls */
  119.     IBOutlet NSProgressIndicator * o_main_pgbar;   /* playlist window progress bar */
  120.     IBOutlet NSButton * o_btn_prev;     /* btn previous   */
  121.     IBOutlet NSButton * o_btn_rewind;   /* btn rewind     */
  122.     IBOutlet NSButton * o_btn_play;     /* btn play       */
  123.     IBOutlet NSButton * o_btn_stop;     /* btn stop       */
  124.     IBOutlet NSButton * o_btn_ff;       /* btn fast forward     */
  125.     IBOutlet NSButton * o_btn_next;     /* btn next       */
  126.     IBOutlet NSButton * o_btn_fullscreen;/* btn fullscreen (embedded vout window) */
  127.     IBOutlet NSButton * o_btn_playlist; /* btn playlist   */
  128.     IBOutlet NSButton * o_btn_equalizer; /* eq btn */
  129.     NSImage * o_img_play;       /* btn play img   */
  130.     NSImage * o_img_pause;      /* btn pause img  */
  131.     NSImage * o_img_play_pressed;       /* btn play img   */
  132.     NSImage * o_img_pause_pressed;      /* btn pause img  */
  133.     IBOutlet VLCControls * o_controls;     /* VLCControls    */
  134.     IBOutlet VLCPlaylist * o_playlist;     /* VLCPlaylist    */
  135.     IBOutlet NSTextView * o_messages;           /* messages tv    */
  136.     IBOutlet NSWindow * o_msgs_panel;           /* messages panel */
  137.     NSMutableArray * o_msg_arr;                 /* messages array */
  138.     NSLock * o_msg_lock;                        /* messages lock */
  139.     BOOL b_msg_arr_changed;                     /* did the array change? */
  140.     IBOutlet NSButton * o_msgs_crashlog_btn;    /* messages open crashlog */
  141.     IBOutlet NSButton * o_msgs_save_btn;        /* save the log as rtf */
  142.     
  143.     /* CrashReporter panel */
  144.     IBOutlet NSButton * o_crashrep_dontSend_btn;
  145.     IBOutlet NSButton * o_crashrep_send_btn;
  146.     IBOutlet NSTextView * o_crashrep_fld;
  147.     IBOutlet NSTextField * o_crashrep_title_txt;
  148.     IBOutlet NSTextField * o_crashrep_desc_txt;
  149.     IBOutlet NSWindow * o_crashrep_win;
  150.     IBOutlet NSButton * o_crashrep_includeEmail_ckb;
  151.     IBOutlet NSTextField * o_crashrep_includeEmail_txt;
  152.     /* main menu */
  153.     IBOutlet NSMenuItem * o_mi_about;
  154.     IBOutlet NSMenuItem * o_mi_prefs;
  155.     IBOutlet NSMenuItem * o_mi_sprefs;
  156.     IBOutlet NSMenuItem * o_mi_checkForUpdate;
  157.     IBOutlet NSMenuItem * o_mi_add_intf;
  158.     IBOutlet NSMenu * o_mu_add_intf;
  159.     IBOutlet NSMenuItem * o_mi_services;
  160.     IBOutlet NSMenuItem * o_mi_hide;
  161.     IBOutlet NSMenuItem * o_mi_hide_others;
  162.     IBOutlet NSMenuItem * o_mi_show_all;
  163.     IBOutlet NSMenuItem * o_mi_quit;
  164.     IBOutlet NSMenu * o_mu_file;
  165.     IBOutlet NSMenuItem * o_mi_open_file;
  166.     IBOutlet NSMenuItem * o_mi_open_generic;
  167.     IBOutlet NSMenuItem * o_mi_open_disc;
  168.     IBOutlet NSMenuItem * o_mi_open_net;
  169.     IBOutlet NSMenuItem * o_mi_open_capture;
  170.     IBOutlet NSMenuItem * o_mi_open_recent;
  171.     IBOutlet NSMenuItem * o_mi_open_recent_cm;
  172.     IBOutlet NSMenuItem * o_mi_open_wizard;
  173.     IBOutlet NSMenu * o_mu_edit;
  174.     IBOutlet NSMenuItem * o_mi_cut;
  175.     IBOutlet NSMenuItem * o_mi_copy;
  176.     IBOutlet NSMenuItem * o_mi_paste;
  177.     IBOutlet NSMenuItem * o_mi_clear;
  178.     IBOutlet NSMenuItem * o_mi_select_all;
  179.     IBOutlet NSMenu * o_mu_controls;
  180.     IBOutlet NSMenuItem * o_mi_play;
  181.     IBOutlet NSMenuItem * o_mi_stop;
  182.     IBOutlet NSMenuItem * o_mi_faster;
  183.     IBOutlet NSMenuItem * o_mi_slower;
  184.     IBOutlet NSMenuItem * o_mi_previous;
  185.     IBOutlet NSMenuItem * o_mi_next;
  186.     IBOutlet NSMenuItem * o_mi_random;
  187.     IBOutlet NSMenuItem * o_mi_repeat;
  188.     IBOutlet NSMenuItem * o_mi_loop;
  189.     IBOutlet NSMenuItem * o_mi_quitAfterPB;
  190.     IBOutlet NSMenuItem * o_mi_fwd;
  191.     IBOutlet NSMenuItem * o_mi_bwd;
  192.     IBOutlet NSMenuItem * o_mi_fwd1m;
  193.     IBOutlet NSMenuItem * o_mi_bwd1m;
  194.     IBOutlet NSMenuItem * o_mi_fwd5m;
  195.     IBOutlet NSMenuItem * o_mi_bwd5m;
  196.     IBOutlet NSMenuItem * o_mi_program;
  197.     IBOutlet NSMenu * o_mu_program;
  198.     IBOutlet NSMenuItem * o_mi_title;
  199.     IBOutlet NSMenu * o_mu_title;
  200.     IBOutlet NSMenuItem * o_mi_chapter;
  201.     IBOutlet NSMenu * o_mu_chapter;
  202.     IBOutlet NSMenu * o_mu_audio;
  203.     IBOutlet NSMenuItem * o_mi_vol_up;
  204.     IBOutlet NSMenuItem * o_mi_vol_down;
  205.     IBOutlet NSMenuItem * o_mi_mute;
  206.     IBOutlet NSMenuItem * o_mi_audiotrack;
  207.     IBOutlet NSMenu * o_mu_audiotrack;
  208.     IBOutlet NSMenuItem * o_mi_channels;
  209.     IBOutlet NSMenu * o_mu_channels;
  210.     IBOutlet NSMenuItem * o_mi_device;
  211.     IBOutlet NSMenu * o_mu_device;
  212.     IBOutlet NSMenuItem * o_mi_visual;
  213.     IBOutlet NSMenu * o_mu_visual;
  214.     IBOutlet NSMenu * o_mu_video;
  215.     IBOutlet NSMenuItem * o_mi_half_window;
  216.     IBOutlet NSMenuItem * o_mi_normal_window;
  217.     IBOutlet NSMenuItem * o_mi_double_window;
  218.     IBOutlet NSMenuItem * o_mi_fittoscreen;
  219.     IBOutlet NSMenuItem * o_mi_fullscreen;
  220.     IBOutlet NSMenuItem * o_mi_floatontop;
  221.     IBOutlet NSMenuItem * o_mi_snapshot;
  222.     IBOutlet NSMenuItem * o_mi_videotrack;
  223.     IBOutlet NSMenu * o_mu_videotrack;
  224.     IBOutlet NSMenuItem * o_mi_screen;
  225.     IBOutlet NSMenu * o_mu_screen;
  226.     IBOutlet NSMenuItem * o_mi_aspect_ratio;
  227.     IBOutlet NSMenu * o_mu_aspect_ratio;
  228.     IBOutlet NSMenuItem * o_mi_crop;
  229.     IBOutlet NSMenu * o_mu_crop;
  230.     IBOutlet NSMenuItem * o_mi_subtitle;
  231.     IBOutlet NSMenu * o_mu_subtitle;
  232.     IBOutlet NSMenuItem * o_mi_addSub;
  233.     IBOutlet NSMenuItem * o_mi_deinterlace;
  234.     IBOutlet NSMenu * o_mu_deinterlace;
  235.     IBOutlet NSMenuItem * o_mi_ffmpeg_pp;
  236.     IBOutlet NSMenu * o_mu_ffmpeg_pp;
  237.     IBOutlet NSMenuItem * o_mi_teletext;
  238.     IBOutlet NSMenuItem * o_mi_teletext_transparent;
  239.     IBOutlet NSMenuItem * o_mi_teletext_index;
  240.     IBOutlet NSMenuItem * o_mi_teletext_red;
  241.     IBOutlet NSMenuItem * o_mi_teletext_green;
  242.     IBOutlet NSMenuItem * o_mi_teletext_yellow;
  243.     IBOutlet NSMenuItem * o_mi_teletext_blue;
  244.     IBOutlet NSMenu * o_mu_window;
  245.     IBOutlet NSMenuItem * o_mi_minimize;
  246.     IBOutlet NSMenuItem * o_mi_close_window;
  247.     IBOutlet NSMenuItem * o_mi_controller;
  248.     IBOutlet NSMenuItem * o_mi_equalizer;
  249.     IBOutlet NSMenuItem * o_mi_extended;
  250.     IBOutlet NSMenuItem * o_mi_bookmarks;
  251.     IBOutlet NSMenuItem * o_mi_playlist;
  252.     IBOutlet NSMenuItem * o_mi_info;
  253.     IBOutlet NSMenuItem * o_mi_messages;
  254.     IBOutlet NSMenuItem * o_mi_bring_atf;
  255.     IBOutlet NSMenu * o_mu_help;
  256.     IBOutlet NSMenuItem * o_mi_help;
  257.     IBOutlet NSMenuItem * o_mi_readme;
  258.     IBOutlet NSMenuItem * o_mi_documentation;
  259.     IBOutlet NSMenuItem * o_mi_license;
  260.     IBOutlet NSMenuItem * o_mi_website;
  261.     IBOutlet NSMenuItem * o_mi_donation;
  262.     IBOutlet NSMenuItem * o_mi_forum;
  263.     IBOutlet NSMenuItem * o_mi_errorsAndWarnings;
  264.     /* dock menu */
  265.     IBOutlet NSMenuItem * o_dmi_play;
  266.     IBOutlet NSMenuItem * o_dmi_stop;
  267.     IBOutlet NSMenuItem * o_dmi_next;
  268.     IBOutlet NSMenuItem * o_dmi_previous;
  269.     IBOutlet NSMenuItem * o_dmi_mute;
  270.     /* vout menu */
  271.     IBOutlet NSMenu * o_vout_menu;
  272.     IBOutlet NSMenuItem * o_vmi_play;
  273.     IBOutlet NSMenuItem * o_vmi_stop;
  274.     IBOutlet NSMenuItem * o_vmi_prev;
  275.     IBOutlet NSMenuItem * o_vmi_next;
  276.     IBOutlet NSMenuItem * o_vmi_volup;
  277.     IBOutlet NSMenuItem * o_vmi_voldown;
  278.     IBOutlet NSMenuItem * o_vmi_mute;
  279.     IBOutlet NSMenuItem * o_vmi_fullscreen;
  280.     IBOutlet NSMenuItem * o_vmi_snapshot;
  281.     bool b_small_window;
  282.     bool b_restore_size;
  283.     NSRect o_restore_rect;
  284.     mtime_t i_end_scroll;
  285.     NSSize o_size_with_playlist;
  286.     int     i_lastShownVolume;
  287.     input_state_e cachedInputState;
  288.     /* the manage thread */
  289.     pthread_t manage_thread;
  290.     /* The timer that update the interface */
  291.     NSTimer * interfaceTimer;
  292.     NSURLConnection * crashLogURLConnection;
  293.     AppleRemote * o_remote;
  294.     BOOL b_remote_button_hold; /* true as long as the user holds the left,right,plus or minus on the remote control */
  295. }
  296. + (VLCMain *)sharedInstance;
  297. - (intf_thread_t *)intf;
  298. - (void)setIntf:(intf_thread_t *)p_mainintf;
  299. - (void)controlTintChanged;
  300. - (id)controls;
  301. - (id)simplePreferences;
  302. - (id)preferences;
  303. - (id)playlist;
  304. - (BOOL)isPlaylistCollapsed;
  305. - (id)info;
  306. - (id)wizard;
  307. - (id)bookmarks;
  308. - (id)embeddedList;
  309. - (id)coreDialogProvider;
  310. - (id)mainIntfPgbar;
  311. - (id)controllerWindow;
  312. - (id)voutMenu;
  313. - (id)eyeTVController;
  314. - (id)appleRemoteController;
  315. - (void)applicationWillTerminate:(NSNotification *)notification;
  316. - (NSString *)localizedString:(const char *)psz;
  317. - (char *)delocalizeString:(NSString *)psz;
  318. - (NSString *)wrapString: (NSString *)o_in_string toWidth: (int)i_width;
  319. - (BOOL)hasDefinedShortcutKey:(NSEvent *)o_event;
  320. - (void)initStrings;
  321. - (void)manage;
  322. - (void)manageIntf:(NSTimer *)o_timer;
  323. - (void)setupMenus;
  324. - (void)refreshVoutDeviceMenu:(NSNotification *)o_notification;
  325. - (void)setScrollField:(NSString *)o_string stopAfter:(int )timeout;
  326. - (void)resetScrollField;
  327. - (void)updateMessageDisplay;
  328. - (void)playStatusUpdated:(int) i_status;
  329. - (void)setSubmenusEnabled:(BOOL)b_enabled;
  330. - (void)manageVolumeSlider;
  331. - (IBAction)timesliderUpdate:(id)sender;
  332. - (IBAction)timeFieldWasClicked:(id)sender;
  333. - (IBAction)clearRecentItems:(id)sender;
  334. - (void)openRecentItem:(id)sender;
  335. - (IBAction)intfOpenFile:(id)sender;
  336. - (IBAction)intfOpenFileGeneric:(id)sender;
  337. - (IBAction)intfOpenDisc:(id)sender;
  338. - (IBAction)intfOpenNet:(id)sender;
  339. - (IBAction)intfOpenCapture:(id)sender;
  340. - (IBAction)showWizard:(id)sender;
  341. - (IBAction)showExtended:(id)sender;
  342. - (IBAction)showBookmarks:(id)sender;
  343. - (IBAction)viewAbout:(id)sender;
  344. - (IBAction)showLicense:(id)sender;
  345. - (IBAction)viewPreferences:(id)sender;
  346. - (IBAction)checkForUpdate:(id)sender;
  347. - (IBAction)viewHelp:(id)sender;
  348. - (IBAction)openReadMe:(id)sender;
  349. - (IBAction)openDocumentation:(id)sender;
  350. - (IBAction)openWebsite:(id)sender;
  351. - (IBAction)openForum:(id)sender;
  352. - (IBAction)openDonate:(id)sender;
  353. - (IBAction)openCrashLog:(id)sender;
  354. - (IBAction)viewErrorsAndWarnings:(id)sender;
  355. - (IBAction)showMessagesPanel:(id)sender;
  356. - (IBAction)showInformationPanel:(id)sender;
  357. - (IBAction)crashReporterAction:(id)sender;
  358. - (IBAction)saveDebugLog:(id)sender;
  359. - (IBAction)togglePlaylist:(id)sender;
  360. - (void)updateTogglePlaylistState;
  361. - (void)windowDidBecomeKey:(NSNotification *)o_notification;
  362. @end
  363. @interface VLCMain (Internal)
  364. - (void)handlePortMessage:(NSPortMessage *)o_msg;
  365. @end
  366. /*****************************************************************************
  367.  * VLCApplication interface
  368.  *****************************************************************************/
  369. @interface VLCApplication : NSApplication
  370. {
  371.     BOOL b_justJumped;
  372.     BOOL b_mediaKeySupport;
  373.     BOOL b_activeInBackground;
  374.     BOOL b_active;
  375. }
  376. - (void)coreChangedMediaKeySupportSetting: (NSNotification *)o_notification;
  377. //- (void)sendEvent: (NSEvent*)event;
  378. - (void)resetJump;
  379. @end