#ifndef FILAMENT_GROUP_HOVER_HPP #define FILAMENT_GROUP_HOVER_HPP #include "Widgets/PopupWindow.hpp" #include "Widgets/Label.hpp" namespace Slic3r { namespace GUI { class PartPlate; class Plater; bool play_dual_extruder_slice_video(); bool open_filament_group_wiki(); class FilamentGroupPopup : public PopupWindow { public: FilamentGroupPopup(wxWindow *parent); void tryPopup(Plater* plater,PartPlate* plate, bool slice_all); void tryClose(); FilamentMapMode GetSelectedMode() const { return m_mode; } private: void OnPaint(wxPaintEvent&event); void StartTimer(); void ResetTimer(); void OnRadioBtn(int idx); void OnLeaveWindow(wxMouseEvent &); void OnEnterWindow(wxMouseEvent &); void OnTimer(wxTimerEvent &event); void Dismiss(); void Init(); void UpdateButtonStatus(int hover_idx = -1); void DrawRoundedCorner(int radius); private: FilamentMapMode GetFilamentMapMode() const; void SetFilamentMapMode(const FilamentMapMode mode); private: enum ButtonType { btForFlush, btForMatch, btManual, btCount }; const std::vector mode_list = {fmmAutoForFlush, fmmAutoForMatch, fmmManual}; bool m_connected{ false }; bool m_active{ false }; bool m_sync_plate{ false }; bool m_slice_all{ false }; FilamentMapMode m_mode; wxTimer *m_timer; std::vector radio_btns; std::vector global_mode_tags; std::vector