#pragma once

#include <wx/wx.h>

namespace gui
{
//--------------------------------------------------------------
class MenuBar : public wxMenuBar
{
  public:
  enum class IDs : uint16_t
  {
    // File menu
    ID_MENU_FILE_NEW = wxID_HIGHEST + 1,     // File->New project
    ID_MENU_FILE_OPEN,                       // File->Open project
    ID_MENU_FILE_SAVE,                       // File->Save project
    ID_MENU_FILE_SAVE_AS,                    // File->Save project as
    ID_MENU_FILE_CLOSE,                      // File->Close project
    ID_MENU_FILE_QUIT,                       // File->Quit

    // Requirements menu
    ID_MENU_REQ_CREATE,     // Requirements->Add

    // Help menu
    ID_MENU_HELP_ABOUT,     // Help->About
  };

  public:
  MenuBar() = delete;                                   // Default constructor
  explicit MenuBar(wxFrame *parent);                    // Constructor
  virtual ~MenuBar()                     = default;     // Default destructor
  MenuBar(MenuBar &obj)                  = delete;      // Copy constructor
  MenuBar(MenuBar &&obj)                 = delete;      // Move constructor
  MenuBar &operator=(const MenuBar &obj) = delete;      // Copy assignment operator
  MenuBar &operator=(MenuBar &&obj)      = delete;      // Move assignment operator

  private:
  void createMenus();     // Create menus
};
//--------------------------------------------------------------
}     // namespace gui
