]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwindows/menus.cpp
* modules/gui/wxwindows/preferences.cpp: small cosmetic change for win32.
[vlc] / modules / gui / wxwindows / menus.cpp
index 5d748f8d4e0331293e1d71a0123606cdaa5837f0..f793aa70525e9189eba8876af99bebb34896b49d 100644 (file)
@@ -2,7 +2,7 @@
  * menus.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2004 VideoLAN
- * $Id: menus.cpp,v 1.32 2004/02/26 00:23:04 gbazin Exp $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -139,6 +139,8 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
 
         ppsz_varnames[i] = "fullscreen";
         pi_objects[i++] = p_object->i_object_id;
+        ppsz_varnames[i] = "zoom";
+        pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "deinterlace";
         pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "aspect-ratio";
@@ -170,6 +172,8 @@ void PopupMenu( intf_thread_t *p_intf, wxWindow *p_parent,
                                                 FIND_ANYWHERE );
     if( p_object != NULL )
     {
+        ppsz_varnames[i] = "bookmark";
+        pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "title";
         pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "chapter";
@@ -295,6 +299,8 @@ wxMenu *VideoMenu( intf_thread_t *_p_intf, wxWindow *p_parent )
 
         ppsz_varnames[i] = "fullscreen";
         pi_objects[i++] = p_object->i_object_id;
+        ppsz_varnames[i] = "zoom";
+        pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "deinterlace";
         pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "aspect-ratio";
@@ -342,6 +348,8 @@ wxMenu *NavigMenu( intf_thread_t *_p_intf, wxWindow *p_parent )
                                                 FIND_ANYWHERE );
     if( p_object != NULL )
     {
+        ppsz_varnames[i] = "bookmark";
+        pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "title";
         pi_objects[i++] = p_object->i_object_id;
         ppsz_varnames[i] = "chapter";
@@ -519,6 +527,7 @@ void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
     case VLC_VAR_VARIABLE:
     case VLC_VAR_STRING:
     case VLC_VAR_INTEGER:
+    case VLC_VAR_FLOAT:
         break;
     default:
         /* Variable doesn't exist or isn't handled */
@@ -531,8 +540,6 @@ void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
     /* Get the descriptive name of the variable */
     var_Change( p_object, psz_var, VLC_VAR_GETTEXT, &text, NULL );
 
-    var_Get( p_object, psz_var, &val );
-
     if( i_type & VLC_VAR_HASCHOICE )
     {
         menu->Append( MenuDummy_Event,
@@ -548,6 +555,7 @@ void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
     switch( i_type & VLC_VAR_TYPE )
     {
     case VLC_VAR_VOID:
+        var_Get( p_object, psz_var, &val );
         menuitem = new wxMenuItemExt( menu, ++i_item_id,
                                       wxU(text.psz_string ?
                                         text.psz_string : psz_var),
@@ -557,6 +565,7 @@ void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
         break;
 
     case VLC_VAR_BOOL:
+        var_Get( p_object, psz_var, &val );
         val.b_bool = !val.b_bool;
         menuitem = new wxMenuItemExt( menu, ++i_item_id,
                                       wxU(text.psz_string ?
@@ -566,13 +575,8 @@ void Menu::CreateMenuItem( wxMenu *menu, char *psz_var,
         menu->Append( menuitem );
         Check( i_item_id, val.b_bool ? FALSE : TRUE );
         break;
-
-    default:
-        if( text.psz_string ) free( text.psz_string );
-        return;
     }
 
-    if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
     if( text.psz_string ) free( text.psz_string );
 }
 
@@ -595,21 +599,16 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object,
     case VLC_VAR_VARIABLE:
     case VLC_VAR_STRING:
     case VLC_VAR_INTEGER:
+    case VLC_VAR_FLOAT:
         break;
     default:
         /* Variable doesn't exist or isn't handled */
         return NULL;
     }
 
-    if( var_Get( p_object, psz_var, &val ) < 0 )
-    {
-        return NULL;
-    }
-
     if( var_Change( p_object, psz_var, VLC_VAR_GETLIST,
                     &val_list, &text_list ) < 0 )
     {
-        if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
         return NULL;
     }
 
@@ -632,6 +631,8 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object,
           break;
 
         case VLC_VAR_STRING:
+          var_Get( p_object, psz_var, &val );
+
           another_val.psz_string =
               strdup(val_list.p_list->p_values[i].psz_string);
           menuitem =
@@ -646,13 +647,17 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object,
 
           menu->Append( menuitem );
 
-          if( !(i_type & VLC_VAR_ISCOMMAND) &&
+          if( !(i_type & VLC_VAR_ISCOMMAND) && val.psz_string &&
               !strcmp( val.psz_string,
                        val_list.p_list->p_values[i].psz_string ) )
               menu->Check( i_item_id, TRUE );
+
+          if( val.psz_string ) free( val.psz_string );
           break;
 
         case VLC_VAR_INTEGER:
+          var_Get( p_object, psz_var, &val );
+
           menuitem =
               new wxMenuItemExt( menu, ++i_item_id,
                                  text_list.p_list->p_values[i].psz_string ?
@@ -673,13 +678,35 @@ wxMenu *Menu::CreateChoicesMenu( char *psz_var, vlc_object_t *p_object,
               menu->Check( i_item_id, TRUE );
           break;
 
+        case VLC_VAR_FLOAT:
+          var_Get( p_object, psz_var, &val );
+
+          menuitem =
+              new wxMenuItemExt( menu, ++i_item_id,
+                                 text_list.p_list->p_values[i].psz_string ?
+                                 (wxString)wxU(
+                                   text_list.p_list->p_values[i].psz_string) :
+                                 wxString::Format(wxT("%.2f"),
+                                 val_list.p_list->p_values[i].f_float),wxT(""),
+                                 i_type & VLC_VAR_ISCOMMAND ?
+                                   wxITEM_NORMAL : wxITEM_RADIO,
+                                 strdup(psz_var),
+                                 p_object->i_object_id,
+                                 val_list.p_list->p_values[i], i_type );
+
+          menu->Append( menuitem );
+
+          if( !(i_type & VLC_VAR_ISCOMMAND) &&
+              val_list.p_list->p_values[i].f_float == val.f_float )
+              menu->Check( i_item_id, TRUE );
+          break;
+
         default:
           break;
         }
     }
 
     /* clean up everything */
-    if( (i_type & VLC_VAR_TYPE) == VLC_VAR_STRING ) free( val.psz_string );
     var_Change( p_object, psz_var, VLC_VAR_FREELIST, &val_list, &text_list );
 
     return menu;