Files
OrcaSlicer-KX/src/slic3r/GUI/FilamentGroupPopup.hpp
xun.zhang 19b466ccf0 ENH: add global map mode tag for pop up
1. Add tag to mark the global map mode
2. Fix some wrong usage of bmp in code
3. Fix display error in dark mode

jira:STUDIO-9729

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: Idb36a5022c403e02c26d7fe23a95dd6877deca90
(cherry picked from commit 5a2abf7e211327cde57717b5ab7b79b63c967bbd)
2025-09-09 15:40:26 +08:00

71 lines
1.8 KiB
C++

#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;
class FilamentGroupPopup : public PopupWindow
{
public:
FilamentGroupPopup(wxWindow *parent);
void tryPopup(Plater* plater,PartPlate* plate,bool skip_plate_sync);
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<FilamentMapMode> mode_list = {fmmAutoForFlush, fmmAutoForMatch, fmmManual};
bool m_connected{ false };
bool m_active{ false };
bool m_sync_plate{ false };
FilamentMapMode m_mode;
wxTimer *m_timer;
std::vector<wxBitmapButton*> radio_btns;
std::vector<wxBitmapButton*> global_mode_tags;
std::vector<Label *> button_labels;
std::vector<Label *> button_desps;
std::vector<Label *> detail_infos;
wxBitmap checked_bmp;
wxBitmap unchecked_bmp;
wxBitmap disabled_bmp;
wxBitmap checked_hover_bmp;
wxBitmap unchecked_hover_bmp;
wxBitmap global_tag_bmp;
wxStaticText *wiki_link;
PartPlate* partplate_ref{ nullptr };
Plater* plater_ref{ nullptr };
};
}} // namespace Slic3r::GUI
#endif