#ifndef slic3r_GUI_Utils_hpp_ #define slic3r_GUI_Utils_hpp_ #include #include #include #include #include class wxCheckBox; class wxTopLevelWindow; class wxRect; namespace Slic3r { namespace GUI { class CheckboxFileDialog : public wxFileDialog { public: CheckboxFileDialog(wxWindow *parent, const wxString &checkbox_label, bool checkbox_value, const wxString &message = wxFileSelectorPromptStr, const wxString &default_dir = wxEmptyString, const wxString &default_file = wxEmptyString, const wxString &wildcard = wxFileSelectorDefaultWildcardStr, long style = wxFD_DEFAULT_STYLE, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, const wxString &name = wxFileDialogNameStr ); bool get_checkbox_value() const; private: std::function extra_control_creator; wxCheckBox *cbox; static wxWindow* control_creator_trampoline(wxWindow *); }; class WindowMetrics { private: wxRect rect; bool maximized; WindowMetrics() : maximized(false) {} public: static WindowMetrics from_window(wxTopLevelWindow *window); static boost::optional deserialize(const std::string &str); wxRect get_rect() const { return rect; } bool get_maximized() const { return maximized; } void sanitize_for_display(const wxRect &screen_rect); std::string serialize(); }; }} #endif