NotificationManager documentation improvements

This commit is contained in:
Vojtech Bubnik 2020-10-15 09:20:05 +02:00
parent 19a115260a
commit 87206cd695
2 changed files with 20 additions and 10 deletions

View File

@ -9,9 +9,11 @@
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
#include <boost/log/trivial.hpp> #include <boost/log/trivial.hpp>
#include <wx/glcanvas.h> #include <functional>
#include <iostream> #include <iostream>
#include <wx/glcanvas.h>
static constexpr float GAP_WIDTH = 10.0f; static constexpr float GAP_WIDTH = 10.0f;
static constexpr float SPACE_RIGHT_PANEL = 10.0f; static constexpr float SPACE_RIGHT_PANEL = 10.0f;
@ -638,7 +640,8 @@ NotificationManager::NotificationManager(wxEvtHandler* evt_handler) :
void NotificationManager::push_notification(const NotificationType type, GLCanvas3D& canvas, int timestamp) void NotificationManager::push_notification(const NotificationType type, GLCanvas3D& canvas, int timestamp)
{ {
auto it = std::find_if(basic_notifications.begin(), basic_notifications.end(), auto it = std::find_if(basic_notifications.begin(), basic_notifications.end(),
boost::bind(&NotificationData::type, _1) == type); std::bind(&NotificationData::type, _1) == type);
assert(it != basic_notifications.end());
if (it != basic_notifications.end()) if (it != basic_notifications.end())
push_notification_data( *it, canvas, timestamp); push_notification_data( *it, canvas, timestamp);
} }

View File

@ -72,14 +72,16 @@ public:
NotificationManager(wxEvtHandler* evt_handler); NotificationManager(wxEvtHandler* evt_handler);
// only type means one of basic_notification (see below) // Push a prefabricated notification from basic_notifications (see the table at the end of this file).
void push_notification(const NotificationType type, GLCanvas3D& canvas, int timestamp = 0); void push_notification(const NotificationType type, GLCanvas3D& canvas, int timestamp = 0);
// only text means Undefined type // Push a NotificationType::CustomNotification with NotificationLevel::RegularNotification and 10s fade out interval.
void push_notification(const std::string& text, GLCanvas3D& canvas, int timestamp = 0); void push_notification(const std::string& text, GLCanvas3D& canvas, int timestamp = 0);
// Push a NotificationType::CustomNotification with provided notification level and 10s for RegularNotification.
// ErrorNotification and ImportantNotification are never faded out.
void push_notification(const std::string& text, NotificationLevel level, GLCanvas3D& canvas, int timestamp = 0); void push_notification(const std::string& text, NotificationLevel level, GLCanvas3D& canvas, int timestamp = 0);
// creates Slicing Error notification with custom text // Creates Slicing Error notification with a custom text and no fade out.
void push_slicing_error_notification(const std::string& text, GLCanvas3D& canvas); void push_slicing_error_notification(const std::string& text, GLCanvas3D& canvas);
// creates Slicing Warning notification with custom text // Creates Slicing Warning notification with a custom text and no fade out.
void push_slicing_warning_notification(const std::string& text, bool gray, GLCanvas3D& canvas, ObjectID oid, int warning_step); void push_slicing_warning_notification(const std::string& text, bool gray, GLCanvas3D& canvas, ObjectID oid, int warning_step);
// marks slicing errors as gray // marks slicing errors as gray
void set_all_slicing_errors_gray(bool g); void set_all_slicing_errors_gray(bool g);
@ -91,15 +93,16 @@ public:
// Release those slicing warnings, which refer to an ObjectID, which is not in the list. // Release those slicing warnings, which refer to an ObjectID, which is not in the list.
// living_oids is expected to be sorted. // living_oids is expected to be sorted.
void remove_slicing_warnings_of_released_objects(const std::vector<ObjectID>& living_oids); void remove_slicing_warnings_of_released_objects(const std::vector<ObjectID>& living_oids);
// Object partially outside of the printer working space, cannot print. // Object partially outside of the printer working space, cannot print. No fade out.
void push_plater_error_notification(const std::string& text, GLCanvas3D& canvas); void push_plater_error_notification(const std::string& text, GLCanvas3D& canvas);
// Object fully out of the printer working space and such. // Object fully out of the printer working space and such. No fade out.
void push_plater_warning_notification(const std::string& text, GLCanvas3D& canvas); void push_plater_warning_notification(const std::string& text, GLCanvas3D& canvas);
// Closes error or warning of the same text // Closes error or warning of the same text
void close_plater_error_notification(const std::string& text); void close_plater_error_notification(const std::string& text);
void close_plater_warning_notification(const std::string& text); void close_plater_warning_notification(const std::string& text);
// creates special notification slicing complete // Creates special notification slicing complete.
// if large = true prints printing time and export button // If large = true (Plater side bar is closed), then printing time and export button is shown
// at the notification and fade-out is disabled. Otherwise the fade out time is set to 10s.
void push_slicing_complete_notification(GLCanvas3D& canvas, int timestamp, bool large); void push_slicing_complete_notification(GLCanvas3D& canvas, int timestamp, bool large);
// Add a print time estimate to an existing SlicingComplete notification. // Add a print time estimate to an existing SlicingComplete notification.
void set_slicing_complete_print_time(const std::string &info); void set_slicing_complete_print_time(const std::string &info);
@ -120,6 +123,7 @@ private:
struct NotificationData { struct NotificationData {
NotificationType type; NotificationType type;
NotificationLevel level; NotificationLevel level;
// Fade out time
const int duration; const int duration;
const std::string text1; const std::string text1;
const std::string hypertext; const std::string hypertext;
@ -290,11 +294,14 @@ private:
// Cache of IDs to identify and reuse ImGUI windows. // Cache of IDs to identify and reuse ImGUI windows.
NotificationIDProvider m_id_provider; NotificationIDProvider m_id_provider;
std::deque<std::unique_ptr<PopNotification>> m_pop_notifications; std::deque<std::unique_ptr<PopNotification>> m_pop_notifications;
// Last render time for fade out control.
long m_last_time { 0 }; long m_last_time { 0 };
bool m_hovered { false }; bool m_hovered { false };
//timestamps used for slicing finished - notification could be gone so it needs to be stored here //timestamps used for slicing finished - notification could be gone so it needs to be stored here
std::unordered_set<int> m_used_timestamps; std::unordered_set<int> m_used_timestamps;
// True if G-code preview is active. False if the Plater is active.
bool m_in_preview { false }; bool m_in_preview { false };
// True if the layer editing is enabled in Plater, so that the notifications are shifted left of it.
bool m_move_from_overlay { false }; bool m_move_from_overlay { false };
//prepared (basic) notifications //prepared (basic) notifications