]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/intf.m
* src/misc/variables.c, ALL: improvements to the object variables api.
[vlc] / modules / gui / macosx / intf.m
index dc74bf368ac5c68f4409c2cfc65d7fc7bfc4e09b..f37984231866604fbd29ea3f0a25fdb86b8b1a1f 100644 (file)
@@ -2,7 +2,7 @@
  * intf.m: MacOS X interface plugin
  *****************************************************************************
  * Copyright (C) 2002-2003 VideoLAN
- * $Id: intf.m,v 1.52 2003/02/09 01:50:35 massiot Exp $
+ * $Id: intf.m,v 1.72 2003/05/04 22:42:16 gbazin Exp $
  *
  * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -34,6 +34,7 @@
 #include "vout.h"
 #include "prefs.h"
 #include "playlist.h"
+#include "info.h"
 
 /*****************************************************************************
  * Local prototypes.
@@ -180,6 +181,11 @@ static void Run( intf_thread_t *p_intf )
     return psz_string;
 }
 
+- (NSStringEncoding)getEncoding
+{
+    return i_encoding;
+}
+
 - (void)setIntf:(intf_thread_t *)_p_intf
 {
     p_intf = _p_intf;
@@ -287,18 +293,17 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     [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_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...")];
@@ -341,21 +346,24 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     [o_mi_normal_window setTitle: _NS("Normal Size")];
     [o_mi_double_window setTitle: _NS("Double Size")];
     [o_mi_fullscreen setTitle: _NS("Fullscreen")];
+    [o_mi_floatontop setTitle: _NS("Float On Top")];
     [o_mi_screen setTitle: _NS("Screen")];
     [o_mi_deinterlace setTitle: _NS("Deinterlace")];
+    [o_mu_deinterlace setTitle: _NS("Deinterlace")];
 
     [o_mu_window setTitle: _NS("Window")];
     [o_mi_minimize setTitle: _NS("Minimize Window")];
     [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")];
 
@@ -372,6 +380,8 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     [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];
 }
@@ -393,20 +403,38 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
     [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
 {
+    intf_thread_t * p_intf = [NSApp getIntf];
+    
     [o_playlist appendArray:
         [NSArray arrayWithObject: o_filename] atPos: -1 enqueue: NO];
-
+    
+    config_PutPsz( [NSApp getIntf], "sub-file", "" );
+    config_PutInt( p_intf, "sub-delay", 0 );
+    config_PutFloat( p_intf, "sub-fps", 0.0 );
+    config_PutPsz( p_intf, "sout", "" );
+            
     return( TRUE );
 }
 
+- (id)getControls
+{
+    if ( o_controls )
+    {
+        return o_controls;
+    }
+    return nil;
+}
+
 - (void)manage
 {
     NSDate * o_sleep_date;
@@ -427,9 +455,9 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
         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 );
         }
@@ -447,8 +475,17 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
 - (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 )
@@ -490,8 +527,10 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
                     p_intf->p_sys->b_aout_update = 1;
                     b_need_menus = VLC_TRUE;
                 }
+
                 vlc_object_release( (vlc_object_t *)p_aout );
             }
+
             aout_VolumeGet( p_intf, &i_volume );
             p_intf->p_sys->b_mute = ( i_volume == 0 );
 
@@ -540,9 +579,11 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
         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
@@ -558,15 +599,6 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
             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;
@@ -590,6 +622,38 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
         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
@@ -668,7 +732,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
         {
             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 )
@@ -678,7 +742,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
             }
             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 );
@@ -720,6 +784,10 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     vlc_object_release( p_playlist );
 
     [self updateMessageArray];
+
+    [NSTimer scheduledTimerWithTimeInterval: 0.5
+        target: self selector: @selector(manageIntf:)
+        userInfo: nil repeats: FALSE];
 }
 
 - (void)updateMessageArray
@@ -754,7 +822,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
             [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
@@ -1118,6 +1186,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
             var_Set( (vlc_object_t *)p_aout, "intf-change", val );
 
+#error fixme! look at rc.c line 823
             [self setupVarMenu: o_mi_channels target: (vlc_object_t *)p_aout
                 var: "audio-channels" selector: @selector(toggleVar:)];
 
@@ -1259,7 +1328,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     psz_value = val.psz_string;
 
     if ( var_Change( p_object, psz_variable,
-                     VLC_VAR_GETLIST, &val ) < 0 )
+                     VLC_VAR_GETLIST, &val, NULL ) < 0 )
     {
         free( psz_value );
         return;
@@ -1287,7 +1356,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
     }
 
     var_Change( p_object, psz_variable, VLC_VAR_FREELIST,
-                &val );
+                &val, NULL );
 
     free( psz_value );
 }
@@ -1352,7 +1421,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
 #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
@@ -1406,7 +1475,7 @@ int ExecuteOnMainThread( id target, SEL sel, void * p_arg )
 
 - (IBAction)openCrashLog:(id)sender
 {
-    NSString * o_path = [@"~/Library/Logs/CrashReporter/vlc.crash.log"
+    NSString * o_path = [@"~/Library/Logs/CrashReporter/VLC.crash.log"
                                     stringByExpandingTildeInPath];