From 74e485d913a99d0088bf185e51517ee6fee4623c Mon Sep 17 00:00:00 2001 From: QIDI TECH <893239786@qq.com> Date: Mon, 21 Aug 2023 09:36:40 +0800 Subject: [PATCH] Continues to push notification when export gcode --- src/slic3r/GUI/NotificationManager.cpp | 40 ++++++++++---------------- src/slic3r/GUI/NotificationManager.hpp | 7 ++--- src/slic3r/GUI/Plater.cpp | 2 +- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 49a835f..7c625e4 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -696,11 +696,11 @@ bool NotificationManager::PopNotification::update_state(bool paused, const int64 } else if (m_state != EState::NotFading && m_state != EState::FadingOut && m_state != EState::ClosePending && m_state != EState::Finished && get_duration() != 0 && !paused) { int64_t up_time = now - m_notification_start; if (up_time >= get_duration() * 1000) { - if (get_duration_level() == NotificationLevel::ExportingNotificationLevel) { - m_state = EState::Finished; - } else { - m_state = EState::FadingOut; - } +//Y9 + if (get_type() == NotificationType::ExportOngoing) + m_state = EState::Exporting; + else + m_state = EState::FadingOut; m_fading_start = now; } else { m_next_render = get_duration() * 1000 - up_time; @@ -2847,41 +2847,31 @@ bool NotificationManager::update_notifications(GLCanvas3D& canvas) // update state of all notif and erase finished //Y9 bool export_on_going = false; - bool export_finished = false; - std::string message = "12"; + std::string message = _u8L("Exporting."); for (auto it = m_pop_notifications.begin(); it != m_pop_notifications.end();) { std::unique_ptr& notification = *it; request_render |= notification->update_state(hover, time_since_render); next_render = std::min(next_render, notification->next_render()); //Y9 - if (notification->get_data().type == NotificationType::ExportFinished) + if (notification->get_state() == PopNotification::EState::Exporting) { - export_finished = true; - export_on_going = false; - } - if (notification->get_state() == PopNotification::EState::Finished) - { - if (!export_finished) - { - if (notification->get_data().type == NotificationType::ExportOngoing) - { - message = notification->get_data().text1; - export_on_going = true; - } - } + message = notification->get_data().text1; + export_on_going = true; it = m_pop_notifications.erase(it); } + else if (notification->get_state() == PopNotification::EState::Finished) + it = m_pop_notifications.erase(it); else ++it; } //Y9 if (export_on_going) { - if (message == "Exporting...") - message = "Exporting"; + if (message == _u8L("Exporting.") + " . . .") + message = _u8L("Exporting."); else - message = message + "."; - push_notification(NotificationType::ExportOngoing, NotificationManager::NotificationLevel::ExportingNotificationLevel, message); + message = message + " ."; + push_notification(NotificationType::ExportOngoing, NotificationManager::NotificationLevel::ProgressBarNotificationLevel, message); } // delayed notifications diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index bf42d20..1fa2200 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -148,8 +148,6 @@ public: WarningNotificationLevel, // Error, no fade-out. Top most position. ErrorNotificationLevel, - // test - ExportingNotificationLevel, }; NotificationManager(wxEvtHandler* evt_handler); @@ -322,7 +320,8 @@ private: ClosePending, // Requesting Render Finished, // Requesting Render Hovered, // Followed by Shown - Paused + Paused, + Exporting }; PopNotification(const NotificationData &n, NotificationIDProvider &id_provider, wxEvtHandler* evt_handler); @@ -383,7 +382,6 @@ private: virtual bool push_background_color(); // used this function instead of reading directly m_data.duration. Some notifications might need to return changing value. virtual int get_duration() { return m_data.duration; } - virtual NotificationLevel get_duration_level() { return m_data.level; } const NotificationData m_data; // For reusing ImGUI windows. @@ -866,7 +864,6 @@ private: case NotificationLevel::RegularNotificationLevel: return 10; case NotificationLevel::PrintInfoNotificationLevel: return 10; case NotificationLevel::HintNotificationLevel: return 300; - case NotificationLevel::ExportingNotificationLevel: return 1; default: return 10; } } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b77d2c3..eab71b7 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3463,7 +3463,7 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova background_process.schedule_export(output_path.string(), output_path_on_removable_media); //Y9 //notification_manager->push_delayed_notification(NotificationType::ExportOngoing, []() {return true; }, 1000, 0); - notification_manager->push_notification(NotificationType::ExportOngoing, NotificationManager::NotificationLevel::ProgressBarNotificationLevel, "Exporting"); + notification_manager->push_notification(NotificationType::ExportOngoing, NotificationManager::NotificationLevel::ProgressBarNotificationLevel, _u8L("Exporting.")); } else { background_process.schedule_upload(std::move(upload_job)); }