Commit 7e39490e authored by Clément Stenac's avatar Clément Stenac

p( vlc.getInterfaces().getInterface( "wxwidgets" ).isBroken() ) = 1/2

aka : merge the big wx changes from branch
parent 0a7e6834
...@@ -158,6 +158,7 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) ); ...@@ -158,6 +158,7 @@ VLC_EXPORT( void, intf_Destroy, ( intf_thread_t * ) );
#define INTF_DIALOG_FILE_GENERIC 30 #define INTF_DIALOG_FILE_GENERIC 30
#define INTF_DIALOG_UPDATEVLC 90 #define INTF_DIALOG_UPDATEVLC 90
#define INTF_DIALOG_VLM 91
#define INTF_DIALOG_EXIT 99 #define INTF_DIALOG_EXIT 99
......
SOURCES_wxwidgets = \ SOURCES_wxwidgets = \
wxwidgets.cpp \ wxwidgets.cpp \
wxwidgets.h \
interface.cpp \
extrapanel.cpp \
dialogs.cpp \
open.cpp \
streamout.cpp \
wizard.cpp \
streamdata.h \ streamdata.h \
streamdata.cpp \ streamdata.cpp \
messages.cpp \ interface.cpp \
playlist.cpp \ extrapanel.cpp \
iteminfo.cpp \
menus.cpp \ menus.cpp \
preferences.cpp \
preferences_widgets.cpp \
preferences_widgets.h \
timer.cpp \ timer.cpp \
fileinfo.cpp \
updatevlc.cpp \
subtitles.cpp \
bookmarks.cpp \
video.cpp \ video.cpp \
slider_manager.cpp \
main_slider_manager.cpp \
dialogs.cpp \
dialogs/open.cpp \
dialogs/streamout.cpp \
dialogs/wizard.cpp \
dialogs/messages.cpp \
dialogs/playlist.cpp \
dialogs/iteminfo.cpp \
dialogs/preferences.cpp \
dialogs/preferences_widgets.cpp \
dialogs/preferences_widgets.h \
dialogs/fileinfo.cpp \
dialogs/updatevlc.cpp \
dialogs/subtitles.cpp \
dialogs/bookmarks.cpp \
dialogs/vlm/vlm_slider_manager.cpp \
dialogs/vlm/vlm_stream.cpp \
dialogs/vlm/vlm_wrapper.cpp \
dialogs/vlm/vlm_streampanel.cpp \
dialogs/vlm/vlm_panel.cpp \
$(NULL) $(NULL)
EXTRA_DIST += \ EXTRA_DIST += \
...@@ -53,4 +59,9 @@ EXTRA_DIST += \ ...@@ -53,4 +59,9 @@ EXTRA_DIST += \
bitmaps/type_playlist.xpm \ bitmaps/type_playlist.xpm \
bitmaps/type_unknown.xpm \ bitmaps/type_unknown.xpm \
bitmaps/type_vfile.xpm \ bitmaps/type_vfile.xpm \
bitmaps/video.xpm bitmaps/video.xpm \
vlm/vlm_slider_manager.hpp \
vlm/vlm_stream.hpp \
vlm/vlm_wrapper.hpp \
vlm/vlm_streampanel.hpp \
vlm/vlm_panel.hpp
/* XPM */
static char * trash_xpm[] = {
"16 16 88 1",
" c None",
". c #2C2C2C",
"+ c #6E6E6E",
"@ c #555555",
"# c #161616",
"$ c #626154",
"% c #6B6A5A",
"& c #A1A095",
"* c #9B9B98",
"= c #A4A49D",
"- c #A5A495",
"; c #5C5C50",
"> c #575649",
", c #616057",
"' c #D0CEBA",
") c #CCCBBD",
"! c #85847F",
"~ c #4C4C48",
"{ c #3D3C34",
"] c #7E7C6B",
"^ c #B2B09E",
"/ c #B2B097",
"( c #4D4C41",
"_ c #616059",
": c #E0E0DB",
"< c #EBEBE4",
"[ c #D8D7CD",
"} c #CCCBBC",
"| c #C0BEA8",
"1 c #B8B69D",
"2 c #C5C4AF",
"3 c #AAA996",
"4 c #414037",
"5 c #4D4D42",
"6 c #AAA99B",
"7 c #D6D5CE",
"8 c #EAE9E5",
"9 c #E2E1DE",
"0 c #D8D8CF",
"a c #BCBBAE",
"b c #9C9A89",
"c c #737262",
"d c #34332D",
"e c #000000",
"f c #41413C",
"g c #888882",
"h c #B3B2A8",
"i c #BCBCAE",
"j c #A3A18A",
"k c #8F8D7A",
"l c #606056",
"m c #353530",
"n c #676758",
"o c #59594F",
"p c #52524D",
"q c #3D3D38",
"r c #2A2A23",
"s c #2E2E26",
"t c #35352C",
"u c #3D3D32",
"v c #707060",
"w c #919184",
"x c #A0A098",
"y c #707066",
"z c #646458",
"A c #606051",
"B c #4D4D40",
"C c #4E4E40",
"D c #959587",
"E c #B9B9AC",
"F c #8E8E80",
"G c #787868",
"H c #7A7A67",
"I c #565648",
"J c #6E6E5D",
"K c #939385",
"L c #545445",
"M c #46463C",
"N c #868678",
"O c #B2B2A5",
"P c #8F8F82",
"Q c #787865",
"R c #515143",
"S c #39392F",
"T c #2F2F29",
"U c #30302A",
"V c #2C2C25",
"W c #272720",
" ",
" ",
" .+@# ",
" $%&*=-;> ",
" ,')!~{]^/( ",
" _:<[}|1234 ",
" 567890abcd ",
" efghijklme ",
" enopqrstue ",
" evwxyzABCe ",
" evDEFGHIIe ",
" eJKEFGHILe ",
" eMNOPGQRSe ",
" eTUVWe ",
" ",
" "};
...@@ -32,9 +32,20 @@ ...@@ -32,9 +32,20 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/aout.h> #include <vlc/aout.h>
#include <vlc/intf.h> #include <vlc/intf.h>
#include "charset.h" #include "charset.h"
#include "wxwidgets.h" #include "dialogs/vlm/vlm_panel.hpp"
#include "dialogs/bookmarks.hpp"
#include "dialogs/wizard.hpp"
#include "dialogs/playlist.hpp"
#include "dialogs/open.hpp"
#include "dialogs/updatevlc.hpp"
#include "dialogs/fileinfo.hpp"
#include "dialogs/iteminfo.hpp"
#include "dialogs/preferences.hpp"
#include "dialogs/messages.hpp"
#include "interface.hpp"
/* include the icon graphic */ /* include the icon graphic */
#include "../../../share/vlc32x32.xpm" #include "../../../share/vlc32x32.xpm"
...@@ -52,6 +63,7 @@ private: ...@@ -52,6 +63,7 @@ private:
/* Event handlers (these functions should _not_ be virtual) */ /* Event handlers (these functions should _not_ be virtual) */
void OnUpdateVLC( wxCommandEvent& event ); void OnUpdateVLC( wxCommandEvent& event );
void OnVLM( wxCommandEvent& event );
void OnExit( wxCommandEvent& event ); void OnExit( wxCommandEvent& event );
void OnPlaylist( wxCommandEvent& event ); void OnPlaylist( wxCommandEvent& event );
void OnMessages( wxCommandEvent& event ); void OnMessages( wxCommandEvent& event );
...@@ -92,6 +104,7 @@ public: ...@@ -92,6 +104,7 @@ public:
wxFrame *p_bookmarks_dialog; wxFrame *p_bookmarks_dialog;
wxFileDialog *p_file_generic_dialog; wxFileDialog *p_file_generic_dialog;
UpdateVLC *p_updatevlc_dialog; UpdateVLC *p_updatevlc_dialog;
VLMFrame *p_vlm_dialog;
}; };
DEFINE_LOCAL_EVENT_TYPE( wxEVT_DIALOG ); DEFINE_LOCAL_EVENT_TYPE( wxEVT_DIALOG );
...@@ -131,6 +144,8 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame) ...@@ -131,6 +144,8 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame)
DialogsProvider::OnExitThread) DialogsProvider::OnExitThread)
EVT_COMMAND(INTF_DIALOG_UPDATEVLC, wxEVT_DIALOG, EVT_COMMAND(INTF_DIALOG_UPDATEVLC, wxEVT_DIALOG,
DialogsProvider::OnUpdateVLC) DialogsProvider::OnUpdateVLC)
EVT_COMMAND(INTF_DIALOG_VLM, wxEVT_DIALOG,
DialogsProvider::OnVLM)
END_EVENT_TABLE() END_EVENT_TABLE()
wxWindow *CreateDialogsProvider( intf_thread_t *p_intf, wxWindow *p_parent ) wxWindow *CreateDialogsProvider( intf_thread_t *p_intf, wxWindow *p_parent )
...@@ -157,6 +172,7 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent ) ...@@ -157,6 +172,7 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent )
p_bookmarks_dialog = NULL; p_bookmarks_dialog = NULL;
p_dir_dialog = NULL; p_dir_dialog = NULL;
p_updatevlc_dialog = NULL; p_updatevlc_dialog = NULL;
p_vlm_dialog = NULL;
/* Give our interface a nice little icon */ /* Give our interface a nice little icon */
p_intf->p_sys->p_icon = new wxIcon( vlc_xpm ); p_intf->p_sys->p_icon = new wxIcon( vlc_xpm );
...@@ -191,7 +207,7 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent ) ...@@ -191,7 +207,7 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent )
INIT( ID_PLAYLIST, p_playlist_dialog, new Playlist(p_intf,this), ShowPlaylist ); INIT( ID_PLAYLIST, p_playlist_dialog, new Playlist(p_intf,this), ShowPlaylist );
INIT( ID_MESSAGES, p_messages_dialog, new Messages(p_intf,this), Show ); INIT( ID_MESSAGES, p_messages_dialog, new Messages(p_intf,this), Show );
INIT( ID_FILE_INFO, p_fileinfo_dialog, new FileInfo(p_intf,this), Show ); INIT( ID_FILE_INFO, p_fileinfo_dialog, new FileInfo(p_intf,this), Show );
INIT( ID_BOOKMARKS, p_bookmarks_dialog, BookmarksDialog(p_intf,this), Show); INIT( ID_BOOKMARKS, p_bookmarks_dialog, new BookmarksDialog(p_intf,this), Show);
#undef INIT #undef INIT
} }
...@@ -215,7 +231,7 @@ DialogsProvider::~DialogsProvider() ...@@ -215,7 +231,7 @@ DialogsProvider::~DialogsProvider()
#undef UPDATE #undef UPDATE
PopEventHandler(true); PopEventHandler(true);
/* Clean up */ /* Clean up */
if( p_open_dialog ) delete p_open_dialog; if( p_open_dialog ) delete p_open_dialog;
...@@ -228,6 +244,7 @@ DialogsProvider::~DialogsProvider() ...@@ -228,6 +244,7 @@ DialogsProvider::~DialogsProvider()
if( p_wizard_dialog ) delete p_wizard_dialog; if( p_wizard_dialog ) delete p_wizard_dialog;
if( p_bookmarks_dialog ) delete p_bookmarks_dialog; if( p_bookmarks_dialog ) delete p_bookmarks_dialog;
if( p_updatevlc_dialog ) delete p_updatevlc_dialog; if( p_updatevlc_dialog ) delete p_updatevlc_dialog;
if( p_vlm_dialog ) delete p_vlm_dialog;
if( p_intf->p_sys->p_icon ) delete p_intf->p_sys->p_icon; if( p_intf->p_sys->p_icon ) delete p_intf->p_sys->p_icon;
...@@ -319,7 +336,7 @@ void DialogsProvider::OnBookmarks( wxCommandEvent& WXUNUSED(event) ) ...@@ -319,7 +336,7 @@ void DialogsProvider::OnBookmarks( wxCommandEvent& WXUNUSED(event) )
{ {
/* Show/hide the open dialog */ /* Show/hide the open dialog */
if( !p_bookmarks_dialog ) if( !p_bookmarks_dialog )
p_bookmarks_dialog = BookmarksDialog( p_intf, this ); p_bookmarks_dialog = new BookmarksDialog( p_intf, this );
if( p_bookmarks_dialog ) if( p_bookmarks_dialog )
{ {
...@@ -502,3 +519,15 @@ void DialogsProvider::OnUpdateVLC( wxCommandEvent& WXUNUSED(event) ) ...@@ -502,3 +519,15 @@ void DialogsProvider::OnUpdateVLC( wxCommandEvent& WXUNUSED(event) )
p_updatevlc_dialog->Show( !p_updatevlc_dialog->IsShown() ); p_updatevlc_dialog->Show( !p_updatevlc_dialog->IsShown() );
} }
} }
void DialogsProvider::OnVLM( wxCommandEvent& WXUNUSED(event) )
{
/* Show/hide the file info window */
if( !p_vlm_dialog )
p_vlm_dialog = new VLMFrame( p_intf, this );
if( p_vlm_dialog )
{
p_vlm_dialog->Show( !p_vlm_dialog->IsShown() );
}
}
...@@ -24,23 +24,16 @@ ...@@ -24,23 +24,16 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> /* malloc(), free() */ #include "dialogs/bookmarks.hpp"
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h> #include "wizard.hpp"
#include <vlc/intf.h>
#include "wxwidgets.h"
#include <wx/dialog.h>
/* Callback prototype */ /* Callback prototype */
static int PlaylistChanged( vlc_object_t *, const char *, static int PlaylistChanged( vlc_object_t *, const char *,
vlc_value_t, vlc_value_t, void * ); vlc_value_t, vlc_value_t, void * );
/***************************************************************************** /*****************************************************************************
* Class declaration. * Event Table.
*****************************************************************************/ *****************************************************************************/
/* IDs for the controls and the menu commands */ /* IDs for the controls and the menu commands */
...@@ -54,41 +47,6 @@ enum ...@@ -54,41 +47,6 @@ enum
ButtonEdit_Event ButtonEdit_Event
}; };
class BookmarksDialog: public wxFrame
{
public:
/* Constructor */
BookmarksDialog( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~BookmarksDialog();
bool Show( bool );
private:
void Update();
/* Event handlers (these functions should _not_ be virtual) */
void OnClose( wxCloseEvent& event );
void OnAdd( wxCommandEvent& event );
void OnDel( wxCommandEvent& event );
void OnClear( wxCommandEvent& event );
void OnActivateItem( wxListEvent& event );
void OnUpdate( wxCommandEvent &event );
void OnEdit( wxCommandEvent& event );
void OnExtract( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxWindow *p_parent;
wxListView *list_ctrl;
};
/*****************************************************************************
* Event Table.
*****************************************************************************/
DEFINE_LOCAL_EVENT_TYPE( wxEVT_BOOKMARKS ); DEFINE_LOCAL_EVENT_TYPE( wxEVT_BOOKMARKS );
BEGIN_EVENT_TABLE(BookmarksDialog, wxFrame) BEGIN_EVENT_TABLE(BookmarksDialog, wxFrame)
...@@ -105,30 +63,10 @@ BEGIN_EVENT_TABLE(BookmarksDialog, wxFrame) ...@@ -105,30 +63,10 @@ BEGIN_EVENT_TABLE(BookmarksDialog, wxFrame)
EVT_COMMAND( -1, wxEVT_BOOKMARKS, BookmarksDialog::OnUpdate ) EVT_COMMAND( -1, wxEVT_BOOKMARKS, BookmarksDialog::OnUpdate )
END_EVENT_TABLE() END_EVENT_TABLE()
/* Declaration of class BookmarkEditDialog */
class BookmarkEditDialog : public wxDialog
{
public:
/* Constructor */
BookmarkEditDialog( intf_thread_t *p_intf, wxWindow *p_parent,
seekpoint_t *p_seekpoint );
virtual ~BookmarkEditDialog();
seekpoint_t *p_seekpoint;
private:
wxTextCtrl *name_text, *time_text, *bytes_text;
void OnOK( wxCommandEvent& event);
void OnCancel( wxCommandEvent& event);
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
};
BEGIN_EVENT_TABLE( BookmarkEditDialog, wxDialog) BEGIN_EVENT_TABLE( BookmarkEditDialog, wxDialog)
EVT_BUTTON( wxID_OK, BookmarkEditDialog::OnOK) EVT_BUTTON( wxID_OK, BookmarkEditDialog::OnOK)
END_EVENT_TABLE() END_EVENT_TABLE()
/**************************************************************************** /****************************************************************************
* BookmarkEditDialog * BookmarkEditDialog
***************************************************************************/ ***************************************************************************/
...@@ -294,10 +232,10 @@ BookmarksDialog::~BookmarksDialog() ...@@ -294,10 +232,10 @@ BookmarksDialog::~BookmarksDialog()
/***************************************************************************** /*****************************************************************************
* Private methods. * Private methods.
*****************************************************************************/ *****************************************************************************/
wxFrame *BookmarksDialog( intf_thread_t *p_intf, wxWindow *p_parent ) //wxFrame *BookmarksDialog( intf_thread_t *p_intf, wxWindow *p_parent )
{ //{
return new class BookmarksDialog( p_intf, p_parent ); // return new class BookmarksDialog( p_intf, p_parent );
} //}
void BookmarksDialog::Update() void BookmarksDialog::Update()
{ {
......
/*****************************************************************************
* bookmarks.hpp: Headers for the bookmarks window
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_BOOKMARKS_H_
#define _WXVLC_BOOKMARKS_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
class BookmarksDialog: public wxFrame
{
public:
/* Constructor */
BookmarksDialog( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~BookmarksDialog();
bool Show( bool );
private:
void Update();
/* Event handlers (these functions should _not_ be virtual) */
void OnClose( wxCloseEvent& event );
void OnAdd( wxCommandEvent& event );
void OnDel( wxCommandEvent& event );
void OnClear( wxCommandEvent& event );
void OnActivateItem( wxListEvent& event );
void OnUpdate( wxCommandEvent &event );
void OnEdit( wxCommandEvent& event );
void OnExtract( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxWindow *p_parent;
wxListView *list_ctrl;
};
class BookmarkEditDialog : public wxDialog
{
public:
/* Constructor */
BookmarkEditDialog( intf_thread_t *p_intf, wxWindow *p_parent,
seekpoint_t *p_seekpoint );
virtual ~BookmarkEditDialog();
seekpoint_t *p_seekpoint;
private:
wxTextCtrl *name_text, *time_text, *bytes_text;
void OnOK( wxCommandEvent& event);
void OnCancel( wxCommandEvent& event);
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
};
};
#endif
...@@ -21,13 +21,7 @@ ...@@ -21,13 +21,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** #include "dialogs/fileinfo.hpp"
* Preamble
*****************************************************************************/
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "wxwidgets.h"
/***************************************************************************** /*****************************************************************************
* Event Table. * Event Table.
......
/*****************************************************************************
* fileinfo.hpp: private wxWindows interface description
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_FILEINFO_H_
#define _WXVLC_FILEINFO_H_
#include "wxwidgets.hpp"
#include <wx/treectrl.h>
namespace wxvlc
{
class FileInfo: public wxFrame
{
public:
/* Constructor */
FileInfo( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~FileInfo();
void UpdateFileInfo();
vlc_bool_t b_need_update;
private:
void OnButtonClose( wxCommandEvent& event );
void OnClose( wxCloseEvent& WXUNUSED(event) );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxTreeCtrl *fileinfo_tree;
wxTreeItemId fileinfo_root;
wxString fileinfo_root_label;
};
};
#endif
...@@ -21,23 +21,10 @@ ...@@ -21,23 +21,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** #include "dialogs/iteminfo.hpp"
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <wx/combobox.h> #include <wx/combobox.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <vlc/intf.h>
#include "wxwidgets.h"
#ifndef wxRB_SINGLE #ifndef wxRB_SINGLE
# define wxRB_SINGLE 0 # define wxRB_SINGLE 0
#endif #endif
......
/*****************************************************************************
* iteminfo.hpp: private wxWindows interface description
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_ITEMINFO_H_
#define _WXVLC_ITEMINFO_H_
#include "wxwidgets.hpp"
#include <wx/treectrl.h>
namespace wxvlc
{
class ItemInfoDialog: public wxDialog
{
public:
/* Constructor */
ItemInfoDialog( intf_thread_t *p_intf, playlist_item_t *_p_item,
wxWindow *p_parent );
virtual ~ItemInfoDialog();
wxArrayString GetOptions();
private:
wxPanel *InfoPanel( wxWindow* parent );
wxPanel *GroupPanel( wxWindow* parent );
/* Event handlers (these functions should _not_ be virtual) */
void OnOk( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event );
void UpdateInfo();
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
playlist_item_t *p_item;
wxWindow *p_parent;
/* Controls for the iteminfo dialog box */
wxPanel *info_subpanel;
wxPanel *info_panel;
wxPanel *group_subpanel;
wxPanel *group_panel;
wxTextCtrl *uri_text;
wxTextCtrl *name_text;
wxTreeCtrl *info_tree;
wxTreeItemId info_root;
};
};
#endif
...@@ -21,18 +21,7 @@ ...@@ -21,18 +21,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** #include "dialogs/messages.hpp"
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "wxwidgets.h"
/***************************************************************************** /*****************************************************************************
* Event Table. * Event Table.
...@@ -143,6 +132,7 @@ void Messages::UpdateLog() ...@@ -143,6 +132,7 @@ void Messages::UpdateLog()
int i_stop = *p_sub->pi_stop; int i_stop = *p_sub->pi_stop;
vlc_mutex_unlock( p_sub->p_lock ); vlc_mutex_unlock( p_sub->p_lock );
if( p_sub->i_start != i_stop ) if( p_sub->i_start != i_stop )
{ {
textctrl->SetInsertionPointEnd(); textctrl->SetInsertionPointEnd();
......
/*****************************************************************************
* messages.hpp: Messages dialog
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_MESSAGES_H_
#define _WXVLC_MESSAGES_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
class Messages: public wxFrame
{
public:
/* Constructor */
Messages( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~Messages();
bool Show( bool show = TRUE );
void UpdateLog();
private:
/* Event handlers (these functions should _not_ be virtual) */
void OnButtonClose( wxCommandEvent& event );
void OnClose( wxCloseEvent& WXUNUSED(event) );
void OnClear( wxCommandEvent& event );
void OnSaveLog( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxTextCtrl *textctrl;
wxTextAttr *info_attr;
wxTextAttr *err_attr;
wxTextAttr *warn_attr;
wxTextAttr *dbg_attr;
wxFileDialog *save_log_dialog;
vlc_bool_t b_verbose;
};
};
#endif
/***************************************************************************** /*****************************************************************************
* open.cpp : wxWindows plugin for vlc * open.cpp : Open dialog box
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team * Copyright (C) 2000-2005 the VideoLAN team
* $Id$ * $Id$
...@@ -24,13 +24,11 @@ ...@@ -24,13 +24,11 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include "dialogs/open.hpp"
#include "dialogs/streamout.hpp"
#include "dialogs/preferences_widgets.h"
#include "dialogs/subtitles.hpp"
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include "charset.h" #include "charset.h"
#ifdef HAVE_LIBCDIO #ifdef HAVE_LIBCDIO
...@@ -51,12 +49,8 @@ ...@@ -51,12 +49,8 @@
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/tokenzr.h> #include <wx/tokenzr.h>
#include <vlc/intf.h>
#include <vector> #include <vector>
#include "wxwidgets.h"
#include "preferences_widgets.h"
#ifndef wxRB_SINGLE #ifndef wxRB_SINGLE
# define wxRB_SINGLE 0 # define wxRB_SINGLE 0
...@@ -1332,9 +1326,10 @@ static bool IsDVD(const char *psz_drive) ...@@ -1332,9 +1326,10 @@ static bool IsDVD(const char *psz_drive)
*/ */
static char * ProbeDVD(const wxChar *device) static char * ProbeDVD(const wxChar *device)
{ {
/*
char **ppsz_cd_drives; char **ppsz_cd_drives;
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device); const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device);
char *psz_device = const_cast<char *>(tmp_buf.data()); char *psz_device = (char *) tmp_buf;
if( IsDVD(psz_device) ) if( IsDVD(psz_device) )
{ {
...@@ -1355,7 +1350,7 @@ static char * ProbeDVD(const wxChar *device) ...@@ -1355,7 +1350,7 @@ static char * ProbeDVD(const wxChar *device)
} }
} }
cdio_free_device_list(ppsz_cd_drives); cdio_free_device_list(ppsz_cd_drives);
} }*/
return NULL; return NULL;
} }
...@@ -1402,27 +1397,30 @@ static char * ProbeDevice(char **ppsz_search_devices, cdio_fs_anal_t mask, ...@@ -1402,27 +1397,30 @@ static char * ProbeDevice(char **ppsz_search_devices, cdio_fs_anal_t mask,
*/ */
static char * ProbeCDDA(const wxChar *device) static char * ProbeCDDA(const wxChar *device)
{ {
/*
char *ppsz_device[2]; char *ppsz_device[2];
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device); const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device);
char *psz_device = const_cast<char *>(tmp_buf.data()); char *psz_device = (char *) tmp_buf;
ppsz_device[0] = (device && *device) ? psz_device : NULL; ppsz_device[0] = (device && *device) ? psz_device : NULL;
ppsz_device[1] = NULL; ppsz_device[1] = NULL;
return ProbeDevice(ppsz_device, CDIO_FS_AUDIO, false); return ProbeDevice(ppsz_device, CDIO_FS_AUDIO, false);
*/ return NULL;
} }
/* Return a device that has a VCD in it. The caller needs to free /* Return a device that has a VCD in it. The caller needs to free
the returned string. the returned string.
*/ */
static char * ProbeVCD(const wxChar *device) static char * ProbeVCD(const wxChar *device)
{ {/*
char *ppsz_device[2]; char *ppsz_device[2];
const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device); const wxWX2MBbuf tmp_buf = wxConvCurrent->cWX2MB(device);
char *psz_device = const_cast<char *>(tmp_buf.data()); char *psz_device = (char *) tmp_buf;
ppsz_device[0] = (device && *device) ? psz_device : NULL; ppsz_device[0] = (device && *device) ? psz_device : NULL;
ppsz_device[1] = NULL; ppsz_device[1] = NULL;
return ProbeDevice(ppsz_device, return ProbeDevice(ppsz_device,
(CDIO_FS_ANAL_SVCD|CDIO_FS_ANAL_CVD|CDIO_FS_ANAL_VIDEOCD (CDIO_FS_ANAL_SVCD|CDIO_FS_ANAL_CVD|CDIO_FS_ANAL_VIDEOCD
|CDIO_FS_UNKNOWN), true); |CDIO_FS_UNKNOWN), true);
*/ return NULL;
} }
......
/*****************************************************************************
* open.hpp: Headers for the Open dialog
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_OPEN_H_
#define _WXVLC_OPEN_H_
#include "wxwidgets.hpp"
#include <wx/spinctrl.h>
class AutoBuiltPanel;
namespace wxvlc
{
class SubsFileDialog;
class SoutDialog;
WX_DEFINE_ARRAY(AutoBuiltPanel *, ArrayOfAutoBuiltPanel);
class OpenDialog: public wxDialog
{
public:
/* Constructor */
OpenDialog( intf_thread_t *p_intf, wxWindow *p_parent,
int i_access_method, int i_arg = 0 );
/* Extended Contructor */
OpenDialog( intf_thread_t *p_intf, wxWindow *p_parent,
int i_access_method, int i_arg = 0 , int _i_method = 0 );
virtual ~OpenDialog();
int Show();
int Show( int i_access_method, int i_arg = 0 );
void UpdateMRL();
void UpdateMRL( int i_access_method );
wxArrayString mrl;
private:
wxPanel *FilePanel( wxWindow* parent );
wxPanel *DiscPanel( wxWindow* parent );
wxPanel *NetPanel( wxWindow* parent );
ArrayOfAutoBuiltPanel input_tab_array;
/* Event handlers (these functions should _not_ be virtual) */
void OnOk( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event );
void OnClose( wxCloseEvent& event );
void OnPageChange( wxNotebookEvent& event );
void OnMRLChange( wxCommandEvent& event );
/* Event handlers for the file page */
void OnFilePanelChange( wxCommandEvent& event );
void OnFileBrowse( wxCommandEvent& event );
/* Event handlers for the disc page */
void OnDiscPanelChangeSpin( wxSpinEvent& event );
void OnDiscPanelChange( wxCommandEvent& event );
void OnDiscTypeChange( wxCommandEvent& event );
#ifdef HAVE_LIBCDIO
void OnDiscProbe( wxCommandEvent& event );
#endif
void OnDiscDeviceChange( wxCommandEvent& event );
/* Event handlers for the net page */
void OnNetPanelChangeSpin( wxSpinEvent& event );
void OnNetPanelChange( wxCommandEvent& event );
void OnNetTypeChange( wxCommandEvent& event );
/* Event handlers for the stream output */
void OnSubsFileEnable( wxCommandEvent& event );
void OnSubsFileSettings( wxCommandEvent& WXUNUSED(event) );
/* Event handlers for the stream output */
void OnSoutEnable( wxCommandEvent& event );
void OnSoutSettings( wxCommandEvent& WXUNUSED(event) );
/* Event handlers for the caching option */
void OnCachingEnable( wxCommandEvent& event );
void OnCachingChange( wxCommandEvent& event );
void OnCachingChangeSpin( wxSpinEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxWindow *p_parent;
int i_current_access_method;
int i_disc_type_selection;
int i_method; /* Normal or for the stream dialog ? */
int i_open_arg;
wxComboBox *mrl_combo;
wxNotebook *notebook;
/* Controls for the file panel */
wxComboBox *file_combo;
wxFileDialog *file_dialog;
/* Controls for the disc panel */
wxRadioBox *disc_type;
wxCheckBox *disc_probe;
wxTextCtrl *disc_device;
wxSpinCtrl *disc_title; int i_disc_title;
wxSpinCtrl *disc_chapter; int i_disc_chapter;
wxSpinCtrl *disc_sub; int i_disc_sub;
wxSpinCtrl *disc_audio; int i_disc_audio;
/* The media equivalent name for a DVD names. For example,
* "Title", is "Track" for a CD-DA */
wxStaticText *disc_title_label;
wxStaticText *disc_chapter_label;
wxStaticText *disc_sub_label;
wxStaticText *disc_audio_label;
/* Indicates if the disc device control was modified */
bool b_disc_device_changed;
/* Controls for the net panel */
wxRadioBox *net_type;
int i_net_type;
wxPanel *net_subpanels[4];
wxRadioButton *net_radios[4];
wxSpinCtrl *net_ports[4];
int i_net_ports[4];
wxTextCtrl *net_addrs[4];
wxCheckBox *net_timeshift;
wxCheckBox *net_ipv6;
/* Controls for the subtitles file */
wxButton *subsfile_button;
wxCheckBox *subsfile_checkbox;
SubsFileDialog *subsfile_dialog;
wxArrayString subsfile_mrl;
/* Controls for the stream output */
wxButton *sout_button;
wxCheckBox *sout_checkbox;
SoutDialog *sout_dialog;
wxArrayString sout_mrl;
/* Controls for the caching options */
wxCheckBox *caching_checkbox;
wxSpinCtrl *caching_value;
int i_caching;
};
};
enum
{
FILE_ACCESS = 0,
DISC_ACCESS,
NET_ACCESS,
/* Auto-built panels */
CAPTURE_ACCESS
};
#define MAX_ACCESS CAPTURE_ACCESS
#endif
...@@ -25,10 +25,9 @@ ...@@ -25,10 +25,9 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <vlc/vlc.h> #include "dialogs/playlist.hpp"
#include <vlc/intf.h> #include "dialogs/iteminfo.hpp"
#include "interface.hpp" // Needed for D&D - TODO: Split
#include "wxwidgets.h"
#include "bitmaps/shuffle.xpm" #include "bitmaps/shuffle.xpm"
#include "bitmaps/repeat.xpm" #include "bitmaps/repeat.xpm"
......
/*****************************************************************************
* playlist.hpp: Header for the playlist
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_PLAYLIST_H_
#define _WXVLC_PLAYLIST_H_
#include "wxwidgets.hpp"
#include <wx/treectrl.h>
#define MODE_NONE 0
#define MODE_GROUP 1
#define MODE_AUTHOR 2
#define MODE_TITLE 3
#define OPEN_NORMAL 0
#define OPEN_STREAM 1
namespace wxvlc
{
class ItemInfoDialog;
class NewGroup;
class ExportPlaylist;
/* Playlist */
class Playlist: public wxFrame
{
public:
/* Constructor */
Playlist( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~Playlist();
void UpdatePlaylist();
void ShowPlaylist( bool show );
void UpdateItem( int );
void AppendItem( wxCommandEvent& );
bool b_need_update;
int i_items_to_append;
private:
void RemoveItem( int );
void DeleteTreeItem( wxTreeItemId );
void DeleteItem( int item );
void DeleteNode( playlist_item_t *node );
void RecursiveDeleteSelection( wxTreeItemId );
/* Event handlers (these functions should _not_ be virtual) */
/* Menu Handlers */
void OnAddFile( wxCommandEvent& event );
void OnAddDir( wxCommandEvent& event );
void OnAddMRL( wxCommandEvent& event );
void OnMenuClose( wxCommandEvent& event );
void OnClose( wxCloseEvent& WXUNUSED(event) );
void OnDeleteSelection( wxCommandEvent& event );
void OnOpen( wxCommandEvent& event );
void OnSave( wxCommandEvent& event );
/* Search (user) */
void OnSearch( wxCommandEvent& event );
/*void OnSearchTextChange( wxCommandEvent& event );*/
wxTextCtrl *search_text;
wxButton *search_button;
wxTreeItemId search_current;
void OnEnDis( wxCommandEvent& event );
/* Sort */
int i_sort_mode;
void OnSort( wxCommandEvent& event );
int i_title_sorted;
int i_group_sorted;
int i_duration_sorted;
/* Dynamic menus */
void OnMenuEvent( wxCommandEvent& event );
void OnMenuOpen( wxMenuEvent& event );
wxMenu *p_view_menu;
wxMenu *p_sd_menu;
wxMenu *ViewMenu();
wxMenu *SDMenu();
void OnUp( wxCommandEvent& event);
void OnDown( wxCommandEvent& event);
void OnRandom( wxCommandEvent& event );
void OnRepeat( wxCommandEvent& event );
void OnLoop ( wxCommandEvent& event );
void OnActivateItem( wxTreeEvent& event );
void OnKeyDown( wxTreeEvent& event );
void OnNewGroup( wxCommandEvent& event );
/* Popup */
wxMenu *item_popup;
wxMenu *node_popup;
wxTreeItemId i_wx_popup_item;
int i_popup_item;
int i_popup_parent;
void OnPopup( wxContextMenuEvent& event );
void OnPopupPlay( wxCommandEvent& event );
void OnPopupPreparse( wxCommandEvent& event );
void OnPopupSort( wxCommandEvent& event );
void OnPopupDel( wxCommandEvent& event );
void OnPopupEna( wxCommandEvent& event );
void OnPopupInfo( wxCommandEvent& event );
void Rebuild( vlc_bool_t );
void Preparse();
/* Update */
void UpdateNode( playlist_item_t*, wxTreeItemId );
void UpdateNodeChildren( playlist_item_t*, wxTreeItemId );
void CreateNode( playlist_item_t*, wxTreeItemId );
void UpdateTreeItem( wxTreeItemId );
/* Search (internal) */
int CountItems( wxTreeItemId);
wxTreeItemId FindItem( wxTreeItemId, int );
wxTreeItemId FindItemByName( wxTreeItemId, wxString,
wxTreeItemId, vlc_bool_t *);
wxTreeItemId saved_tree_item;
int i_saved_id;
playlist_t *p_playlist;
/* Custom events */
void OnPlaylistEvent( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
/* Global widgets */
wxStatusBar *statusbar;
ItemInfoDialog *iteminfo_dialog;
int i_update_counter;
intf_thread_t *p_intf;
wxTreeCtrl *treectrl;
int i_current_view;
vlc_bool_t b_changed_view;
char **pp_sds;
};
} // end of wxvlc namespace
#endif
...@@ -24,24 +24,17 @@ ...@@ -24,24 +24,17 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "dialogs/preferences.hpp"
#include <vlc_config_cat.h> #include <vlc_config_cat.h>
#include "dialogs/preferences_widgets.h"
#include "wxwidgets.h"
#include "preferences_widgets.h"
#include <wx/combobox.h> #include <wx/combobox.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/clntdata.h> #include <wx/clntdata.h>
#include <wx/dynarray.h> #include <wx/dynarray.h>
#include <wx/imaglist.h> #include <wx/imaglist.h>
#include <wx/treectrl.h>
#include "bitmaps/type_net.xpm" #include "bitmaps/type_net.xpm"
#include "bitmaps/codec.xpm" #include "bitmaps/codec.xpm"
...@@ -1082,7 +1075,7 @@ void PrefsPanel::SwitchAdvanced( vlc_bool_t b_new_advanced ) ...@@ -1082,7 +1075,7 @@ void PrefsPanel::SwitchAdvanced( vlc_bool_t b_new_advanced )
{ {
bool hidden = false; bool hidden = false;
if( b_advanced == b_new_advanced ) if( b_advanced == b_new_advanced )
{ {
goto hide; goto hide;
} }
......
/*****************************************************************************
* preferences.hpp : Headers for the preference dialog
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_PREFERENCES_H_
#define _WXVLC_PREFERENCES_H_
#include "wxwidgets.hpp"
class PrefsTreeCtrl;
class PrefsPanel;
namespace wxvlc
{
/** This class is the preferences window
* It includes a preferences panel (right part)
* and the PrefsTreeCtrl (left part)
*/
class PrefsDialog: public wxFrame
{
public:
/** Constructor */
PrefsDialog( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~PrefsDialog();
private:
wxPanel *PrefsPanel( wxWindow* parent );
/* Event handlers (these functions should _not_ be virtual) */
void OnOk( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event );
void OnSave( wxCommandEvent& event );
void OnResetAll( wxCommandEvent& event );
void OnAdvanced( wxCommandEvent& event );
void OnClose( wxCloseEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
PrefsTreeCtrl *prefs_tree;
};
};
#endif
...@@ -22,23 +22,13 @@ ...@@ -22,23 +22,13 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** #include "wxwidgets.hpp"
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc_config_cat.h>
#include "wxwidgets.h"
#include "preferences_widgets.h" #include "preferences_widgets.h"
#include <vlc_keys.h>
#include <vlc_config_cat.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/spinctrl.h>
/***************************************************************************** /*****************************************************************************
* CreateConfigControl wrapper * CreateConfigControl wrapper
......
...@@ -24,15 +24,9 @@ ...@@ -24,15 +24,9 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> /* malloc(), free() */ #include "dialogs/streamout.hpp"
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h> #include <wx/spinctrl.h>
#include <vlc/intf.h>
#include "wxwidgets.h"
#include <wx/combobox.h> #include <wx/combobox.h>
#include <wx/statline.h> #include <wx/statline.h>
......
/*****************************************************************************
* streamout.hpp: Stream output dialog
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_STREAMOUT_H_
#define _WXVLC_STREAMOUT_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
enum
{
PLAY_ACCESS_OUT = 0,
FILE_ACCESS_OUT,
HTTP_ACCESS_OUT,
MMSH_ACCESS_OUT,
RTP_ACCESS_OUT,
UDP_ACCESS_OUT,
ACCESS_OUT_NUM
};
enum
{
TS_ENCAPSULATION = 0,
PS_ENCAPSULATION,
MPEG1_ENCAPSULATION,
OGG_ENCAPSULATION,
ASF_ENCAPSULATION,
MP4_ENCAPSULATION,
MOV_ENCAPSULATION,
WAV_ENCAPSULATION,
RAW_ENCAPSULATION,
AVI_ENCAPSULATION,
ENCAPS_NUM
};
enum
{
ANN_MISC_SOUT = 0,
TTL_MISC_SOUT,
MISC_SOUT_NUM
};
class SoutDialog: public wxDialog
{
public:
/* Constructor */
SoutDialog( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~SoutDialog();
wxArrayString GetOptions();
private:
void UpdateMRL();
wxPanel *AccessPanel( wxWindow* parent );
wxPanel *MiscPanel( wxWindow* parent );
wxPanel *EncapsulationPanel( wxWindow* parent );
wxPanel *TranscodingPanel( wxWindow* parent );
void ParseMRL();
/* Event handlers (these functions should _not_ be virtual) */
void OnOk( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event );
void OnMRLChange( wxCommandEvent& event );
void OnAccessTypeChange( wxCommandEvent& event );
/* Event handlers for the file access output */
void OnFileChange( wxCommandEvent& event );
void OnFileBrowse( wxCommandEvent& event );
void OnFileDump( wxCommandEvent& event );
/* Event handlers for the net access output */
void OnNetChange( wxCommandEvent& event );
/* Event specific to the announce address */
void OnAnnounceGroupChange( wxCommandEvent& event );
void OnAnnounceAddrChange( wxCommandEvent& event );
/* Event handlers for the encapsulation panel */
void OnEncapsulationChange( wxCommandEvent& event );
/* Event handlers for the transcoding panel */
void OnTranscodingEnable( wxCommandEvent& event );
void OnTranscodingChange( wxCommandEvent& event );
/* Event handlers for the misc panel */
void OnSAPMiscChange( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxWindow *p_parent;
wxComboBox *mrl_combo;
/* Controls for the access outputs */
wxPanel *access_panel;
wxPanel *access_subpanels[ACCESS_OUT_NUM];
wxCheckBox *access_checkboxes[ACCESS_OUT_NUM];
int i_access_type;
wxComboBox *file_combo;
wxCheckBox *dump_checkbox;
wxSpinCtrl *net_ports[ACCESS_OUT_NUM];
wxTextCtrl *net_addrs[ACCESS_OUT_NUM];
/* Controls for the SAP announces and TTL setting */
wxPanel *misc_panel;
wxPanel *misc_subpanels[MISC_SOUT_NUM];
wxCheckBox *sap_checkbox;
wxTextCtrl *announce_group;
wxTextCtrl *announce_addr;
wxSpinCtrl *ttl_spin;
/* Controls for the encapsulation */
wxPanel *encapsulation_panel;
wxRadioButton *encapsulation_radios[ENCAPS_NUM];
int i_encapsulation_type;
/* Controls for transcoding */
wxPanel *transcoding_panel;
wxCheckBox *video_transc_checkbox;
wxComboBox *video_codec_combo;
wxComboBox *audio_codec_combo;
wxCheckBox *audio_transc_checkbox;
wxComboBox *video_bitrate_combo;
wxComboBox *audio_bitrate_combo;
wxComboBox *audio_channels_combo;
wxComboBox *video_scale_combo;
wxComboBox *subtitles_codec_combo;
wxCheckBox *subtitles_transc_checkbox;
wxCheckBox *subtitles_overlay_checkbox;
/* Misc controls */
wxCheckBox *sout_all_checkbox;
};
};
#endif
...@@ -21,20 +21,10 @@ ...@@ -21,20 +21,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
/***************************************************************************** #include "dialogs/subtitles.hpp"
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "wxwidgets.h"
#include <wx/combobox.h> #include <wx/combobox.h>
#include <wx/statline.h> #include <wx/statline.h>
#include <wx/spinctrl.h>
#ifndef wxRB_SINGLE #ifndef wxRB_SINGLE
# define wxRB_SINGLE 0 # define wxRB_SINGLE 0
......
/*****************************************************************************
* subtitles.hpp: private wxWindows interface description
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_SUBTITLES_H_
#define _WXVLC_SUBTITLES_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
/* Subtitles File Dialog */
class SubsFileDialog: public wxDialog
{
public:
/* Constructor */
SubsFileDialog( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~SubsFileDialog();
wxComboBox *file_combo;
wxComboBox *encoding_combo;
wxComboBox *size_combo;
wxComboBox *align_combo;
wxSpinCtrl *fps_spinctrl;
wxSpinCtrl *delay_spinctrl;
private:
/* Event handlers (these functions should _not_ be virtual) */
void OnOk( wxCommandEvent& event );
void OnCancel( wxCommandEvent& event );
void OnFileBrowse( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxWindow *p_parent;
};
};
#endif
/***************************************************************************** /*****************************************************************************
* updatevlc.cpp : Check for VLC updates dialog * updatevlc.cpp : VLC Update checker
***************************************************************************** *****************************************************************************
* Copyright (C) 2000-2004 the VideoLAN team * Copyright (C) 2000-2004 the VideoLAN team
* $Id$ * $Id$
...@@ -24,12 +24,9 @@ ...@@ -24,12 +24,9 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <vlc/vlc.h> #include "updatevlc.hpp"
#include <vlc/intf.h>
#include <wx/progdlg.h> #include <wx/progdlg.h>
#include <wx/treectrl.h>
#include "wxwidgets.h"
#include "vlc_block.h" #include "vlc_block.h"
#include "vlc_stream.h" #include "vlc_stream.h"
...@@ -158,6 +155,7 @@ UpdateVLC::UpdateVLC( intf_thread_t *_p_intf, wxWindow *p_parent ): ...@@ -158,6 +155,7 @@ UpdateVLC::UpdateVLC( intf_thread_t *_p_intf, wxWindow *p_parent ):
UpdateVLC::~UpdateVLC() UpdateVLC::~UpdateVLC()
{ {
fprintf( stderr, "Fooing\n");
} }
/* this function gets all the info from the xml files hosted on /* this function gets all the info from the xml files hosted on
......
/*****************************************************************************
* updatevlc.hpp: VLC Update checker
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Antoine Cellerier <dionoea@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_UPDATEVLC_H_
#define _WXVLC_UPDATEVLC_H_
#include "wxwidgets.hpp"
#include <list>
class wxTreeCtrl;
namespace wxvlc
{
class UpdateVLC: public wxFrame
{
public:
/** Constructor */
UpdateVLC( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~UpdateVLC();
private:
void OnButtonClose( wxCommandEvent& event );
void OnClose( wxCloseEvent& WXUNUSED(event) );
void GetData();
void OnCheckForUpdate( wxCommandEvent& event );
void OnMirrorChoice( wxCommandEvent& event );
void UpdateUpdatesTree();
void UpdateMirrorsChoice();
void OnUpdatesTreeActivate( wxTreeEvent& event );
void DownloadFile( wxString url, wxString dst );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
wxTreeCtrl *updates_tree;
wxChoice *mirrors_choice;
wxString release_type; /* could be "stable", "test", "nightly" ... */
struct update_file_t
{
wxString type;
wxString md5;
wxString size;
wxString url;
wxString description;
};
struct update_version_t
{
wxString type;
wxString major;
wxString minor;
wxString revision;
wxString extra;
std::list<update_file_t> m_files;
};
std::list<update_version_t> m_versions;
struct update_mirror_t
{
wxString name;
wxString location;
wxString type;
wxString base_url;
};
std::list<update_mirror_t> m_mirrors;
};
};
#endif
This diff is collapsed.
/*****************************************************************************
* vlm_panel.hpp: Header for the VLM panel
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_VLMPANEL_H_
#define _WXVLC_VLMPANEL_H_
#include "wxwidgets.hpp"
#include <vector>
using namespace std;
class VLMWrapper;
class VLMStream;
class VLMBroadcastStream;
class VLMVODStream;
namespace wxvlc
{
class VLMStreamPanel;
class VLMBroadcastStreamPanel;
class VLMVODStreamPanel;
/** This class is the panel to add or edit a VLM stream
* It can be embedded in the main VLM panel or on a separate frame
*/
class VLMAddStreamPanel : public wxPanel
{
public:
VLMAddStreamPanel( intf_thread_t *, wxWindow *, VLMWrapper *,
vlc_bool_t, vlc_bool_t );
virtual ~VLMAddStreamPanel();
void Load( VLMStream *);
private:
void OnCreate( wxCommandEvent& );
void OnClear( wxCommandEvent& );
wxTextCtrl *name_text;
wxTextCtrl *input_text;
wxTextCtrl *output_text;
wxCheckBox *enabled_checkbox;
wxCheckBox *loop_checkbox;
intf_thread_t *p_intf;
VLMWrapper *p_vlm;
vlc_bool_t b_edit, b_broadcast;
DECLARE_EVENT_TABLE();
};
/**
* This class is the main VLM Manager panel
*/
class VLMPanel : public wxPanel
{
public:
VLMPanel( intf_thread_t *p_intf, wxWindow * );
virtual ~VLMPanel();
void Update();
protected:
private:
VLMWrapper *p_vlm;
intf_thread_t *p_intf;
wxTimer timer;
void OnTimer( wxTimerEvent &);
/** Notebook */
wxNotebook *p_notebook;
DECLARE_EVENT_TABLE();
/* Broadcast stuff */
vector<VLMBroadcastStreamPanel *> broadcasts;
wxPanel *broadcasts_panel;
wxBoxSizer *broadcasts_sizer;
wxScrolledWindow *scrolled_broadcasts;
wxBoxSizer *scrolled_broadcasts_sizer;
wxPanel *BroadcastPanel( wxWindow *);
wxPanel *AddBroadcastPanel( wxPanel *);
void AppendBroadcast( VLMBroadcastStream *);
void RemoveBroadcast( VLMBroadcastStreamPanel *);
/* VOD stuff */
vector<VLMVODStreamPanel *> vods;
wxPanel *vods_panel;
wxBoxSizer *vods_sizer;
wxScrolledWindow *scrolled_vods;
wxBoxSizer *scrolled_vods_sizer;
wxPanel *VODPanel( wxWindow *);
wxPanel *AddVODPanel( wxPanel *);
void AppendVOD( VLMVODStream *);
void RemoveVOD( VLMVODStreamPanel *);
};
/** This class is the standard VLM frame
* It only consists of the VLM panel
*/
class VLMFrame: public wxFrame
{
public:
VLMFrame( intf_thread_t *p_intf, wxWindow * );
virtual ~VLMFrame();
void Update();
private:
VLMPanel *vlm_panel;
DECLARE_EVENT_TABLE();
void OnClose( wxCloseEvent& );
};
/** This class is the edit dialog for a stream
* It only consists of the VLM edit panel
*/
class VLMEditStreamFrame: public wxFrame
{
public:
VLMEditStreamFrame( intf_thread_t *p_intf, wxWindow *,
VLMWrapper * , vlc_bool_t, VLMStream * );
virtual ~VLMEditStreamFrame();
private:
VLMAddStreamPanel *vlm_panel;
};
};
#endif
/*****************************************************************************
* vlm_slider_manager.cpp : Manage an input slider for a VLM stream
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: timer.cpp 11981 2005-08-03 15:03:23Z xtophe $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include "dialogs/vlm/vlm_slider_manager.hpp"
#include "dialogs/vlm/vlm_stream.hpp"
#include "dialogs/vlm/vlm_streampanel.hpp"
/*****************************************************************************
* Constructor.
*****************************************************************************/
VLMSliderManager::VLMSliderManager( intf_thread_t *_p_intf,
VLMBroadcastStreamPanel *_p_sp ) :
SliderManager( _p_intf )
{
p_sp = _p_sp;
_slider = p_sp->p_slider;
b_slider_free = VLC_TRUE;
time_string = wxU( "0:00:00 / 0:00:00");
}
VLMSliderManager::~VLMSliderManager()
{
}
/*****************************************************************************
* Private methods.
*****************************************************************************/
void VLMSliderManager::UpdateInput()
{
if( p_sp->GetStream()->p_media->i_instance == 0 )
{
p_input = NULL;
return;
}
/** FIXME !! */
p_input = p_sp->GetStream()->p_media->instance[0]->p_input;
}
void VLMSliderManager::UpdateButtons( vlc_bool_t b_play )
{
if( b_play )
{
p_sp->TogglePlayButton( PLAYING_S );
}
else
{
p_sp->TogglePlayButton( PAUSE_S );
}
}
vlc_bool_t VLMSliderManager::IsShown()
{
return _slider->IsEnabled();
}
void VLMSliderManager::ShowSlider()
{
_slider->Enable();
}
void VLMSliderManager::HideSlider()
{
_slider->SetValue( 0 );
_slider->Disable();
UpdateTime( "0:00:00", "0:00:00" );
}
vlc_bool_t VLMSliderManager::IsFree()
{
return b_slider_free;
}
vlc_bool_t VLMSliderManager::IsPlaying()
{
return VLC_TRUE; /* Is it really useful ? */
}
void VLMSliderManager::UpdateTime( char *psz_time, char *psz_total )
{
time_string = wxU(psz_time) + wxString(wxT(" / ") ) +wxU(psz_total) ;
}
void VLMSliderManager::ProcessUpdate( wxScrollEvent &event )
{
#ifdef WIN32
if( event.GetEventType() == wxEVT_SCROLL_THUMBRELEASE
|| event.GetEventType() == wxEVT_SCROLL_ENDSCROLL )
{
#endif
if( i_slider_pos != event.GetPosition() && p_input )
{
vlc_value_t pos;
pos.f_float = (float)event.GetPosition() / (float)SLIDER_MAX_POS;
var_Set( p_input, "position", pos );
}
#ifdef WIN32
b_slider_free = VLC_TRUE;
}
else
{
b_slider_free = VLC_FALSE;
if( p_input )
{
/* Update stream date */
char psz_time[ MSTRTIME_MAX_SIZE ], psz_total[ MSTRTIME_MAX_SIZE ];
mtime_t i_seconds;
i_seconds = var_GetTime( p_input, "length" ) / I64C(1000000 );
secstotimestr( psz_total, i_seconds );
i_seconds = var_GetTime( p_input, "time" ) / I64C(1000000 );
secstotimestr( psz_time, i_seconds );
time_string = wxU(psz_time) + wxString(wxT(" / ") ) +wxU(psz_total) ;
}
}
#endif
#undef WIN32
}
/*****************************************************************************
* vlm_slider_manager.hpp: Header for slider_manager
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _VLM_SLIDER_MANAGER_H_
#define _VLM_SLIDER_MANAGER_H_
#include "slider_manager.hpp"
namespace wxvlc
{
class VLMBroadcastStreamPanel;
/**
* This class manages a slider corresponding to the main input
*/
class VLMSliderManager: public SliderManager
{
public:
VLMSliderManager( intf_thread_t *, VLMBroadcastStreamPanel * );
virtual ~VLMSliderManager();
wxString time_string;
void ProcessUpdate( wxScrollEvent & );
protected:
vlc_bool_t b_slider_free;
virtual void UpdateInput();
virtual void UpdateButtons( vlc_bool_t );
virtual void UpdateTime( char *, char *);
virtual vlc_bool_t IsShown();
virtual vlc_bool_t IsFree();
virtual vlc_bool_t IsPlaying();
virtual void HideSlider();
virtual void ShowSlider();
VLMBroadcastStreamPanel * p_sp;
};
};
#endif
/*****************************************************************************
* vlm_stream.cpp : Implementation of the VLMStream class hierarchy
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: timer.cpp 11981 2005-08-03 15:03:23Z xtophe $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "dialogs/vlm/vlm_stream.hpp"
#include "dialogs/vlm/vlm_wrapper.hpp"
/*****************************************************************************
* VLMStream class
*****************************************************************************/
VLMStream::VLMStream( intf_thread_t *_p_intf, vlm_media_t *_p_media,
VLMWrapper * _p_vlm )
{
p_intf = _p_intf;
p_vlm = _p_vlm;
p_media = _p_media;
}
VLMStream::~VLMStream()
{
}
void VLMStream::Enable()
{
p_media->b_enabled = VLC_TRUE;
}
void VLMStream::Disable()
{
p_media->b_enabled = VLC_FALSE;
}
void VLMStream::Delete()
{
vlm_message_t *message;
string command = "del " + string( p_media->psz_name );
/* FIXME: Should be moved to vlm_Wrapper */
vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
vlm_MessageDelete( message );
}
/*****************************************************************************
* VLMBroadcastStream class
*****************************************************************************/
VLMBroadcastStream::VLMBroadcastStream( intf_thread_t *_p_intf,
vlm_media_t *_p_media, VLMWrapper *_p_vlm ): VLMStream( _p_intf, _p_media, _p_vlm )
{
}
VLMBroadcastStream::~VLMBroadcastStream()
{
}
void VLMBroadcastStream::Play()
{
vlm_message_t *message;
string command = "control " + string( p_media->psz_name ) + " play";
/* FIXME: Should be moved to vlm_Wrapper */
vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
vlm_MessageDelete( message );
}
void VLMBroadcastStream::Stop()
{
vlm_message_t *message;
string command = "control " + string( p_media->psz_name ) + " stop";
vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
vlm_MessageDelete( message );
}
void VLMBroadcastStream::Pause()
{
vlm_message_t *message;
string command = "control " + string( p_media->psz_name ) + " pause";
vlm_ExecuteCommand( p_vlm->GetVLM(), (char*)command.c_str(), & message );
vlm_MessageDelete( message );
}
/*****************************************************************************
* VLMVODStream class
*****************************************************************************/
VLMVODStream::VLMVODStream( intf_thread_t *_p_intf, vlm_media_t *_p_media,
VLMWrapper *_p_vlm ): VLMStream( _p_intf, _p_media, _p_vlm )
{
}
VLMVODStream::~VLMVODStream()
{
}
/*****************************************************************************
* vlm_stream.hpp: Representation of a VLM Stream
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: vlm_stream.hpp 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/* FIXME : This is not WX-specific and should be moved to core */
#ifndef _VLM_STREAM_H_
#define _VLM_STREAM_H_
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc_vlm.h>
#include <string>
using namespace std;
class VLMWrapper;
/**
* This class encapsulates a VLM Stream and provides additional services
*/
class VLMStream
{
public:
VLMStream( intf_thread_t *, vlm_media_t * , VLMWrapper *);
virtual ~VLMStream();
vlm_media_t *p_media;
void Delete();
virtual void Disable();
virtual void Enable();
/* FIXME: provide accessor */
VLMWrapper *p_vlm;
protected:
intf_thread_t *p_intf;
friend class VLMWrapper;
private:
};
/**
* This class encapsulates a VLM Broadcast stream
*/
class VLMBroadcastStream : public VLMStream
{
public:
VLMBroadcastStream( intf_thread_t *, vlm_media_t *, VLMWrapper *);
virtual ~VLMBroadcastStream();
void Play();
void Pause();
void Stop();
};
/**
* This class encapsulates a VLM VOD Stream
*/
class VLMVODStream : public VLMStream
{
public:
VLMVODStream( intf_thread_t *, vlm_media_t *, VLMWrapper *);
virtual ~VLMVODStream();
};
#endif
/*****************************************************************************
* vlm_streampanel:cpp
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: playlist.cpp 12582 2005-09-17 14:15:32Z zorglub $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/OR MODIFy
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "dialogs/vlm/vlm_streampanel.hpp"
#include "dialogs/vlm/vlm_stream.hpp"
#include "dialogs/vlm/vlm_slider_manager.hpp"
#include "dialogs/vlm/vlm_panel.hpp"
#include "bitmaps/play.xpm"
#include "bitmaps/pause.xpm"
#include "bitmaps/stop.xpm"
#include "bitmaps/trash.xpm"
enum
{
BPlay_Event,
BStop_Event,
BSlider_Event,
BEdit_Event,
BTrash_Event,
};
BEGIN_EVENT_TABLE( VLMBroadcastStreamPanel, wxPanel )
EVT_BUTTON( BPlay_Event, VLMBroadcastStreamPanel::OnPlay )
EVT_BUTTON( BStop_Event, VLMBroadcastStreamPanel::OnStop )
EVT_BUTTON( BEdit_Event, VLMBroadcastStreamPanel::OnEdit )
EVT_BUTTON( BTrash_Event, VLMBroadcastStreamPanel::OnTrash )
EVT_COMMAND_SCROLL( BSlider_Event, VLMBroadcastStreamPanel::OnSliderUpdate )
END_EVENT_TABLE()
/***********************************************************************
* VLMStream
***********************************************************************/
VLMStreamPanel::VLMStreamPanel( intf_thread_t * _p_intf, wxWindow * _p_parent ):
wxPanel( _p_parent, -1, wxDefaultPosition, wxDefaultSize )
{
p_intf = _p_intf;
p_slider = NULL;
}
VLMStreamPanel::~VLMStreamPanel()
{
}
/***********************************************************************
* VLMBroadcastStream
***********************************************************************/
VLMBroadcastStreamPanel::VLMBroadcastStreamPanel( intf_thread_t* _p_intf,
wxWindow *_p_parent , VLMBroadcastStream *_stream ):
VLMStreamPanel( _p_intf, _p_parent ),
p_stream( _stream )
{
wxStaticBox *box = new wxStaticBox( this, -1,
wxU( p_stream->p_media->psz_name ) );
wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer( box, wxHORIZONTAL );
play_button = new wxBitmapButton( this, BPlay_Event,
wxBitmap( play_xpm ) );
play_button->SetToolTip( wxU(_("Play/Pause") ) );
box_sizer->Add( play_button, 0, wxEXPAND | wxALL, 5 );
wxBitmapButton *stop_button = new wxBitmapButton( this, BStop_Event,
wxBitmap( stop_xpm ) );
stop_button->SetToolTip( wxU(_("Stop") ) );
box_sizer->Add( stop_button, 0, wxEXPAND | wxALL, 5 );
p_slider = new wxSlider( this, BSlider_Event, 0, 0,
SLIDER_MAX_POS, wxDefaultPosition, wxDefaultSize );
p_slider->Disable();
box_sizer->Add( p_slider, 1, wxEXPAND | wxALL, 5 );
p_time = new wxStaticText( this, -1, wxU( "0:00:00 / 0:00:00") );
box_sizer->Add( p_time , 0, wxEXPAND | wxALL, 5 );
wxBitmapButton *edit_button = new wxBitmapButton( this, BEdit_Event,
wxBitmap( trash_xpm ) );
edit_button->SetToolTip( wxU( _("Edit") ) );
box_sizer->Add( edit_button, 0, wxEXPAND | wxALL , 5 );
wxBitmapButton *trash_button = new wxBitmapButton( this, BTrash_Event,
wxBitmap( trash_xpm ) );
trash_button->SetToolTip( wxU( _("Delete" ) ) );
box_sizer->Add( trash_button, 0, wxEXPAND | wxALL , 5 );
box_sizer->Layout();
SetSizerAndFit( box_sizer );
p_sm = new VLMSliderManager( p_intf, this );
}
VLMBroadcastStreamPanel::~VLMBroadcastStreamPanel()
{
}
void VLMBroadcastStreamPanel::TogglePlayButton( int state )
{
if( state == PLAYING_S )
{
play_button->SetBitmapLabel( wxBitmap( pause_xpm ) );
}
if( state == PAUSE_S )
{
play_button->SetBitmapLabel( wxBitmap( play_xpm ) );
}
}
void VLMBroadcastStreamPanel::Update()
{
/* Update managed slider */
p_sm->Update();
p_time->SetLabel( p_sm->time_string );
}
void VLMBroadcastStreamPanel::OnPlay( wxCommandEvent &event )
{
/* FIXME: Factorize input / VLM code here */
/* Handle multiple instance */
if( p_stream->p_media->i_instance > 0 &&
p_stream->p_media->instance[0]->p_input )
{
vlc_value_t val;
vlc_object_yield( p_stream->p_media->instance[0]->p_input );
var_Get( p_stream->p_media->instance[0]->p_input, "state", &val );
if( val.i_int != PAUSE_S )
{
/* Pause */
val.i_int = PAUSE_S;
}
else
{
/* Resume */
val.i_int = PLAYING_S;
}
var_Set( p_stream->p_media->instance[0]->p_input, "state", val );
TogglePlayButton( val.i_int );
vlc_object_release( p_stream->p_media->instance[0]->p_input );
}
else
{
p_stream->Play();
TogglePlayButton( PLAYING_S );
}
}
void VLMBroadcastStreamPanel::OnStop( wxCommandEvent &event )
{
p_stream->Stop();
}
void VLMBroadcastStreamPanel::OnEdit( wxCommandEvent &event )
{
VLMEditStreamFrame *p_frame =
new VLMEditStreamFrame( p_intf, this, p_stream->p_vlm, VLC_TRUE,
p_stream );
p_frame->Show();
}
void VLMBroadcastStreamPanel::OnTrash( wxCommandEvent &event )
{
p_stream->Delete();
}
void VLMBroadcastStreamPanel::OnSliderUpdate( wxScrollEvent& event )
{
p_sm->ProcessUpdate( event );
}
/***********************************************************************
* VLMVODStream
***********************************************************************/
VLMVODStreamPanel::VLMVODStreamPanel( intf_thread_t* _p_intf,
wxWindow *_p_parent , VLMVODStream *_stream ):
VLMStreamPanel( _p_intf, _p_parent ),
p_stream( _stream )
{
}
VLMVODStreamPanel::~VLMVODStreamPanel()
{
}
/*****************************************************************************
* vlm_streampanel.hpp: Panel for a VLM stream
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _VLM_STREAMPANEL_H_
#define _VLM_STREAMPANEL_H_
#include "wxwidgets.hpp"
class VLMStream;
class VLMBroadcastStream;
class VLMVODStream;
namespace wxvlc
{
class VLMSliderManager;
/**
* This class represents the panel for a VLM Stream
* This class is abstract, it needs to be subclassed
*/
class VLMStreamPanel : public wxPanel
{
public:
VLMStreamPanel( intf_thread_t *, wxWindow * );
virtual ~VLMStreamPanel();
virtual void TogglePlayButton( int ) {};
wxSlider *p_slider;
virtual void Update() = 0;
protected:
intf_thread_t *p_intf;
vlc_bool_t b_free;
vlc_bool_t b_new; ///< Is it a new stream ?
vlc_bool_t b_found; ///< Have we found the stream here ?
friend class VLMPanel;
private:
};
/**
* This class represents the panel for a Broadcast VLM Stream
*/
class VLMBroadcastStreamPanel : public VLMStreamPanel
{
public:
VLMBroadcastStreamPanel( intf_thread_t *, wxWindow *,
VLMBroadcastStream * );
virtual ~VLMBroadcastStreamPanel();
VLMBroadcastStream *GetStream() { return p_stream; }
vlc_bool_t b_slider_free;
VLMSliderManager *p_sm;
virtual void Update();
virtual void TogglePlayButton( int );
protected:
private:
VLMBroadcastStream *p_stream;
DECLARE_EVENT_TABLE();
void OnPlay( wxCommandEvent &);
void OnStop( wxCommandEvent &);
void OnEdit( wxCommandEvent &);
void OnTrash( wxCommandEvent &);
void OnSliderUpdate( wxScrollEvent &);
wxBitmapButton *play_button;
wxStaticText *p_time;
};
/**
* This class represents the panel for a VOD VLM Stream
*/
class VLMVODStreamPanel : public VLMStreamPanel
{
public:
VLMVODStreamPanel( intf_thread_t *, wxWindow *,
VLMVODStream * );
virtual ~VLMVODStreamPanel();
VLMVODStream *GetStream() { return p_stream; }
virtual void Update() {}
protected:
private:
VLMVODStream *p_stream;
};
};
#endif
/*****************************************************************************
* vlm_wrapper.cpp : Wrapper around VLM
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: timer.cpp 11981 2005-08-03 15:03:23Z xtophe $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/* FIXME: This is not wx-specific */
#include "dialogs/vlm/vlm_wrapper.hpp"
VLMWrapper::VLMWrapper( intf_thread_t *_p_intf )
{
p_intf = _p_intf;
p_vlm = NULL;
}
VLMWrapper::~VLMWrapper()
{
/* FIXME :you have to destroy vlm here to close
* but we shouldn't destroy vlm here in case somebody else wants it */
if( p_vlm )
vlm_Delete( p_vlm );
}
vlc_bool_t VLMWrapper::AttachVLM()
{
p_vlm = vlm_New( p_intf );
return p_vlm ? VLC_TRUE: VLC_FALSE ;
}
void VLMWrapper::LockVLM()
{
vlc_mutex_lock( &p_vlm->object_lock );
}
void VLMWrapper::UnlockVLM()
{
vlc_mutex_unlock( &p_vlm->object_lock );
}
void VLMWrapper::AddBroadcast( const char* name, const char* input,
const char* output,
vlc_bool_t b_enabled, vlc_bool_t b_loop )
{
vlm_message_t *message;
string command = "new " + string(name) + " broadcast";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
EditBroadcast( name, input, output, b_enabled, b_loop );
}
void VLMWrapper::EditBroadcast( const char* name, const char* input,
const char* output,
vlc_bool_t b_enabled, vlc_bool_t b_loop )
{
vlm_message_t *message;
string command;
command = "setup " + string(name) + " inputdel all";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
command = "setup " + string(name) + " input " + string(input);
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
if( strlen(output) > 0 )
{
command = "setup " + string(name) + " output " + string(output);
vlm_ExecuteCommand( p_vlm, (char*)command.c_str(), &message );
vlm_MessageDelete( message );
}
if( b_enabled )
{
command = "setup " + string(name) + " enabled";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
}
if( b_loop )
{
command = "setup " + string(name) + " loop";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
}
}
void VLMWrapper::AddVod( const char* name, const char* input,
const char* output,
vlc_bool_t b_enabled, vlc_bool_t b_loop )
{
vlm_message_t *message;
string command = "new " + string(name) + " vod";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
EditVod( name, input, output, b_enabled, b_loop );
}
void VLMWrapper::EditVod( const char* name, const char* input,
const char* output,
vlc_bool_t b_enabled, vlc_bool_t b_loop )
{
vlm_message_t *message;
string command;
command = "setup " + string(name) + " input " + string(input);
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
if( strlen(output) > 0 )
{
command = "setup " + string(name) + " output " + string(output);
vlm_ExecuteCommand( p_vlm, (char*)command.c_str(), &message );
vlm_MessageDelete( message );
}
if( b_enabled )
{
command = "setup " + string(name) + " enabled";
vlm_ExecuteCommand( p_vlm, command.c_str(), &message );
vlm_MessageDelete( message );
}
}
/*****************************************************************************
* vlm_wrapper.hpp: Wrapper for VLM
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/* This is not WX-specific */
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include <vlc_vlm.h>
#include "dialogs/vlm/vlm_stream.hpp"
#include <vector>
#include <string>
using namespace std;
class VLMWrapper
{
public:
VLMWrapper( intf_thread_t * );
virtual ~VLMWrapper();
vlc_bool_t AttachVLM();
void LockVLM();
void UnlockVLM();
void AddBroadcast( const char*, const char*, const char*,
vlc_bool_t b_enabled = VLC_TRUE,
vlc_bool_t b_loop = VLC_TRUE );
void EditBroadcast( const char*, const char*, const char*,
vlc_bool_t b_enabled = VLC_TRUE,
vlc_bool_t b_loop = VLC_TRUE );
void AddVod( const char*, const char*, const char*,
vlc_bool_t b_enabled = VLC_TRUE,
vlc_bool_t b_loop = VLC_TRUE );
void EditVod( const char*, const char*, const char*,
vlc_bool_t b_enabled = VLC_TRUE,
vlc_bool_t b_loop = VLC_TRUE );
unsigned int NbMedia() { if( p_vlm ) return p_vlm->i_media; return 0; }
vlm_media_t *GetMedia( int i )
{ if( p_vlm ) return p_vlm->media[i]; return NULL; }
vlm_t* GetVLM() { return p_vlm; }
protected:
private:
vlm_t *p_vlm;
intf_thread_t *p_intf;
};
...@@ -24,20 +24,12 @@ ...@@ -24,20 +24,12 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> /* malloc(), free() */ #include "dialogs/wizard.hpp"
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/intf.h>
#include "network.h"
#include "wxwidgets.h"
#include "streamdata.h" #include "streamdata.h"
#include "dialogs/open.hpp"
#include <wx/statline.h> #include <wx/statline.h>
#include <network.h>
class wizHelloPage; class wizHelloPage;
class wizInputPage; class wizInputPage;
......
/*****************************************************************************
* wizard.hpp: Stream wizard headers
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_WIZARD_H_
#define _WXVLC_WIZARD_H_
#include "wxwidgets.hpp"
#include <wx/wizard.h>
namespace wxvlc
{
/* Wizard */
class WizardDialog : public wxWizard
{
public:
/* Constructor */
WizardDialog( intf_thread_t *, wxWindow *p_parent, char *, int, int );
virtual ~WizardDialog();
void SetTranscode( char const *vcodec, int vb, char const *acodec,
int ab);
void SetMrl( const char *mrl );
void SetTTL( int i_ttl );
void SetPartial( int, int );
void SetStream( char const *method, char const *address );
void SetTranscodeOut( char const *address );
void SetAction( int i_action );
int GetAction();
void SetSAP( bool b_enabled, const char *psz_name );
void SetMux( char const *mux );
void Run();
int i_action;
char *method;
protected:
int vb,ab;
int i_from, i_to, i_ttl;
char *vcodec , *acodec , *address , *mrl , *mux ;
char *psz_sap_name;
bool b_sap;
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
};
};
#endif
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
#include <math.h> #include <math.h>
#include "wxwidgets.h" #include "extrapanel.hpp"
/***************************************************************************** /*****************************************************************************
* Local class declarations. * Local class declarations.
......
/*****************************************************************************
* extrapanel.hpp: Headers for the extra panel window
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_EXTRAPANEL_H_
#define _WXVLC_EXTRAPANEL_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
/* Extended panel */
class ExtraPanel: public wxPanel
{
public:
/* Constructor */
ExtraPanel( intf_thread_t *p_intf, wxWindow *p_parent );
virtual ~ExtraPanel();
/// \todo Check access level for these
wxStaticBox *adjust_box;
wxButton *restoredefaults_button;
wxSlider *brightness_slider;
wxSlider *contrast_slider;
wxSlider *saturation_slider;
wxSlider *hue_slider;
wxSlider *gamma_slider;
wxStaticBox *other_box;
wxComboBox *ratio_combo;
char *psz_bands;
float f_preamp;
vlc_bool_t b_update;
private:
/* General layout */
wxPanel *VideoPanel( wxWindow * );
wxPanel *EqzPanel( wxWindow * );
wxPanel *AudioPanel( wxWindow * );
wxNotebook *notebook;
/* Equalizer */
wxCheckBox *eq_chkbox;
wxCheckBox *eq_2p_chkbox;
wxButton *eq_restoredefaults_button;
wxSlider *smooth_slider;
wxStaticText *smooth_text;
wxSlider *preamp_slider;
wxStaticText * preamp_text;
int i_smooth;
wxSlider *band_sliders[10];
wxStaticText *band_texts[10];
int i_values[10];
void OnEnableEqualizer( wxCommandEvent& );
void OnRestoreDefaults( wxCommandEvent& );
void OnChangeEqualizer( wxScrollEvent& );
void OnEqSmooth( wxScrollEvent& );
void OnPreamp( wxScrollEvent& );
void OnEq2Pass( wxCommandEvent& );
void OnEqRestore( wxCommandEvent& );
/* Video */
void OnEnableAdjust( wxCommandEvent& );
void OnAdjustUpdate( wxScrollEvent& );
void OnRatio( wxCommandEvent& );
void OnFiltersInfo( wxCommandEvent& );
void OnSelectFilter( wxCommandEvent& );
/* Audio */
void OnHeadphone( wxCommandEvent& );
void OnNormvol( wxCommandEvent& );
void OnNormvolSlider( wxScrollEvent& );
void CheckAout();
void OnIdle( wxIdleEvent& );
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
vlc_bool_t b_my_update;
wxWindow *p_parent;
};
};
#if 0
/* Extended Window */
class ExtraWindow: public wxFrame
{
public:
/* Constructor */
ExtraWindow( intf_thread_t *p_intf, wxWindow *p_parent, wxPanel *panel );
virtual ~ExtraWindow();
private:
wxPanel *panel;
DECLARE_EVENT_TABLE();
intf_thread_t *p_intf;
};
#endif
#endif
...@@ -24,14 +24,16 @@ ...@@ -24,14 +24,16 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <vlc/vlc.h> #include "interface.hpp"
#include <vlc/aout.h> #include "extrapanel.hpp"
#include <vlc/vout.h> #include "timer.hpp"
#include <vlc/input.h> #include "video.hpp"
#include <vlc/intf.h> #include <vlc_keys.h>
#include "charset.h" #include "charset.h"
#include "wxwidgets.h" #include <vlc/aout.h>
#include "charset.h"
/* include the toolbar graphics */ /* include the toolbar graphics */
#include "bitmaps/play.xpm" #include "bitmaps/play.xpm"
...@@ -158,6 +160,7 @@ enum ...@@ -158,6 +160,7 @@ enum
* (where it is special and put into the "Apple" menu) */ * (where it is special and put into the "Apple" menu) */
About_Event = wxID_ABOUT, About_Event = wxID_ABOUT,
UpdateVLC_Event, UpdateVLC_Event,
VLM_Event,
Iconize_Event Iconize_Event
}; };
...@@ -167,6 +170,7 @@ BEGIN_EVENT_TABLE(Interface, wxFrame) ...@@ -167,6 +170,7 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
EVT_MENU(Exit_Event, Interface::OnExit) EVT_MENU(Exit_Event, Interface::OnExit)
EVT_MENU(About_Event, Interface::OnAbout) EVT_MENU(About_Event, Interface::OnAbout)
EVT_MENU(UpdateVLC_Event, Interface::OnShowDialog) EVT_MENU(UpdateVLC_Event, Interface::OnShowDialog)
EVT_MENU(VLM_Event, Interface::OnShowDialog)
EVT_MENU(Playlist_Event, Interface::OnShowDialog) EVT_MENU(Playlist_Event, Interface::OnShowDialog)
EVT_MENU(Logs_Event, Interface::OnShowDialog) EVT_MENU(Logs_Event, Interface::OnShowDialog)
...@@ -356,7 +360,7 @@ Interface::~Interface() ...@@ -356,7 +360,7 @@ Interface::~Interface()
GetPosition(), GetSize() ); GetPosition(), GetSize() );
} }
PopEventHandler(true); PopEventHandler(true);
if( video_window ) delete video_window; if( video_window ) delete video_window;
...@@ -444,6 +448,8 @@ void Interface::CreateOurMenuBar() ...@@ -444,6 +448,8 @@ void Interface::CreateOurMenuBar()
view_menu->Append( Logs_Event, wxU(_("&Messages...\tCtrl-M")) ); view_menu->Append( Logs_Event, wxU(_("&Messages...\tCtrl-M")) );
view_menu->Append( FileInfo_Event, view_menu->Append( FileInfo_Event,
wxU(_("Stream and Media &info...\tCtrl-I")) ); wxU(_("Stream and Media &info...\tCtrl-I")) );
view_menu->Append( VLM_Event,
wxU(_("VLM Control...\tCtrl-I")) );
/* Create the "Auto-generated" menus */ /* Create the "Auto-generated" menus */
p_settings_menu = SettingsMenu( p_intf, this ); p_settings_menu = SettingsMenu( p_intf, this );
...@@ -739,6 +745,7 @@ void Interface::SetupHotkeys() ...@@ -739,6 +745,7 @@ void Interface::SetupHotkeys()
void Interface::HideSlider( bool layout ) void Interface::HideSlider( bool layout )
{ {
fprintf( stderr, "Hiding slider\n");
ShowSlider( false, layout ); ShowSlider( false, layout );
} }
...@@ -939,6 +946,7 @@ void Interface::OnShowDialog( wxCommandEvent& event ) ...@@ -939,6 +946,7 @@ void Interface::OnShowDialog( wxCommandEvent& event )
break; break;
case OpenAdv_Event: case OpenAdv_Event:
i_id = INTF_DIALOG_FILE; i_id = INTF_DIALOG_FILE;
break;
case OpenFile_Event: case OpenFile_Event:
i_id = INTF_DIALOG_FILE; i_id = INTF_DIALOG_FILE;
break; break;
...@@ -978,6 +986,9 @@ void Interface::OnShowDialog( wxCommandEvent& event ) ...@@ -978,6 +986,9 @@ void Interface::OnShowDialog( wxCommandEvent& event )
case UpdateVLC_Event: case UpdateVLC_Event:
i_id = INTF_DIALOG_UPDATEVLC; i_id = INTF_DIALOG_UPDATEVLC;
break; break;
case VLM_Event:
i_id = INTF_DIALOG_VLM;
break;
default: default:
i_id = INTF_DIALOG_FILE; i_id = INTF_DIALOG_FILE;
break; break;
...@@ -1005,93 +1016,6 @@ void Interface::OnExtended(wxCommandEvent& event) ...@@ -1005,93 +1016,6 @@ void Interface::OnExtended(wxCommandEvent& event)
frame_sizer->Fit(this); frame_sizer->Fit(this);
} }
#if 0
if( b_undock == VLC_TRUE )
{
fprintf(stderr,"Deleting window\n");
if( extra_window )
{
delete extra_window;
extra_window = NULL;
}
}
else
{
extra_frame->Hide();
frame_sizer->Hide( extra_frame );
frame_sizer->Layout();
frame_sizer->Fit(this);
}
}
else
{
if( b_undock == VLC_TRUE )
{
fprintf(stderr,"Creating window\n");
extra_frame->Hide();
frame_sizer->Hide( extra_frame );
#if (wxCHECK_VERSION(2,5,0))
frame_sizer->Detach( extra_frame );
#else
frame_sizer->Remove( extra_frame );
#endif
frame_sizer->Layout();
frame_sizer->Fit(this);
extra_window = new ExtraWindow( p_intf, this, extra_frame );
}
else
{
fprintf(stderr,"Deleting window\n");
if( extra_window )
{
delete extra_window;
}
extra_frame->Show();
frame_sizer->Show( extra_frame );
frame_sizer->Layout();
frame_sizer->Fit(this);
}
}
}
void Interface::OnUndock(wxCommandEvent& event)
{
b_undock = (b_undock == VLC_TRUE ? VLC_FALSE : VLC_TRUE );
if( b_extra == VLC_TRUE )
{
if( b_undock == VLC_FALSE )
{
fprintf(stderr,"Deleting window\n");
if( extra_window )
{
delete extra_window;
extra_window = NULL;
}
extra_frame->Show();
frame_sizer->Show( extra_frame );
frame_sizer->Layout();
frame_sizer->Fit(this);
}
else
{
fprintf(stderr,"Creating window\n");
extra_frame->Hide();
frame_sizer->Hide( extra_frame );
#if (wxCHECK_VERSION(2,5,0))
frame_sizer->Detach( extra_frame );
#else
frame_sizer->Remove( extra_frame );
#endif
frame_sizer->Layout();
frame_sizer->Fit(this);
extra_window = new ExtraWindow( p_intf, this, extra_frame );
}
}
}
#endif
void Interface::OnPlayStream( wxCommandEvent& WXUNUSED(event) ) void Interface::OnPlayStream( wxCommandEvent& WXUNUSED(event) )
{ {
PlayStream(); PlayStream();
...@@ -1230,22 +1154,6 @@ void Interface::PrevStream() ...@@ -1230,22 +1154,6 @@ void Interface::PrevStream()
return; return;
} }
/* FIXME --fenrir */
#if 0
if( p_playlist->p_input != NULL )
{
vlc_mutex_lock( &p_playlist->p_input->stream.stream_lock );
if( p_playlist->p_input->stream.p_selected_area->i_id > 1 )
{
vlc_value_t val; val.b_bool = VLC_TRUE;
vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock );
var_Set( p_playlist->p_input, "prev-title", val );
} else
vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock );
}
vlc_mutex_unlock( &p_playlist->object_lock );
#endif
playlist_Prev( p_playlist ); playlist_Prev( p_playlist );
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
} }
...@@ -1264,26 +1172,6 @@ void Interface::NextStream() ...@@ -1264,26 +1172,6 @@ void Interface::NextStream()
{ {
return; return;
} }
/* FIXME --fenrir */
#if 0
var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
vlc_mutex_lock( &p_playlist->object_lock );
if( p_playlist->p_input != NULL )
{
vlc_mutex_lock( &p_playlist->p_input->stream.stream_lock );
if( p_playlist->p_input->stream.i_area_nb > 1 &&
p_playlist->p_input->stream.p_selected_area->i_id <
p_playlist->p_input->stream.i_area_nb - 1 )
{
vlc_value_t val; val.b_bool = VLC_TRUE;
vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock );
var_Set( p_playlist->p_input, "next-title", val );
} else
vlc_mutex_unlock( &p_playlist->p_input->stream.stream_lock );
}
vlc_mutex_unlock( &p_playlist->object_lock );
#endif
playlist_Next( p_playlist ); playlist_Next( p_playlist );
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
} }
...@@ -1419,6 +1307,7 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord, ...@@ -1419,6 +1307,7 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord,
for( size_t i = 0; i < filenames.GetCount(); i++ ) for( size_t i = 0; i < filenames.GetCount(); i++ )
{ {
char *psz_utf8 = wxFromLocale( filenames[i] ); char *psz_utf8 = wxFromLocale( filenames[i] );
playlist_Add( p_playlist, psz_utf8, psz_utf8, playlist_Add( p_playlist, psz_utf8, psz_utf8,
PLAYLIST_APPEND | ((i | b_enqueue) ? 0 : PLAYLIST_GO), PLAYLIST_APPEND | ((i | b_enqueue) ? 0 : PLAYLIST_GO),
PLAYLIST_END ); PLAYLIST_END );
......
/*****************************************************************************
* interface.hpp: Main interface headers
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_INTERFACE_H_
#define _WXVLC_INTERFACE_H_
#include "wxwidgets.hpp"
#include <wx/dnd.h>
#include <wx/accel.h>
#include <wx/taskbar.h>
//#include "vlc_keys.h"
namespace wxvlc
{
class Timer;
class Interface;
#if wxUSE_DRAG_AND_DROP
/* Drag and Drop class */
class DragAndDrop: public wxFileDropTarget
{
public:
DragAndDrop( intf_thread_t *_p_intf, vlc_bool_t b_enqueue = VLC_FALSE );
virtual bool OnDropFiles( wxCoord x, wxCoord y,
const wxArrayString& filenames );
private:
intf_thread_t *p_intf;
vlc_bool_t b_enqueue;
};
#endif
/* Systray integration */
#ifdef wxHAS_TASK_BAR_ICON
class Systray: public wxTaskBarIcon
{
public:
Systray( Interface* p_main_interface, intf_thread_t *p_intf );
virtual ~Systray() {};
wxMenu* CreatePopupMenu();
void UpdateTooltip( const wxChar* tooltip );
private:
void OnMenuIconize( wxCommandEvent& event );
void OnLeftClick( wxTaskBarIconEvent& event );
void OnPlayStream ( wxCommandEvent& event );
void OnStopStream ( wxCommandEvent& event );
void OnPrevStream ( wxCommandEvent& event );
void OnNextStream ( wxCommandEvent& event );
void OnExit( wxCommandEvent& event );
Interface* p_main_interface;
intf_thread_t *p_intf;
DECLARE_EVENT_TABLE()
};
#endif
/* Main Interface */
class Interface: public wxFrame
{
public:
/* Constructor */
Interface( intf_thread_t *p_intf, long style = wxDEFAULT_FRAME_STYLE );
virtual ~Interface();
void Init();
void TogglePlayButton( int i_playing_status );
void Update();
void PlayStream();
void StopStream();
void PrevStream();
void NextStream();
wxBoxSizer *frame_sizer;
wxStatusBar *statusbar;
void HideSlider(bool layout = true);
void ShowSlider(bool show = true, bool layout = true);
wxSlider *slider;
wxWindow *slider_frame;
wxBoxSizer *slider_sizer;
wxPanel *extra_frame;
void HideDiscFrame(bool layout = true);
void ShowDiscFrame(bool show = true, bool layout = true);
wxPanel *disc_frame;
wxBoxSizer *disc_sizer;
wxBitmapButton *disc_menu_button;
wxBitmapButton *disc_prev_button;
wxBitmapButton *disc_next_button;
wxFrame *extra_window;
vlc_bool_t b_extra;
vlc_bool_t b_undock;
wxControl *volctrl;
#ifdef wxHAS_TASK_BAR_ICON
Systray *p_systray;
#endif
wxTimer m_controls_timer;
wxTimer m_slider_timer;
private:
void SetupHotkeys();
void CreateOurMenuBar();
void CreateOurToolBar();
void CreateOurExtendedPanel();
void CreateOurSlider();
void Open( int i_access_method );
/* Event handlers (these functions should _not_ be virtual) */
void OnControlsTimer(wxTimerEvent& WXUNUSED(event));
void OnSliderTimer(wxTimerEvent& WXUNUSED(event));
void OnExit( wxCommandEvent& event );
void OnAbout( wxCommandEvent& event );
void OnOpenFileSimple( wxCommandEvent& event );
void OnOpenDir( wxCommandEvent& event );
void OnOpenFile( wxCommandEvent& event );
void OnOpenDisc( wxCommandEvent& event );
void OnOpenNet( wxCommandEvent& event );
void OnOpenSat( wxCommandEvent& event );
void OnExtended( wxCommandEvent& event );
//void OnUndock( wxCommandEvent& event );
void OnBookmarks( wxCommandEvent& event );
void OnShowDialog( wxCommandEvent& event );
void OnPlayStream( wxCommandEvent& event );
void OnStopStream( wxCommandEvent& event );
void OnSliderUpdate( wxScrollEvent& event );
void OnPrevStream( wxCommandEvent& event );
void OnNextStream( wxCommandEvent& event );
void OnSlowStream( wxCommandEvent& event );
void OnFastStream( wxCommandEvent& event );
void OnDiscMenu( wxCommandEvent& event );
void OnDiscPrev( wxCommandEvent& event );
void OnDiscNext( wxCommandEvent& event );
void OnMenuOpen( wxMenuEvent& event );
#if defined( __WXMSW__ ) || defined( __WXMAC__ )
void OnContextMenu2(wxContextMenuEvent& event);
#endif
void OnContextMenu(wxMouseEvent& event);
void OnControlEvent( wxCommandEvent& event );
DECLARE_EVENT_TABLE();
Timer *timer;
intf_thread_t *p_intf;
wxWindow *video_window;
int i_old_playing_status;
/* For auto-generated menus */
wxMenu *p_settings_menu;
wxMenu *p_audio_menu;
wxMenu *p_video_menu;
wxMenu *p_navig_menu;
};
class WindowSettings
{
public:
WindowSettings( intf_thread_t *_p_intf );
virtual ~WindowSettings();
enum
{
ID_SCREEN = -1,
ID_MAIN,
ID_PLAYLIST,
ID_MESSAGES,
ID_FILE_INFO,
ID_BOOKMARKS,
ID_VIDEO,
ID_MAX,
};
void SetSettings( int id, bool _b_shown,
wxPoint p = wxDefaultPosition, wxSize s = wxDefaultSize );
bool GetSettings( int id, bool& _b_shown, wxPoint& p, wxSize& s );
void SetScreen( int i_screen_w, int i_screen_h );
private:
intf_thread_t *p_intf;
int i_screen_w;
int i_screen_h;
bool b_valid[ID_MAX];
bool b_shown[ID_MAX];
wxPoint position[ID_MAX];
wxSize size[ID_MAX];
};
class MenuEvtHandler : public wxEvtHandler
{
public:
MenuEvtHandler( intf_thread_t *p_intf, Interface *p_main_interface );
virtual ~MenuEvtHandler();
void OnMenuEvent( wxCommandEvent& event );
void OnShowDialog( wxCommandEvent& event );
private:
DECLARE_EVENT_TABLE()
intf_thread_t *p_intf;
Interface *p_main_interface;
};
};
/// \todo Move this to class
void PopupMenu( intf_thread_t *, wxWindow *, const wxPoint& );
wxMenu *SettingsMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
wxMenu *AudioMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
wxMenu *VideoMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
wxMenu *NavigMenu( intf_thread_t *, wxWindow *, wxMenu * = NULL );
#endif
/*****************************************************************************
* slider_manager.cpp : Manage an input slider
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: timer.cpp 11981 2005-08-03 15:03:23Z xtophe $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "main_slider_manager.hpp"
#include "interface.hpp"
#include <vlc_meta.h>
/*****************************************************************************
* Constructor.
*****************************************************************************/
MainSliderManager::MainSliderManager( intf_thread_t *_p_intf,
Interface *_p_main_intf ) :
SliderManager( _p_intf )
{
p_main_intf = _p_main_intf;
_slider = p_main_intf->slider;
}
MainSliderManager::~MainSliderManager()
{
vlc_mutex_lock( &p_intf->change_lock );
if( p_intf->p_sys->p_input ) vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->p_input = NULL;
vlc_mutex_unlock( &p_intf->change_lock );
}
/*****************************************************************************
* Private methods.
*****************************************************************************/
void MainSliderManager::UpdateInput()
{
playlist_t *p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_playlist != NULL )
{
LockPlaylist( p_intf->p_sys, p_playlist );
p_input = p_intf->p_sys->p_input = p_playlist->p_input;
if( p_intf->p_sys->p_input )
vlc_object_yield( p_intf->p_sys->p_input );
UnlockPlaylist( p_intf->p_sys, p_playlist );
vlc_object_release( p_playlist );
}
}
void MainSliderManager::UpdateNowPlaying()
{
char *psz_now_playing = vlc_input_item_GetInfo(
p_intf->p_sys->p_input->input.p_item,
_("Meta-information"), _(VLC_META_NOW_PLAYING) );
if( psz_now_playing && *psz_now_playing )
{
p_main_intf->statusbar->SetStatusText(
wxString(wxU(psz_now_playing)) + wxT( " - " ) +
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
else
{
p_main_intf->statusbar->SetStatusText(
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
free( psz_now_playing );
}
void MainSliderManager::UpdateButtons( vlc_bool_t b_play )
{
if( b_play )
{
p_main_intf->TogglePlayButton( PLAYING_S );
#ifdef wxHAS_TASK_BAR_ICON
if( p_main_intf->p_systray )
{
p_main_intf->p_systray->UpdateTooltip(
wxU( p_intf->p_sys->p_input->input.p_item->psz_name ) +
wxString(wxT(" - ")) + wxU(_("Playing")));
}
#endif
}
else
{
p_main_intf->TogglePlayButton( PAUSE_S );
p_main_intf->statusbar->SetStatusText( wxT(""), 0 );
p_main_intf->statusbar->SetStatusText( wxT(""), 2 );
#ifdef wxHAS_TASK_BAR_ICON
if( p_main_intf->p_systray )
{
p_main_intf->p_systray->UpdateTooltip( wxString(wxT("VLC media player - ")) + wxU(_("Stopped")) );
}
#endif
}
}
void MainSliderManager::HideControls()
{
p_main_intf->m_controls_timer.Start(200, wxTIMER_ONE_SHOT);
}
void MainSliderManager::DontHide()
{
p_main_intf->m_controls_timer.Stop();
/* New input or stream map change */
p_intf->p_sys->b_playing = VLC_TRUE;
}
void MainSliderManager::UpdateDiscButtons()
{
vlc_value_t val;
var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int > 0 && !p_main_intf->disc_frame->IsShown() )
{
vlc_value_t val;
#define HELP_MENU N_("Menu")
#define HELP_PCH N_("Previous chapter")
#define HELP_NCH N_("Next chapter")
#define HELP_PTR N_("Previous track")
#define HELP_NTR N_("Next track")
var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int > 0 )
{
p_main_intf->disc_menu_button->Show();
p_main_intf->disc_sizer->Show(
p_main_intf->disc_menu_button );
p_main_intf->disc_sizer->Layout();
p_main_intf->disc_sizer->Fit(
p_main_intf->disc_frame );
p_main_intf->disc_menu_button->SetToolTip(
wxU(_( HELP_MENU ) ) );
p_main_intf->disc_prev_button->SetToolTip(
wxU(_( HELP_PCH ) ) );
p_main_intf->disc_next_button->SetToolTip(
wxU(_( HELP_NCH ) ) );
}
else
{
p_main_intf->disc_menu_button->Hide();
p_main_intf->disc_sizer->Hide(
p_main_intf->disc_menu_button );
p_main_intf->disc_prev_button->SetToolTip(
wxU(_( HELP_PTR ) ) );
p_main_intf->disc_next_button->SetToolTip(
wxU(_( HELP_NTR ) ) );
}
p_main_intf->ShowDiscFrame();
}
else if( val.i_int == 0 && p_main_intf->disc_frame->IsShown() )
{
p_main_intf->HideDiscFrame();
}
}
vlc_bool_t MainSliderManager::IsShown()
{
return p_main_intf->slider_frame->IsShown();
}
void MainSliderManager::ShowSlider()
{
p_main_intf->ShowSlider();
}
void MainSliderManager::HideSlider()
{
p_main_intf->m_slider_timer.Start( 200, wxTIMER_ONE_SHOT );
}
vlc_bool_t MainSliderManager::IsFree()
{
return p_intf->p_sys->b_slider_free;
}
vlc_bool_t MainSliderManager::IsPlaying()
{
return p_intf->p_sys->b_playing;
}
void MainSliderManager::UpdateTime( char *psz_time, char *psz_total )
{
p_main_intf->statusbar->SetStatusText(
wxU(psz_time) + wxString(wxT(" / ")) +wxU(psz_total), 0 );
}
/*****************************************************************************
* slider_manager.hpp: Header for slider_manager
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clément Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _MAIN_SLIDER_MANAGER_H_
#define _MAIN_SLIDER_MANAGER_H_
#include "slider_manager.hpp"
namespace wxvlc
{
class Interface;
/**
* This class manages a slider corresponding to the main input
*/
class MainSliderManager: public SliderManager
{
public:
MainSliderManager( intf_thread_t *p_intf, Interface * );
virtual ~MainSliderManager();
protected:
virtual void UpdateInput();
virtual void UpdateNowPlaying();
virtual void UpdateButtons( vlc_bool_t );
virtual void UpdateDiscButtons();
virtual void UpdateTime( char *, char *);
virtual vlc_bool_t IsShown();
virtual vlc_bool_t IsFree();
virtual vlc_bool_t IsPlaying();
virtual void HideSlider();
virtual void ShowSlider();
virtual void HideControls();
virtual void DontHide();
Interface * p_main_intf;
};
};
#endif
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/intf.h> #include <vlc/intf.h>
#include "wxwidgets.h" #include "wxwidgets.hpp"
#include "interface.hpp"
class wxMenuItemExt: public wxMenuItem class wxMenuItemExt: public wxMenuItem
{ {
......
/*****************************************************************************
* slider_manager.cpp : Manage an input slider
*****************************************************************************
* Copyright (C) 2000-2005 the VideoLAN team
* $Id: timer.cpp 11981 2005-08-03 15:03:23Z xtophe $
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <errno.h> /* ENOMEM */
#include <string.h> /* strerror() */
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/aout.h>
#include <vlc/intf.h>
#include "vlc_meta.h"
#include "wxwidgets.hpp"
#include "slider_manager.hpp"
/*****************************************************************************
* Constructor.
*****************************************************************************/
SliderManager::SliderManager( intf_thread_t *_p_intf )
{
p_intf = _p_intf;
p_input = NULL;
i_old_playing_status = PAUSE_S;
}
SliderManager::~SliderManager()
{
vlc_mutex_lock( &p_intf->change_lock );
if( p_intf->p_sys->p_input ) vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->p_input = NULL;
vlc_mutex_unlock( &p_intf->change_lock );
}
/*****************************************************************************
* Private methods.
*****************************************************************************/
void SliderManager::Update()
{
/* Update the input */
if( p_input == NULL )
{
UpdateInput();
if( p_input )
{
_slider->SetValue( 0 );
UpdateNowPlaying();
UpdateButtons( VLC_TRUE );
i_old_playing_status = PLAYING_S;
}
}
else if( p_input->b_dead )
{
HideControls();
HideSlider();
UpdateButtons( VLC_FALSE );
i_old_playing_status = PAUSE_S;
vlc_object_release( p_input );
p_input = NULL;
}
if( p_input )
{
if( !p_input->b_die )
{
vlc_value_t pos;
DontHide();
UpdateNowPlaying();
/* Really manage the slider */
var_Get( p_input, "position", &pos );
UpdateDiscButtons();
if( pos.f_float > 0.0 && ! IsShown() )
{
ShowSlider();
}
else if( pos.f_float <= 0.0 )
{
HideSlider();
}
if( IsPlaying() && IsShown() )
{
/* Update the slider if the user isn't dragging it. */
if( IsFree() )
{
char psz_time[ MSTRTIME_MAX_SIZE ];
char psz_total[ MSTRTIME_MAX_SIZE ];
vlc_value_t time;
mtime_t i_seconds;
/* Update the value */
if( pos.f_float >= 0.0 )
{
i_slider_pos = (int)(SLIDER_MAX_POS * pos.f_float);
_slider->SetValue( i_slider_pos );
var_Get( p_input, "time", &time );
i_seconds = time.i_time / 1000000;
secstotimestr ( psz_time, i_seconds );
var_Get( p_input, "length", &time );
i_seconds = time.i_time / 1000000;
secstotimestr ( psz_total, i_seconds );
UpdateTime( psz_time, psz_total );
// p_main_interface->statusbar->SetStatusText(
// wxU(psz_time) + wxString(wxT(" / ")) +
// wxU(psz_total), 0 );
}
}
}
}
}
}
/*****************************************************************************
* slider_manager.hpp: Header for slider_manager
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Clément Stenac <zorglub@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _SLIDER_MANAGER_H_
#define _SLIDER_MANAGER_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
/**
* This class manages a slider corresponding to an input
* This class is abstract, it needs to be subclassed
*/
class SliderManager
{
public:
SliderManager( intf_thread_t *p_intf );
virtual ~SliderManager();
void Update();
protected:
virtual void UpdateInput() = 0;
virtual void UpdateNowPlaying() {};
virtual void UpdateButtons( vlc_bool_t ) {};
virtual void UpdateDiscButtons() {}
virtual void UpdateTime( char *, char *) = 0;
virtual vlc_bool_t IsShown() = 0;
virtual vlc_bool_t IsFree() = 0;
virtual vlc_bool_t IsPlaying() = 0;
virtual void HideSlider() {};
virtual void ShowSlider() {};
virtual void HideControls() {};
virtual void DontHide() {};
intf_thread_t * p_intf;
input_thread_t *p_input;
wxSlider *_slider; ///< Slider for this input
int i_slider_pos; ///< Current slider position
private:
int i_old_playing_status; ///< Previous playing status
};
};
#endif
...@@ -24,20 +24,11 @@ ...@@ -24,20 +24,11 @@
/***************************************************************************** /*****************************************************************************
* Preamble * Preamble
*****************************************************************************/ *****************************************************************************/
#include <stdlib.h> /* malloc(), free() */ #include "timer.hpp"
#include <errno.h> /* ENOMEM */ #include "main_slider_manager.hpp"
#include <string.h> /* strerror() */ #include "interface.hpp"
#include <stdio.h>
#include <vlc/vlc.h>
#include <vlc/aout.h>
#include <vlc/intf.h>
#include "vlc_meta.h" #include "vlc_meta.h"
#include "wxwidgets.h"
#include <wx/timer.h>
//void DisplayStreamDate( wxControl *, intf_thread_t *, int ); //void DisplayStreamDate( wxControl *, intf_thread_t *, int );
/* Callback prototypes */ /* Callback prototypes */
...@@ -54,6 +45,9 @@ Timer::Timer( intf_thread_t *_p_intf, Interface *_p_main_interface ) ...@@ -54,6 +45,9 @@ Timer::Timer( intf_thread_t *_p_intf, Interface *_p_main_interface )
p_intf = _p_intf; p_intf = _p_intf;
p_main_interface = _p_main_interface; p_main_interface = _p_main_interface;
b_init = 0; b_init = 0;
msm = new MainSliderManager( p_intf, p_main_interface );
i_old_playing_status = PAUSE_S; i_old_playing_status = PAUSE_S;
i_old_rate = INPUT_RATE_DEFAULT; i_old_rate = INPUT_RATE_DEFAULT;
...@@ -84,10 +78,7 @@ Timer::~Timer() ...@@ -84,10 +78,7 @@ Timer::~Timer()
vlc_object_release( p_playlist ); vlc_object_release( p_playlist );
} }
vlc_mutex_lock( &p_intf->change_lock ); delete msm;
if( p_intf->p_sys->p_input ) vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->p_input = NULL;
vlc_mutex_unlock( &p_intf->change_lock );
} }
/***************************************************************************** /*****************************************************************************
...@@ -112,204 +103,15 @@ void Timer::Notify() ...@@ -112,204 +103,15 @@ void Timer::Notify()
vlc_mutex_lock( &p_intf->change_lock ); vlc_mutex_lock( &p_intf->change_lock );
/* Update the input */ /* Call update */
if( p_intf->p_sys->p_input == NULL ) msm->Update();
{
playlist_t *p_playlist =
(playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( p_playlist != NULL )
{
LockPlaylist( p_intf->p_sys, p_playlist );
p_intf->p_sys->p_input = p_playlist->p_input;
if( p_intf->p_sys->p_input )
vlc_object_yield( p_intf->p_sys->p_input );
UnlockPlaylist( p_intf->p_sys, p_playlist );
vlc_object_release( p_playlist );
}
/* Refresh interface */
if( p_intf->p_sys->p_input )
{
p_main_interface->slider->SetValue( 0 );
char *psz_now_playing = vlc_input_item_GetInfo(
p_intf->p_sys->p_input->input.p_item,
_("Meta-information"), _(VLC_META_NOW_PLAYING) );
if( psz_now_playing && *psz_now_playing )
{
p_main_interface->statusbar->SetStatusText(
wxString(wxU(psz_now_playing)) + wxT( " - " ) +
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
else
{
p_main_interface->statusbar->SetStatusText(
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
free( psz_now_playing );
p_main_interface->TogglePlayButton( PLAYING_S );
#ifdef wxHAS_TASK_BAR_ICON
if( p_main_interface->p_systray )
{
p_main_interface->p_systray->UpdateTooltip( wxU(p_intf->p_sys->p_input->input.p_item->psz_name) + wxString(wxT(" - ")) + wxU(_("Playing")));
}
#endif
i_old_playing_status = PLAYING_S;
}
}
else if( p_intf->p_sys->p_input->b_dead )
{
//controls auto-hide after a timer
p_main_interface->m_controls_timer.Start(200, wxTIMER_ONE_SHOT);
p_main_interface->TogglePlayButton( PAUSE_S );
i_old_playing_status = PAUSE_S;
p_main_interface->statusbar->SetStatusText( wxT(""), 0 );
p_main_interface->statusbar->SetStatusText( wxT(""), 2 );
#ifdef wxHAS_TASK_BAR_ICON
if( p_main_interface->p_systray )
{
p_main_interface->p_systray->UpdateTooltip( wxString(wxT("VLC media player - ")) + wxU(_("Stopped")) );
}
#endif
vlc_object_release( p_intf->p_sys->p_input );
p_intf->p_sys->p_input = NULL;
}
vlc_value_t val;
input_thread_t *p_input = p_intf->p_sys->p_input;
if( p_intf->p_sys->p_input ) if( p_intf->p_sys->p_input )
{ {
input_thread_t *p_input = p_intf->p_sys->p_input; if( !p_intf->p_sys->p_input->b_die )
vlc_value_t val;
if( !p_input->b_die )
{ {
vlc_value_t pos;
//prevent the controls from auto-hiding
p_main_interface->m_controls_timer.Stop();
/* New input or stream map change */
p_intf->p_sys->b_playing = 1;
/* Update the item name */
char *psz_now_playing = vlc_input_item_GetInfo(
p_intf->p_sys->p_input->input.p_item,
_("Meta-information"), _(VLC_META_NOW_PLAYING) );
if( psz_now_playing && *psz_now_playing )
{
p_main_interface->statusbar->SetStatusText(
wxString(wxU(psz_now_playing)) + wxT( " - " ) +
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
else
{
p_main_interface->statusbar->SetStatusText(
wxU(p_intf->p_sys->p_input->input.p_item->psz_name), 2 );
}
free( psz_now_playing );
/* Manage the slider */
var_Get( p_input, "position", &pos );
var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
if( val.i_int > 0 && !p_main_interface->disc_frame->IsShown() )
{
vlc_value_t val;
#define HELP_MENU N_("Menu")
#define HELP_PCH N_("Previous chapter")
#define HELP_NCH N_("Next chapter")
#define HELP_PTR N_("Previous track")
#define HELP_NTR N_("Next track")
var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val,
NULL );
if( val.i_int > 0 )
{
p_main_interface->disc_menu_button->Show();
p_main_interface->disc_sizer->Show(
p_main_interface->disc_menu_button );
p_main_interface->disc_sizer->Layout();
p_main_interface->disc_sizer->Fit(
p_main_interface->disc_frame );
p_main_interface->disc_menu_button->SetToolTip(
wxU(_( HELP_MENU ) ) );
p_main_interface->disc_prev_button->SetToolTip(
wxU(_( HELP_PCH ) ) );
p_main_interface->disc_next_button->SetToolTip(
wxU(_( HELP_NCH ) ) );
}
else
{
p_main_interface->disc_menu_button->Hide();
p_main_interface->disc_sizer->Hide(
p_main_interface->disc_menu_button );
p_main_interface->disc_prev_button->SetToolTip(
wxU(_( HELP_PTR ) ) );
p_main_interface->disc_next_button->SetToolTip(
wxU(_( HELP_NTR ) ) );
}
p_main_interface->ShowDiscFrame();
}
else if( val.i_int == 0 && p_main_interface->disc_frame->IsShown() )
{
p_main_interface->HideDiscFrame();
}
if( pos.f_float > 0.0 &&
!p_main_interface->slider_frame->IsShown() )
{
/* Show the slider if it's position is significant */
p_main_interface->ShowSlider();
}
else if( pos.f_float <= 0.0 )
{
p_main_interface->m_slider_timer.Start(200, wxTIMER_ONE_SHOT);
}
if( p_intf->p_sys->b_playing &&
p_main_interface->slider_frame->IsShown() )
{
/* Update the slider if the user isn't dragging it. */
if( p_intf->p_sys->b_slider_free )
{
char psz_time[ MSTRTIME_MAX_SIZE ];
char psz_total[ MSTRTIME_MAX_SIZE ];
vlc_value_t time;
mtime_t i_seconds;
/* Update the value */
if( pos.f_float >= 0.0 )
{
p_intf->p_sys->i_slider_pos =
(int)(SLIDER_MAX_POS * pos.f_float);
p_main_interface->slider->SetValue(
p_intf->p_sys->i_slider_pos );
var_Get( p_intf->p_sys->p_input, "time", &time );
i_seconds = time.i_time / 1000000;
secstotimestr ( psz_time, i_seconds );
var_Get( p_intf->p_sys->p_input, "length", &time );
i_seconds = time.i_time / 1000000;
secstotimestr ( psz_total, i_seconds );
p_main_interface->statusbar->SetStatusText(
wxU(psz_time) + wxString(wxT(" / ")) +
wxU(psz_total), 0 );
}
}
}
/* Take care of the volume, etc... */ /* Take care of the volume, etc... */
p_main_interface->Update(); p_main_interface->Update();
......
/*****************************************************************************
* timer.hpp: Timer headers
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#include "wxwidgets.hpp"
namespace wxvlc
{
class MainSliderManager;
class Interface;
class Timer: public wxTimer
{
public:
/* Constructor */
Timer( intf_thread_t *p_intf, Interface *p_main_interface );
virtual ~Timer();
virtual void Notify();
private:
//use wxWindow::IsShown instead
//vlc_bool_t b_slider_shown;
//vlc_bool_t b_disc_shown;
intf_thread_t *p_intf;
Interface *p_main_interface;
vlc_bool_t b_init;
int i_old_playing_status;
int i_old_rate;
MainSliderManager *msm;
};
}
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
#include <vlc/vout.h> #include <vlc/vout.h>
#include <vlc/intf.h> #include <vlc/intf.h>
#include "wxwidgets.h" #include "video.hpp"
#include "interface.hpp"
static void *GetWindow( intf_thread_t *p_intf, vout_thread_t *, static void *GetWindow( intf_thread_t *p_intf, vout_thread_t *,
int *pi_x_hint, int *pi_y_hint, int *pi_x_hint, int *pi_y_hint,
...@@ -49,40 +50,6 @@ enum ...@@ -49,40 +50,6 @@ enum
ID_HIDE_TIMER ID_HIDE_TIMER
}; };
class VideoWindow: public wxWindow
{
public:
/* Constructor */
VideoWindow( intf_thread_t *_p_intf, wxWindow *p_parent );
virtual ~VideoWindow();
void *GetWindow( vout_thread_t *p_vout, int *, int *,
unsigned int *, unsigned int * );
void ReleaseWindow( void * );
int ControlWindow( void *, int, va_list );
mtime_t i_creation_date;
private:
intf_thread_t *p_intf;
vout_thread_t *p_vout;
wxWindow *p_parent;
vlc_mutex_t lock;
vlc_bool_t b_shown;
vlc_bool_t b_auto_size;
wxWindow *p_child_window;
wxTimer m_hide_timer;
void UpdateSize( wxEvent& event );
void UpdateHide( wxEvent& event );
void OnControlEvent( wxCommandEvent& event );
void OnHideTimer( wxTimerEvent& WXUNUSED(event));
DECLARE_EVENT_TABLE();
};
DEFINE_LOCAL_EVENT_TYPE( wxEVT_VLC_VIDEO ); DEFINE_LOCAL_EVENT_TYPE( wxEVT_VLC_VIDEO );
BEGIN_EVENT_TABLE(VideoWindow, wxWindow) BEGIN_EVENT_TABLE(VideoWindow, wxWindow)
......
/*****************************************************************************
* video.hpp: Embedded video management
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub $
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _WXVLC_VIDEO_H_
#define _WXVLC_VIDEO_H_
#include "wxwidgets.hpp"
namespace wxvlc
{
class VideoWindow: public wxWindow
{
public:
/* Constructor */
VideoWindow( intf_thread_t *_p_intf, wxWindow *p_parent );
virtual ~VideoWindow();
void *GetWindow( vout_thread_t *p_vout, int *, int *,
unsigned int *, unsigned int * );
void ReleaseWindow( void * );
int ControlWindow( void *, int, va_list );
mtime_t i_creation_date;
private:
intf_thread_t *p_intf;
vout_thread_t *p_vout;
wxWindow *p_parent;
vlc_mutex_t lock;
vlc_bool_t b_shown;
vlc_bool_t b_auto_size;
wxWindow *p_child_window;
wxTimer m_hide_timer;
void UpdateSize( wxEvent& event );
void UpdateHide( wxEvent& event );
void OnControlEvent( wxCommandEvent& event );
void OnHideTimer( wxTimerEvent& WXUNUSED(event));
DECLARE_EVENT_TABLE();
};
};
/* Delegates - Todo: fix this (remove 1st, make 2nd method) */
wxWindow *CreateVideoWindow( intf_thread_t *p_intf, wxWindow *p_parent );
void UpdateVideoWindow( intf_thread_t *p_intf, wxWindow *p_window );
#endif
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
# include <locale.h> # include <locale.h>
#endif #endif
#include "wxwidgets.h" #include "interface.hpp"
/* Temporary hack */ /* Temporary hack */
#if defined(WIN32) && defined(_WX_INIT_H_) #if defined(WIN32) && defined(_WX_INIT_H_)
......
This diff is collapsed.
This diff is collapsed.
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