00001 00002 // Name: ax_menu_speech_settings.h 00003 // Purpose: Speech settings menu class 00004 // Author: Julian Smart 00005 // Modified by: 00006 // Created: 2009-03-20 00007 // RCS-ID: 00008 // Copyright: (c) Julian Smart 00009 // Licence: New BSD License 00011 00012 #ifndef _AX_MENU_SPEECH_SETTINGS_H_ 00013 #define _AX_MENU_SPEECH_SETTINGS_H_ 00014 00015 /* 00016 * Includes 00017 */ 00018 00019 #include "ax/ax_activator.h" 00020 #include "ax/ax_menu.h" 00021 00022 class AxSpeech; 00023 class AxChoiceMenuItem; 00024 class wxSpinEvent; 00025 00032 class AxSpeechSettingsMenuItem: public AxMenuItem 00033 { 00034 DECLARE_CLASS( AxSpeechSettingsMenuItem ) 00035 DECLARE_EVENT_TABLE( ) 00036 00037 public: 00038 // Constructors 00039 00040 AxSpeechSettingsMenuItem(const AxSpeechSettingsMenuItem& item) 00041 { Copy(item); m_speech = item.m_speech; m_controller = item.m_controller; } 00042 AxSpeechSettingsMenuItem(AxMenuController* controller, AxSpeech* speech); 00043 00044 void OnSelectEngine(wxCommandEvent& event); 00045 void OnSelectVoice(wxCommandEvent& event); 00046 void OnSelectVolume(wxSpinEvent& event); 00047 void OnSelectSpeed(wxSpinEvent& event); 00048 void OnSelectMultipleVoices(wxCommandEvent& event); 00049 00050 void CheckCompatibleVoices(); 00051 00052 virtual AxMenuItem* Clone() { return new AxSpeechSettingsMenuItem(* this); } 00053 00054 protected: 00055 AxSpeech* m_speech; 00056 AxMenuController* m_controller; 00057 }; 00058 00069 class AxSpeechSettingsActivator: public AxActivator 00070 { 00071 public: 00072 00073 DECLARE_DYNAMIC_CLASS( AxSpeechSettingsActivator ) 00074 00075 public: 00076 // Constructors 00077 00078 AxSpeechSettingsActivator() { Init(); } 00079 00080 AxSpeechSettingsActivator(AxSpeech* speech) { m_speech = speech; } 00081 00082 AxSpeechSettingsActivator(const AxSpeechSettingsActivator& activator) { Init(); Copy(activator); } 00083 00084 void Init() { m_speech = NULL; m_mainVoicesItem = NULL; m_contentVoicesItem = NULL; } 00085 00086 void Copy(const AxSpeechSettingsActivator& activator) 00087 { 00088 AxActivator::Copy(activator); 00089 m_speech = activator.m_speech; 00090 m_mainVoicesItem = activator.m_mainVoicesItem; 00091 m_contentVoicesItem = activator.m_contentVoicesItem; 00092 } 00093 00094 virtual AxActivator* Clone() const { return new AxSpeechSettingsActivator(* this); } 00095 00097 virtual AxMenu* Activate(AxMenuController* controller, AxMenuItem* item); 00098 00099 AxChoiceMenuItem* GetVoicesItem(int channel) const { return channel == 0 ? m_mainVoicesItem : m_contentVoicesItem; } 00100 00101 protected: 00102 AxSpeech* m_speech; 00103 AxChoiceMenuItem* m_mainVoicesItem; 00104 AxChoiceMenuItem* m_contentVoicesItem; 00105 }; 00106 00107 #endif 00108 // _AX_MENU_SPEECH_SETTINGS_H_