* intf.m: MacOS X interface plugin
*****************************************************************************
* Copyright (C) 2002-2003 VideoLAN
- * $Id: intf.m,v 1.48 2003/02/07 20:23:17 hartman Exp $
+ * $Id: intf.m,v 1.68 2003/03/13 16:09:21 hartman Exp $
*
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr>
#include "vout.h"
#include "prefs.h"
#include "playlist.h"
+#include "info.h"
/*****************************************************************************
* Local prototypes.
return( o_str );
}
+- (char *)delocalizeString:(NSString *)id
+{
+ NSData * o_data = [id dataUsingEncoding: i_encoding
+ allowLossyConversion: NO];
+ char * psz_string;
+
+ if ( o_data == nil )
+ {
+ o_data = [id dataUsingEncoding: i_encoding
+ allowLossyConversion: YES];
+ psz_string = malloc( [o_data length] + 1 );
+ [o_data getBytes: psz_string];
+ psz_string[ [o_data length] ] = '\0';
+ msg_Err( p_intf, "cannot convert to wanted encoding: %s",
+ psz_string );
+ }
+ else
+ {
+ psz_string = malloc( [o_data length] + 1 );
+ [o_data getBytes: psz_string];
+ psz_string[ [o_data length] ] = '\0';
+ }
+
+ return psz_string;
+}
+
+- (NSStringEncoding)getEncoding
+{
+ return i_encoding;
+}
+
- (void)setIntf:(intf_thread_t *)_p_intf
{
p_intf = _p_intf;
[o_msgs_panel setDelegate: self];
[o_msgs_panel setTitle: _NS("Messages")];
[o_msgs_panel setExcludedFromWindowsMenu: TRUE];
- [o_msgs_btn_ok setTitle: _NS("Close")];
[o_msgs_btn_crashlog setTitle: _NS("Open CrashLog")];
/* main menu */
- [o_mi_about setTitle: _NS("About VLC Media Player")];
- [o_mi_prefs setTitle: _NS("Preferences")];
+ [o_mi_about setTitle: _NS("About VLC media player")];
+ [o_mi_prefs setTitle: _NS("Preferences...")];
[o_mi_hide setTitle: _NS("Hide VLC")];
[o_mi_hide_others setTitle: _NS("Hide Others")];
[o_mi_show_all setTitle: _NS("Show All")];
[o_mi_quit setTitle: _NS("Quit VLC")];
- [o_mu_file setTitle: _NS("File")];
+ [o_mu_file setTitle: _ANS("1:File")];
[o_mi_open_generic setTitle: _NS("Open...")];
[o_mi_open_file setTitle: _NS("Open File...")];
[o_mi_open_disc setTitle: _NS("Open Disc...")];
[o_mi_previous setTitle: _NS("Previous")];
[o_mi_next setTitle: _NS("Next")];
[o_mi_loop setTitle: _NS("Loop")];
+ [o_mi_fwd setTitle: _NS("Step Forward")];
+ [o_mi_bwd setTitle: _NS("Step Backward")];
[o_mi_program setTitle: _NS("Program")];
[o_mi_title setTitle: _NS("Title")];
[o_mi_chapter setTitle: _NS("Chapter")];
[o_mi_close_window setTitle: _NS("Close Window")];
[o_mi_controller setTitle: _NS("Controller")];
[o_mi_playlist setTitle: _NS("Playlist")];
+ [o_mi_info setTitle: _NS("Info")];
[o_mi_messages setTitle: _NS("Messages")];
[o_mi_bring_atf setTitle: _NS("Bring All to Front")];
[o_mu_help setTitle: _NS("Help")];
[o_mi_readme setTitle: _NS("ReadMe...")];
- [o_mi_reportabug setTitle: _NS("Report A Bug")];
+ [o_mi_reportabug setTitle: _NS("Report a Bug")];
[o_mi_website setTitle: _NS("VideoLAN Website")];
[o_mi_license setTitle: _NS("License")];
[o_err_btn_msgs setTitle: _NS("Open Messages Window")];
[o_err_btn_dismiss setTitle: _NS("Dismiss")];
+ [o_info_window setTitle: _NS("Info")];
+
[self setSubmenusEnabled: FALSE];
[self manageVolumeSlider];
}
[NSTimer scheduledTimerWithTimeInterval: 0.5
target: self selector: @selector(manageIntf:)
- userInfo: nil repeats: TRUE];
+ userInfo: nil repeats: FALSE];
[NSThread detachNewThreadSelector: @selector(manage)
toTarget: self withObject: nil];
+
+ vlc_thread_set_priority( p_intf, VLC_THREAD_PRIORITY_LOW );
}
- (BOOL)application:(NSApplication *)o_app openFile:(NSString *)o_filename
return( TRUE );
}
+- (id)getControls
+{
+ if ( o_controls )
+ {
+ return o_controls;
+ }
+ return nil;
+}
+
- (void)manage
{
NSDate * o_sleep_date;
if( p_playlist != NULL )
{
vlc_mutex_lock( &p_playlist->object_lock );
-
+
[self manage: p_playlist];
-
+
vlc_mutex_unlock( &p_playlist->object_lock );
vlc_object_release( p_playlist );
}
- (void)manage:(playlist_t *)p_playlist
{
+ vlc_value_t val;
+
intf_thread_t * p_intf = [NSApp getIntf];
+ if( var_Get( (vlc_object_t *)p_playlist, "intf-change", &val ) >= 0 &&
+ val.b_bool )
+ {
+ p_intf->p_sys->b_playlist_update = VLC_TRUE;
+ p_intf->p_sys->b_intf_update = VLC_TRUE;
+ }
+
#define p_input p_playlist->p_input
if( p_input )
if( !p_input->b_die )
{
+ audio_volume_t i_volume;
+
/* New input or stream map change */
if( p_input->stream.b_changed )
{
if( p_aout != NULL )
{
vlc_value_t val;
- audio_volume_t i_volume;
if( var_Get( (vlc_object_t *)p_aout, "intf-change", &val )
>= 0 && val.b_bool )
b_need_menus = VLC_TRUE;
}
- aout_VolumeGet( p_aout, &i_volume );
vlc_object_release( (vlc_object_t *)p_aout );
-
- p_intf->p_sys->b_mute = ( i_volume == 0 );
}
+ aout_VolumeGet( p_intf, &i_volume );
+ p_intf->p_sys->b_mute = ( i_volume == 0 );
+
p_vout = vlc_object_find( p_intf, VLC_OBJECT_VOUT,
FIND_ANYWHERE );
if( p_vout != NULL )
p_intf->p_sys->b_chapter_update = 1;
p_intf->p_sys->b_audio_update = 1;
p_intf->p_sys->b_spu_update = 1;
+ p_intf->p_sys->b_current_title_update = 1;
p_intf->p_sys->i_part = 0;
p_playlist->p_input->stream.b_changed = 0;
+
msg_Dbg( p_intf, "stream has changed, refreshing interface" );
}
else
vout_Destroy( p_vout );
vlc_mutex_lock( &p_playlist->object_lock );
}
-
- aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT,
- FIND_ANYWHERE );
- if( p_aout != NULL )
- {
- vlc_object_detach( (vlc_object_t *)p_aout );
- vlc_object_release( (vlc_object_t *)p_aout );
- aout_Delete( p_aout );
- }
}
p_intf->p_sys->b_intf_update = VLC_TRUE;
return;
}
+ if ( p_intf->p_sys->b_playlist_update )
+ {
+ vlc_value_t val;
+
+ val.b_bool = 0;
+ var_Set( (vlc_object_t *)p_playlist, "intf-change", val );
+
+ [o_playlist playlistUpdated];
+
+ p_intf->p_sys->b_playlist_update = VLC_FALSE;
+ }
+
+ if( p_intf->p_sys->b_current_title_update )
+ {
+ id o_vout_wnd;
+
+ NSEnumerator * o_enum = [[NSApp windows] objectEnumerator];
+
+ while( ( o_vout_wnd = [o_enum nextObject] ) )
+ {
+ if( [[o_vout_wnd className] isEqualToString: @"VLCWindow"] )
+ {
+ [o_vout_wnd updateTitle];
+ }
+ }
+
+ [o_playlist updateRowSelection];
+ [o_info updateInfo];
+
+ p_intf->p_sys->b_current_title_update = FALSE;
+ }
+
vlc_mutex_lock( &p_playlist->object_lock );
#define p_input p_playlist->p_input
{
if( f_slider == f_slider_old )
{
- float f_updated = ( 100. * p_area->i_tell ) /
+ float f_updated = ( 10000. * p_area->i_tell ) /
p_area->i_size;
if( f_slider != f_updated )
}
else
{
- off_t i_seek = ( f_slider * p_area->i_size ) / 100;
+ off_t i_seek = ( f_slider * p_area->i_size ) / 10000;
/* release the lock to be able to seek */
vlc_mutex_unlock( &p_input->stream.stream_lock );
vlc_object_release( p_playlist );
[self updateMessageArray];
+
+ [NSTimer scheduledTimerWithTimeInterval: 0.5
+ target: self selector: @selector(manageIntf:)
+ userInfo: nil repeats: FALSE];
}
- (void)updateMessageArray
[o_msg_lock lock];
- if( [o_msg_arr count] + 2 > 200 )
+ if( [o_msg_arr count] + 2 > 400 )
{
unsigned rid[] = { 0, 1 };
[o_msg_arr removeObjectsFromIndices: (unsigned *)&rid
- (void)manageVolumeSlider
{
audio_volume_t i_volume;
- vlc_bool_t b_audio = VLC_FALSE;
intf_thread_t * p_intf = [NSApp getIntf];
- aout_instance_t * p_aout = vlc_object_find( p_intf, VLC_OBJECT_AOUT,
- FIND_ANYWHERE );
- if( p_aout != NULL )
- {
- b_audio = VLC_TRUE;
-
- aout_VolumeGet( p_aout, &i_volume );
- vlc_object_release( (vlc_object_t *)p_aout );
- }
- else
- {
- i_volume = (audio_volume_t)config_GetInt( p_intf, "volume" );
- }
+ aout_VolumeGet( p_intf, &i_volume );
[o_volumeslider setFloatValue: (float)i_volume / AOUT_VOLUME_STEP];
- [o_volumeslider setEnabled: b_audio];
+ [o_volumeslider setEnabled: 1];
p_intf->p_sys->b_mute = ( i_volume == 0 );
}
NSMenuItem * o_lmi;
NSString * o_title;
- //o_title = [NSApp localizedString: val.p_list->p_values[i].psz_string];
- o_title = [NSString stringWithCString: val.p_list->p_values[i].psz_string];
+ o_title = [NSApp localizedString: val.p_list->p_values[i].psz_string];
o_lmi = [o_menu addItemWithTitle: o_title
action: pf_callback keyEquivalent: @""];
/* FIXME: this isn't 64-bit clean ! */
#define p_area p_playlist->p_input->stream.p_selected_area
vlc_mutex_lock( &p_playlist->p_input->stream.stream_lock );
- i_tell = f_updated / 100. * p_area->i_size;
+ i_tell = f_updated / 10000. * p_area->i_size;
input_OffsetToTime( p_playlist->p_input, psz_time, i_tell );
vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock );
#undef p_area
- (IBAction)openCrashLog:(id)sender
{
- NSString * o_path = [@"~/Library/Logs/CrashReporter/vlc.crash.log"
+ NSString * o_path = [@"~/Library/Logs/CrashReporter/VLC.crash.log"
stringByExpandingTildeInPath];