mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-10 14:02:47 +00:00
Compare commits
3 Commits
v2.4.0-bet
...
feat/push-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ba71372be | ||
|
|
d2d7aa7aa8 | ||
|
|
c1f3125f75 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Qidi",
|
||||
"version": "02.04.00.01",
|
||||
"version": "02.04.00.02",
|
||||
"force_update": "0",
|
||||
"description": "Qidi configurations",
|
||||
"machine_model_list": [
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
"20"
|
||||
],
|
||||
"machine_pause_gcode": "PAUSE",
|
||||
"machine_start_gcode": "INIT_MAPPING_VALUE\nPRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG4 P3000\nT[initial_tool]\nG1 X108.000 Y1 F30000\nG0 Z[initial_layer_print_height] F600\n;G1 E3 F1800\nG90\nM83\nG0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 X108.000 Y2.5 F30000\nG0 Z[initial_layer_print_height] F600\nM83\nG0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 Z1 F600",
|
||||
"machine_start_gcode": "INIT_MAPPING_VALUE\nPRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG4 P3000\nG1 X108 Y1 F30000\nG0 Z[initial_layer_print_height] F600\nG0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X154 Z-0.1\nG1 X158\nG1 Z1 F600\nG1 X108 Y2.5 F30000\nG0 Z[initial_layer_print_height] F600\nG0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG1 X154 Z-0.1\nG1 X158\nG1 Z1 F600",
|
||||
"machine_unload_filament_time": "35",
|
||||
"nozzle_diameter": [
|
||||
"0.4"
|
||||
|
||||
@@ -6493,16 +6493,16 @@ void GUI_App::update_single_bundle(wxCommandEvent& evt)
|
||||
});
|
||||
}
|
||||
|
||||
void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
int GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
{
|
||||
// if(preset_bundle->bundles.pauseReads.load())
|
||||
// {
|
||||
// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread sync_bundle function yielded to main thread. 1";
|
||||
// return; // if the main thread acquires the lock at the start of our operations, we will yield
|
||||
// }
|
||||
if (!m_agent || !m_agent->is_user_login()) return;
|
||||
if (!m_agent || !m_agent->is_user_login()) return 0;
|
||||
auto orca_agent = std::dynamic_pointer_cast<OrcaCloudServiceAgent>(m_agent->get_cloud_agent());
|
||||
if (!orca_agent) return;
|
||||
if (!orca_agent) return 0;
|
||||
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_bundle: checking bundle " << bundle_id << " for updates";
|
||||
|
||||
@@ -6525,12 +6525,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to parse versions for bundle " << bundle_id
|
||||
<< " (local: " << local_version << ", remote: " << remote_version << ")";
|
||||
preset_bundle->bundles.ReadUnlock(); // unlock read when fail
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
if (remote_version <= local_version) {
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_bundle: bundle " << bundle_id << " is up-to-date (version " << local_version << ")";
|
||||
preset_bundle->bundles.ReadUnlock(); // unlock read when fail
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_bundle: updating bundle " << bundle_id
|
||||
<< " from version " << local_version
|
||||
@@ -6547,8 +6547,7 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
|
||||
// if it is an update, we will lock and write
|
||||
std::string ver;
|
||||
if(is_update)
|
||||
{
|
||||
if (is_update) {
|
||||
preset_bundle->bundles.WriteLock();
|
||||
preset_bundle->bundles.m_bundles[bundle_id].update_available = true;
|
||||
preset_bundle->bundles.m_bundles[bundle_id].is_subscribed = true;
|
||||
@@ -6556,8 +6555,13 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
preset_bundle->bundles.WriteUnlock();
|
||||
}
|
||||
|
||||
if(app_config->get_bool("preset_bundle_auto_update") == true || is_new)
|
||||
{
|
||||
const bool auto_update = app_config->get_bool("preset_bundle_auto_update");
|
||||
|
||||
if (is_update && !auto_update) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (auto_update || is_new) {
|
||||
// Fetch the latest bundle data from cloud
|
||||
std::map<std::string, std::map<std::string, std::string>> bundle_presets;
|
||||
BundleMetadata remote_metadata;
|
||||
@@ -6565,22 +6569,23 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
|
||||
if (result != 0) {
|
||||
BOOST_LOG_TRIVIAL(warning) << "sync_bundle: failed to fetch bundle " << bundle_id << ", result=" << result;
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Import the updated bundle on the main thread
|
||||
CallAfter([this, bundle_id, bundle_presets, remote_metadata,is_new,is_update,ver]() {
|
||||
if (!is_closing() && preset_bundle && app_config) {
|
||||
// Check the presets for any system vendors that need to be installed
|
||||
for (auto data : bundle_presets) {
|
||||
if (!check_preset_parent_available(data)) {
|
||||
add_pending_vendor_preset(data);
|
||||
CallAfter(
|
||||
[this, bundle_id, bundle_presets, remote_metadata, is_new, is_update, ver]() {
|
||||
if (!is_closing() && preset_bundle && app_config) {
|
||||
// Check the presets for any system vendors that need to be installed
|
||||
for (auto data : bundle_presets) {
|
||||
if (!check_preset_parent_available(data)) {
|
||||
add_pending_vendor_preset(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
load_pending_vendors();
|
||||
load_pending_vendors();
|
||||
|
||||
// if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread
|
||||
// {
|
||||
// if(!preset_bundle->bundles.pauseReads.load()) // check again if we can actually update so as to not block the main thread
|
||||
// {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : CallAfter from sync_bundle function actually updating subscribed presets";
|
||||
|
||||
preset_bundle->bundles.WriteLock();
|
||||
@@ -6610,10 +6615,12 @@ void GUI_App::sync_bundle(std::string bundle_id, std::string version)
|
||||
if (mainframe)
|
||||
mainframe->update_side_preset_ui();
|
||||
BOOST_LOG_TRIVIAL(info) << "sync_bundle: successfully updated bundle " << bundle_id;
|
||||
// }
|
||||
}
|
||||
});
|
||||
// }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -6817,6 +6824,10 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg)
|
||||
std::vector<Preset> presets_to_sync;
|
||||
std::vector<std::pair<std::string, std::string>> bundles_to_sync;
|
||||
std::unordered_set<std::string> bundles_synced;
|
||||
|
||||
std::unordered_set<std::string> known_available_updates;
|
||||
|
||||
bool update_available = false;
|
||||
// Sync once immediately, then every 60 seconds.
|
||||
while (!t.expired()) {
|
||||
++tick_tock;
|
||||
@@ -6922,17 +6933,31 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg)
|
||||
|
||||
// Iterate over the bundles, and update/create
|
||||
for (const auto& bundle_entry : bundles_to_sync) {
|
||||
|
||||
bundles_synced.insert(bundle_entry.first);
|
||||
// Sync each bundle individually
|
||||
// if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether
|
||||
// {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles";
|
||||
sync_bundle(bundle_entry.first, bundle_entry.second);
|
||||
// }
|
||||
// Small delay between bundle syncs to avoid overwhelming the server
|
||||
boost::this_thread::sleep_for(boost::chrono::milliseconds(100));
|
||||
|
||||
// Sync each bundle individually
|
||||
// if(!preset_bundle->bundles.pauseReads.load()) // if pause is true we will skip updating this frame altogether
|
||||
// {
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << "ORCA : Update thread syncing bundles";
|
||||
int res = sync_bundle(bundle_entry.first, bundle_entry.second);
|
||||
|
||||
const std::string known_update_key = bundle_entry.first + ":" + bundle_entry.second;
|
||||
if (res == 1 && known_available_updates.insert(known_update_key).second) {
|
||||
update_available = true;
|
||||
}
|
||||
|
||||
// }
|
||||
// Small delay between bundle syncs to avoid overwhelming the server
|
||||
boost::this_thread::sleep_for(boost::chrono::milliseconds(100));
|
||||
}
|
||||
|
||||
if (update_available) {
|
||||
wxGetApp()
|
||||
.plater()
|
||||
->get_notification_manager()
|
||||
->push_notification(NotificationType::CustomNotification,
|
||||
NotificationManager::NotificationLevel::RegularNotificationLevel, "There is an update available. Open the preset bundle dialog to update it.");
|
||||
|
||||
update_available = false;
|
||||
}
|
||||
|
||||
std::vector<BundleMetadata> to_delete;
|
||||
|
||||
@@ -544,7 +544,7 @@ public:
|
||||
|
||||
// Bundle subscription sync
|
||||
void check_bundle_updates();
|
||||
void sync_bundle(std::string bundle_id, std::string version);
|
||||
int sync_bundle(std::string bundle_id, std::string version);
|
||||
bool unsubscribe_bundle(const std::string& id);
|
||||
void update_single_bundle(wxCommandEvent& evt);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user