#ifndef FILAMENT_GROUP_HOVER_HPP #define FILAMENT_GROUP_HOVER_HPP #include #include #include "wxExtensions.hpp" #include "Widgets/PopupWindow.hpp" #include "Widgets/CheckBox.hpp" #include "Widgets/Label.hpp" namespace Slic3r { namespace GUI { bool is_pop_up_required(); FilamentMapMode get_prefered_map_mode(); class FilamentGroupPopup : public PopupWindow { public: FilamentGroupPopup(wxWindow *parent); void tryPopup(bool connect_status); void tryClose(); FilamentMapMode GetSelectedMode() const { return m_mode; } private: void StartTimer(); void ResetTimer(); void OnRadioBtn(int idx); void OnLeaveWindow(wxMouseEvent &); void OnEnterWindow(wxMouseEvent &); void OnTimer(wxTimerEvent &event); void OnRemindBtn(wxCommandEvent &event); void Init(); void UpdateButtonStatus(int hover_idx = -1); void DrawRoundedCorner(int radius); private: enum ButtonType { btForFlush, btForMatch, btManual, btCount }; const std::vector mode_list = {fmmAutoForFlush, fmmAutoForMatch, fmmManual}; FilamentMapMode m_mode; bool m_connected{ false }; wxTimer *m_timer; std::vector radio_btns; std::vector