0ba235ecbe
from vlc subversion via Alexey Suslikov. - use jack_client_connect() instead of jack_client_new() so multiple instances of vlc can connect to jackd concurrently. problem reported by Alexey Suslikov.
274 lines
8.5 KiB
Plaintext
274 lines
8.5 KiB
Plaintext
$OpenBSD: patch-modules_gui_wxwidgets_interface_cpp,v 1.1 2008/05/11 18:12:41 jakemsr Exp $
|
|
--- modules/gui/wxwidgets/interface.cpp.orig Mon Mar 24 00:41:49 2008
|
|
+++ modules/gui/wxwidgets/interface.cpp Fri May 9 02:35:20 2008
|
|
@@ -67,7 +67,7 @@
|
|
/*****************************************************************************
|
|
* Local prototypes
|
|
*****************************************************************************/
|
|
-static int InteractCallback( vlc_object_t *, const char *, vlc_value_t,
|
|
+ static int InteractCallback( vlc_object_t *, const char *, vlc_value_t,
|
|
vlc_value_t, void *);
|
|
|
|
/*****************************************************************************
|
|
@@ -93,33 +93,6 @@ class wxMenuExt: public wxMenu (private)
|
|
|
|
};
|
|
|
|
-class wxVolCtrl;
|
|
-class VLCVolCtrl : public wxControl
|
|
-{
|
|
-public:
|
|
- VLCVolCtrl( intf_thread_t *p_intf, wxWindow *p_parent );
|
|
- virtual ~VLCVolCtrl() {};
|
|
-
|
|
- virtual void OnPaint( wxPaintEvent &event );
|
|
- void OnChange( wxMouseEvent& event );
|
|
- void UpdateVolume();
|
|
-
|
|
- private:
|
|
- DECLARE_EVENT_TABLE()
|
|
-
|
|
- wxVolCtrl *gauge;
|
|
- int i_y_offset;
|
|
- vlc_bool_t b_mute;
|
|
- intf_thread_t *p_intf;
|
|
-};
|
|
-
|
|
-BEGIN_EVENT_TABLE(VLCVolCtrl, wxControl)
|
|
- EVT_PAINT(VLCVolCtrl::OnPaint)
|
|
-
|
|
- /* Mouse events */
|
|
- EVT_LEFT_UP(VLCVolCtrl::OnChange)
|
|
-END_EVENT_TABLE()
|
|
-
|
|
class Splitter : public wxSplitterWindow
|
|
{
|
|
public:
|
|
@@ -291,6 +264,8 @@ enum
|
|
NextStream_Event,
|
|
SlowStream_Event,
|
|
FastStream_Event,
|
|
+ ToggleMute_Event,
|
|
+ SlideVolume_Event,
|
|
|
|
/* it is important for the id corresponding to the "About" command to have
|
|
* this standard value as otherwise it won't be handled properly under Mac
|
|
@@ -344,6 +319,8 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
|
|
EVT_MENU(NextStream_Event, Interface::OnNextStream)
|
|
EVT_MENU(SlowStream_Event, Interface::OnSlowStream)
|
|
EVT_MENU(FastStream_Event, Interface::OnFastStream)
|
|
+ EVT_MENU(ToggleMute_Event, Interface::OnToggleMute)
|
|
+ EVT_COMMAND_SCROLL(SlideVolume_Event, Interface::OnSlideVolume)
|
|
|
|
/* Custom events */
|
|
EVT_COMMAND(0, wxEVT_INTF, Interface::OnControlEvent)
|
|
@@ -530,7 +507,7 @@ void Interface::Init()
|
|
void Interface::Update()
|
|
{
|
|
/* Misc updates */
|
|
- if( !(i_update_counter % 10) ) ((VLCVolCtrl *)volctrl)->UpdateVolume();
|
|
+// if( !(i_update_counter % 10) ) ((VLCVolCtrl *)volctrl)->UpdateVolume();
|
|
|
|
if( playlist_manager ) playlist_manager->Update();
|
|
|
|
@@ -683,6 +660,7 @@ void Interface::CreateOurToolBar()
|
|
#define HELP_PLN N_("Next playlist item")
|
|
#define HELP_SLOW N_("Play slower")
|
|
#define HELP_FAST N_("Play faster")
|
|
+#define HELP_VOL N_("Toggle mute/unmute of the audio")
|
|
|
|
#define LABEL_OPEN N_("Open")
|
|
#define LABEL_STOP N_("Stop")
|
|
@@ -694,6 +672,8 @@ void Interface::CreateOurToolBar()
|
|
#define LABEL_PLN N_("Next")
|
|
#define LABEL_SLOW N_("Slower")
|
|
#define LABEL_FAST N_("Faster")
|
|
+#define LABEL_VOL N_("Mute")
|
|
+
|
|
int minimal = config_GetInt( p_intf, "wx-minimal" );
|
|
bool label = config_GetInt( p_intf, "wx-labels" );
|
|
|
|
@@ -740,15 +720,16 @@ void Interface::CreateOurToolBar()
|
|
wxBitmap( playlist_small_xpm ), wxU(_(HELP_SPLO)) );
|
|
}
|
|
|
|
- wxControl *p_dummy_ctrl =
|
|
- new wxControl( toolbar, -1, wxDefaultPosition,
|
|
- wxSize(16, 16 ), wxBORDER_NONE );
|
|
+ wxToolBarToolBase *v_tool = toolbar->AddTool( ToggleMute_Event,
|
|
+ wxU(LABEL_VOL), wxBitmap( speaker_xpm ),
|
|
+ wxU(_(HELP_VOL)), wxITEM_CHECK );
|
|
+ v_tool->SetClientData( v_tool );
|
|
|
|
- toolbar->AddControl( p_dummy_ctrl );
|
|
+ wxSlider *v_gauge = new wxSlider(toolbar, SlideVolume_Event, 256, 0,
|
|
+ AOUT_VOLUME_MAX, wxDefaultPosition,
|
|
+ wxSize(64,TOOLBAR_BMP_HEIGHT), wxSL_HORIZONTAL);
|
|
+ toolbar->AddControl(v_gauge);
|
|
|
|
- volctrl = new VLCVolCtrl( p_intf, toolbar );
|
|
- toolbar->AddControl( volctrl );
|
|
-
|
|
toolbar->Realize();
|
|
|
|
#if wxUSE_DRAG_AND_DROP
|
|
@@ -1199,6 +1180,49 @@ void Interface::OnFastStream( wxCommandEvent& WXUNUSED
|
|
}
|
|
}
|
|
|
|
+void Interface::OnToggleMute ( wxCommandEvent& WXUNUSED(event) )
|
|
+{
|
|
+ aout_VolumeMute(p_intf, NULL);
|
|
+ SyncVolume();
|
|
+
|
|
+}
|
|
+
|
|
+void Interface::SyncVolume()
|
|
+{
|
|
+ wxToolBarToolBase *p_tool = (wxToolBarToolBase *)
|
|
+ GetToolBar()->GetToolClientData( ToggleMute_Event );
|
|
+ if ( !p_tool) return;
|
|
+
|
|
+ audio_volume_t i_volume;
|
|
+ aout_VolumeGet(p_intf, &i_volume);
|
|
+
|
|
+// Updating the Mute Button... IF the slider is completely moved to the left,
|
|
+// the mute icon is shown too.
|
|
+ p_tool->SetNormalBitmap( wxBitmap( i_volume ? speaker_xpm : speaker_mute_xpm ) );
|
|
+ GetToolBar()->Realize();
|
|
+#if defined( __WXMSW__ )
|
|
+ /* Needed to work around a bug in wxToolBar::Realize() */
|
|
+ GetToolBar()->SetSize( GetSize().GetWidth(),
|
|
+ GetToolBar()->GetSize().GetHeight() );
|
|
+ GetToolBar()->Update();
|
|
+#endif
|
|
+// the Toggle to true and false is nescessary; otherwise, the Icon is not repainted
|
|
+ GetToolBar()->ToggleTool( ToggleMute_Event, true );
|
|
+ GetToolBar()->ToggleTool( ToggleMute_Event, false );
|
|
+ GetToolBar()->Update();
|
|
+}
|
|
+
|
|
+void Interface::OnSlideVolume( wxScrollEvent& WXUNUSED(event))
|
|
+{
|
|
+ wxSlider *p_tool = (wxSlider *)
|
|
+ GetToolBar()->FindControl( SlideVolume_Event );
|
|
+ if ( !p_tool) return;
|
|
+
|
|
+ aout_VolumeSet(p_intf , p_tool->GetValue());
|
|
+ SyncVolume();
|
|
+
|
|
+}
|
|
+
|
|
void Interface::TogglePlayButton( int i_playing_status )
|
|
{
|
|
wxToolBarToolBase *p_tool = (wxToolBarToolBase *)
|
|
@@ -1323,108 +1347,6 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord,
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
-
|
|
-/*****************************************************************************
|
|
- * Definition of VolCtrl class.
|
|
- *****************************************************************************/
|
|
-class wxVolCtrl: public wxGauge
|
|
-{
|
|
-public:
|
|
- /* Constructor */
|
|
- wxVolCtrl( intf_thread_t *_p_intf, wxWindow* parent, wxWindowID id,
|
|
- wxPoint = wxDefaultPosition, wxSize = wxSize( 20, -1 ) );
|
|
- virtual ~wxVolCtrl() {};
|
|
-
|
|
- void UpdateVolume();
|
|
- int GetVolume();
|
|
-
|
|
- void OnChange( wxMouseEvent& event );
|
|
-
|
|
-private:
|
|
- intf_thread_t *p_intf;
|
|
-
|
|
- DECLARE_EVENT_TABLE();
|
|
-};
|
|
-
|
|
-BEGIN_EVENT_TABLE(wxVolCtrl, wxWindow)
|
|
- /* Mouse events */
|
|
- EVT_LEFT_DOWN(wxVolCtrl::OnChange)
|
|
- EVT_MOTION(wxVolCtrl::OnChange)
|
|
-END_EVENT_TABLE()
|
|
-
|
|
-wxVolCtrl::wxVolCtrl( intf_thread_t *_p_intf, wxWindow* parent, wxWindowID id,
|
|
- wxPoint point, wxSize size )
|
|
- : wxGauge( parent, id, 200, point, size, wxGA_HORIZONTAL | wxGA_SMOOTH )
|
|
-{
|
|
- p_intf = _p_intf;
|
|
- UpdateVolume();
|
|
-}
|
|
-
|
|
-void wxVolCtrl::OnChange( wxMouseEvent& event )
|
|
-{
|
|
- if( !event.LeftDown() && !event.LeftIsDown() ) return;
|
|
-
|
|
- int i_volume = event.GetX() * 200 / GetClientSize().GetWidth();
|
|
- aout_VolumeSet( p_intf, i_volume * AOUT_VOLUME_MAX / 200 / 2 );
|
|
- UpdateVolume();
|
|
-}
|
|
-
|
|
-void wxVolCtrl::UpdateVolume()
|
|
-{
|
|
- audio_volume_t i_volume;
|
|
- aout_VolumeGet( p_intf, &i_volume );
|
|
-
|
|
- int i_gauge_volume = i_volume * 200 * 2 / AOUT_VOLUME_MAX;
|
|
- if( i_gauge_volume == GetValue() ) return;
|
|
-
|
|
- SetValue( i_gauge_volume );
|
|
- SetToolTip( wxString::Format((wxString)wxU(_("Volume")) + wxT(" %d"),
|
|
- i_gauge_volume / 2 ) );
|
|
-}
|
|
-
|
|
-#if defined(__WXGTK__)
|
|
-#define VLCVOL_HEIGHT p_parent->GetSize().GetHeight()
|
|
-#else
|
|
-#define VLCVOL_HEIGHT TOOLBAR_BMP_HEIGHT
|
|
-#endif
|
|
-VLCVolCtrl::VLCVolCtrl( intf_thread_t *_p_intf, wxWindow *p_parent )
|
|
- :wxControl( p_parent, -1, wxDefaultPosition, wxSize(64, VLCVOL_HEIGHT ),
|
|
- wxBORDER_NONE ),
|
|
- i_y_offset((VLCVOL_HEIGHT - TOOLBAR_BMP_HEIGHT) / 2),
|
|
- b_mute(0), p_intf(_p_intf)
|
|
-{
|
|
- gauge = new wxVolCtrl( p_intf, this, -1, wxPoint( 18, i_y_offset ),
|
|
- wxSize( 44, TOOLBAR_BMP_HEIGHT ) );
|
|
-}
|
|
-
|
|
-void VLCVolCtrl::OnPaint( wxPaintEvent &evt )
|
|
-{
|
|
- wxPaintDC dc( this );
|
|
- wxBitmap mPlayBitmap( b_mute ? speaker_mute_xpm : speaker_xpm );
|
|
- dc.DrawBitmap( mPlayBitmap, 0, i_y_offset, TRUE );
|
|
-}
|
|
-
|
|
-void VLCVolCtrl::OnChange( wxMouseEvent& event )
|
|
-{
|
|
- if( event.GetX() < TOOLBAR_BMP_WIDTH )
|
|
- {
|
|
- int i_volume;
|
|
- aout_VolumeMute( p_intf, (audio_volume_t *)&i_volume );
|
|
-
|
|
- b_mute = !b_mute;
|
|
- Refresh();
|
|
- }
|
|
-}
|
|
-
|
|
-void VLCVolCtrl::UpdateVolume()
|
|
-{
|
|
- gauge->UpdateVolume();
|
|
-
|
|
- int i_volume = gauge->GetValue();
|
|
- if( !!i_volume == !b_mute ) return;
|
|
- b_mute = !b_mute;
|
|
- Refresh();
|
|
-}
|
|
|
|
/*****************************************************************************
|
|
* Systray class.
|