Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

Frame.h

Go to the documentation of this file.
00001 /***********************************************************************
00002 
00003   FinalMix: Frame.h
00004   by Martin Decky
00005   
00006   Redistribution of this file is permitted under the GNU Public License.
00007 
00008   0.9.0     Initial version
00009   0.9.1     Configuration
00010   0.9.2     Cleanup
00011   0.9.5     Documentation
00012 
00013 **********************************************************************/
00014 
00015 
00016 #ifndef _FM_FRAME_H_
00017 #define _FM_FRAME_H_
00018 
00019 
00020 #include "Loaders.h"
00021 #include <wx/frame.h>
00022 #include <wx/menu.h>
00023 #include <wx/scrolbar.h>
00024 #include <wx/toolbar.h>
00025 #include <wx/list.h>
00026 #include <wx/bitmap.h>
00027 #include <wx/icon.h>
00028 #include <wx/bmpbuttn.h>
00029 #include <wx/timer.h>
00030 #include <wx/list.h>
00031 #include <wx/splitter.h>
00032 #include <wx/checkbox.h>
00033 #include <wx/slider.h>
00034 
00035 
00039 class Frame;
00040 class Controls;
00041 
00042 
00050 class Area : public wxScrolledWindow {
00051     public:
00052         Area(wxWindow * parent, Frame * owner); 
00053         ~Area();                                
00055         void OnPaint(wxPaintEvent & event);      
00056         void OnScroll(wxScrollWinEvent & event); 
00058         void OnLeftDown(wxMouseEvent & event);  
00059         void OnRightDown(wxMouseEvent & event); 
00060         void OnMotion(wxMouseEvent & event);    
00061         void OnLeftUp(wxMouseEvent & event);    
00062         void OnRightUp(wxMouseEvent & event);   
00064         void OnRemove(wxCommandEvent & WXUNUSED(event)); 
00065         void OnCut(wxCommandEvent & WXUNUSED(event));    
00066         void OnCopy(wxCommandEvent & WXUNUSED(event));   
00067         void OnPaste(wxCommandEvent & WXUNUSED(event));  
00068         void OnEmpty(wxCommandEvent & WXUNUSED(event));  
00070         void Redraw(); 
00071         void Update(); 
00073         DECLARE_EVENT_TABLE()
00074     private:
00075         void update_sel(const int lastx, const int acx, const int lasty); 
00076         bool get_track(const int acy, track_t * track);                   
00078         Frame * frame; 
00080         wxPoint ll_down; 
00081         bool left_down;  
00082         wxPoint lr_down; 
00083         bool right_down; 
00085         wxMenu * menuEdit;     
00086 };
00087 
00088 
00095 class VolumeSlider : public wxSlider {
00096     public:
00097         VolumeSlider(wxWindow * parent, const wxWindowID id, const track_t chan, const volume_t inivol); 
00099         track_t GetChannel() const; 
00100     private:
00101         track_t channel; 
00102 };
00103 
00104 
00105 WX_DECLARE_LIST(VolumeSlider, VolumeSliders);
00106 
00107 
00114 class TrackControl : public wxPanel {
00115     public:
00116         TrackControl(Controls * owner, const track_t track); 
00117         ~TrackControl();                                     
00119         void OnMute(wxCommandEvent & event);  
00120         void OnVolume(wxScrollEvent & event); 
00121         void Update();                        
00123         DECLARE_EVENT_TABLE()
00124         
00125     private:
00126         track_t trck;            
00127         Controls * parent;       
00128         wxStaticBox * box;       
00129         wxStaticBoxSizer * sbox; 
00131         wxCheckBox * mute;      
00132         VolumeSliders volume;   
00133 };
00134 
00135 WX_DECLARE_LIST(TrackControl, TrackControls);
00136 
00137 
00144 class Controls : public wxScrolledWindow {
00145     public:
00146         Controls(wxWindow * parent); 
00147         ~Controls();                 
00149         void Update();                           
00150         void OnScroll(wxScrollWinEvent & event); 
00151         void OnResize(wxSizeEvent & event);      
00153         DECLARE_EVENT_TABLE()
00154         
00155     private:
00156         TrackControls controls; 
00157 };
00158 
00159 
00166 class Frame : public wxFrame {
00167     public:
00168         Frame(const wxString & title); 
00169         ~Frame();                      
00171         void OnClose(wxCloseEvent & event);                
00172         void OnQuit(wxCommandEvent & WXUNUSED(event));     
00173         void OnAbout(wxCommandEvent & WXUNUSED(event));    
00174         void OnTips(wxCommandEvent & WXUNUSED(event));     
00175         void OnNew(wxCommandEvent & WXUNUSED(event));      
00176         void OnOpen(wxCommandEvent & WXUNUSED(event));     
00177         void OnSave(wxCommandEvent & WXUNUSED(event));     
00178         void OnSaveAs(wxCommandEvent & WXUNUSED(event));   
00179         void OnRevert(wxCommandEvent & WXUNUSED(event));   
00180         void OnRender(wxCommandEvent & WXUNUSED(event));   
00181         void OnAdd(wxCommandEvent & WXUNUSED(event));      
00182         void OnImport(wxCommandEvent & WXUNUSED(event));   
00183         void OnSettings(wxCommandEvent & WXUNUSED(event)); 
00185         void OnPlay(wxCommandEvent & WXUNUSED(event));    
00186         void OnPause(wxCommandEvent & WXUNUSED(event));   
00187         void OnStop(wxCommandEvent & WXUNUSED(event));    
00188         void OnZoomIn(wxCommandEvent & WXUNUSED(event));  
00189         void OnZoomOut(wxCommandEvent & WXUNUSED(event)); 
00191         bool SaveDlg();   
00192         bool SaveAsDlg(); 
00194         void OnTimer(wxTimerEvent & event); 
00196         void ShowTips(const bool force); 
00198         void Update();                                                                       
00199         enum status_t ChooseLoader(wxFile * file, const wxString & filename, Loader * * ld); 
00201         DECLARE_EVENT_TABLE()
00202         
00203     private:
00204         bool load(const wxString & fname); 
00205         bool save(const wxString & fname); 
00207         Area * area;                 
00208         Controls * controls;         
00209         wxTimer * timer;             
00210         wxSplitterWindow * split;    
00211         wxMenuBar * menuBar;         
00212         wxMenu * menuFile;           
00213         wxMenu * menuEdit;           
00214         wxMenu * menuTracks;         
00215         wxMenu * menuOptions;        
00216         wxMenu * menuHelp;           
00217         wxBitmapButton * playBut;    
00218         wxBitmapButton * pauseBut;   
00219         wxBitmapButton * stopBut;    
00220         wxBitmapButton * recordBut;  
00221         wxBitmapButton * zoomInBut;  
00222         wxBitmapButton * zoomOutBut; 
00223         wxToolBar * toolBar;         
00224 };
00225 
00226 #endif

Generated on Wed Jul 28 17:17:42 2004 for FinalMix by doxygen 1.3.5