Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
a644825a
Commit
a644825a
authored
Nov 30, 2005
by
Gildas Bazin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* modules/gui/wxwidgets: massive cleanup and simplification of the main interface code.
parent
70e52acc
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
718 additions
and
948 deletions
+718
-948
modules/gui/wxwidgets/Modules.am
modules/gui/wxwidgets/Modules.am
+2
-4
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.cpp
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.cpp
+77
-9
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.hpp
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.hpp
+9
-3
modules/gui/wxwidgets/extrapanel.cpp
modules/gui/wxwidgets/extrapanel.cpp
+1
-4
modules/gui/wxwidgets/extrapanel.hpp
modules/gui/wxwidgets/extrapanel.hpp
+1
-1
modules/gui/wxwidgets/input_manager.cpp
modules/gui/wxwidgets/input_manager.cpp
+441
-0
modules/gui/wxwidgets/input_manager.hpp
modules/gui/wxwidgets/input_manager.hpp
+90
-0
modules/gui/wxwidgets/interface.cpp
modules/gui/wxwidgets/interface.cpp
+72
-390
modules/gui/wxwidgets/interface.hpp
modules/gui/wxwidgets/interface.hpp
+15
-42
modules/gui/wxwidgets/main_slider_manager.cpp
modules/gui/wxwidgets/main_slider_manager.cpp
+0
-207
modules/gui/wxwidgets/main_slider_manager.hpp
modules/gui/wxwidgets/main_slider_manager.hpp
+0
-62
modules/gui/wxwidgets/slider_manager.cpp
modules/gui/wxwidgets/slider_manager.cpp
+0
-150
modules/gui/wxwidgets/timer.cpp
modules/gui/wxwidgets/timer.cpp
+5
-61
modules/gui/wxwidgets/timer.hpp
modules/gui/wxwidgets/timer.hpp
+3
-6
modules/gui/wxwidgets/video.hpp
modules/gui/wxwidgets/video.hpp
+1
-1
modules/gui/wxwidgets/wxwidgets.cpp
modules/gui/wxwidgets/wxwidgets.cpp
+0
-2
modules/gui/wxwidgets/wxwidgets.hpp
modules/gui/wxwidgets/wxwidgets.hpp
+1
-6
No files found.
modules/gui/wxwidgets/Modules.am
View file @
a644825a
...
...
@@ -8,8 +8,7 @@ SOURCES_wxwidgets = \
menus.cpp \
timer.cpp \
video.cpp \
slider_manager.cpp \
main_slider_manager.cpp \
input_manager.cpp \
dialogs.cpp \
dialogs/open.cpp \
dialogs/streamout.cpp \
...
...
@@ -41,8 +40,7 @@ EXTRA_DIST += \
extrapanel.hpp \
timer.hpp \
video.hpp \
slider_manager.hpp \
main_slider_manager.hpp \
input_manager.hpp \
dialogs/fileinfo.hpp \
dialogs/preferences.hpp \
dialogs/wizard.hpp \
...
...
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.cpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* 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
$
* $Id$
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
...
...
@@ -32,11 +32,13 @@
* Constructor.
*****************************************************************************/
VLMSliderManager
::
VLMSliderManager
(
intf_thread_t
*
_p_intf
,
VLMBroadcastStreamPanel
*
_p_sp
)
:
SliderManager
(
_p_intf
)
VLMBroadcastStreamPanel
*
_p_sp
)
{
p_intf
=
_p_intf
;
p_input
=
NULL
;
p_sp
=
_p_sp
;
_
slider
=
p_sp
->
p_slider
;
slider
=
p_sp
->
p_slider
;
b_slider_free
=
VLC_TRUE
;
time_string
=
wxU
(
"0:00:00 / 0:00:00"
);
...
...
@@ -47,9 +49,75 @@ VLMSliderManager::~VLMSliderManager()
}
/*****************************************************************************
* P
rivate
methods.
* P
ublic
methods.
*****************************************************************************/
void
VLMSliderManager
::
Update
()
{
/* Update the input */
if
(
p_input
==
NULL
)
{
UpdateInput
();
if
(
p_input
)
{
slider
->
SetValue
(
0
);
UpdateButtons
(
VLC_TRUE
);
}
}
else
if
(
p_input
->
b_dead
)
{
HideSlider
();
UpdateButtons
(
VLC_FALSE
);
vlc_object_release
(
p_input
);
p_input
=
NULL
;
}
if
(
p_input
&&
!
p_input
->
b_die
)
{
vlc_value_t
pos
;
/* Really manage the slider */
var_Get
(
p_input
,
"position"
,
&
pos
);
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
);
}
}
}
}
}
/*****************************************************************************
* Private methods.
*****************************************************************************/
void
VLMSliderManager
::
UpdateInput
()
{
if
(
p_sp
->
GetStream
()
->
p_media
->
i_instance
==
0
)
...
...
@@ -75,18 +143,18 @@ void VLMSliderManager::UpdateButtons( vlc_bool_t b_play )
vlc_bool_t
VLMSliderManager
::
IsShown
()
{
return
_
slider
->
IsEnabled
();
return
slider
->
IsEnabled
();
}
void
VLMSliderManager
::
ShowSlider
()
{
_
slider
->
Enable
();
slider
->
Enable
();
}
void
VLMSliderManager
::
HideSlider
()
{
_
slider
->
SetValue
(
0
);
_
slider
->
Disable
();
slider
->
SetValue
(
0
);
slider
->
Disable
();
UpdateTime
(
"0:00:00"
,
"0:00:00"
);
}
...
...
modules/gui/wxwidgets/dialogs/vlm/vlm_slider_manager.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* 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
$
* $Id$
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
...
...
@@ -24,7 +24,7 @@
#ifndef _VLM_SLIDER_MANAGER_H_
#define _VLM_SLIDER_MANAGER_H_
#include "
slider_manager
.hpp"
#include "
wxwidgets
.hpp"
namespace
wxvlc
{
...
...
@@ -32,7 +32,7 @@ namespace wxvlc
/**
* This class manages a slider corresponding to the main input
*/
class
VLMSliderManager
:
public
SliderManager
class
VLMSliderManager
{
public:
VLMSliderManager
(
intf_thread_t
*
,
VLMBroadcastStreamPanel
*
);
...
...
@@ -40,6 +40,7 @@ namespace wxvlc
wxString
time_string
;
void
Update
();
void
ProcessUpdate
(
wxScrollEvent
&
);
protected:
...
...
@@ -56,6 +57,11 @@ namespace wxvlc
virtual
void
ShowSlider
();
VLMBroadcastStreamPanel
*
p_sp
;
intf_thread_t
*
p_intf
;
input_thread_t
*
p_input
;
wxSlider
*
slider
;
///< Slider for this input
int
i_slider_pos
;
///< Current slider position
};
};
...
...
modules/gui/wxwidgets/extrapanel.cpp
View file @
a644825a
...
...
@@ -150,7 +150,6 @@ static const struct filter vfilters[] =
{
"clone"
,
N_
(
"Image clone"
),
N_
(
"Creates several clones of the image"
)
},
{
"distort"
,
N_
(
"Distortion"
),
N_
(
"Adds distorsion effects"
)
},
{
"invert"
,
N_
(
"Image inversion"
)
,
N_
(
"Inverts the image colors"
)
},
{
"crop"
,
N_
(
"Image cropping"
),
N_
(
"Crops the image"
)
},
{
"motionblur"
,
N_
(
"Blurring"
),
N_
(
"Creates a motion blurring on the image"
)
},
{
"transform"
,
N_
(
"Transformation"
),
N_
(
"Rotates or flips the image"
)
},
{
"magnify"
,
N_
(
"Magnify"
),
N_
(
"Magnifies part of the image"
)
},
...
...
@@ -311,7 +310,7 @@ wxPanel *ExtraPanel::VideoPanel( wxWindow *parent )
{
wxCheckBox
*
box
=
new
wxCheckBox
(
panel
,
Filter0_Event
+
i
,
wxU
(
_
(
vfilters
[
i
].
psz_name
)
)
);
t_col_sizer
->
Add
(
box
,
0
,
wxALL
,
4
);
t_col_sizer
->
Add
(
box
,
0
,
wxALL
,
2
);
box
->
SetToolTip
(
wxU
(
_
(
vfilters
[
i
].
psz_help
)
)
);
}
...
...
@@ -1215,13 +1214,11 @@ ExtraWindow::ExtraWindow( intf_thread_t *_p_intf, wxWindow *p_parent,
wxFrame( p_parent, -1, wxU(_("Extended controls")), wxDefaultPosition,
wxDefaultSize, wxDEFAULT_FRAME_STYLE )
{
fprintf(stderr,"Creating extrawindow\n");
p_intf = _p_intf;
SetIcon( *p_intf->p_sys->p_icon );
wxBoxSizer *window_sizer = new wxBoxSizer( wxVERTICAL );
SetSizer( window_sizer );
// panel = new ExtraPanel( p_intf, this );//_extra_panel;
panel = _extra_panel;
window_sizer->Add( panel );
...
...
modules/gui/wxwidgets/extrapanel.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* 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
$
* $Id$
*
* Authors: Clment Stenac <zorglub@videolan.org>
*
...
...
modules/gui/wxwidgets/input_manager.cpp
0 → 100644
View file @
a644825a
This diff is collapsed.
Click to expand it.
modules/gui/wxwidgets/
slider
_manager.hpp
→
modules/gui/wxwidgets/
input
_manager.hpp
View file @
a644825a
/*****************************************************************************
*
slider_manager.hpp: Header for slider
_manager
*
input_manager.hpp: Header for input
_manager
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id
: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin
$
* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Authors: Gildas Bazin <gbazin@videolan.org>
* 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
...
...
@@ -21,50 +22,67 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef _
SLIDER
_MANAGER_H_
#define _
SLIDER
_MANAGER_H_
#ifndef _
INPUT
_MANAGER_H_
#define _
INPUT
_MANAGER_H_
#include "wxwidgets.hpp"
namespace
wxvlc
{
class
Interface
;
/**
* This class manages a slider corresponding to an input
* This class is abstract, it needs to be subclassed
* This class manages all the controls related to the input
*/
class
SliderManager
class
InputManager
:
public
wxPanel
{
public:
SliderManager
(
intf_thread_t
*
p_intf
);
virtual
~
Slider
Manager
();
InputManager
(
intf_thread_t
*
,
Interface
*
,
wxWindow
*
);
virtual
~
Input
Manager
();
void
Update
();
vlc_bool_t
IsPlaying
();
protected:
virtual
void
UpdateInput
()
=
0
;
virtual
void
UpdateNowPlaying
()
{};
virtual
void
UpdateButtons
(
vlc_bool_t
)
{};
virtual
void
UpdateDiscButtons
()
{}
virtual
void
UpdateTime
(
char
*
,
char
*
)
=
0
;
void
UpdateInput
();
void
UpdateNowPlaying
();
void
UpdateButtons
(
vlc_bool_t
);
void
UpdateDiscButtons
();
void
UpdateTime
();
void
HideSlider
();
void
ShowSlider
(
bool
show
=
true
);
virtual
vlc_bool_t
IsShown
()
=
0
;
virtual
vlc_bool_t
IsFree
()
=
0
;
virtual
vlc_bool_t
IsPlaying
()
=
0
;
void
OnSliderUpdate
(
wxScrollEvent
&
event
);
virtual
void
HideSlider
()
{};
virtual
void
ShowSlider
()
{};
void
OnDiscMenu
(
wxCommandEvent
&
event
);
void
OnDiscPrev
(
wxCommandEvent
&
event
);
void
OnDiscNext
(
wxCommandEvent
&
event
);
virtual
void
HideControls
()
{};
virtual
void
DontHide
()
{};
void
HideDiscFrame
();
void
ShowDiscFrame
(
bool
show
=
true
);
wxPanel
*
disc_frame
;
wxBoxSizer
*
disc_sizer
;
wxBitmapButton
*
disc_menu_button
;
wxBitmapButton
*
disc_prev_button
;
wxBitmapButton
*
disc_next_button
;
intf_thread_t
*
p_intf
;
input_thread_t
*
p_input
;
wxSlider
*
_slider
;
///< Slider for this input
Interface
*
p_main_intf
;
wxSlider
*
slider
;
///< Slider for this input
int
i_slider_pos
;
///< Current slider position
vlc_bool_t
b_slider_free
;
///< Slider status
wxBoxSizer
*
sizer
;
private:
int
i_old_playing_status
;
///< Previous playing status
DECLARE_EVENT_TABLE
();
int
i_old_playing_status
;
///< Previous playing status
int
i_old_rate
;
///< Previous playing rate
};
};
...
...
modules/gui/wxwidgets/interface.cpp
View file @
a644825a
This diff is collapsed.
Click to expand it.
modules/gui/wxwidgets/interface.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* interface.hpp: Main interface headers
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id
: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub
$
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
...
...
@@ -25,11 +25,11 @@
#define _WXVLC_INTERFACE_H_
#include "wxwidgets.hpp"
#include "input_manager.hpp"
#include <wx/dnd.h>
#include <wx/accel.h>
#include <wx/taskbar.h>
//#include "vlc_keys.h"
namespace
wxvlc
...
...
@@ -91,30 +91,17 @@ namespace wxvlc
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
;
wxBoxSizer
*
main_sizer
;
void
HideDiscFrame
(
bool
layout
=
true
)
;
void
ShowDiscFrame
(
bool
show
=
true
,
bool
layout
=
true
)
;
wxPanel
*
main_panel
;
wxBoxSizer
*
panel_sizer
;
wxPanel
*
disc_frame
;
wxBoxSizer
*
disc_sizer
;
wxBitmapButton
*
disc_menu_button
;
wxBitmapButton
*
disc_prev_button
;
wxBitmapButton
*
disc_next_button
;
wxStatusBar
*
statusbar
;
wxFrame
*
extra_window
;
InputManager
*
input_manager
;
vlc_bool_t
b_extra
;
vlc_bool_t
b_undock
;
vlc_bool_t
b_extra
;
wxPanel
*
extra_frame
;
wxControl
*
volctrl
;
...
...
@@ -122,21 +109,18 @@ namespace wxvlc
Systray
*
p_systray
;
#endif
wxTimer
m_controls_timer
;
wxTimer
m_slider_timer
;
wxWindow
*
video_window
;
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
SetIntfMinSize
();
/* Event handlers (these functions should _not_ be virtual) */
void
OnExit
(
wxCommandEvent
&
event
);
void
OnAbout
(
wxCommandEvent
&
event
);
...
...
@@ -148,22 +132,16 @@ namespace wxvlc
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__ )
...
...
@@ -178,8 +156,6 @@ namespace wxvlc
Timer
*
timer
;
intf_thread_t
*
p_intf
;
wxWindow
*
video_window
;
int
i_old_playing_status
;
/* For auto-generated menus */
...
...
@@ -188,10 +164,9 @@ namespace wxvlc
wxMenu
*
p_video_menu
;
wxMenu
*
p_navig_menu
;
/* utility dimensions */
wxSize
default_size
;
wxSize
extended_size
;
wxSize
slider_size
;
/* Utility dimensions */
wxSize
main_min_size
;
wxSize
ext_min_size
;
};
...
...
@@ -247,12 +222,10 @@ namespace wxvlc
};
};
/// \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
modules/gui/wxwidgets/main_slider_manager.cpp
deleted
100644 → 0
View file @
70e52acc
/*****************************************************************************
* 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
);
}
modules/gui/wxwidgets/main_slider_manager.hpp
deleted
100644 → 0
View file @
70e52acc
/*****************************************************************************
* 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
modules/gui/wxwidgets/slider_manager.cpp
deleted
100644 → 0
View file @
70e52acc
/*****************************************************************************
* 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 );
}
}
}
}
}
}
modules/gui/wxwidgets/timer.cpp
View file @
a644825a
...
...
@@ -25,7 +25,7 @@
* Preamble
*****************************************************************************/
#include "timer.hpp"
#include "
main_slider
_manager.hpp"
#include "
input
_manager.hpp"
#include "interface.hpp"
#include "vlc_meta.h"
...
...
@@ -46,11 +46,6 @@ Timer::Timer( intf_thread_t *_p_intf, Interface *_p_main_interface )
p_main_interface
=
_p_main_interface
;
b_init
=
0
;
msm
=
new
MainSliderManager
(
p_intf
,
p_main_interface
);
i_old_playing_status
=
PAUSE_S
;
i_old_rate
=
INPUT_RATE_DEFAULT
;
/* Register callback for the intf-popupmenu variable */
playlist_t
*
p_playlist
=
(
playlist_t
*
)
vlc_object_find
(
p_intf
,
VLC_OBJECT_PLAYLIST
,
...
...
@@ -77,8 +72,6 @@ Timer::~Timer()
var_DelCallback
(
p_playlist
,
"intf-show"
,
IntfShowCB
,
p_intf
);
vlc_object_release
(
p_playlist
);
}
delete
msm
;
}
/*****************************************************************************
...
...
@@ -104,61 +97,12 @@ void Timer::Notify()
vlc_mutex_lock
(
&
p_intf
->
change_lock
);
/* Call update */
msm
->
Update
();
p_main_interface
->
input_manager
->
Update
();
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
->
b_die
)
{
/* Take care of the volume, etc... */
p_main_interface
->
Update
();
/* Manage Playing status */
var_Get
(
p_input
,
"state"
,
&
val
);
if
(
i_old_playing_status
!=
val
.
i_int
)
{
if
(
val
.
i_int
==
PAUSE_S
)
{
p_main_interface
->
TogglePlayButton
(
PAUSE_S
);
}
else
{
p_main_interface
->
TogglePlayButton
(
PLAYING_S
);
}
#ifdef wxHAS_TASK_BAR_ICON
if
(
p_main_interface
->
p_systray
)
{
if
(
val
.
i_int
==
PAUSE_S
)
{
p_main_interface
->
p_systray
->
UpdateTooltip
(
wxU
(
p_intf
->
p_sys
->
p_input
->
input
.
p_item
->
psz_name
)
+
wxString
(
wxT
(
" - "
))
+
wxU
(
_
(
"Paused"
)));
}
else
{
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
=
val
.
i_int
;
}
/* Manage Speed status */
var_Get
(
p_input
,
"rate"
,
&
val
);
if
(
i_old_rate
!=
val
.
i_int
)
{
p_main_interface
->
statusbar
->
SetStatusText
(
wxString
::
Format
(
wxT
(
"x%.2f"
),
(
float
)
INPUT_RATE_DEFAULT
/
val
.
i_int
),
1
);
i_old_rate
=
val
.
i_int
;
}
}
}
else
if
(
p_intf
->
p_sys
->
b_playing
&&
!
p_intf
->
b_die
)
if
(
p_main_interface
->
input_manager
->
IsPlaying
()
)
{
p_intf
->
p_sys
->
b_playing
=
0
;
p_main_interface
->
TogglePlayButton
(
PAUSE_S
);
i_old_playing_status
=
PAUSE_S
;
/* Take care of the volume, etc... */
p_main_interface
->
Update
();
}
/* Show the interface, if requested */
...
...
modules/gui/wxwidgets/timer.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* timer.hpp: Timer headers
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id
: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin
$
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
...
...
@@ -25,7 +25,7 @@
namespace
wxvlc
{
class
MainSlider
Manager
;
class
Input
Manager
;
class
Interface
;
class
Timer
:
public
wxTimer
...
...
@@ -38,16 +38,13 @@ namespace wxvlc
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
;
MainSlider
Manager
*
msm
;
Input
Manager
*
msm
;
};
}
modules/gui/wxwidgets/video.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* video.hpp: Embedded video management
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id
: wxwidgets.h 12670 2005-09-25 11:16:31Z zorglub
$
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
...
...
modules/gui/wxwidgets/wxwidgets.cpp
View file @
a644825a
...
...
@@ -180,8 +180,6 @@ static int Open( vlc_object_t *p_this )
p_intf
->
p_sys
->
p_input
=
NULL
;
p_intf
->
p_sys
->
i_playing
=
-
1
;
p_intf
->
p_sys
->
b_slider_free
=
1
;
p_intf
->
p_sys
->
i_slider_pos
=
p_intf
->
p_sys
->
i_slider_oldpos
=
0
;
p_intf
->
p_sys
->
p_popup_menu
=
NULL
;
p_intf
->
p_sys
->
p_video_window
=
NULL
;
...
...
modules/gui/wxwidgets/wxwidgets.hpp
View file @
a644825a
...
...
@@ -2,7 +2,7 @@
* wxwidgets.hpp: Common headers for the wxwidges interface
*****************************************************************************
* Copyright (C) 1999-2005 the VideoLAN team
* $Id
: wxwidgets.h 12502 2005-09-09 19:38:01Z gbazin
$
* $Id$
*
* Authors: Gildas Bazin <gbazin@videolan.org>
*
...
...
@@ -137,11 +137,6 @@ struct intf_sys_t
/* The input thread */
input_thread_t
*
p_input
;
/* The slider */
int
i_slider_pos
;
/* slider position */
int
i_slider_oldpos
;
/* previous position */
vlc_bool_t
b_slider_free
;
/* slider status */
/* The messages window */
msg_subscription_t
*
p_sub
;
/* message bank subscription */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment