--- /dev/null
+{
+ IBClasses = (
+ {
+ CLASS = FirstResponder;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = NSDatePicker;
+ LANGUAGE = ObjC;
+ SUPERCLASS = NSControl;
+ },
+ {
+ ACTIONS = {
+ bcastButtonAction = id;
+ listDoubleClickAction = id;
+ schedButtonAction = id;
+ vodButtonAction = id;
+ };
+ CLASS = VLCVLMController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ "o_bcast_add_btn" = NSButton;
+ "o_bcast_box" = NSBox;
+ "o_bcast_cancel_btn" = NSButton;
+ "o_bcast_enable_ckb" = NSButton;
+ "o_bcast_input_btn" = NSButton;
+ "o_bcast_input_fld" = NSTextField;
+ "o_bcast_loop_ckb" = NSButton;
+ "o_bcast_name_fld" = NSTextField;
+ "o_bcast_output_btn" = NSButton;
+ "o_bcast_output_fld" = NSTextField;
+ "o_bcast_panel" = NSPanel;
+ "o_sched_add_btn" = id;
+ "o_sched_box" = id;
+ "o_sched_cancel_btn" = id;
+ "o_sched_date_datePicker" = NSDatePicker;
+ "o_sched_date_lbl" = NSTextField;
+ "o_sched_input_btn" = NSButton;
+ "o_sched_input_fld" = NSTextField;
+ "o_sched_input_lbl" = NSTextField;
+ "o_sched_name_fld" = NSTextField;
+ "o_sched_name_lbl" = NSTextField;
+ "o_sched_output_btn" = NSButton;
+ "o_sched_output_fld" = NSTextField;
+ "o_sched_output_lbl" = NSTextField;
+ "o_sched_panel" = NSPanel;
+ "o_sched_repeatDelay_datePicker" = NSDatePicker;
+ "o_sched_repeat_fld" = NSTextField;
+ "o_sched_repeat_lbl" = NSTextField;
+ "o_sched_time_box" = id;
+ "o_vlm_list" = NSTableView;
+ "o_vlm_win" = NSWindow;
+ "o_vod_add_btn" = NSButton;
+ "o_vod_box" = id;
+ "o_vod_cancel_btn" = NSButton;
+ "o_vod_input_btn" = NSButton;
+ "o_vod_input_fld" = NSTextField;
+ "o_vod_input_lbl" = NSTextField;
+ "o_vod_loop_ckb" = NSButton;
+ "o_vod_name_fld" = NSTextField;
+ "o_vod_name_lbl" = NSTextField;
+ "o_vod_output_btn" = NSButton;
+ "o_vod_output_fld" = NSTextField;
+ "o_vod_output_lbl" = NSTextField;
+ "o_vod_panel" = NSPanel;
+ };
+ SUPERCLASS = NSObject;
+ }
+ );
+ IBVersion = 1;
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>609 119 356 240 0 0 1280 778 </string>
+ <key>IBFramework Version</key>
+ <string>489.0</string>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>5</integer>
+ <integer>106</integer>
+ <integer>65</integer>
+ <integer>30</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>9E17</string>
+</dict>
+</plist>
fspanel.h \
eyetv.h \
eyetv.m \
+ vlm.h \
+ vlm.m \
$(NULL)
id o_wizard; /* VLCWizard */
id o_extended; /* VLCExtended */
id o_bookmarks; /* VLCBookmarks */
+ id o_vlm; /* VLCVLMController */
id o_embedded_list; /* VLCEmbeddedList*/
id o_coredialogs; /* VLCCoreDialogProvider */
VLCInformation * o_info; /* VLCInformation */
BOOL nib_prefs_loaded; /* preferences nibfile */
BOOL nib_update_loaded; /* update nibfile */
BOOL nib_info_loaded; /* information panel nibfile */
+ BOOL nib_vlm_loaded; /* VLM Panel nibfile */
BOOL nib_coredialogs_loaded; /* CoreDialogs nibfile */
IBOutlet VLCControllerWindow * o_window; /* main window */
IBOutlet NSMenuItem * o_mi_open_recent;
IBOutlet NSMenuItem * o_mi_open_recent_cm;
IBOutlet NSMenuItem * o_mi_open_wizard;
+ IBOutlet NSMenuItem * o_mi_open_vlm;
IBOutlet NSMenu * o_mu_edit;
IBOutlet NSMenuItem * o_mi_cut;
- (IBAction)intfOpenCapture:(id)sender;
- (IBAction)showWizard:(id)sender;
+- (IBAction)showVLM:(id)sender;
- (IBAction)showExtended:(id)sender;
- (IBAction)showBookmarks:(id)sender;
#import "AppleRemote.h"
#import "eyetv.h"
#import "simple_prefs.h"
+#import "vlm.h"
#import <AddressBook/AddressBook.h> /* for crashlog send mechanism */
#import <IOKit/hidsystem/ev_keymap.h> /* for the media key support */
o_prefs = nil;
o_open = [[VLCOpen alloc] init];
o_wizard = [[VLCWizard alloc] init];
+ o_vlm = [[VLCVLMController alloc] init];
o_extended = nil;
o_bookmarks = [[VLCBookmarks alloc] init];
o_embedded_list = [[VLCEmbeddedList alloc] init];
return nil;
}
+- (id)vlm
+{
+ return o_vlm;
+}
+
- (id)bookmarks
{
if( o_bookmarks )
}
}
+- (IBAction)showVLM:(id)sender
+{
+ if( !nib_vlm_loaded )
+ nib_vlm_loaded = [NSBundle loadNibNamed:@"VLM" owner: NSApp];
+
+ [o_vlm showVLMWindow];
+}
+
- (IBAction)showExtended:(id)sender
{
if( o_extended == nil )
@implementation NSAnimation (VLCAdditions)
/* fake class attributes */
-static NSMapTable *VLCAdditions_userInfo = nil;
+static NSMapTable *VLCAdditions_userInfo = NULL;
+ (void)load
{
@implementation NSScreen (VLCAdditions)
-static NSMutableArray *blackoutWindows = nil;
+static NSMutableArray *blackoutWindows = NULL;
+ (void)load
{
blackoutWindows = [[NSMutableArray alloc] initWithCapacity:1];
}
-- (void)dealloc
-{
- [blackoutWindows release];
- [super dealloc];
-}
-
+ (NSScreen *)screenWithDisplayID: (CGDirectDisplayID)displayID
{
int i;
p_item = config_FindConfig( VLC_OBJECT(p_intf), name );
p_stringobject = (NSString *)[[object selectedItem] representedObject];
assert([p_stringobject isKindOfClass:[NSString class]]);
- if( p_stringobject )
- {
- config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
- [p_stringobject release];
- }
+ if( p_stringobject ) config_PutPsz( p_intf, name, [p_stringobject UTF8String] );
}
static inline void save_module_list( intf_thread_t * p_intf, id object, const char * name )
{
char *psz_tmp;
int i;
+ NSString *p_stringobject;
#define SaveIntList( object, name ) save_int_list( p_intf, object, name )
--- /dev/null
+/*****************************************************************************
+ * vlm.h: VLM Configuration panel for Mac OS X
+ *****************************************************************************
+ * Copyright (c) 2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne@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.
+ *****************************************************************************/
+
+
+#ifdef HAVE_CONFIG_H
+# import "config.h"
+#endif
+
+#ifdef ENABLE_VLM
+
+#import <Cocoa/Cocoa.h>
+#import "intf.h"
+
+#import <vlc_vlm.h>
+
+@interface VLCVLMController : NSObject
+{
+ /* broadcast panel */
+ IBOutlet NSButton *o_bcast_add_btn;
+ IBOutlet NSBox *o_bcast_box;
+ IBOutlet NSButton *o_bcast_cancel_btn;
+ IBOutlet NSButton *o_bcast_enable_ckb;
+ IBOutlet NSButton *o_bcast_input_btn;
+ IBOutlet NSTextField *o_bcast_input_fld;
+ IBOutlet NSButton *o_bcast_loop_ckb;
+ IBOutlet NSTextField *o_bcast_name_fld;
+ IBOutlet NSButton *o_bcast_output_btn;
+ IBOutlet NSTextField *o_bcast_output_fld;
+ IBOutlet NSPanel *o_bcast_panel;
+
+ /* schedule panel */
+ IBOutlet id o_sched_add_btn;
+ IBOutlet id o_sched_box;
+ IBOutlet id o_sched_cancel_btn;
+ IBOutlet NSDatePicker *o_sched_date_datePicker;
+ IBOutlet NSTextField *o_sched_date_lbl;
+ IBOutlet NSButton *o_sched_input_btn;
+ IBOutlet NSTextField *o_sched_input_fld;
+ IBOutlet NSTextField *o_sched_input_lbl;
+ IBOutlet NSTextField *o_sched_name_fld;
+ IBOutlet NSTextField *o_sched_name_lbl;
+ IBOutlet NSButton *o_sched_output_btn;
+ IBOutlet NSTextField *o_sched_output_fld;
+ IBOutlet NSTextField *o_sched_output_lbl;
+ IBOutlet NSTextField *o_sched_repeat_fld;
+ IBOutlet NSTextField *o_sched_repeat_lbl;
+ IBOutlet NSDatePicker *o_sched_repeatDelay_datePicker;
+ IBOutlet id o_sched_time_box;
+ IBOutlet NSWindow *o_sched_panel;
+
+ /* VLM Window */
+ IBOutlet NSTableView *o_vlm_list;
+ IBOutlet NSWindow *o_vlm_win;
+
+ /* VOD Panel */
+ IBOutlet NSButton *o_vod_add_btn;
+ IBOutlet id o_vod_box;
+ IBOutlet NSButton *o_vod_cancel_btn;
+ IBOutlet NSButton *o_vod_input_btn;
+ IBOutlet NSTextField *o_vod_input_fld;
+ IBOutlet NSTextField *o_vod_input_lbl;
+ IBOutlet NSButton *o_vod_loop_ckb;
+ IBOutlet NSTextField *o_vod_name_fld;
+ IBOutlet NSTextField *o_vod_name_lbl;
+ IBOutlet NSButton *o_vod_output_btn;
+ IBOutlet NSTextField *o_vod_output_fld;
+ IBOutlet NSTextField *o_vod_output_lbl;
+ IBOutlet NSWindow *o_vod_panel;
+}
++ (VLCVLMController *)sharedInstance;
+
+/* toolbar */
+- (NSToolbarItem *) toolbar: (NSToolbar *)o_toolbar
+ itemForItemIdentifier: (NSString *)o_itemIdent
+ willBeInsertedIntoToolbar: (BOOL)b_willBeInserted;
+- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar;
+- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar;
+
+- (void)showVLMWindow;
+- (void)initStrings;
+
+- (void)addBcast;
+- (void)addVOD;
+- (void)addSched;
+
+- (IBAction)bcastButtonAction:(id)sender;
+- (IBAction)listDoubleClickAction:(id)sender;
+- (IBAction)schedButtonAction:(id)sender;
+- (IBAction)vodButtonAction:(id)sender;
+
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView;
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
+@end
+
+#endif
\ No newline at end of file
--- /dev/null
+/*****************************************************************************
+ * vlm.m: VLM Configuration panel for Mac OS X
+ *****************************************************************************
+ * Copyright (c) 2008 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Felix Paul Kühne <fkuehne@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.
+ *****************************************************************************/
+
+#import "vlm.h"
+
+#ifdef ENABLE_VLM
+
+static NSString * VLCVLMToolbarIdentifier = @"Our VLM Toolbar Identifier";
+static NSString * VLCVODToolbarIdentifier = @"VLM Item";
+static NSString * VLCSchedToolbarIdentifier = @"Sched Item";
+static NSString * VLCBcastToolbarIdentifier = @"Bcast Item";
+
+@implementation VLCVLMController
+
+static VLCVLMController *_o_sharedInstance = nil;
+
++ (VLCVLMController *)sharedInstance
+{
+ return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];
+}
+
+- (id)init
+{
+ if( _o_sharedInstance )
+ [self dealloc];
+ else
+ {
+ _o_sharedInstance = [super init];
+ }
+
+ return _o_sharedInstance;
+}
+
+- (void)awakeFromNib
+{
+ [self initStrings];
+
+ /* setup the toolbar */
+ NSToolbar * o_vlm_toolbar = [[[NSToolbar alloc] initWithIdentifier: VLCVLMToolbarIdentifier] autorelease];
+ [o_vlm_toolbar setAllowsUserCustomization: NO];
+ [o_vlm_toolbar setAutosavesConfiguration: NO];
+ [o_vlm_toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel];
+ [o_vlm_toolbar setSizeMode: NSToolbarSizeModeRegular];
+ [o_vlm_toolbar setDelegate: self];
+ [o_vlm_win setToolbar: o_vlm_toolbar];
+}
+
+#define CreateToolbarItem( o_name, o_desc, o_img, sel ) \
+ o_toolbarItem = create_toolbar_item(o_itemIdent, o_name, o_desc, o_img, self, @selector(sel));
+static inline NSToolbarItem *
+create_toolbar_item( NSString * o_itemIdent, NSString * o_name, NSString * o_desc, NSString * o_img, id target, SEL selector )
+{
+ NSToolbarItem *o_toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: o_itemIdent] autorelease]; \
+
+ [o_toolbarItem setLabel: o_name];
+ [o_toolbarItem setPaletteLabel: o_desc];
+
+ [o_toolbarItem setToolTip: o_desc];
+ [o_toolbarItem setImage: [NSImage imageNamed: o_img]];
+
+ [o_toolbarItem setTarget: target];
+ [o_toolbarItem setAction: selector];
+
+ [o_toolbarItem setEnabled: YES];
+ [o_toolbarItem setAutovalidates: YES];
+
+ return o_toolbarItem;
+}
+
+- (NSToolbarItem *) toolbar: (NSToolbar *)o_vlm_toolbar
+ itemForItemIdentifier: (NSString *)o_itemIdent
+ willBeInsertedIntoToolbar: (BOOL)b_willBeInserted
+{
+ NSToolbarItem *o_toolbarItem = nil;
+
+ if( [o_itemIdent isEqual: VLCVODToolbarIdentifier] )
+ {
+ CreateToolbarItem( _NS("Video On Demand"), _NS("Video On Demand"), @"add_vod", addVOD );
+ }
+ else if( [o_itemIdent isEqual: VLCSchedToolbarIdentifier] )
+ {
+ CreateToolbarItem( _NS("Schedule"), _NS("Schedule"), @"add_schedule", addSched );
+ }
+ else if( [o_itemIdent isEqual: VLCBcastToolbarIdentifier] )
+ {
+ CreateToolbarItem( _NS("Broadcast"), _NS("Broadcast"), @"add_broadcast", addBcast );
+ }
+
+ return o_toolbarItem;
+}
+
+- (NSArray *)toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar
+{
+ return [NSArray arrayWithObjects: VLCBcastToolbarIdentifier, VLCSchedToolbarIdentifier, VLCVODToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil];
+}
+
+- (NSArray *)toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar
+{
+ return [NSArray arrayWithObjects: VLCBcastToolbarIdentifier, VLCSchedToolbarIdentifier, VLCVODToolbarIdentifier, NSToolbarFlexibleSpaceItemIdentifier, nil];
+}
+
+- (void)initStrings
+{
+ /* not implemented */
+}
+
+- (void)showVLMWindow
+{
+ [o_vlm_win makeKeyAndOrderFront: self];
+}
+
+- (void)addBcast
+{
+ [NSApp beginSheet: o_bcast_panel modalForWindow: o_vlm_win
+ modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (void)addVOD
+{
+ [NSApp beginSheet: o_vod_panel modalForWindow: o_vlm_win
+ modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (void)addSched
+{
+ [NSApp beginSheet: o_sched_panel modalForWindow: o_vlm_win
+ modalDelegate: self didEndSelector: nil contextInfo: nil];
+}
+
+- (IBAction)bcastButtonAction:(id)sender
+{
+ [NSApp endSheet: o_bcast_panel];
+ [o_bcast_panel close];
+}
+
+- (IBAction)listDoubleClickAction:(id)sender
+{
+}
+
+- (IBAction)schedButtonAction:(id)sender
+{
+ [NSApp endSheet: o_sched_panel];
+ [o_sched_panel close];
+}
+
+- (IBAction)vodButtonAction:(id)sender
+{
+ [NSApp endSheet: o_vod_panel];
+ [o_vod_panel close];
+}
+
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView
+{
+ return 0;
+}
+
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
+{
+ return @"dummy";
+}
+
+@end
+
+#endif
\ No newline at end of file
{
/* check if plugin has a new parent window */
CGrafPtr drawable = (((NP_Port*) (window->window))->port);
- if( !curwin.window || drawable != (((NP_Port*) (curwin.window))->port) )
- {
- /* set/change parent window */
- libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex);
- libvlc_exception_clear(&ex);
- }
/* as MacOS X video output is windowless, set viewport */
libvlc_rectangle_t view, clip;
else if( curwin.window )
{
/* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- libvlc_exception_clear(&ex);
-
curwin.window = NULL;
}
#endif /* XP_MACOSX */
style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
SetWindowLong((HWND)drawable, GWL_STYLE, style);
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, (libvlc_drawable_t)drawable, &ex);
- libvlc_exception_clear(&ex);
-
/* remember new window */
p_plugin->setWindow(*window);
SetWindowLong( oldwin, GWL_WNDPROC, (LONG)(p_plugin->getWindowProc()) );
p_plugin->setWindowProc(NULL);
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- libvlc_exception_clear(&ex);
-
curwin.window = NULL;
}
#endif /* XP_WIN */
XtAddEventHandler( w, ButtonReleaseMask, FALSE,
(XtEventHandler)ControlHandler, p_plugin );
- /* set/change parent window */
- libvlc_video_set_parent( p_vlc, (libvlc_drawable_t) video, &ex );
- libvlc_exception_clear(&ex);
-
/* remember window */
p_plugin->setWindow( *window );
p_plugin->setVideoWindow( video );
}
else if( curwin.window )
{
- /* change/set parent */
- libvlc_video_set_parent(p_vlc, 0, &ex);
- libvlc_exception_clear(&ex);
curwin.window = NULL;
}
#endif /* XP_UNIX */