#ifndef MAIN_PANEL
#define MAIN_PANEL

#include <wx/wx.h>
#include "FunctionImp.h"

constexpr int g_Width = 700;
constexpr int g_Heigh = 450;
constexpr int g_Border = 3;

class CMainPanel : public wxPanel
{
private:
    CFunPack* handle_{};

protected:
    wxBoxSizer* top_sizer_{};
    wxStaticBoxSizer* base_box_sizer_{};
    wxStaticBoxSizer* env_box_sizer_{};
    wxStaticText* label_select_{};
    wxStaticText* label_output_{};
    wxBoxSizer* fixed_heigh_sizer_{};

    wxBoxSizer* sizer_select_{};
    wxBoxSizer* sizer_output_{};
    wxTextCtrl* text_select_ctrl_{};
    wxTextCtrl* text_output_ctrl_{};
    wxButton* btn_select_{};
    wxButton* btn_output_{};

    wxBoxSizer* env_oper_sizer_{};
    wxButton* btn_add_env_{};
    wxButton* btn_del_env_{};

    wxListBox* env_list_{};
    wxBoxSizer* oper_sizer_{};
    wxButton* btn_gen_{};
    wxButton* btn_exit_{};
    wxButton* btn_install_{};

public:
    explicit CMainPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
                        const wxSize& size = wxSize(g_Width, g_Heigh), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString);
    ~CMainPanel() override;

public:
    void InitPanel();

private:
    void selectBinaryFile(wxCommandEvent& event);
    void selectDir(wxCommandEvent& event);
    void addEnv(wxCommandEvent& event);
    void delEnv(wxCommandEvent& event);
    void genResult(wxCommandEvent& event);
    void installDialog(wxCommandEvent& event);
};

#endif