diff --git a/resources/data/hints.ini b/resources/data/hints.ini index 0de06f04a..6127fecc6 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -43,7 +43,8 @@ # Each notification can have disabled and enabled modes and techs - divided by ; and space # enabled_tags = ... # disabled_tags = ... -# supported tags are: simple; advanced; expert; FFF; MMU; SLA +# supported tags are: simple; advanced; expert; FFF; MMU; SLA; Windows; Linux; OSX; +# Tags are case sensitive. # FFF is affirmative for both one or more extruder printers. # Algorithm shows hint only if ALL enabled tags are affirmative. (so never do enabled_tags = FFF; SLA;) # Algorithm shows hint only if not in all disabled tags. @@ -206,6 +207,7 @@ documentation_link = https://help.prusa3d.com/en/article/infill-patterns_177130 [hint:Fullscreen mode] text = Fullscreen mode\nDid you know that you can switch PrusaSlicer to fullscreen mode? Use the F11 hotkey. +enabled_tags = Windows [hint:Simplify mesh] text = Simplify mesh\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model. Read more in the documentation. diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp index 973359bcb..2f0f92449 100644 --- a/src/slic3r/GUI/HintNotification.cpp +++ b/src/slic3r/GUI/HintNotification.cpp @@ -68,6 +68,34 @@ inline TagCheckResult tag_check_tech(const std::string& tag) return TagCheckNotCompatible; } +inline TagCheckResult tag_check_system(const std::string& tag) +{ + std::vector allowed_tags = { "Windows", "Linux", "OSX" }; + if (std::find(allowed_tags.begin(), allowed_tags.end(), tag) != allowed_tags.end()) { + if (tag =="Windows") +#ifdef WIN32 + return TagCheckAffirmative; +#else + return TagCheckNegative; +#endif // WIN32 + + if (tag == "Linux") +#ifdef __linux__ + return TagCheckAffirmative; +#else + return TagCheckNegative; +#endif // __linux__ + + if (tag == "OSX") +#ifdef __APPLE__ + return TagCheckAffirmative; +#else + return TagCheckNegative; +#endif // __apple__ + } + return TagCheckNotCompatible; +} + // return true if NOT in disabled mode. inline bool tags_check(const std::string& disabled_tags, const std::string& enabled_tags) { @@ -93,6 +121,11 @@ inline bool tags_check(const std::string& disabled_tags, const std::string& enab if (result == TagCheckResult::TagCheckAffirmative) continue; result = tag_check_tech(tag); + if (result == TagCheckResult::TagCheckNegative) + return false; + if (result == TagCheckResult::TagCheckAffirmative) + continue; + result = tag_check_system(tag); if (result == TagCheckResult::TagCheckNegative) return false; if (result == TagCheckResult::TagCheckAffirmative) @@ -128,6 +161,11 @@ inline bool tags_check(const std::string& disabled_tags, const std::string& enab continue; if (result == TagCheckResult::TagCheckAffirmative) return false; + result = tag_check_system(tag); + if (result == TagCheckResult::TagCheckAffirmative) + return false; + if (result == TagCheckResult::TagCheckNegative) + continue; BOOST_LOG_TRIVIAL(error) << "Hint Notification: Tag " << tag << " in disabled_tags not compatible."; } } @@ -655,8 +693,7 @@ void NotificationManager::HintNotification::render_preferences_button(ImGuiWrapp //hover if (ImGui::IsMouseHoveringRect(ImVec2(win_pos_x - m_window_width / 15.f, win_pos_y + m_window_height - 1.75f * m_line_height), ImVec2(win_pos_x, win_pos_y + m_window_height), - true)) - { + true)) { button_text = ImGui::PreferencesHoverButton; // tooltip long time_now = wxGetLocalTime();