#ifndef slic3r_OG_CustomCtrl_hpp_ #define slic3r_OG_CustomCtrl_hpp_ #include #include #include #include #include "libslic3r/Config.hpp" #include "libslic3r/PrintConfig.hpp" #include "OptionsGroup.hpp" #include "I18N.hpp" // Translate the ifdef #ifdef __WXOSX__ #define wxOSX true #else #define wxOSX false #endif namespace Slic3r { namespace GUI { // Static text shown among the options. class OG_CustomCtrl :public wxPanel { wxFont m_font; int m_v_gap; int m_h_gap; int m_em_unit; wxSize m_bmp_mode_sz; wxSize m_bmp_blinking_sz; struct CtrlLine { wxCoord height { wxDefaultCoord }; OG_CustomCtrl* ctrl { nullptr }; const Line& og_line; bool draw_just_act_buttons { false }; bool draw_mode_bitmap { true }; bool is_visible { true }; bool is_focused { false }; CtrlLine( wxCoord height, OG_CustomCtrl* ctrl, const Line& og_line, bool draw_just_act_buttons = false, bool draw_mode_bitmap = true); ~CtrlLine() { ctrl = nullptr; } void correct_items_positions(); void msw_rescale(); void update_visibility(ConfigOptionMode mode); void render(wxDC& dc, wxCoord v_pos); wxCoord draw_mode_bmp(wxDC& dc, wxCoord v_pos); wxCoord draw_text (wxDC& dc, wxPoint pos, const wxString& text, const wxColour* color, int width, bool is_url = false); wxPoint draw_blinking_bmp(wxDC& dc, wxPoint pos, bool is_blinking); wxCoord draw_act_bmps(wxDC& dc, wxPoint pos, const wxBitmap& bmp_undo_to_sys, const wxBitmap& bmp_undo, bool is_blinking, size_t rect_id = 0); bool launch_browser() const; std::vector rects_undo_icon; std::vector rects_undo_to_sys_icon; wxRect rect_label; }; std::vector ctrl_lines; public: OG_CustomCtrl( wxWindow* parent, OptionsGroup* og, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, const wxValidator& val = wxDefaultValidator, const wxString& name = wxEmptyString); ~OG_CustomCtrl() {} void OnPaint(wxPaintEvent&); void OnMotion(wxMouseEvent& event); void OnLeftDown(wxMouseEvent& event); void OnLeaveWin(wxMouseEvent& event); void init_ctrl_lines(); bool update_visibility(ConfigOptionMode mode); void correct_window_position(wxWindow* win, const Line& line, Field* field = nullptr); void correct_widgets_position(wxSizer* widget, const Line& line, Field* field = nullptr); void msw_rescale(); void sys_color_changed(); wxPoint get_pos(const Line& line, Field* field = nullptr); int get_height(const Line& line); OptionsGroup* opt_group; }; //----------------------------------------------- // RememberChoiceDialog //----------------------------------------------- class RememberChoiceDialog : public wxDialog { wxCheckBox* m_remember_choice; public: RememberChoiceDialog(wxWindow* parent, const wxString& msg_text, const wxString& caption); ~RememberChoiceDialog() {} bool remember_choice() const { return m_remember_choice->GetValue(); } }; }} #endif /* slic3r_OG_CustomCtrl_hpp_ */