1 #ifndef ADR_WX_STREAM_FRAME_H
2 #define ADR_WX_STREAM_FRAME_H
3 
4 
5 #include <audiere.h>
6 #include "wx.h"
7 
8 
9 class StreamFrame : public wxMDIChildFrame {
10 public:
11   StreamFrame(
12     wxMDIParentFrame* parent,
13     const wxString& title,
14     audiere::OutputStreamPtr stream,
15     audiere::SampleSourcePtr source,
16     audiere::LoopPointSourcePtr loop_source = 0);
17   ~StreamFrame();
18 
19   void OnPlay(wxCommandEvent&);
20   void OnStop(wxCommandEvent&);
21   void OnReset(wxCommandEvent&);
22   void OnViewInfo(wxCommandEvent&);
23   void OnEditLoopPoints(wxCommandEvent&);
24   void OnViewTags(wxCommandEvent&);
25 
26   void OnRepeat(wxCommandEvent&);
27   void OnChangeVolume(wxScrollEvent&);
28   void OnChangePan(wxScrollEvent&);
29   void OnChangePitch(wxScrollEvent&);
30   void OnChangePos(wxScrollEvent&);
31   void OnUpdateStatus(wxTimerEvent&);
32   void UpdateVPPLabel();
33   void UpdateLengthPosLabel();
34 
35 private:
36   audiere::OutputStreamPtr m_stream;
37   audiere::SampleSourcePtr m_source;
38 
39   /// Only a valid pointer when the output stream is fed from it.
40   audiere::LoopPointSourcePtr m_loop_source;
41 
42   bool m_stream_is_seekable;
43   int m_stream_length;
44 
45   wxTimer* m_timer;
46 
47   wxStaticText* m_playing_label;
48   wxCheckBox*   m_repeating;
49   wxStaticText* m_vpp_label;
50   wxSlider*     m_volume;
51   wxSlider*     m_pan;
52   wxSlider*     m_pitch;
53   wxStaticText* m_length_pos_label;
54   wxSlider*     m_pos;
55 
56   DECLARE_EVENT_TABLE()
57 };
58 
59 
60 #endif
61