diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 69dd1e26e..aa5fd042d 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -7715,10 +7715,12 @@ public: void set_interval(long n) { boost::lock_guard lock(m_mutex); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " entry, and last interval is: " << m_interval; m_next_backup -= boost::posix_time::seconds(m_interval); m_interval = n; m_next_backup += boost::posix_time::seconds(m_interval); m_cond.notify_all(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " exit, and new interval is: " << m_interval; } void put_other_changes() @@ -7796,6 +7798,7 @@ private: }; private: _BBS_Backup_Manager() { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " inital and interval = " << m_interval; m_next_backup = boost::get_system_time() + boost::posix_time::seconds(m_interval); boost::unique_lock lock(m_mutex); m_thread = std::move(boost::thread(boost::ref(*this))); @@ -7824,7 +7827,7 @@ private: } void process_ui_task(Task& t, bool canceled = false) { - BOOST_LOG_TRIVIAL(info) << "process_ui_task" << t.to_string(); + BOOST_LOG_TRIVIAL(info) << "process_ui_task" << t.to_string() << " and interval = " << m_interval; switch (t.type) { case Backup: { if (canceled) @@ -7868,7 +7871,7 @@ private: } void process_task(Task& t) { - BOOST_LOG_TRIVIAL(info) << "process_task" << t.to_string(); + BOOST_LOG_TRIVIAL(info) << "process_task" << t.to_string() << " and interval = " << m_interval; switch (t.type) { case Backup: // do it in response diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index c0b4a9ece..3d88b6f97 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -573,7 +573,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_ // BBS: backup project if (wxGetApp().app_config->get("backup_switch") == "true") { std::string backup_interval; - if (!wxGetApp().app_config->get("", "backup_interval", backup_interval)) + if (!wxGetApp().app_config->get("app", "backup_interval", backup_interval)) backup_interval = "10"; Slic3r::set_backup_interval(boost::lexical_cast(backup_interval)); } else { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 19ff1ffb3..fc709a67d 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -476,6 +476,8 @@ wxBoxSizer *PreferencesDialog::create_item_backup_input(wxString title, wxWindow StateColor input_bg(std::pair(wxColour("#F0F0F1"), StateColor::Disabled), std::pair(*wxWHITE, StateColor::Enabled)); input->SetBackgroundColor(input_bg); input->GetTextCtrl()->SetValue(app_config->get(param)); + wxTextValidator validator(wxFILTER_DIGITS); + input->GetTextCtrl()->SetValidator(validator); auto second_title = new wxStaticText(parent, wxID_ANY, _L("Second"), wxDefaultPosition, DESIGN_TITLE_SIZE, 0); @@ -496,23 +498,22 @@ wxBoxSizer *PreferencesDialog::create_item_backup_input(wxString title, wxWindow e.Skip(); }); - input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this, param, input](wxCommandEvent &e) { + std::function backup_interval = [this, param, input]() { m_backup_interval_time = input->GetTextCtrl()->GetValue(); app_config->set("backup_interval", std::string(m_backup_interval_time.mb_str())); app_config->save(); long backup_interval = 0; m_backup_interval_time.ToLong(&backup_interval); Slic3r::set_backup_interval(backup_interval); + }; + + input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [backup_interval](wxCommandEvent &e) { + backup_interval(); e.Skip(); }); - input->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, param, input](wxFocusEvent &e) { - m_backup_interval_time = input->GetTextCtrl()->GetValue(); - app_config->set("backup_interval", std::string(m_backup_interval_time.mb_str())); - app_config->save(); - long backup_interval = 0; - m_backup_interval_time.ToLong(&backup_interval); - Slic3r::set_backup_interval(backup_interval); + input->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [backup_interval](wxFocusEvent &e) { + backup_interval(); e.Skip(); });