#ifndef slic3r_UpdateDialogs_hpp_ #define slic3r_UpdateDialogs_hpp_ #include #include #include #include #include #include "slic3r/Utils/Semver.hpp" class wxBoxSizer; class wxCheckBox; namespace Slic3r { namespace GUI { // A message / query dialog with a bitmap on the left and any content on the right // with buttons underneath. struct MsgDialog : wxDialog { MsgDialog(MsgDialog &&) = delete; MsgDialog(const MsgDialog &) = delete; MsgDialog &operator=(MsgDialog &&) = delete; MsgDialog &operator=(const MsgDialog &) = delete; virtual ~MsgDialog(); protected: // button_id is an id of a button that can be added by default, use wxID_NONE to disable MsgDialog(const wxString &title, const wxString &headline, wxWindowID button_id = wxID_OK); MsgDialog(const wxString &title, const wxString &headline, wxBitmap bitmap, wxWindowID button_id = wxID_OK); wxFont boldfont; wxBoxSizer *content_sizer; wxBoxSizer *btn_sizer; }; // A confirmation dialog listing configuration updates class MsgUpdateSlic3r : public MsgDialog { public: MsgUpdateSlic3r(const Semver &ver_current, const Semver &ver_online); MsgUpdateSlic3r(MsgUpdateSlic3r &&) = delete; MsgUpdateSlic3r(const MsgUpdateSlic3r &) = delete; MsgUpdateSlic3r &operator=(MsgUpdateSlic3r &&) = delete; MsgUpdateSlic3r &operator=(const MsgUpdateSlic3r &) = delete; virtual ~MsgUpdateSlic3r(); // Tells whether the user checked the "don't bother me again" checkbox bool disable_version_check() const; private: const Semver &ver_current; const Semver &ver_online; wxCheckBox *cbox; }; // Confirmation dialog informing about configuration update. Lists updated bundles & their versions. class MsgUpdateConfig : public MsgDialog { public: // updates is a map of "vendor name" -> "version (comment)" MsgUpdateConfig(const std::unordered_map &updates); MsgUpdateConfig(MsgUpdateConfig &&) = delete; MsgUpdateConfig(const MsgUpdateConfig &) = delete; MsgUpdateConfig &operator=(MsgUpdateConfig &&) = delete; MsgUpdateConfig &operator=(const MsgUpdateConfig &) = delete; ~MsgUpdateConfig(); }; // Informs about currently installed bundles not being compatible with the running Slic3r. Asks about action. class MsgDataIncompatible : public MsgDialog { public: // incompats is a map of "vendor name" -> "version restrictions" MsgDataIncompatible(const std::unordered_map &incompats); MsgDataIncompatible(MsgDataIncompatible &&) = delete; MsgDataIncompatible(const MsgDataIncompatible &) = delete; MsgDataIncompatible &operator=(MsgDataIncompatible &&) = delete; MsgDataIncompatible &operator=(const MsgDataIncompatible &) = delete; ~MsgDataIncompatible(); }; // Informs about a legacy data directory - an update from Slic3r PE < 1.40 class MsgDataLegacy : public MsgDialog { public: MsgDataLegacy(); MsgDataLegacy(MsgDataLegacy &&) = delete; MsgDataLegacy(const MsgDataLegacy &) = delete; MsgDataLegacy &operator=(MsgDataLegacy &&) = delete; MsgDataLegacy &operator=(const MsgDataLegacy &) = delete; ~MsgDataLegacy(); }; } } #endif