/*****************************************************************************
* MainMenu.m: MacOS X interface module
*****************************************************************************
- * Copyright (C) 2011-2013 Felix Paul Kühne
+ * Copyright (C) 2011-2014 Felix Paul Kühne
* $Id$
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
*****************************************************************************/
#import "MainMenu.h"
+#import "intf.h"
+
#import <vlc_common.h>
#import <vlc_playlist.h>
#import <vlc_input.h>
-#import "intf.h"
#import "open.h"
#import "wizard.h"
#import "about.h"
return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
}
-#pragma mark -
-#pragma mark Initialization
+#pragma mark - Initialization
- (id)init
{
[self setupVarMenuItem: o_mi_add_intf target: (vlc_object_t *)p_intf
var: "intf-add" selector: @selector(toggleVar:)];
- [self setupExtensionsMenu];
+ /* setup extensions menu */
+ // FIXME: Implement preference for autoloading extensions on mac
+ if (![o_extMgr isLoaded] && ![o_extMgr cannotLoad])
+ [o_extMgr loadExtensions];
+
+ /* Let the ExtensionsManager itself build the menu */
+ [o_extMgr buildMenu:o_mu_extensions];
+ [o_mi_extensions setEnabled: ([o_mu_extensions numberOfItems] > 0)];
+ /* setup post-proc menu */
NSUInteger count = (NSUInteger) [o_mu_ffmpeg_pp numberOfItems];
if (count > 0)
[o_mu_ffmpeg_pp removeAllItems];
[o_mitem setTag: -1];
[o_mitem setEnabled: YES];
[o_mitem setTarget: self];
- for (NSUInteger x = 0; x < 7; x++) {
+ for (NSUInteger x = 1; x < 7; x++) {
[o_mu_ffmpeg_pp addItemWithTitle:[NSString stringWithFormat:_NS("Level %i"), x]
action:@selector(togglePostProcessing:)
keyEquivalent:@""];
- o_mitem = [o_mu_ffmpeg_pp itemAtIndex:x+1];
- [o_mitem setEnabled: YES];
+ o_mitem = [o_mu_ffmpeg_pp itemAtIndex:x];
+ [o_mitem setEnabled:YES];
[o_mitem setTag:x];
- [o_mitem setTarget: self];
+ [o_mitem setTarget:self];
}
char *psz_config = config_GetPsz(p_intf, "video-filter");
if (psz_config) {
- if (!strstr(psz_config, "postprocess"))
+ if (!strstr(psz_config, "postproc"))
[[o_mu_ffmpeg_pp itemAtIndex:0] setState:NSOnState];
else
[[o_mu_ffmpeg_pp itemWithTag:config_GetInt(p_intf, "postproc-q")] setState:NSOnState];
return [o_context_menu autorelease];
}
-#pragma mark -
-#pragma mark Termination
+#pragma mark - Termination
- (void)releaseRepresentedObjects:(NSMenu *)the_menu
{
}
}
-#pragma mark -
-#pragma mark Interface update
+#pragma mark - Interface update
- (void)setupMenus
{
[o_pool release];
}
-#pragma mark -
-#pragma mark Extensions
-
-- (void)setupExtensionsMenu
-{
- /* Load extensions if needed */
- // TODO: Implement preference for autoloading extensions on mac
-
- // if (!var_InheritBool(p_intf, "qt-autoload-extensions")
- // && ![o_extMgr isLoaded])
- // {
- // return;
- // }
-
- if (![o_extMgr isLoaded] && ![o_extMgr cannotLoad]) {
- [o_extMgr loadExtensions];
- }
-
- /* Let the ExtensionsManager itself build the menu */
- [o_extMgr buildMenu:o_mu_extensions];
- [o_mi_extensions setEnabled: ([o_mu_extensions numberOfItems] > 0)];
-}
-
-#pragma mark -
-#pragma mark View
+#pragma mark - View
- (IBAction)toggleEffectsButton:(id)sender
{
return YES;
}
-#pragma mark -
-#pragma mark Playback
+#pragma mark - Playback
- (IBAction)quitAfterPlayback:(id)sender
{
[[VLCCoreInteraction sharedInstance] setAtoB];
}
-#pragma mark -
-#pragma mark audio menu
+#pragma mark - audio menu
+
- (void)refreshAudioDeviceList
{
char **ids, **names;
[self refreshAudioDeviceList];
}
-#pragma mark -
-#pragma mark video menu
+#pragma mark - video menu
- (IBAction)toggleFullscreen:(id)sender
{
- (void)_disablePostProcessing
{
- char *psz_name = "postprocess";
- char *psz_string, *psz_parser;
- psz_string = config_GetPsz(p_intf, "video-filter");
-
- if (!psz_string)
- return;
-
- psz_parser = strstr(psz_string, psz_name);
- if (psz_parser) {
- if (*(psz_parser + strlen(psz_name)) == ':') {
- memmove(psz_parser, psz_parser + strlen(psz_name) + 1,
- strlen(psz_parser + strlen(psz_name) + 1) + 1);
- } else
- *psz_parser = '\0';
-
- /* Remove trailing : : */
- if (strlen(psz_string) > 0 && *(psz_string + strlen(psz_string) -1) == ':')
- *(psz_string + strlen(psz_string) -1) = '\0';
- } else {
- free(psz_string);
- return;
- }
- config_PutPsz(p_intf, "video-filter", psz_string);
-
- /* Try to set on the fly */
- vout_thread_t *p_vout = getVout();
- if (p_vout) {
- var_SetString(p_vout, "video-filter", psz_string);
- vlc_object_release(p_vout);
- }
+ [[VLCCoreInteraction sharedInstance] setVideoFilter:"postproc" on:false];
}
- (void)_enablePostProcessing
{
- char *psz_name = "postprocess";
- char *psz_string, *psz_parser;
- psz_string = config_GetPsz(p_intf, "video-filter");
-
- if (psz_string == NULL)
- psz_string = psz_name;
- else if (strstr(psz_string, psz_name) == NULL) {
- char *psz_tmp = strdup([[NSString stringWithFormat: @"%s:%s", psz_string, psz_name] UTF8String]);
- free(psz_string);
- psz_string = psz_tmp;
- }
-
- config_PutPsz(p_intf, "video-filter", psz_string);
-
- /* Try to set on the fly */
- vout_thread_t *p_vout = getVout();
- if (p_vout) {
- var_SetString(p_vout, "video-filter", psz_string);
- vlc_object_release(p_vout);
- }
+ [[VLCCoreInteraction sharedInstance] setVideoFilter:"postproc" on:true];
}
- (IBAction)togglePostProcessing:(id)sender
{
- char *psz_name = "postprocess";
+ char *psz_name = "postproc";
NSInteger count = [o_mu_ffmpeg_pp numberOfItems];
for (NSUInteger x = 0; x < count; x++)
[[o_mu_ffmpeg_pp itemAtIndex:x] setState:NSOffState];
[self _enablePostProcessing];
[sender setState:NSOnState];
- vout_thread_t *p_vout = getVout();
- vlc_object_t *p_filter;
-
- config_PutInt(p_intf, "postproc-q", [sender tag]);
-
- if (p_vout) {
- p_filter = vlc_object_find_name(pl_Get(p_intf), psz_name);
-
- if (!p_filter) {
- msg_Warn(p_intf, "filter '%s' isn't enabled", psz_name);
- vlc_object_release(p_vout);
- return;
- }
- var_SetInteger(p_filter, "postproc-q", [sender tag]);
- vlc_object_release(p_vout);
- vlc_object_release(p_filter);
- }
+ [[VLCCoreInteraction sharedInstance] setVideoFilterProperty:"postproc-q" forFilter:"postproc" integer:[sender tag]];
}
}
}
#pragma mark - Subtitles Menu
+
- (IBAction)addSubtitleFile:(id)sender
{
NSInteger i_returnValue = 0;
}
}
-#pragma mark -
-#pragma mark Panels
+#pragma mark - Panels
- (IBAction)intfOpenFile:(id)sender
{
- (IBAction)viewPreferences:(id)sender
{
- NSInteger i_level = [[[VLCMain sharedInstance] voutController] currentWindowLevel];
+ NSInteger i_level = [[[VLCMain sharedInstance] voutController] currentStatusWindowLevel];
[[[VLCMain sharedInstance] simplePreferences] showSimplePrefsWithLevel:i_level];
}
[[VLCMainWindow sharedInstance] changePlaylistState: psUserMenuEvent];
}
-#pragma mark -
-#pragma mark Help and Docs
+#pragma mark - Help and Docs
- (void)initAbout
{
[[NSWorkspace sharedWorkspace] openURL: o_url];
}
-#pragma mark -
-#pragma mark Errors, warnings and messages
+#pragma mark - Errors, warnings and messages
- (IBAction)viewErrorsAndWarnings:(id)sender
{
[[[VLCMain sharedInstance] info] initPanel];
}
-#pragma mark -
-#pragma mark convinience stuff for other objects
+#pragma mark - convinience stuff for other objects
+
- (void)setPlay
{
[o_mi_play setTitle: _NS("Play")];
[o_mi_random setState: b_value];
}
-#pragma mark -
-#pragma mark Dynamic menu creation and validation
+#pragma mark - Dynamic menu creation and validation
- (void)setupVarMenuItem:(NSMenuItem *)o_mi
target:(vlc_object_t *)p_object
return;
}
- if (var_Change(p_object, psz_variable, VLC_VAR_GETLIST,
+ if (var_Change(p_object, psz_variable, VLC_VAR_GETCHOICES,
&val_list, &text_list) < 0) {
if ((i_type & VLC_VAR_TYPE) == VLC_VAR_STRING) free(val.psz_string);
return;