Commit 6e6164d0 authored by Gildas Bazin's avatar Gildas Bazin

* modules/gui/wxwidgets: use a wxSplitterWindow to display the embedded playlist.

parent 209591e0
...@@ -225,12 +225,18 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): ...@@ -225,12 +225,18 @@ Interface::Interface( intf_thread_t *_p_intf, long style ):
/* Give our interface a nice little icon */ /* Give our interface a nice little icon */
SetIcon( wxIcon( vlc_xpm ) ); SetIcon( wxIcon( vlc_xpm ) );
/* Create a main panel that will fill in the interface window */ /* Create a splitter window that will fill in the interface window.
* We need a splitter bar in order to make the embedded playlist
* resizable. */
splitter = new wxSplitterWindow( this, -1, wxDefaultPosition, wxSize(0,0),
wxCLIP_CHILDREN|wxSP_3DSASH );
main_sizer = new wxBoxSizer( wxVERTICAL ); main_sizer = new wxBoxSizer( wxVERTICAL );
main_sizer->Add( splitter, 1, wxEXPAND );
SetSizer( main_sizer ); SetSizer( main_sizer );
main_panel = new wxPanel( this, -1, wxPoint(0,0), wxSize(0,0),
/* Create a main panel that will fill in the interface window */
main_panel = new wxPanel( splitter, -1, wxPoint(0,0), wxSize(0,0),
wxCLIP_CHILDREN ); wxCLIP_CHILDREN );
main_sizer->Add( main_panel, 1, wxEXPAND );
main_panel->SetFocus(); main_panel->SetFocus();
#if defined(__WXGTK20__) && wxCHECK_VERSION(2,5,6) #if defined(__WXGTK20__) && wxCHECK_VERSION(2,5,6)
...@@ -244,6 +250,12 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): ...@@ -244,6 +250,12 @@ Interface::Interface( intf_thread_t *_p_intf, long style ):
panel_sizer = new wxBoxSizer( wxVERTICAL ); panel_sizer = new wxBoxSizer( wxVERTICAL );
main_panel->SetSizer( panel_sizer ); main_panel->SetSizer( panel_sizer );
/* Put this in the splitter */
splitter->Initialize( main_panel );
#if wxCHECK_VERSION(2,6,0)
splitter->SetSashGravity( 1.0 );
#endif
#ifdef wxHAS_TASK_BAR_ICON #ifdef wxHAS_TASK_BAR_ICON
/* Systray integration */ /* Systray integration */
p_systray = NULL; p_systray = NULL;
...@@ -262,17 +274,17 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): ...@@ -262,17 +274,17 @@ Interface::Interface( intf_thread_t *_p_intf, long style ):
/* Creation of the status bar /* Creation of the status bar
* Helptext for menu items and toolbar tools will automatically get * Helptext for menu items and toolbar tools will automatically get
* displayed here. */ * displayed here. */
int i_status_width[3] = {-6, -2, -9}; int i_status_width[3] = {100, 40, -1};
statusbar = CreateStatusBar( 3 ); /* 2 fields */ statusbar = CreateStatusBar( 3 ); /* 2 fields */
statusbar->SetStatusWidths( 3, i_status_width ); statusbar->SetStatusWidths( 3, i_status_width );
statusbar->SetStatusText( wxString::Format(wxT("x%.2f"), 1.0), 1 ); statusbar->SetStatusText( wxString::Format(wxT("x%.2f"), 1.0), 1 );
/* Get minimum window size to prevent user from glitching it */ /* Get minimum window size to prevent user from glitching it */
main_panel->SetSizeHints( wxSize(-1,0) ); splitter->SetSizeHints( wxSize(-1,0) );
panel_sizer->Layout(); panel_sizer->Fit( main_panel ); panel_sizer->Layout(); panel_sizer->Fit( main_panel );
main_sizer->Layout(); main_sizer->Fit( this ); main_sizer->Layout(); main_sizer->Fit( this );
main_min_size = GetSize(); main_min_size = GetSize();
main_panel->SetSizeHints( wxSize(-1,-1) ); splitter->SetSizeHints( wxSize(-1,-1) );
/* Video window */ /* Video window */
video_window = 0; video_window = 0;
...@@ -287,10 +299,10 @@ Interface::Interface( intf_thread_t *_p_intf, long style ): ...@@ -287,10 +299,10 @@ Interface::Interface( intf_thread_t *_p_intf, long style ):
panel_sizer->Add( input_manager, 0, wxEXPAND , 0 ); panel_sizer->Add( input_manager, 0, wxEXPAND , 0 );
/* Layout everything */ /* Layout everything */
main_panel->SetSizeHints( wxSize(-1,0) ); splitter->SetSizeHints( wxSize(-1,0) );
panel_sizer->Layout(); panel_sizer->Fit( main_panel ); panel_sizer->Layout(); panel_sizer->Fit( main_panel );
main_sizer->Layout(); main_sizer->Fit( this ); main_sizer->Layout(); main_sizer->Fit( this );
main_panel->SetSizeHints( wxSize(-1,-1) ); splitter->SetSizeHints( wxSize(-1,-1) );
#if wxUSE_DRAG_AND_DROP #if wxUSE_DRAG_AND_DROP
/* Associate drop targets with the main interface */ /* Associate drop targets with the main interface */
...@@ -860,13 +872,17 @@ void Interface::OnSmallPlaylist( wxCommandEvent& WXUNUSED(event) ) ...@@ -860,13 +872,17 @@ void Interface::OnSmallPlaylist( wxCommandEvent& WXUNUSED(event) )
if( !playlist_manager ) if( !playlist_manager )
{ {
/* Create the extra panel */ /* Create the extra panel */
playlist_manager = new PlaylistManager( p_intf, main_panel ); playlist_manager = new PlaylistManager( p_intf, splitter );
panel_sizer->Add( playlist_manager, 0, wxEXPAND , 0 );
playlist_min_size = playlist_manager->GetBestSize(); playlist_min_size = playlist_manager->GetBestSize();
} }
b_playlist_manager = !b_playlist_manager; b_playlist_manager = !b_playlist_manager;
panel_sizer->Show( playlist_manager, b_playlist_manager );
if( b_playlist_manager )
splitter->SplitHorizontally( main_panel, playlist_manager,
-playlist_min_size.GetHeight() );
else
splitter->Unsplit( playlist_manager );
SetIntfMinSize(); SetIntfMinSize();
main_sizer->Layout(); main_sizer->Layout();
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <wx/dnd.h> #include <wx/dnd.h>
#include <wx/accel.h> #include <wx/accel.h>
#include <wx/taskbar.h> #include <wx/taskbar.h>
#include <wx/splitter.h>
namespace wxvlc namespace wxvlc
...@@ -92,6 +93,7 @@ namespace wxvlc ...@@ -92,6 +93,7 @@ namespace wxvlc
void NextStream(); void NextStream();
wxBoxSizer *main_sizer; wxBoxSizer *main_sizer;
wxSplitterWindow *splitter;
wxPanel *main_panel; wxPanel *main_panel;
wxBoxSizer *panel_sizer; wxBoxSizer *panel_sizer;
......
...@@ -94,7 +94,7 @@ public: ...@@ -94,7 +94,7 @@ public:
* Constructor. * Constructor.
*****************************************************************************/ *****************************************************************************/
PlaylistManager::PlaylistManager( intf_thread_t *_p_intf, wxWindow *p_parent ): PlaylistManager::PlaylistManager( intf_thread_t *_p_intf, wxWindow *p_parent ):
wxPanel( p_parent, -1, wxDefaultPosition, wxSize(500,300) ) wxPanel( p_parent, -1, wxDefaultPosition, wxSize(0,0) )
{ {
/* Initializations */ /* Initializations */
p_intf = _p_intf; p_intf = _p_intf;
...@@ -123,6 +123,9 @@ PlaylistManager::PlaylistManager( intf_thread_t *_p_intf, wxWindow *p_parent ): ...@@ -123,6 +123,9 @@ PlaylistManager::PlaylistManager( intf_thread_t *_p_intf, wxWindow *p_parent ):
sizer = new wxBoxSizer( wxHORIZONTAL ); sizer = new wxBoxSizer( wxHORIZONTAL );
SetSizer( sizer ); SetSizer( sizer );
sizer->Add( treectrl, 1, wxEXPAND ); sizer->Add( treectrl, 1, wxEXPAND );
treectrl->SetSizeHints( wxSize(500, 150) );
sizer->Layout();
sizer->Fit( this );
/* Create image list */ /* Create image list */
wxImageList *p_images = new wxImageList( 16 , 16, TRUE ); wxImageList *p_images = new wxImageList( 16 , 16, TRUE );
......
...@@ -70,7 +70,7 @@ wxWindow *CreateVideoWindow( intf_thread_t *p_intf, wxWindow *p_parent ) ...@@ -70,7 +70,7 @@ wxWindow *CreateVideoWindow( intf_thread_t *p_intf, wxWindow *p_parent )
void UpdateVideoWindow( intf_thread_t *p_intf, wxWindow *p_window ) void UpdateVideoWindow( intf_thread_t *p_intf, wxWindow *p_window )
{ {
#if (wxCHECK_VERSION(2,5,3)) #if wxCHECK_VERSION(2,5,3)
if( !p_intf->p_sys->b_video_autosize ) return; if( !p_intf->p_sys->b_video_autosize ) return;
if( p_window && mdate() - ((VideoWindow *)p_window)->i_creation_date < 2000000 ) if( p_window && mdate() - ((VideoWindow *)p_window)->i_creation_date < 2000000 )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment