]> git.sesse.net Git - vlc/blobdiff - modules/gui/beos/InterfaceWindow.cpp
Install new required files for skins2 on make install
[vlc] / modules / gui / beos / InterfaceWindow.cpp
index f522aa3a08c53d9e8b4cdd4b92ac9d6ffbc10fec..7963152fbeae0b6c6f72796493b2d1ed316cf43d 100644 (file)
@@ -2,7 +2,7 @@
  * InterfaceWindow.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: InterfaceWindow.cpp,v 1.29 2003/02/09 17:10:52 stippi Exp $
+ * $Id$
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -53,7 +53,6 @@
 
 #define INTERFACE_UPDATE_TIMEOUT 80000 // 2 frames if at 25 fps
 #define INTERFACE_LOCKING_TIMEOUT 5000
-#define USE_VLC_CONFIG_FILE 0
 
 // make_sure_frame_is_on_screen
 bool
@@ -156,8 +155,8 @@ collect_folder_contents( BDirectory& dir, BList& list, bool& deep, bool& asked,
                        {
                                // ask user if we should parse sub-folders as well
                                BAlert* alert = new BAlert( "sub-folders?",
-                                                                                       "Open files from all sub-folders as well?",
-                                                                                       "No", "Yes", NULL, B_WIDTH_AS_USUAL,
+                                                                                       _("Open files from all sub-folders as well?"),
+                                                                                       _("No"), _("Yes"), NULL, B_WIDTH_AS_USUAL,
                                                                                        B_IDEA_ALERT );
                                int32 buttonIndex = alert->Go();
                                deep = buttonIndex == 1;
@@ -190,9 +189,6 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name,
          fSettings( new BMessage( 'sett' ) ),
          p_wrapper( p_intf->p_sys->p_wrapper )
 {
-       // TODO: ?!? what about user settings?
-    p_intf->p_sys->b_dvdmenus = false;
-    
     fPlaylistIsEmpty = !( p_wrapper->PlaylistSize() > 0 );
     
     BScreen screen;
@@ -202,21 +198,17 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name,
                      ( screen_rect.bottom - PREFS_WINDOW_HEIGHT ) / 2,
                      ( screen_rect.right + PREFS_WINDOW_WIDTH ) / 2,
                      ( screen_rect.bottom + PREFS_WINDOW_HEIGHT ) / 2 );
-    fPreferencesWindow = new PreferencesWindow( p_intf, window_rect, "Settings" );
+    fPreferencesWindow = new PreferencesWindow( p_intf, window_rect, _("Preferences") );
     window_rect.Set( screen_rect.right - 500,
                      screen_rect.top + 50,
                      screen_rect.right - 150,
                      screen_rect.top + 250 );
-    fPlaylistWindow = new PlayListWindow( window_rect, "Playlist", this, p_intf );
-    window_rect.Set( screen_rect.right - 500,
+    fPlaylistWindow = new PlayListWindow( window_rect, _("Playlist"), this, p_intf );
+    window_rect.Set( screen_rect.right - 550,
                      screen_rect.top + 300,
                      screen_rect.right - 150,
-                     screen_rect.top + 600 );
-    fMessagesWindow = new MessagesWindow( p_intf, window_rect, "Messages" );
-
-    // set the title bar
-    SetName( "interface" );
-    SetTitle( VOUT_TITLE );
+                     screen_rect.top + 500 );
+    fMessagesWindow = new MessagesWindow( p_intf, window_rect, _("Messages") );
 
     // the media control view
     p_mediaControl = new MediaControlView( BRect( 0.0, 0.0, 250.0, 50.0 ),
@@ -243,77 +235,85 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name,
     AddChild( p_mediaControl );
 
     // Add the file Menu
-    BMenu* fileMenu = new BMenu( "File" );
+    BMenu* fileMenu = new BMenu( _("File") );
     fMenuBar->AddItem( fileMenu );
-    fileMenu->AddItem( new BMenuItem( "Open File" B_UTF8_ELLIPSIS,
+    fileMenu->AddItem( new BMenuItem( _AddEllipsis(_("Open File")),
                                       new BMessage( OPEN_FILE ), 'O') );
     
-    fileMenu->AddItem( new CDMenu( "Open Disc" ) );
+    fileMenu->AddItem( new CDMenu( _("Open Disc") ) );
 
-    fileMenu->AddItem( new BMenuItem( "Open Subtitles" B_UTF8_ELLIPSIS,
+    fileMenu->AddItem( new BMenuItem( _AddEllipsis(_("Open Subtitles")),
                                       new BMessage( LOAD_SUBFILE ) ) );
-    
+
     fileMenu->AddSeparatorItem();
-    BMenuItem* item = new BMenuItem( "About" B_UTF8_ELLIPSIS,
+    BMenuItem* item = new BMenuItem( _AddEllipsis(_("About")),
                                      new BMessage( B_ABOUT_REQUESTED ), 'A');
     item->SetTarget( be_app );
     fileMenu->AddItem( item );
-    fileMenu->AddItem( new BMenuItem( "Quit", new BMessage( B_QUIT_REQUESTED ), 'Q') );
+    fileMenu->AddItem( new BMenuItem( _("Quit"), new BMessage( B_QUIT_REQUESTED ), 'Q') );
 
-    fLanguageMenu = new LanguageMenu("Language", AUDIO_ES, p_wrapper);
-    fSubtitlesMenu = new LanguageMenu("Subtitles", SPU_ES, p_wrapper);
+    fLanguageMenu = new LanguageMenu( _("Language"), AUDIO_ES, p_wrapper);
+    fSubtitlesMenu = new LanguageMenu( _("Subtitles"), SPU_ES, p_wrapper);
 
     /* Add the Audio menu */
-    fAudioMenu = new BMenu( "Audio" );
+    fAudioMenu = new BMenu( _("Audio") );
     fMenuBar->AddItem ( fAudioMenu );
     fAudioMenu->AddItem( fLanguageMenu );
     fAudioMenu->AddItem( fSubtitlesMenu );
 
-    fPrevTitleMI = new BMenuItem( "Prev Title", new BMessage( PREV_TITLE ) );
-    fNextTitleMI = new BMenuItem( "Next Title", new BMessage( NEXT_TITLE ) );
-    fPrevChapterMI = new BMenuItem( "Prev Chapter", new BMessage( PREV_CHAPTER ) );
-    fNextChapterMI = new BMenuItem( "Next Chapter", new BMessage( NEXT_CHAPTER ) );
-    fGotoMenuMI = new BMenuItem( "Goto Menu", new BMessage( NAVIGATE_MENU ) );
+    fPrevTitleMI = new BMenuItem( _("Prev Title"), new BMessage( PREV_TITLE ) );
+    fNextTitleMI = new BMenuItem( _("Next Title"), new BMessage( NEXT_TITLE ) );
+    fPrevChapterMI = new BMenuItem( _("Previous chapter"), new BMessage( PREV_CHAPTER ) );
+    fNextChapterMI = new BMenuItem( _("Next chapter"), new BMessage( NEXT_CHAPTER ) );
+    fGotoMenuMI = new BMenuItem( _("Goto Menu"), new BMessage( NAVIGATE_MENU ) );
 
     /* Add the Navigation menu */
-    fNavigationMenu = new BMenu( "Navigation" );
+    fNavigationMenu = new BMenu( _("Navigation") );
     fMenuBar->AddItem( fNavigationMenu );
     fNavigationMenu->AddItem( fGotoMenuMI );
     fNavigationMenu->AddSeparatorItem();
     fNavigationMenu->AddItem( fPrevTitleMI );
     fNavigationMenu->AddItem( fNextTitleMI );
-    fNavigationMenu->AddItem( fTitleMenu = new TitleMenu( "Go to Title", p_intf ) );
+    fNavigationMenu->AddItem( fTitleMenu = new TitleMenu( _("Go to Title"), p_intf ) );
     fNavigationMenu->AddSeparatorItem();
     fNavigationMenu->AddItem( fPrevChapterMI );
     fNavigationMenu->AddItem( fNextChapterMI );
-    fNavigationMenu->AddItem( fChapterMenu = new ChapterMenu( "Go to Chapter", p_intf ) );
+    fNavigationMenu->AddItem( fChapterMenu = new ChapterMenu( _("Go to Chapter"), p_intf ) );
 
     /* Add the Speed menu */
-    fSpeedMenu = new BMenu( "Speed" );
+    fSpeedMenu = new BMenu( _("Speed") );
     fSpeedMenu->SetRadioMode( true );
-    fSpeedMenu->AddItem( fSlowerMI = new BMenuItem( "Slower", new BMessage( SLOWER_PLAY ) ) );
-    fNormalMI = new BMenuItem( "Normal", new BMessage( NORMAL_PLAY ) );
-    fNormalMI->SetMarked(true); // default to normal speed
-    fSpeedMenu->AddItem( fNormalMI );
-    fSpeedMenu->AddItem( fFasterMI = new BMenuItem( "Faster", new BMessage( FASTER_PLAY) ) );
-    fSpeedMenu->SetTargetForItems( this );
+    fSpeedMenu->AddItem(
+        fHeighthMI = new BMenuItem( "1/8x", new BMessage( HEIGHTH_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fQuarterMI = new BMenuItem( "1/4x", new BMessage( QUARTER_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fHalfMI = new BMenuItem( "1/2x", new BMessage( HALF_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fNormalMI = new BMenuItem( "1x", new BMessage( NORMAL_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fTwiceMI = new BMenuItem( "2x", new BMessage( TWICE_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fFourMI = new BMenuItem( "4x", new BMessage( FOUR_PLAY ) ) );
+    fSpeedMenu->AddItem(
+        fHeightMI = new BMenuItem( "8x", new BMessage( HEIGHT_PLAY ) ) );
     fMenuBar->AddItem( fSpeedMenu );
 
     /* Add the Show menu */
-    fShowMenu = new BMenu( "Window" );
-    fShowMenu->AddItem( new BMenuItem( "Play List" B_UTF8_ELLIPSIS,
+    fShowMenu = new BMenu( _("Window") );
+    fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Playlist")),
                                        new BMessage( OPEN_PLAYLIST ), 'P') );
-    fShowMenu->AddItem( new BMenuItem( "Messages" B_UTF8_ELLIPSIS,
+    fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Messages")),
                                        new BMessage( OPEN_MESSAGES ), 'M' ) );
-    fShowMenu->AddItem( new BMenuItem( "Settings" B_UTF8_ELLIPSIS,
+    fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Preferences")),
                                        new BMessage( OPEN_PREFERENCES ), 'S' ) );
-    fMenuBar->AddItem( fShowMenu );                            
+    fMenuBar->AddItem( fShowMenu );
 
     /* Prepare fow showing */
     _SetMenusEnabled( false );
     p_mediaControl->SetEnabled( false );
 
-       _RestoreSettings();    
+    _RestoreSettings();
 
     Show();
 }
@@ -359,20 +359,21 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
     {
         case B_ABOUT_REQUESTED:
         {
-            BAlert* alert = new BAlert( VOUT_TITLE,
-                                        "BeOS " VOUT_TITLE "\n\n<www.videolan.org>", "Ok");
+            BAlert* alert = new BAlert( "VLC " PACKAGE_VERSION,
+                                        "VLC " PACKAGE_VERSION " for BeOS"
+                                        "\n\n<www.videolan.org>", _("OK"));
             alert->Go();
             break;
         }
         case TOGGLE_ON_TOP:
             break;
-            
+
         case OPEN_FILE:
-               _ShowFilePanel( B_REFS_RECEIVED, "VideoLAN Client: Open Media Files" );
+               _ShowFilePanel( B_REFS_RECEIVED, _("VLC media player: Open Media Files") );
             break;
 
         case LOAD_SUBFILE:
-               _ShowFilePanel( SUBFILE_RECEIVED, "VideoLAN Client: Open Subtitle File" );
+               _ShowFilePanel( SUBFILE_RECEIVED, _("VLC media player: Open Subtitle File") );
             break;
 
         case OPEN_PLAYLIST:
@@ -397,7 +398,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                 _UpdatePlaylist();
             }
             break;
-        
+
         case SUBFILE_RECEIVED:
         {
             entry_ref ref;
@@ -409,13 +410,13 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
             }
             break;
         }
-    
+
         case STOP_PLAYBACK:
             // this currently stops playback not nicely
             if (playback_status > UNDEF_S)
             {
                 p_wrapper->PlaylistStop();
-                p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
+                p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE);
             }
             break;
     
@@ -443,30 +444,34 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
             }    
             break;
     
-        case FASTER_PLAY:
-            /* cycle the fast playback modes */
-            if (playback_status > UNDEF_S)
-            {
-                p_wrapper->InputFaster();
-            }
+        case HEIGHTH_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE * 8 );
             break;
-    
-        case SLOWER_PLAY:
-            /*  cycle the slow playback modes */
-            if (playback_status > UNDEF_S)
-            {
-                p_wrapper->InputSlower();
-            }
+
+        case QUARTER_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE * 4 );
             break;
-    
+
+        case HALF_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE * 2 );
+            break;
+
         case NORMAL_PLAY:
-            /*  restore speed to normal if already playing */
-            if (playback_status > UNDEF_S)
-            {
-                p_wrapper->PlaylistPlay();
-            }
+            p_wrapper->InputSetRate( DEFAULT_RATE );
             break;
-    
+
+        case TWICE_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE / 2 );
+            break;
+
+        case FOUR_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE / 4 );
+            break;
+
+        case HEIGHT_PLAY:
+            p_wrapper->InputSetRate( DEFAULT_RATE / 8 );
+            break;
+
         case SEEK_PLAYBACK:
             /* handled by semaphores */
             break;
@@ -717,7 +722,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
 bool InterfaceWindow::QuitRequested()
 {
     p_wrapper->PlaylistStop();
-    p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
+    p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE);
 
        _StoreSettings();
    
@@ -791,11 +796,6 @@ void InterfaceWindow::UpdateInterface()
         }
     }
 
-       // strangly, someone is calling this function even after the object has been destructed!
-       // even more strangly, this workarround seems to work
-       if (fMessagesWindow)
-           fMessagesWindow->UpdateMessages();
-
     fLastUpdateTime = system_time();
 }
 
@@ -858,7 +858,7 @@ InterfaceWindow::_SetMenusEnabled(bool hasFile, bool hasChapters, bool hasTitles
         if ( fSpeedMenu->IsEnabled() != hasFile )
              fSpeedMenu->SetEnabled( hasFile );
         // "goto menu" menu item
-        bool hasMenu = p_intf->p_sys->b_dvdmenus ? hasTitles : false;
+        bool hasMenu = p_wrapper->IsUsingMenus();
         if ( fGotoMenuMI->IsEnabled() != hasMenu )
              fGotoMenuMI->SetEnabled( hasMenu );
         Unlock();
@@ -871,32 +871,41 @@ InterfaceWindow::_SetMenusEnabled(bool hasFile, bool hasChapters, bool hasTitles
 void
 InterfaceWindow::_UpdateSpeedMenu( int rate )
 {
-    if ( rate == DEFAULT_RATE )
-    {
-        if ( !fNormalMI->IsMarked() )
-            fNormalMI->SetMarked( true );
-    }
-    else if ( rate < DEFAULT_RATE )
-    {
-        if ( !fFasterMI->IsMarked() )
-            fFasterMI->SetMarked( true );
-    }
-    else
+    BMenuItem * toMark = NULL;
+    
+    switch( rate )
     {
-        if ( !fSlowerMI->IsMarked() )
-            fSlowerMI->SetMarked( true );
+        case ( DEFAULT_RATE * 8 ):
+            toMark = fHeighthMI;
+            break;
+            
+        case ( DEFAULT_RATE * 4 ):
+            toMark = fQuarterMI;
+            break;
+            
+        case ( DEFAULT_RATE * 2 ):
+            toMark = fHalfMI;
+            break;
+            
+        case ( DEFAULT_RATE ):
+            toMark = fNormalMI;
+            break;
+            
+        case ( DEFAULT_RATE / 2 ):
+            toMark = fTwiceMI;
+            break;
+            
+        case ( DEFAULT_RATE / 4 ):
+            toMark = fFourMI;
+            break;
+            
+        case ( DEFAULT_RATE / 8 ):
+            toMark = fHeightMI;
+            break;
     }
-}
 
-/*****************************************************************************
- * InterfaceWindow::_InputStreamChanged
- *****************************************************************************/
-void
-InterfaceWindow::_InputStreamChanged()
-{
-    // TODO: move more stuff from updateInterface() here!
-    snooze( 400000 );
-    p_wrapper->SetVolume( p_mediaControl->GetVolume() );
+    if ( !toMark->IsMarked() )
+        toMark->SetMarked( true );
 }
 
 /*****************************************************************************
@@ -965,82 +974,34 @@ launch_window( BWindow* window, bool showing )
 void
 InterfaceWindow::_RestoreSettings()
 {
-       if ( USE_VLC_CONFIG_FILE )
+       if ( load_settings( fSettings, "interface_settings", "VideoLAN Client" ) == B_OK )
        {
-               // main window size and position
-           int i_width = config_GetInt( p_intf, "beos-intf-width" ),
-               i_height = config_GetInt( p_intf, "beos-intf-height" ),
-               i_xpos = config_GetInt( p_intf, "beos-intf-xpos" ),
-               i_ypos = config_GetInt( p_intf, "beos-intf-ypos" );
-           if( i_width > 20 && i_height > 20 && i_xpos >= 0 && i_ypos >= 0 )
-           {
-               BRect r( i_xpos, i_ypos, i_xpos + i_width, i_ypos + i_height );
-               set_window_pos( this, r );
-           }
-               // playlist window size and position
-           i_width = config_GetInt( p_intf, "beos-playlist-width" ),
-           i_height = config_GetInt( p_intf, "beos-playlist-height" ),
-           i_xpos = config_GetInt( p_intf, "beos-playlist-xpos" ),
-           i_ypos = config_GetInt( p_intf, "beos-playlist-ypos" );
-           if( i_width > 20 && i_height > 20 && i_xpos >= 0 && i_ypos >= 0 )
-           {
-               BRect r( i_xpos, i_ypos, i_xpos + i_width, i_ypos + i_height );
-               set_window_pos( fPlaylistWindow, r );
-           }
-           // playlist showing
-           launch_window( fPlaylistWindow, config_GetInt( p_intf, "beos-playlist-show" ) );
-           // messages window size and position
-           i_width = config_GetInt( p_intf, "beos-messages-width" ),
-           i_height = config_GetInt( p_intf, "beos-messages-height" ),
-           i_xpos = config_GetInt( p_intf, "beos-messages-xpos" ),
-           i_ypos = config_GetInt( p_intf, "beos-messages-ypos" );
-           if( i_width > 20 && i_height > 20 && i_xpos >= 0 && i_ypos >= 0 )
-           {
-               BRect r( i_xpos, i_ypos, i_xpos + i_width, i_ypos + i_height );
-               set_window_pos( fMessagesWindow, r );
-           }
-           // messages showing
-           launch_window( fMessagesWindow, config_GetInt( p_intf, "beos-messages-show" ) );
-
-               // messages window size and position
-           i_width = config_GetInt( p_intf, "beos-settings-width" ),
-           i_height = config_GetInt( p_intf, "beos-settings-height" ),
-           i_xpos = config_GetInt( p_intf, "beos-settings-xpos" ),
-           i_ypos = config_GetInt( p_intf, "beos-settings-ypos" );
-           if( i_width > 20 && i_height > 20 && i_xpos >= 0 && i_ypos >= 0 )
-           {
-               BRect r( i_xpos, i_ypos, i_xpos + i_width, i_ypos + i_height );
-               set_window_pos( fPreferencesWindow, r );
-           }
-           // settings showing
-           launch_window( fPreferencesWindow, config_GetInt( p_intf, "beos-settings-show" ) );
-       }
-       else
-       {
-               if ( load_settings( fSettings, "interface_settings", "VideoLAN Client" ) == B_OK )
+               BRect frame;
+               if ( fSettings->FindRect( "main frame", &frame ) == B_OK )
+                       set_window_pos( this, frame );
+               if (fSettings->FindRect( "playlist frame", &frame ) == B_OK )
+                       set_window_pos( fPlaylistWindow, frame );
+               if (fSettings->FindRect( "messages frame", &frame ) == B_OK )
+                       set_window_pos( fMessagesWindow, frame );
+               if (fSettings->FindRect( "settings frame", &frame ) == B_OK )
                {
-                       BRect frame;
-                       if ( fSettings->FindRect( "main frame", &frame ) == B_OK )
-                               set_window_pos( this, frame );
-                       if (fSettings->FindRect( "playlist frame", &frame ) == B_OK )
-                               set_window_pos( fPlaylistWindow, frame );
-                       if (fSettings->FindRect( "messages frame", &frame ) == B_OK )
-                               set_window_pos( fMessagesWindow, frame );
-                       if (fSettings->FindRect( "settings frame", &frame ) == B_OK )
-                               set_window_pos( fPreferencesWindow, frame );
-                       
-                       bool showing;
-                       if ( fSettings->FindBool( "playlist showing", &showing ) == B_OK )
-                               launch_window( fPlaylistWindow, showing );
-                       if ( fSettings->FindBool( "messages showing", &showing ) == B_OK )
-                               launch_window( fMessagesWindow, showing );
-                       if ( fSettings->FindBool( "settings showing", &showing ) == B_OK )
-                               launch_window( fPreferencesWindow, showing );
-       
-                       uint32 displayMode;
-                       if ( fSettings->FindInt32( "playlist display mode", (int32*)&displayMode ) == B_OK )
-                               fPlaylistWindow->SetDisplayMode( displayMode );
+                   /* FIXME: Preferences resizing doesn't work correctly yet */
+                   frame.right = frame.left + fPreferencesWindow->Frame().Width();
+                   frame.bottom = frame.top + fPreferencesWindow->Frame().Height();
+                       set_window_pos( fPreferencesWindow, frame );
                }
+               
+               bool showing;
+               if ( fSettings->FindBool( "playlist showing", &showing ) == B_OK )
+                       launch_window( fPlaylistWindow, showing );
+               if ( fSettings->FindBool( "messages showing", &showing ) == B_OK )
+                       launch_window( fMessagesWindow, showing );
+               if ( fSettings->FindBool( "settings showing", &showing ) == B_OK )
+                       launch_window( fPreferencesWindow, showing );
+
+               uint32 displayMode;
+               if ( fSettings->FindInt32( "playlist display mode", (int32*)&displayMode ) == B_OK )
+                       fPlaylistWindow->SetDisplayMode( displayMode );
        }
 }
 
@@ -1050,92 +1011,45 @@ InterfaceWindow::_RestoreSettings()
 void
 InterfaceWindow::_StoreSettings()
 {
-       if ( USE_VLC_CONFIG_FILE )
+    /* Save the volume */
+    config_PutInt( p_intf, "volume", p_mediaControl->GetVolume() );
+    config_SaveConfigFile( p_intf, "main" );
+
+    /* Save the windows positions */
+       if ( fSettings->ReplaceRect( "main frame", Frame() ) != B_OK )
+               fSettings->AddRect( "main frame", Frame() );
+       if ( fPlaylistWindow->Lock() )
        {
-           // save interface settings in vlc config file
-           BRect frame = Frame();
-           config_PutInt( p_intf, "beos-intf-width", (int)frame.Width() );
-           config_PutInt( p_intf, "beos-intf-height", (int)frame.Height() );
-           config_PutInt( p_intf, "beos-intf-xpos", (int)frame.left );
-           config_PutInt( p_intf, "beos-intf-ypos", (int)frame.top );
-           if( fPlaylistWindow->Lock() )
-           {
-               frame = fPlaylistWindow->Frame();
-               config_PutInt( p_intf, "beos-playlist-width", (int)frame.Width() );
-               config_PutInt( p_intf, "beos-playlist-height", (int)frame.Height() );
-               config_PutInt( p_intf, "beos-playlist-xpos", (int)frame.left );
-               config_PutInt( p_intf, "beos-playlist-ypos", (int)frame.top );
-               config_PutInt( p_intf, "beos-playlist-show", !fPlaylistWindow->IsHidden() );
-               fPlaylistWindow->Unlock();
-           }
-           if( fMessagesWindow->Lock() )
-           {
-               frame = fMessagesWindow->Frame();
-               config_PutInt( p_intf, "beos-messages-width", (int)frame.Width() );
-               config_PutInt( p_intf, "beos-messages-height", (int)frame.Height() );
-               config_PutInt( p_intf, "beos-messages-xpos", (int)frame.left );
-               config_PutInt( p_intf, "beos-messages-ypos", (int)frame.top );
-               config_PutInt( p_intf, "beos-messages-show", !fMessagesWindow->IsHidden() );
-               fMessagesWindow->Unlock();
-           }
-           if( fPreferencesWindow->Lock() )
-           {
-               frame = fPreferencesWindow->Frame();
-               config_PutInt( p_intf, "beos-messages-width", (int)frame.Width() );
-               config_PutInt( p_intf, "beos-messages-height", (int)frame.Height() );
-               config_PutInt( p_intf, "beos-messages-xpos", (int)frame.left );
-               config_PutInt( p_intf, "beos-messages-ypos", (int)frame.top );
-               config_PutInt( p_intf, "beos-messages-show", !fPreferencesWindow->IsHidden() );
-               fPreferencesWindow->Unlock();
-           }
+               if (fSettings->ReplaceRect( "playlist frame", fPlaylistWindow->Frame() ) != B_OK)
+                       fSettings->AddRect( "playlist frame", fPlaylistWindow->Frame() );
+               if (fSettings->ReplaceBool( "playlist showing", !fPlaylistWindow->IsHidden() ) != B_OK)
+                       fSettings->AddBool( "playlist showing", !fPlaylistWindow->IsHidden() );
+               fPlaylistWindow->Unlock();
        }
-    else
-    {
-               if ( fSettings->ReplaceRect( "main frame", Frame() ) != B_OK )
-                       fSettings->AddRect( "main frame", Frame() );
-               if ( fPlaylistWindow->Lock() )
-               {
-                       if (fSettings->ReplaceRect( "playlist frame", fPlaylistWindow->Frame() ) != B_OK)
-                               fSettings->AddRect( "playlist frame", fPlaylistWindow->Frame() );
-                       if (fSettings->ReplaceBool( "playlist showing", !fPlaylistWindow->IsHidden() ) != B_OK)
-                               fSettings->AddBool( "playlist showing", !fPlaylistWindow->IsHidden() );
-                       fPlaylistWindow->Unlock();
-               }
-               if ( fMessagesWindow->Lock() )
-               {
-                       if (fSettings->ReplaceRect( "messages frame", fMessagesWindow->Frame() ) != B_OK)
-                               fSettings->AddRect( "messages frame", fMessagesWindow->Frame() );
-                       if (fSettings->ReplaceBool( "messages showing", !fMessagesWindow->IsHidden() ) != B_OK)
-                               fSettings->AddBool( "messages showing", !fMessagesWindow->IsHidden() );
-                       fMessagesWindow->Unlock();
-               }
-               if ( fPreferencesWindow->Lock() )
-               {
-                       if (fSettings->ReplaceRect( "settings frame", fPreferencesWindow->Frame() ) != B_OK)
-                               fSettings->AddRect( "settings frame", fPreferencesWindow->Frame() );
-                       if (fSettings->ReplaceBool( "settings showing", !fPreferencesWindow->IsHidden() ) != B_OK)
-                               fSettings->AddBool( "settings showing", !fPreferencesWindow->IsHidden() );
-                       fPreferencesWindow->Unlock();
-               }
-               uint32 displayMode = fPlaylistWindow->DisplayMode();
-               if (fSettings->ReplaceInt32( "playlist display mode", displayMode ) != B_OK )
-                       fSettings->AddInt32( "playlist display mode", displayMode );
-       
-               save_settings( fSettings, "interface_settings", "VideoLAN Client" );
-    }
+       if ( fMessagesWindow->Lock() )
+       {
+               if (fSettings->ReplaceRect( "messages frame", fMessagesWindow->Frame() ) != B_OK)
+                       fSettings->AddRect( "messages frame", fMessagesWindow->Frame() );
+               if (fSettings->ReplaceBool( "messages showing", !fMessagesWindow->IsHidden() ) != B_OK)
+                       fSettings->AddBool( "messages showing", !fMessagesWindow->IsHidden() );
+               fMessagesWindow->Unlock();
+       }
+       if ( fPreferencesWindow->Lock() )
+       {
+               if (fSettings->ReplaceRect( "settings frame", fPreferencesWindow->Frame() ) != B_OK)
+                       fSettings->AddRect( "settings frame", fPreferencesWindow->Frame() );
+               if (fSettings->ReplaceBool( "settings showing", !fPreferencesWindow->IsHidden() ) != B_OK)
+                       fSettings->AddBool( "settings showing", !fPreferencesWindow->IsHidden() );
+               fPreferencesWindow->Unlock();
+       }
+       uint32 displayMode = fPlaylistWindow->DisplayMode();
+       if (fSettings->ReplaceInt32( "playlist display mode", displayMode ) != B_OK )
+               fSettings->AddInt32( "playlist display mode", displayMode );
 
-       // save VLC internal settings
-       config_SaveConfigFile( p_intf, "beos" );
-       config_SaveConfigFile( p_intf, "main" );
-       config_SaveConfigFile( p_intf, "adjust" );
-       config_SaveConfigFile( p_intf, "ffmpeg" );
+       save_settings( fSettings, "interface_settings", "VideoLAN Client" );
 }
 
 
-
-
-
-
 /*****************************************************************************
  * CDMenu::CDMenu
  *****************************************************************************/
@@ -1188,12 +1102,13 @@ int CDMenu::GetCD( const char *directory )
                vol.Unset();
                status = volRoster.GetNextVolume( &vol );
        }
+       return 0;
 }
 
 /*****************************************************************************
  * LanguageMenu::LanguageMenu
  *****************************************************************************/
-LanguageMenu::LanguageMenu( const char *name, int menu_kind, 
+LanguageMenu::LanguageMenu( const char *name, int menu_kind,
                             VlcWrapper *p_wrapper )
     :BMenu(name)
 {