#include "LisaCanvas.h"

class LisaEmFrame : public wxFrame
{
    public:
        // constructors
        LisaEmFrame();
        
    private:
        // GUI event handlers
        // File menu
        void OnOpenPreferences(wxCommandEvent& event);
        void OnSavePreferences(wxCommandEvent& event);
        void OnShowPreferences(wxCommandEvent& event);
        void OnRun(wxCommandEvent& event);
        void OnPause(wxCommandEvent& event);
        void OnInsertFloppy(wxCommandEvent& event);
        void OnInsertNewFloppy(wxCommandEvent& event);
        void OnScreenshot(wxCommandEvent& event);
        void OnScreenshot2(wxCommandEvent& event);
        void OnScreenshot3(wxCommandEvent& event);
        void OnQuit(wxCommandEvent& event);

        // Edit menu
        void OnPaste(wxCommandEvent& event);

        // Keyboard menu
        void OnPowerKey(wxCommandEvent& event);
        void OnAppleDot(wxCommandEvent& event);
        void OnAppleS(wxCommandEvent& event);
        void OnAppleEnter(wxCommandEvent& event);
        void OnAppleREnter(wxCommandEvent& event);
        void OnApple1(wxCommandEvent& event);
        void OnApple2(wxCommandEvent& event);
        void OnApple3(wxCommandEvent& event);
        void OnShiftOpt0(wxCommandEvent& event);
        void OnShiftOpt4(wxCommandEvent& event);
        void OnShiftOpt7(wxCommandEvent& event);
        void OnASCIIKeyboard(wxCommandEvent& event);
        void OnRawKeyboard(wxCommandEvent& event);

        // View menu
        void OnUncorrected(wxCommandEvent& event);
        void OnCorrected(wxCommandEvent& event);
        void OnEnhanced(wxCommandEvent& event);
        void OnSkin(wxCommandEvent& event);

        // Throttle menu
        void OnThrottle5(wxCommandEvent& event);
        void OnThrottle8(wxCommandEvent& event);
        void OnThrottle10(wxCommandEvent& event);
        void OnThrottle15(wxCommandEvent& event);
        void OnThrottle20(wxCommandEvent& event);
        void OnThrottle25(wxCommandEvent& event);
        void OnThrottleOther(wxCommandEvent& event);

        // Help menu
        void OnAbout(wxCommandEvent& event);
        void OnLisaWeb(wxCommandEvent& event);
        void OnLisaFAQ(wxCommandEvent& event);
        
        void OnUpdateUI(wxUpdateUIEvent& event);
        
        // Internal functions
        void CreateMenus(void);
        void UpdateMenus(void);
        
        LisaCanvas* m_lisa;
        
        wxMenuBar* m_menubar;
        wxMenu* m_file_menu;
        wxMenu* m_edit_menu;
        wxMenu* m_keyboard_menu;
        wxMenu* m_view_menu;
        wxMenu* m_throttle_menu;
        wxMenu* m_help_menu;
        

        wxSizer* m_sizer;
        
        DECLARE_EVENT_TABLE()
};
