diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json
index b589f5e2c7..02ad1e15e1 100644
--- a/resources/profiles/Custom.json
+++ b/resources/profiles/Custom.json
@@ -1,6 +1,6 @@
{
"name": "Custom Printer",
- "version": "02.00.00.00",
+ "version": "02.00.00.01",
"force_update": "0",
"description": "My configurations",
"machine_model_list": [
@@ -11,6 +11,10 @@
{
"name": "Generic Marlin Printer",
"sub_path": "machine/MyMarlin.json"
+ },
+ {
+ "name": "Generic RRF Printer",
+ "sub_path": "machine/MyRRF.json"
}
],
"process_list": [
@@ -22,6 +26,10 @@
"name": "fdm_process_klipper_common",
"sub_path": "process/fdm_process_klipper_common.json"
},
+ {
+ "name": "fdm_process_rrf_common",
+ "sub_path": "process/fdm_process_rrf_common.json"
+ },
{
"name": "fdm_process_marlin_common",
"sub_path": "process/fdm_process_marlin_common.json"
@@ -50,6 +58,30 @@
"name": "0.28mm Extra Draft @MyKlipper",
"sub_path": "process/0.28mm Extra Draft @MyKlipper.json"
},
+ {
+ "name": "0.08mm Extra Fine @MyRRF",
+ "sub_path": "process/0.08mm Extra Fine @MyRRF.json"
+ },
+ {
+ "name": "0.12mm Fine @MyRRF",
+ "sub_path": "process/0.12mm Fine @MyRRF.json"
+ },
+ {
+ "name": "0.15mm Optimal @MyRRF",
+ "sub_path": "process/0.15mm Optimal @MyRRF.json"
+ },
+ {
+ "name": "0.20mm Standard @MyRRF",
+ "sub_path": "process/0.20mm Standard @MyRRF.json"
+ },
+ {
+ "name": "0.24mm Draft @MyRRF",
+ "sub_path": "process/0.24mm Draft @MyRRF.json"
+ },
+ {
+ "name": "0.28mm Extra Draft @MyRRF",
+ "sub_path": "process/0.28mm Extra Draft @MyRRF.json"
+ },
{
"name": "0.08mm Extra Fine @MyMarlin",
"sub_path": "process/0.08mm Extra Fine @MyMarlin.json"
@@ -162,6 +194,10 @@
"name": "fdm_klipper_common",
"sub_path": "machine/fdm_klipper_common.json"
},
+ {
+ "name": "fdm_rrf_common",
+ "sub_path": "machine/fdm_rrf_common.json"
+ },
{
"name": "MyKlipper 0.4 nozzle",
"sub_path": "machine/MyKlipper 0.4 nozzle.json"
@@ -169,6 +205,10 @@
{
"name": "MyMarlin 0.4 nozzle",
"sub_path": "machine/MyMarlin 0.4 nozzle.json"
+ },
+ {
+ "name": "MyRRF 0.4 nozzle",
+ "sub_path": "machine/MyRRF 0.4 nozzle.json"
}
]
}
diff --git a/resources/profiles/Custom/Generic RRF Printer_cover.png b/resources/profiles/Custom/Generic RRF Printer_cover.png
new file mode 100644
index 0000000000..8916fc4309
Binary files /dev/null and b/resources/profiles/Custom/Generic RRF Printer_cover.png differ
diff --git a/resources/profiles/Custom/filament/My Generic ABS.json b/resources/profiles/Custom/filament/My Generic ABS.json
index 972f4ddcca..b7b879dc05 100644
--- a/resources/profiles/Custom/filament/My Generic ABS.json
+++ b/resources/profiles/Custom/filament/My Generic ABS.json
@@ -14,6 +14,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic ASA.json b/resources/profiles/Custom/filament/My Generic ASA.json
index 51304d26ae..cbed120fc3 100644
--- a/resources/profiles/Custom/filament/My Generic ASA.json
+++ b/resources/profiles/Custom/filament/My Generic ASA.json
@@ -14,6 +14,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PA-CF.json b/resources/profiles/Custom/filament/My Generic PA-CF.json
index e2b12590da..d850d084ec 100644
--- a/resources/profiles/Custom/filament/My Generic PA-CF.json
+++ b/resources/profiles/Custom/filament/My Generic PA-CF.json
@@ -18,8 +18,9 @@
"filament_max_volumetric_speed": [
"8"
],
-"compatible_printers": [
+ "compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PA.json b/resources/profiles/Custom/filament/My Generic PA.json
index 6f4f15592f..8124b0d546 100644
--- a/resources/profiles/Custom/filament/My Generic PA.json
+++ b/resources/profiles/Custom/filament/My Generic PA.json
@@ -15,8 +15,9 @@
"filament_max_volumetric_speed": [
"12"
],
-"compatible_printers": [
+ "compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PC.json b/resources/profiles/Custom/filament/My Generic PC.json
index 2bb3b68ff0..019b5e5ab6 100644
--- a/resources/profiles/Custom/filament/My Generic PC.json
+++ b/resources/profiles/Custom/filament/My Generic PC.json
@@ -14,6 +14,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PETG.json b/resources/profiles/Custom/filament/My Generic PETG.json
index 35c9957cd6..cfbd41b29e 100644
--- a/resources/profiles/Custom/filament/My Generic PETG.json
+++ b/resources/profiles/Custom/filament/My Generic PETG.json
@@ -44,6 +44,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PLA-CF.json b/resources/profiles/Custom/filament/My Generic PLA-CF.json
index ea9dffb366..fc45a9903e 100644
--- a/resources/profiles/Custom/filament/My Generic PLA-CF.json
+++ b/resources/profiles/Custom/filament/My Generic PLA-CF.json
@@ -20,6 +20,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PLA.json b/resources/profiles/Custom/filament/My Generic PLA.json
index 0c9dcc4144..b3dab02002 100644
--- a/resources/profiles/Custom/filament/My Generic PLA.json
+++ b/resources/profiles/Custom/filament/My Generic PLA.json
@@ -17,6 +17,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic PVA.json b/resources/profiles/Custom/filament/My Generic PVA.json
index 546acc85c0..7631b30844 100644
--- a/resources/profiles/Custom/filament/My Generic PVA.json
+++ b/resources/profiles/Custom/filament/My Generic PVA.json
@@ -20,6 +20,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/filament/My Generic TPU.json b/resources/profiles/Custom/filament/My Generic TPU.json
index a6a6fc4f16..cfa4bd617d 100644
--- a/resources/profiles/Custom/filament/My Generic TPU.json
+++ b/resources/profiles/Custom/filament/My Generic TPU.json
@@ -11,6 +11,7 @@
],
"compatible_printers": [
"MyKlipper 0.4 nozzle",
- "MyMarlin 0.4 nozzle"
+ "MyMarlin 0.4 nozzle",
+ "MyRRF 0.4 nozzle"
]
}
diff --git a/resources/profiles/Custom/machine/MyKlipper.json b/resources/profiles/Custom/machine/MyKlipper.json
index 2ea4b21a5f..9375a376a0 100644
--- a/resources/profiles/Custom/machine/MyKlipper.json
+++ b/resources/profiles/Custom/machine/MyKlipper.json
@@ -6,7 +6,7 @@
"machine_tech": "FFF",
"family": "MyPrinter",
"bed_model": "",
- "bed_texture": "",
+ "bed_texture": "orcaslicer_bed_texture.svg",
"hotend_model": "",
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
}
diff --git a/resources/profiles/Custom/machine/MyMarlin.json b/resources/profiles/Custom/machine/MyMarlin.json
index 7f9314f9fa..78f5f2c125 100644
--- a/resources/profiles/Custom/machine/MyMarlin.json
+++ b/resources/profiles/Custom/machine/MyMarlin.json
@@ -6,7 +6,7 @@
"machine_tech": "FFF",
"family": "MyPrinter",
"bed_model": "",
- "bed_texture": "",
+ "bed_texture": "orcaslicer_bed_texture.svg",
"hotend_model": "",
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
}
diff --git a/resources/profiles/Custom/machine/MyRRF 0.4 nozzle.json b/resources/profiles/Custom/machine/MyRRF 0.4 nozzle.json
new file mode 100644
index 0000000000..3a204d7fe4
--- /dev/null
+++ b/resources/profiles/Custom/machine/MyRRF 0.4 nozzle.json
@@ -0,0 +1,19 @@
+{
+ "type": "machine",
+ "setting_id": "GM003",
+ "name": "MyRRF 0.4 nozzle",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_rrf_common",
+ "printer_model": "Generic RRF Printer",
+ "nozzle_diameter": [
+ "0.4"
+ ],
+ "printable_area": [
+ "0x0",
+ "250x0",
+ "250x250",
+ "0x250"
+ ],
+ "printable_height": "250"
+}
diff --git a/resources/profiles/Custom/machine/MyRRF.json b/resources/profiles/Custom/machine/MyRRF.json
new file mode 100644
index 0000000000..f03683d61f
--- /dev/null
+++ b/resources/profiles/Custom/machine/MyRRF.json
@@ -0,0 +1,12 @@
+{
+ "type": "machine_model",
+ "name": "Generic RRF Printer",
+ "model_id": "my_rrf_01",
+ "nozzle_diameter": "0.4",
+ "machine_tech": "FFF",
+ "family": "MyPrinter",
+ "bed_model": "",
+ "bed_texture": "orcaslicer_bed_texture.svg",
+ "hotend_model": "",
+ "default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
+}
diff --git a/resources/profiles/Custom/machine/fdm_rrf_common.json b/resources/profiles/Custom/machine/fdm_rrf_common.json
new file mode 100644
index 0000000000..9dfbfbef03
--- /dev/null
+++ b/resources/profiles/Custom/machine/fdm_rrf_common.json
@@ -0,0 +1,141 @@
+{
+ "type": "machine",
+ "name": "fdm_rrf_common",
+ "from": "system",
+ "instantiation": "false",
+ "inherits": "fdm_machine_common",
+ "gcode_flavor": "reprapfirmware",
+ "machine_max_acceleration_e": [
+ "5000",
+ "5000"
+ ],
+ "machine_max_acceleration_extruding": [
+ "20000",
+ "20000"
+ ],
+ "machine_max_acceleration_retracting": [
+ "5000",
+ "5000"
+ ],
+ "machine_max_acceleration_travel": [
+ "20000",
+ "20000"
+ ],
+ "machine_max_acceleration_x": [
+ "20000",
+ "20000"
+ ],
+ "machine_max_acceleration_y": [
+ "20000",
+ "20000"
+ ],
+ "machine_max_acceleration_z": [
+ "500",
+ "200"
+ ],
+ "machine_max_speed_e": [
+ "25",
+ "25"
+ ],
+ "machine_max_speed_x": [
+ "500",
+ "200"
+ ],
+ "machine_max_speed_y": [
+ "500",
+ "200"
+ ],
+ "machine_max_speed_z": [
+ "12",
+ "12"
+ ],
+ "machine_max_jerk_e": [
+ "2.5",
+ "2.5"
+ ],
+ "machine_max_jerk_x": [
+ "9",
+ "9"
+ ],
+ "machine_max_jerk_y": [
+ "9",
+ "9"
+ ],
+ "machine_max_jerk_z": [
+ "0.2",
+ "0.4"
+ ],
+ "machine_min_extruding_rate": [
+ "0",
+ "0"
+ ],
+ "machine_min_travel_rate": [
+ "0",
+ "0"
+ ],
+ "max_layer_height": [
+ "0.32"
+ ],
+ "min_layer_height": [
+ "0.08"
+ ],
+ "printable_height": "250",
+ "extruder_clearance_radius": "65",
+ "extruder_clearance_height_to_rod": "36",
+ "extruder_clearance_height_to_lid": "140",
+ "printer_settings_id": "",
+ "printer_technology": "FFF",
+ "printer_variant": "0.4",
+ "retraction_minimum_travel": [
+ "1"
+ ],
+ "retract_before_wipe": [
+ "70%"
+ ],
+ "retract_when_changing_layer": [
+ "1"
+ ],
+ "retraction_length": [
+ "0.8"
+ ],
+ "retract_length_toolchange": [
+ "2"
+ ],
+ "z_hop": [
+ "0.4"
+ ],
+ "retract_restart_extra": [
+ "0"
+ ],
+ "retract_restart_extra_toolchange": [
+ "0"
+ ],
+ "retraction_speed": [
+ "30"
+ ],
+ "deretraction_speed": [
+ "30"
+ ],
+ "z_hop_types": "Normal Lift",
+ "silent_mode": "0",
+ "single_extruder_multi_material": "1",
+ "change_filament_gcode": "",
+ "wipe": [
+ "1"
+ ],
+ "default_filament_profile": [
+ "My Generic ABS"
+ ],
+ "default_print_profile": "0.20mm Standard @MyRRF",
+ "bed_exclude_area": [
+ "0x0"
+ ],
+ "scan_first_layer": "0",
+ "nozzle_type": "undefine",
+ "auxiliary_fan": "0",
+ "machine_start_gcode": "; Prime Filament Sensor for Runout\nM581 P1 T2 S-1 R0\nM950 J1 C\"nil\" ; Input 1 e0 Filament Sensor \nM591 D0 P2 C\"e0stop\" S1 ; Filament Runout Sensor\n\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 S140 ; Set extruder temp 140C before bed level\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\n;G28 W\nG32 ; Levels Z Tilt and probes Z=0\nG29 S0 ; mesh bed leveling\nG1 X0 Y0 Z2 F2000\nM109 S[first_layer_temperature] ; wait for extruder temp\n\nG1 X10 Y-7 Z0.3 F1000.0 ; go outside print area\nG92 E0.0\nG1 Z0.2 E8 ; Purge Bubble\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0",
+ "machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM84 ; disable motors",
+ "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
+ "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
+ "machine_pause_gcode": "M601"
+}
\ No newline at end of file
diff --git a/resources/profiles/Custom/orcaslicer_bed_texture.svg b/resources/profiles/Custom/orcaslicer_bed_texture.svg
new file mode 100644
index 0000000000..f012fea080
--- /dev/null
+++ b/resources/profiles/Custom/orcaslicer_bed_texture.svg
@@ -0,0 +1,148 @@
+
+
diff --git a/resources/profiles/Custom/process/0.08mm Extra Fine @MyRRF.json b/resources/profiles/Custom/process/0.08mm Extra Fine @MyRRF.json
new file mode 100644
index 0000000000..8bc01055bd
--- /dev/null
+++ b/resources/profiles/Custom/process/0.08mm Extra Fine @MyRRF.json
@@ -0,0 +1,11 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.08mm Extra Fine @MyRRF",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_process_rrf_common",
+ "layer_height": "0.08",
+ "bottom_shell_layers": "7",
+ "top_shell_layers": "9"
+}
diff --git a/resources/profiles/Custom/process/0.12mm Fine @MyRRF.json b/resources/profiles/Custom/process/0.12mm Fine @MyRRF.json
new file mode 100644
index 0000000000..cf0da1489a
--- /dev/null
+++ b/resources/profiles/Custom/process/0.12mm Fine @MyRRF.json
@@ -0,0 +1,11 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.12mm Fine @MyRRF",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_process_rrf_common",
+ "layer_height": "0.12",
+ "bottom_shell_layers": "5",
+ "top_shell_layers": "6"
+}
diff --git a/resources/profiles/Custom/process/0.15mm Optimal @MyRRF.json b/resources/profiles/Custom/process/0.15mm Optimal @MyRRF.json
new file mode 100644
index 0000000000..dbc5c6e4a4
--- /dev/null
+++ b/resources/profiles/Custom/process/0.15mm Optimal @MyRRF.json
@@ -0,0 +1,11 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.15mm Optimal @MyRRF",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_process_rrf_common",
+ "bottom_shell_layers": "4",
+ "top_shell_layers": "5",
+ "layer_height": "0.15"
+}
diff --git a/resources/profiles/Custom/process/0.20mm Standard @MyRRF.json b/resources/profiles/Custom/process/0.20mm Standard @MyRRF.json
new file mode 100644
index 0000000000..84d732c666
--- /dev/null
+++ b/resources/profiles/Custom/process/0.20mm Standard @MyRRF.json
@@ -0,0 +1,11 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.20mm Standard @MyRRF",
+ "from": "system",
+ "inherits": "fdm_process_rrf_common",
+ "instantiation": "true",
+ "layer_height": "0.2",
+ "bottom_shell_layers": "3",
+ "top_shell_layers": "4"
+}
diff --git a/resources/profiles/Custom/process/0.24mm Draft @MyRRF.json b/resources/profiles/Custom/process/0.24mm Draft @MyRRF.json
new file mode 100644
index 0000000000..85ca2a95a6
--- /dev/null
+++ b/resources/profiles/Custom/process/0.24mm Draft @MyRRF.json
@@ -0,0 +1,12 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.24mm Draft @MyRRF",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_process_rrf_common",
+ "layer_height": "0.24",
+ "top_surface_line_width": "0.45",
+ "bottom_shell_layers": "3",
+ "top_shell_layers": "4"
+}
diff --git a/resources/profiles/Custom/process/0.28mm Extra Draft @MyRRF.json b/resources/profiles/Custom/process/0.28mm Extra Draft @MyRRF.json
new file mode 100644
index 0000000000..a0dcd98278
--- /dev/null
+++ b/resources/profiles/Custom/process/0.28mm Extra Draft @MyRRF.json
@@ -0,0 +1,12 @@
+{
+ "type": "process",
+ "setting_id": "GP004",
+ "name": "0.28mm Extra Draft @MyRRF",
+ "from": "system",
+ "instantiation": "true",
+ "inherits": "fdm_process_rrf_common",
+ "layer_height": "0.28",
+ "top_surface_line_width": "0.45",
+ "bottom_shell_layers": "3",
+ "top_shell_layers": "4"
+}
diff --git a/resources/profiles/Custom/process/fdm_process_rrf_common.json b/resources/profiles/Custom/process/fdm_process_rrf_common.json
new file mode 100644
index 0000000000..86061eb72a
--- /dev/null
+++ b/resources/profiles/Custom/process/fdm_process_rrf_common.json
@@ -0,0 +1,109 @@
+{
+ "type": "process",
+ "name": "fdm_process_rrf_common",
+ "from": "system",
+ "instantiation": "false",
+ "inherits": "fdm_process_common",
+ "adaptive_layer_height": "0",
+ "reduce_crossing_wall": "0",
+ "max_travel_detour_distance": "0",
+ "bottom_surface_pattern": "monotonic",
+ "bottom_shell_layers": "3",
+ "bottom_shell_thickness": "0",
+ "bridge_flow": "0.95",
+ "bridge_speed": "50",
+ "brim_width": "5",
+ "brim_object_gap": "0.1",
+ "compatible_printers_condition": "",
+ "print_sequence": "by layer",
+ "default_acceleration": "5000",
+ "top_surface_acceleration": "3000",
+ "travel_acceleration": "7000",
+ "inner_wall_acceleration": "5000",
+ "outer_wall_acceleration": "3000",
+ "bridge_no_support": "0",
+ "draft_shield": "disabled",
+ "elefant_foot_compensation": "0",
+ "outer_wall_line_width": "0.4",
+ "wall_infill_order": "inner wall/outer wall/infill",
+ "line_width": "0.4",
+ "infill_direction": "45",
+ "sparse_infill_density": "15%",
+ "sparse_infill_pattern": "grid",
+ "initial_layer_acceleration": "500",
+ "initial_layer_line_width": "0.5",
+ "initial_layer_print_height": "0.2",
+ "infill_combination": "0",
+ "sparse_infill_line_width": "0.45",
+ "infill_wall_overlap": "25%",
+ "interface_shells": "0",
+ "ironing_flow": "10%",
+ "ironing_spacing": "0.15",
+ "ironing_speed": "30",
+ "ironing_type": "no ironing",
+ "layer_height": "0.2",
+ "reduce_infill_retraction": "1",
+ "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
+ "detect_overhang_wall": "1",
+ "overhang_1_4_speed": "0",
+ "overhang_2_4_speed": "50",
+ "overhang_3_4_speed": "30",
+ "overhang_4_4_speed": "10",
+ "inner_wall_line_width": "0.45",
+ "wall_loops": "3",
+ "print_settings_id": "",
+ "raft_layers": "0",
+ "seam_position": "aligned",
+ "skirt_distance": "2",
+ "skirt_height": "1",
+ "skirt_loops": "0",
+ "minimum_sparse_infill_area": "15",
+ "internal_solid_infill_line_width": "0.4",
+ "spiral_mode": "0",
+ "standby_temperature_delta": "-5",
+ "enable_support": "0",
+ "resolution": "0.012",
+ "support_type": "normal(auto)",
+ "support_style": "default",
+ "support_on_build_plate_only": "0",
+ "support_top_z_distance": "0.2",
+ "support_filament": "0",
+ "support_line_width": "0.4",
+ "support_interface_loop_pattern": "0",
+ "support_interface_filament": "0",
+ "support_interface_top_layers": "2",
+ "support_interface_bottom_layers": "2",
+ "support_interface_spacing": "0.5",
+ "support_interface_speed": "80",
+ "support_base_pattern": "rectilinear",
+ "support_base_pattern_spacing": "2.5",
+ "support_speed": "150",
+ "support_threshold_angle": "30",
+ "support_object_xy_distance": "0.35",
+ "tree_support_branch_angle": "45",
+ "tree_support_wall_count": "0",
+ "detect_thin_wall": "0",
+ "top_surface_pattern": "monotonic",
+ "top_surface_line_width": "0.4",
+ "top_shell_layers": "3",
+ "top_shell_thickness": "0.8",
+ "initial_layer_speed": "50",
+ "initial_layer_infill_speed": "105",
+ "outer_wall_speed": "120",
+ "inner_wall_speed": "200",
+ "internal_solid_infill_speed": "200",
+ "top_surface_speed": "100",
+ "gap_infill_speed": "100",
+ "sparse_infill_speed": "200",
+ "travel_speed": "350",
+ "enable_prime_tower": "0",
+ "wipe_tower_no_sparse_layers": "0",
+ "prime_tower_width": "60",
+ "xy_hole_compensation": "0",
+ "xy_contour_compensation": "0",
+ "enable_arc_fitting": "0",
+ "compatible_printers": [
+ "MyRRF 0.4 nozzle"
+ ],
+ "exclude_object": "1"
+}
diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html
index 7841885562..f748e44a4f 100644
--- a/resources/web/homepage/index.html
+++ b/resources/web/homepage/index.html
@@ -19,7 +19,7 @@
-
+

diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js
index 26794db0e2..17de9d6b3e 100644
--- a/resources/web/homepage/js/home.js
+++ b/resources/web/homepage/js/home.js
@@ -80,62 +80,54 @@ function Set_RecentFile_MouseRightBtn_Event()
}
+function SetLoginPanelVisibility(visible) {
+ var leftBoard = document.getElementById("LeftBoard");
+ if (visible) {
+ leftBoard.style.display = "block";
+ } else {
+ leftBoard.style.display = "none";
+ }
+}
function HandleStudio( pVal )
{
let strCmd = pVal['command'];
- if(strCmd=='get_recent_projects')
- {
- ShowRecentFileList(pVal['response']);
- }
- else if(strCmd=='studio_userlogin')
- {
- SetLoginInfo(pVal['data']['avatar'],pVal['data']['name']);
- }
- else if(strCmd=='studio_useroffline')
- {
- SetUserOffline();
- }
- else if( strCmd=="studio_set_mallurl" )
- {
- SetMallUrl( pVal['data']['url'] );
- }
- else if( strCmd=="studio_clickmenu" )
- {
- let strName=pVal['data']['menu'];
-
- GotoMenu(strName);
- }
- else if( strCmd=="network_plugin_installtip" )
- {
- let nShow=pVal["show"]*1;
-
- if(nShow==1)
- {
- $("#NoPluginTip").show();
- $("#NoPluginTip").css("display","flex");
- }
- else
- {
- $("#NoPluginTip").hide();
- }
- }
- else if( strCmd=="modelmall_model_advise_get")
- {
- //alert('hot');
- if( m_HotModelList!=null )
- {
- let SS1=JSON.stringify(pVal['hits']);
- let SS2=JSON.stringify(m_HotModelList);
-
- if( SS1==SS2 )
- return;
- }
+ if (strCmd == "get_recent_projects") {
+ ShowRecentFileList(pVal["response"]);
+ } else if (strCmd == "studio_userlogin") {
+ SetLoginInfo(pVal["data"]["avatar"], pVal["data"]["name"]);
+ } else if (strCmd == "studio_useroffline") {
+ SetUserOffline();
+ } else if (strCmd == "studio_set_mallurl") {
+ SetMallUrl(pVal["data"]["url"]);
+ } else if (strCmd == "studio_clickmenu") {
+ let strName = pVal["data"]["menu"];
- m_HotModelList=pVal['hits'];
- ShowStaffPick( m_HotModelList );
- }
+ GotoMenu(strName);
+ } else if (strCmd == "network_plugin_installtip") {
+ let nShow = pVal["show"] * 1;
+
+ if (nShow == 1) {
+ $("#NoPluginTip").show();
+ $("#NoPluginTip").css("display", "flex");
+ } else {
+ $("#NoPluginTip").hide();
+ }
+ } else if (strCmd == "modelmall_model_advise_get") {
+ //alert('hot');
+ if (m_HotModelList != null) {
+ let SS1 = JSON.stringify(pVal["hits"]);
+ let SS2 = JSON.stringify(m_HotModelList);
+
+ if (SS1 == SS2) return;
+ }
+
+ m_HotModelList = pVal["hits"];
+ ShowStaffPick(m_HotModelList);
+ } else if (data.cmd === "SetLoginPanelVisibility") {
+ SetLoginPanelVisibility(data.visible);
+ }
}
function GotoMenu( strMenu )
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index f88a797e55..1894e1d35c 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -1434,7 +1434,7 @@ int GUI_App::install_plugin(std::string name, std::string package_name, InstallP
if (pro_fn)
pro_fn(InstallStatusInstallCompleted, 100, cancel);
if (name == "plugins")
- app_config->set_str("app", "installed_networking", "1");
+ app_config->set_bool("installed_networking", true);
BOOST_LOG_TRIVIAL(info) << "[install_plugin] success";
return 0;
}
@@ -2616,6 +2616,11 @@ void GUI_App::copy_network_if_available()
bool GUI_App::on_init_network(bool try_backup)
{
+ auto should_load_networking_plugin = app_config->get_bool("installed_networking");
+ if(!should_load_networking_plugin) {
+ BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Don't load plugin as installed_networking is false";
+ return false;
+ }
int load_agent_dll = Slic3r::NetworkAgent::initialize_network_module();
bool create_network_agent = false;
__retry:
@@ -2627,7 +2632,7 @@ __retry:
if (!bambu_source) {
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": can not get bambu source module!";
m_networking_compatible = false;
- if (app_config->get("installed_networking") == "1") {
+ if (should_load_networking_plugin) {
m_networking_need_update = true;
}
}
@@ -2642,13 +2647,13 @@ __retry:
goto __retry;
}
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, version dismatch, need upload network module";
- if (app_config->get("installed_networking") == "1") {
+ if (should_load_networking_plugin) {
m_networking_need_update = true;
}
}
} else {
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, load dll failed";
- if (app_config->get("installed_networking") == "1") {
+ if (should_load_networking_plugin) {
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, need upload network module";
m_networking_need_update = true;
}
@@ -3208,9 +3213,9 @@ void GUI_App::ShowUserGuide() {
try {
bool res = false;
GuideFrame GuideDlg(this);
- //if (GuideDlg.IsFirstUse())
+ //if (GuideDlg.IsFirstUse())
res = GuideDlg.run();
- if (res) {
+if (res) {
load_current_presets();
update_publish_status();
// BBS: remove SLA related message
@@ -3462,6 +3467,7 @@ void GUI_App::get_login_info()
wxString strJS = wxString::Format("window.postMessage(%s)", logout_cmd);
GUI::wxGetApp().run_script(strJS);
}
+ mainframe->m_webview->SetLoginPanelVisibility(true);
}
}
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 84f05c4226..94bbedf5a8 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -989,30 +989,6 @@ void MainFrame::init_tabpanel() {
m_tabpanel->Hide();
m_settings_dialog.set_tabpanel(m_tabpanel);
- m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGING, [this](wxBookCtrlEvent &e) {
- int old_sel = e.GetOldSelection();
- int new_sel = e.GetSelection();
- if (wxGetApp().preset_bundle && wxGetApp().preset_bundle->is_bbl_vendor() && new_sel == tpMonitor) {
- if (!wxGetApp().getAgent()) {
- e.Veto();
- BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins") % old_sel % new_sel;
- if (m_plater) {
- wxCommandEvent *evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
- wxQueueEvent(m_plater, evt);
- }
- }
- } else {
- if (new_sel == tpMonitor && wxGetApp().preset_bundle != nullptr) {
- auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
- wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
- if (url.empty()) {
- wxString url = wxString::Format("file://%s/web/orca/missing_connection.html", from_u8(resources_dir()));
- m_printer_view->load_url(url);
- }
- }
- }
- });
-
#ifdef __WXMSW__
m_tabpanel->Bind(wxEVT_BOOKCTRL_PAGE_CHANGED, [this](wxBookCtrlEvent& e) {
#else
diff --git a/src/slic3r/GUI/NetworkTestDialog.cpp b/src/slic3r/GUI/NetworkTestDialog.cpp
index 69be995e6f..80a7eeacfc 100644
--- a/src/slic3r/GUI/NetworkTestDialog.cpp
+++ b/src/slic3r/GUI/NetworkTestDialog.cpp
@@ -93,7 +93,7 @@ wxBoxSizer* NetworkTestDialog::create_info_sizer(wxWindow* parent)
sizer->Add(text_basic_info, 0, wxALL, 5);
wxBoxSizer* version_sizer = new wxBoxSizer(wxHORIZONTAL);
- text_version_title = new wxStaticText(this, wxID_ANY, _L("Studio Version:"), wxDefaultPosition, wxDefaultSize, 0);
+ text_version_title = new wxStaticText(this, wxID_ANY, _L("OrcaSlicer Version:"), wxDefaultPosition, wxDefaultSize, 0);
text_version_title->Wrap(-1);
version_sizer->Add(text_version_title, 0, wxALL, 5);
@@ -139,11 +139,11 @@ wxBoxSizer* NetworkTestDialog::create_content_sizer(wxWindow* parent)
grid_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
StateColor btn_bg(std::pair
(wxColour(0, 137, 123), StateColor::Pressed),std::pair(wxColour(38, 166, 154), StateColor::Hovered), std::pair(wxColour(255,255,255), StateColor::Enabled));
- btn_link = new Button(this, _L("Test BambuLab"));
+ btn_link = new Button(this, _L("Test OrcaSlicer(GitHub)"));
btn_link->SetBackgroundColor(btn_bg);
grid_sizer->Add(btn_link, 0, wxEXPAND | wxALL, 5);
- text_link_title = new wxStaticText(this, wxID_ANY, _L("Test BambuLab:"), wxDefaultPosition, wxDefaultSize, 0);
+ text_link_title = new wxStaticText(this, wxID_ANY, _L("Test OrcaSlicer(GitHub):"), wxDefaultPosition, wxDefaultSize, 0);
text_link_title->Wrap(-1);
grid_sizer->Add(text_link_title, 0, wxALIGN_RIGHT | wxALL, 5);
@@ -163,114 +163,16 @@ wxBoxSizer* NetworkTestDialog::create_content_sizer(wxWindow* parent)
text_bing_val = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
text_bing_val->Wrap(-1);
grid_sizer->Add(text_bing_val, 0, wxALL, 5);
-
- btn_iot = new Button(this, _L("Test HTTP"));
- btn_iot->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_iot, 0, wxEXPAND | wxALL, 5);
-
- text_iot_title = new wxStaticText(this, wxID_ANY, _L("Test HTTP Service:"), wxDefaultPosition, wxDefaultSize, 0);
- text_iot_title->Wrap(-1);
- grid_sizer->Add(text_iot_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_iot_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_iot_value->Wrap(-1);
- grid_sizer->Add(text_iot_value, 0, wxALL, 5);
-
- btn_oss = new Button(this, _L("Test storage"));
- btn_oss->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_oss, 0, wxEXPAND | wxALL, 5);
-
- text_oss_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upload:"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_title->Wrap(-1);
- grid_sizer->Add(text_oss_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_oss_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_value->Wrap(-1);
- grid_sizer->Add(text_oss_value, 0, wxALL, 5);
-
- btn_oss_upgrade = new Button(this, _L("Test storage upgrade"));
- btn_oss_upgrade->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_oss_upgrade, 0, wxEXPAND | wxALL, 5);
-
- text_oss_upgrade_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upgrade:"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_upgrade_title->Wrap(-1);
- grid_sizer->Add(text_oss_upgrade_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_oss_upgrade_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_upgrade_value->Wrap(-1);
- grid_sizer->Add(text_oss_upgrade_value, 0, wxALL, 5);
-
- btn_oss_download = new Button(this, _L("Test storage download"));
- btn_oss_download->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_oss_download, 0, wxEXPAND | wxALL, 5);
-
- text_oss_download_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Download:"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_download_title->Wrap(-1);
- grid_sizer->Add(text_oss_download_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_oss_download_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_download_value->Wrap(-1);
- grid_sizer->Add(text_oss_download_value, 0, wxALL, 5);
-
- btn_network_plugin=new Button(this, _L("Test plugin download"));
- btn_network_plugin->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_network_plugin, 0, wxEXPAND | wxALL, 5);
-
- text_network_plugin_title=new wxStaticText(this, wxID_ANY, _L("Test Plugin Download:"), wxDefaultPosition, wxDefaultSize, 0);
- text_network_plugin_title->Wrap(-1);
- grid_sizer->Add(text_network_plugin_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_network_plugin_value=new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_network_plugin_value->Wrap(-1);
- grid_sizer->Add(text_network_plugin_value, 0, wxALL, 5);
-
-
- btn_oss_upload = new Button(this, _L("Test Storage Upload"));
- btn_oss_upload->SetBackgroundColor(btn_bg);
- grid_sizer->Add(btn_oss_upload, 0, wxEXPAND | wxALL, 5);
-
- text_oss_upload_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upload:"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_upload_title->Wrap(-1);
- grid_sizer->Add(text_oss_upload_title, 0, wxALIGN_RIGHT | wxALL, 5);
-
- text_oss_upload_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
- text_oss_upload_value->Wrap(-1);
- grid_sizer->Add(text_oss_upload_value, 0, wxALL, 5);
-
- btn_oss_upload->Hide();
- text_oss_upload_title->Hide();
- text_oss_upload_value->Hide();
-
sizer->Add(grid_sizer, 1, wxEXPAND, 5);
btn_link->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
- start_test_bambulab_thread();
+ start_test_github_thread();
});
btn_bing->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
start_test_bing_thread();
});
- btn_iot->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
- start_test_iot_thread();
- });
-
- btn_oss->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
- start_test_oss_thread();
- });
-
- btn_oss_upgrade->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
- start_test_oss_upgrade_thread();
- });
-
- btn_oss_download->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
- start_test_oss_download_thread();
- });
-
- btn_network_plugin->Bind(wxEVT_BUTTON, [this](wxCommandEvent &evt) {
- start_test_plugin_download_thread();
- });
-
return sizer;
}
wxBoxSizer* NetworkTestDialog::create_result_sizer(wxWindow* parent)
@@ -293,23 +195,11 @@ NetworkTestDialog::~NetworkTestDialog()
void NetworkTestDialog::init_bind()
{
Bind(EVT_UPDATE_RESULT, [this](wxCommandEvent& evt) {
- if (evt.GetInt() == TEST_BAMBULAB_JOB) {
+ if (evt.GetInt() == TEST_ORCA_JOB) {
text_link_val->SetLabelText(evt.GetString());
} else if (evt.GetInt() == TEST_BING_JOB) {
text_bing_val->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_IOT_JOB) {
- text_iot_value->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_OSS_JOB) {
- text_oss_value->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_OSS_UPGRADE_JOB) {
- text_oss_upgrade_value->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_OSS_DOWNLOAD_JOB) {
- text_oss_download_value->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_OSS_UPLOAD_JOB) {
- text_oss_upload_value->SetLabelText(evt.GetString());
- } else if (evt.GetInt() == TEST_PLUGIN_JOB){
- text_network_plugin_value->SetLabelText(evt.GetString());
- }
+ }
std::time_t t = std::time(0);
std::tm* now_time = std::localtime(&t);
@@ -350,46 +240,35 @@ wxString NetworkTestDialog::get_dns_info()
void NetworkTestDialog::start_all_job()
{
- start_test_bambulab_thread();
+ start_test_github_thread();
start_test_bing_thread();
-
- start_test_iot_thread();
- start_test_oss_thread();
- start_test_oss_upgrade_thread();
- start_test_oss_download_thread();
- start_test_plugin_download_thread();
- start_test_ping_thread();
}
void NetworkTestDialog::start_all_job_sequence()
{
m_sequence_job = new boost::thread([this] {
update_status(-1, "start_test_sequence");
- start_test_bing();
+ start_test_url(TEST_BING_JOB, "Bing", "http://www.bing.com");
+ if (m_closing) return;
+ start_test_url(TEST_ORCA_JOB, "OrcaSlicer(GitHub)", "https://github.com/SoftFever/OrcaSlicer");
if (m_closing) return;
- start_test_bambulab();
- if (m_closing) return;
- start_test_oss();
- if (m_closing) return;
- start_test_oss_upgrade();
- if (m_closing) return;
- start_test_oss_download();
- if (m_closing) return;
- start_test_plugin_download();
update_status(-1, "end_test_sequence");
});
}
-void NetworkTestDialog::start_test_bing()
+void NetworkTestDialog::start_test_url(TestJob job, wxString name, wxString url)
{
- m_in_testing[TEST_BING_JOB] = true;
- update_status(TEST_BING_JOB, "test bing start...");
+ m_in_testing[job] = true;
+ wxString info = wxString::Format("test %s start...", name);
- std::string url = "http://www.bing.com/";
- Slic3r::Http http = Slic3r::Http::get(url);
- update_status(-1, "[test_bing]: url=" + url);
+ update_status(job, info);
- int result = -1;
+ Slic3r::Http http = Slic3r::Http::get(url.ToStdString());
+ info = wxString::Format("[test %s]: url=%s", name,url);
+
+ update_status(-1, info);
+
+ int result = -1;
http.timeout_max(10)
.on_complete([this, &result](std::string body, unsigned status) {
try {
@@ -401,477 +280,19 @@ void NetworkTestDialog::start_test_bing()
;
}
})
- .on_ip_resolve([this](std::string ip) {
- wxString ip_report = wxString::Format("test bing ip resolved = %s", ip);
- update_status(TEST_BING_JOB, ip_report);
+ .on_ip_resolve([this,name,job](std::string ip) {
+ wxString ip_report = wxString::Format("test %s ip resolved = %s", name, ip);
+ update_status(job, ip_report);
})
- .on_error([this](std::string body, std::string error, unsigned int status) {
+ .on_error([this,name,job](std::string body, std::string error, unsigned int status) {
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_BING_JOB, "test bing failed");
- this->update_status(-1, info);
+ this->update_status(job, wxString::Format("test %s failed", name));
+ this->update_status(-1, info);
}).perform_sync();
if (result == 0) {
- update_status(TEST_BING_JOB, "test bing ok");
- }
- m_in_testing[TEST_BING_JOB] = false;
-}
-
-void NetworkTestDialog::start_test_bambulab()
-{
- m_in_testing[TEST_BAMBULAB_JOB] = true;
- update_status(TEST_BAMBULAB_JOB, "test bambulab start...");
-
- std::string platform = "windows";
-
-#ifdef __WINDOWS__
- platform = "windows";
-#endif
-#ifdef __APPLE__
- platform = "macos";
-#endif
-#ifdef __LINUX__
- platform = "linux";
-#endif
- std::string query_params = (boost::format("?name=slicer&version=%1%&guide_version=%2%")
- % VersionInfo::convert_full_version(SLIC3R_VERSION)
- % VersionInfo::convert_full_version("0.0.0.1")
- ).str();
-
- AppConfig* app_config = wxGetApp().app_config;
- std::string url = wxGetApp().get_http_url(app_config->get_country_code()) + query_params;
- Slic3r::Http http = Slic3r::Http::get(url);
- update_status(-1, "[test_bambulab]: url=" + url);
- int result = -1;
- http.header("accept", "application/json")
- .timeout_max(10)
- .on_complete([this, &result](std::string body, unsigned status) {
- try {
- if (status == 200) {
- result = 0;
- }
- }
- catch (...) {
- ;
- }
- })
- .on_ip_resolve([this](std::string ip) {
- wxString ip_report = wxString::Format("test bambulab ip resolved = %s", ip);
- update_status(TEST_BAMBULAB_JOB, ip_report);
- })
- .on_error([this](std::string body, std::string error, unsigned int status) {
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_BAMBULAB_JOB, "test bambulab failed");
- this->update_status(-1, info);
- }).perform_sync();
- if (result == 0) {
- update_status(TEST_BAMBULAB_JOB, "test bambulab ok");
- }
- m_in_testing[TEST_BAMBULAB_JOB] = false;
-}
-
-void NetworkTestDialog::start_test_iot()
-{
- m_in_testing[TEST_IOT_JOB] = true;
- update_status(TEST_IOT_JOB, "test http start...");
- NetworkAgent* agent = wxGetApp().getAgent();
- if (agent) {
- unsigned int http_code;
- std::string http_body;
- if (!agent->is_user_login()) {
- update_status(TEST_IOT_JOB, "please login first");
- } else {
- int result = agent->get_user_print_info(&http_code, &http_body);
- if (result == 0) {
- update_status(TEST_IOT_JOB, "test http ok");
- } else {
- update_status(TEST_IOT_JOB, "test http failed");
- wxString info = wxString::Format("test http failed, status = %u, error = %s", http_code, http_body);
- update_status(-1, info);
- }
- }
- } else {
- update_status(TEST_IOT_JOB, "please install network module first");
- }
- m_in_testing[TEST_IOT_JOB] = false;
-}
-
-void NetworkTestDialog::start_test_oss()
-{
- m_in_testing[TEST_OSS_JOB] = true;
- update_status(TEST_OSS_JOB, "test storage start...");
-
- std::string url = "http://upload-file.bambulab.com";
-
- AppConfig* config = wxGetApp().app_config;
- if (config) {
- if (config->get_country_code() == "CN")
- url = "http://upload-file.bambulab.cn";
- }
-
- Slic3r::Http http = Slic3r::Http::get(url);
- update_status(-1, "[test_oss]: url=" + url);
-
- int result = -1;
- http.timeout_max(15)
- .on_complete([this, &result](std::string body, unsigned status) {
- try {
- if (status == 200) {
- result = 0;
- }
- }
- catch (...) {
- ;
- }
- })
- .on_ip_resolve([this](std::string ip) {
- wxString ip_report = wxString::Format("test oss ip resolved = %s", ip);
- update_status(TEST_OSS_JOB, ip_report);
- })
- .on_error([this, &result](std::string body, std::string error, unsigned int status) {
- if (status == 403) {
- result = 0;
- } else {
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_OSS_JOB, "test storage failed");
- this->update_status(-1, info);
- }
- }).perform_sync();
- if (result == 0) {
- update_status(TEST_OSS_JOB, "test storage ok");
- }
- m_in_testing[TEST_OSS_JOB] = false;
-}
-
-void NetworkTestDialog::start_test_oss_upgrade()
-{
- m_in_testing[TEST_OSS_UPGRADE_JOB] = true;
- update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade start...");
-
- std::string url = "http://upgrade-file.bambulab.com";
-
- AppConfig* config = wxGetApp().app_config;
- if (config) {
- if (config->get_country_code() == "CN")
- url = "http://upgrade-file.bambulab.cn";
- }
-
- Slic3r::Http http = Slic3r::Http::get(url);
- update_status(-1, "[test_oss_upgrade]: url=" + url);
-
- int result = -1;
- http.timeout_max(15)
- .on_complete([this, &result](std::string body, unsigned status) {
- try {
- if (status == 200) {
- result = 0;
- }
- }
- catch (...) {
- ;
- }
- })
- .on_ip_resolve([this](std::string ip) {
- wxString ip_report = wxString::Format("test storage upgrade ip resolved = %s", ip);
- update_status(TEST_OSS_UPGRADE_JOB, ip_report);
- })
- .on_error([this, &result](std::string body, std::string error, unsigned int status) {
- if (status == 403) {
- result = 0;
- }
- else {
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade failed");
- this->update_status(-1, info);
- }
- }).perform_sync();
-
- if (result == 0) {
- update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade ok");
- }
- m_in_testing[TEST_OSS_UPGRADE_JOB] = false;
-}
-
-void NetworkTestDialog::start_test_oss_download()
-{
- int result = 0;
- // get country_code
- AppConfig* app_config = wxGetApp().app_config;
- if (!app_config) {
- update_status(TEST_OSS_DOWNLOAD_JOB, "app config is nullptr");
- return;
- }
-
- m_in_testing[TEST_OSS_DOWNLOAD_JOB] = true;
- update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download start...");
- m_download_cancel = false;
- // get temp path
- fs::path target_file_path = (fs::temp_directory_path() / "test_storage_download.zip");
- fs::path tmp_path = target_file_path;
- tmp_path += (boost::format(".%1%%2%") % get_current_pid() % ".tmp").str();
-
- // get_url
- std::string url = wxGetApp().get_plugin_url("plugins", app_config->get_country_code());
- std::string download_url;
- Slic3r::Http http_url = Slic3r::Http::get(url);
- update_status(-1, "[test_oss_download]: url=" + url);
-
- http_url.on_complete(
- [&download_url](std::string body, unsigned status) {
- try {
- json j = json::parse(body);
- std::string message = j["message"].get();
-
- if (message == "success") {
- json resource = j.at("resources");
- if (resource.is_array()) {
- for (auto iter = resource.begin(); iter != resource.end(); iter++) {
- Semver version;
- std::string url;
- std::string type;
- std::string vendor;
- std::string description;
- for (auto sub_iter = iter.value().begin(); sub_iter != iter.value().end(); sub_iter++) {
- if (boost::iequals(sub_iter.key(), "type")) {
- type = sub_iter.value();
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get version of settings's type, " << sub_iter.value();
- }
- else if (boost::iequals(sub_iter.key(), "version")) {
- version = *(Semver::parse(sub_iter.value()));
- }
- else if (boost::iequals(sub_iter.key(), "description")) {
- description = sub_iter.value();
- }
- else if (boost::iequals(sub_iter.key(), "url")) {
- url = sub_iter.value();
- }
- }
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get type " << type << ", version " << version.to_string() << ", url " << url;
- download_url = url;
- }
- }
- }
- else {
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get version of plugin failed, body=" << body;
- }
- }
- catch (...) {
- BOOST_LOG_TRIVIAL(error) << "[test_storage_download]: catch unknown exception";
- ;
- }
- }).on_error(
- [&result, this](std::string body, std::string error, unsigned int status) {
- BOOST_LOG_TRIVIAL(error) << "[test_storage_download] on_error: " << error << ", body = " << body;
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
- this->update_status(-1, info);
- result = -1;
- }).perform_sync();
-
- if (result < 0) {
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
- m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
- return;
- }
-
- if (download_url.empty()) {
- BOOST_LOG_TRIVIAL(info) << "[test_oss_download]: no availaible plugin found for this app version: " << SLIC3R_VERSION;
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
- m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
- return;
- }
- if (m_download_cancel) {
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download canceled");
- m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
- return;
- }
-
- bool cancel = false;
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download] get_url = " << download_url;
-
- // download
- Slic3r::Http http = Slic3r::Http::get(download_url);
- int reported_percent = 0;
- http.on_progress(
- [this, &result, &reported_percent](Slic3r::Http::Progress progress, bool& cancel) {
- int percent = 0;
- if (progress.dltotal != 0) {
- percent = progress.dlnow * 100 / progress.dltotal;
- }
- if (percent - reported_percent >= 10) {
- reported_percent = percent;
- std::string download_progress_info = (boost::format("downloading %1%%%") % percent).str();
- this->update_status(TEST_OSS_DOWNLOAD_JOB, download_progress_info);
- }
-
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download] progress: " << reported_percent;
- cancel = m_download_cancel;
-
- if (cancel)
- result = -1;
- })
- .on_complete([this, tmp_path, target_file_path](std::string body, unsigned status) {
- BOOST_LOG_TRIVIAL(info) << "[test_storage_download] completed";
- bool cancel = false;
- fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc);
- file.write(body.c_str(), body.size());
- file.close();
- fs::rename(tmp_path, target_file_path);
- //this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download ok");
- })
- .on_error([this, &result](std::string body, std::string error, unsigned int status) {
- BOOST_LOG_TRIVIAL(error) << "[test_oss_download] downloading... on_error: " << error << ", body = " << body;
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
- this->update_status(-1, info);
- result = -1;
- });
- http.perform_sync();
- if (result < 0) {
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
- } else {
- this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download ok");
- }
- m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
- return;
-}
-
-void NetworkTestDialog::start_test_oss_upload()
-{
-
-}
-
-void NetworkTestDialog:: start_test_plugin_download(){
- int result = 0;
- // get country_code
- AppConfig *app_config = wxGetApp().app_config;
- if (!app_config) {
- update_status(TEST_PLUGIN_JOB, "app config is nullptr");
- return;
+ update_status(job, wxString::Format("test %s ok", name));
}
-
- m_in_testing[TEST_PLUGIN_JOB] = true;
- update_status(TEST_PLUGIN_JOB, "test plugin download start...");
- m_download_cancel = false;
- // get temp path
- fs::path target_file_path = (fs::temp_directory_path() / "test_plugin_download.zip");
- fs::path tmp_path = target_file_path;
- tmp_path += (boost::format(".%1%%2%") % get_current_pid() % ".tmp").str();
-
- // get_url
- std::string url = wxGetApp().get_plugin_url("plugins", app_config->get_country_code());
- std::string download_url;
- Slic3r::Http http_url = Slic3r::Http::get(url);
- http_url
- .on_complete([&download_url,this](std::string body, unsigned status) {
- try {
- json j = json::parse(body);
- std::string message = j["message"].get();
-
- if (message == "success") {
- json resource = j.at("resources");
- if (resource.is_array()) {
- for (auto iter = resource.begin(); iter != resource.end(); iter++) {
- Semver version;
- std::string url;
- std::string type;
- std::string vendor;
- std::string description;
- for (auto sub_iter = iter.value().begin(); sub_iter != iter.value().end(); sub_iter++) {
- if (boost::iequals(sub_iter.key(), "type")) {
- type = sub_iter.value();
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get version of settings's type, " << sub_iter.value();
- } else if (boost::iequals(sub_iter.key(), "version")) {
- version = *(Semver::parse(sub_iter.value()));
- } else if (boost::iequals(sub_iter.key(), "description")) {
- description = sub_iter.value();
- } else if (boost::iequals(sub_iter.key(), "url")) {
- url = sub_iter.value();
- }
- }
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get type " << type << ", version " << version.to_string() << ", url " << url;
- download_url = url;
- this->update_status(-1, "[test_plugin_download]: downloadurl=" + download_url);
- }
- }
- } else {
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get version of plugin failed, body=" << body;
- }
- } catch (...) {
- BOOST_LOG_TRIVIAL(error) << "[test_plugin_download]: catch unknown exception";
- ;
- }
- })
- .on_error([&result, this](std::string body, std::string error, unsigned int status) {
- BOOST_LOG_TRIVIAL(error) << "[test_plugin_download] on_error: " << error << ", body = " << body;
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
- this->update_status(-1, info);
- result = -1;
- })
- .perform_sync();
-
-
- if (result < 0) {
- this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
- m_in_testing[TEST_PLUGIN_JOB] = false;
- return;
- }
-
- if (download_url.empty()) {
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: no availaible plugin found for this app version: " << SLIC3R_VERSION;
- this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
- m_in_testing[TEST_PLUGIN_JOB] = false;
- return;
- }
- if (m_download_cancel) {
- this->update_status(TEST_PLUGIN_JOB, "test plugin download canceled");
- m_in_testing[TEST_PLUGIN_JOB] = false;
- return;
- }
-
- bool cancel = false;
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] get_url = " << download_url;
-
- // download
- Slic3r::Http http = Slic3r::Http::get(download_url);
- int reported_percent = 0;
- http.on_progress([this, &result, &reported_percent](Slic3r::Http::Progress progress, bool &cancel) {
- int percent = 0;
- if (progress.dltotal != 0) { percent = progress.dlnow * 100 / progress.dltotal; }
- if (percent - reported_percent >= 5) {
- reported_percent = percent;
- std::string download_progress_info = (boost::format("downloading %1%%%") % percent).str();
- this->update_status(TEST_PLUGIN_JOB, download_progress_info);
- }
-
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] progress: " << reported_percent;
- cancel = m_download_cancel;
-
- if (cancel) result = -1;
- })
- .on_complete([this, tmp_path, target_file_path](std::string body, unsigned status) {
- BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] completed";
- bool cancel = false;
- fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc);
- file.write(body.c_str(), body.size());
- file.close();
- fs::rename(tmp_path, target_file_path);
- })
- .on_error([this, &result](std::string body, std::string error, unsigned int status) {
- BOOST_LOG_TRIVIAL(error) << "[test_plugin_download] downloading... on_error: " << error << ", body = " << body;
- wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
- this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
- this->update_status(-1, info);
- result = -1;
- });
- http.perform_sync();
- if (result < 0) {
- this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
- } else {
- this->update_status(TEST_PLUGIN_JOB, "test plugin download ok");
- }
- m_in_testing[TEST_PLUGIN_JOB] = false;
- return;
+ m_in_testing[job] = false;
}
void NetworkTestDialog::start_test_ping_thread()
@@ -882,63 +303,19 @@ void NetworkTestDialog::start_test_ping_thread()
m_in_testing[TEST_PING_JOB] = false;
});
}
-
+void NetworkTestDialog::start_test_github_thread()
+{
+ if (m_in_testing[TEST_ORCA_JOB])
+ return;
+ test_job[TEST_ORCA_JOB] = new boost::thread([this] {
+ start_test_url(TEST_ORCA_JOB, "OrcaSlicer(GitHub)", "https://github.com/SoftFever/OrcaSlicer");
+ });
+}
void NetworkTestDialog::start_test_bing_thread()
{
- test_job[TEST_BING_JOB] = new boost::thread([this] {
- start_test_bing();
- });
-}
-
-void NetworkTestDialog::start_test_bambulab_thread()
-{
- if (m_in_testing[TEST_BAMBULAB_JOB]) return;
- test_job[TEST_BAMBULAB_JOB] = new boost::thread([this] {
- start_test_bambulab();
- });
-}
-
-void NetworkTestDialog::start_test_iot_thread()
-{
- if (m_in_testing[TEST_IOT_JOB]) return;
- test_job[TEST_IOT_JOB] = new boost::thread([this] {
- start_test_iot();
- });
-}
-
-void NetworkTestDialog::start_test_oss_thread()
-{
- test_job[TEST_OSS_JOB] = new boost::thread([this] {
- start_test_oss();
- });
-}
-
-void NetworkTestDialog::start_test_oss_upgrade_thread()
-{
- test_job[TEST_OSS_UPGRADE_JOB] = new boost::thread([this] {
- start_test_oss_upgrade();
- });
-}
-
-void NetworkTestDialog::start_test_oss_download_thread()
-{
- test_job[TEST_OSS_DOWNLOAD_JOB] = new boost::thread([this] {
- start_test_oss_download();
- });
-}
-
-void NetworkTestDialog::start_test_oss_upload_thread()
-{
- test_job[TEST_OSS_UPLOAD_JOB] = new boost::thread([this] {
- start_test_oss_upload();
- });
-}
-
-void NetworkTestDialog:: start_test_plugin_download_thread(){
-
- test_job[TEST_PLUGIN_JOB] = new boost::thread([this] {
- start_test_plugin_download();
- });
+ test_job[TEST_BING_JOB] = new boost::thread([this] {
+ start_test_url(TEST_BING_JOB, "Bing", "http://www.bing.com");
+ });
}
void NetworkTestDialog::on_close(wxCloseEvent& event)
@@ -958,7 +335,7 @@ void NetworkTestDialog::on_close(wxCloseEvent& event)
wxString NetworkTestDialog::get_studio_version()
{
- return wxString(SLIC3R_VERSION);
+ return wxString(SoftFever_VERSION);
}
void NetworkTestDialog::set_default()
@@ -975,13 +352,6 @@ void NetworkTestDialog::set_default()
txt_dns_info_value->SetLabelText(get_dns_info());
text_link_val->SetLabelText(NA_STR);
text_bing_val->SetLabelText(NA_STR);
- text_iot_value->SetLabelText(NA_STR);
- text_oss_value->SetLabelText(NA_STR);
- text_oss_upgrade_value->SetLabelText(NA_STR);
- text_oss_download_value->SetLabelText(NA_STR);
- text_oss_upload_value->SetLabelText(NA_STR);
- text_network_plugin_value->SetLabelText(NA_STR);
- //text_ping_value->SetLabelText(NA_STR);
m_download_cancel = false;
m_closing = false;
}
diff --git a/src/slic3r/GUI/NetworkTestDialog.hpp b/src/slic3r/GUI/NetworkTestDialog.hpp
index bf56b3db45..7a0622bcd4 100644
--- a/src/slic3r/GUI/NetworkTestDialog.hpp
+++ b/src/slic3r/GUI/NetworkTestDialog.hpp
@@ -35,15 +35,9 @@ namespace GUI {
enum TestJob {
TEST_BING_JOB = 0,
- TEST_BAMBULAB_JOB = 1,
- TEST_IOT_JOB = 2,
- TEST_OSS_JOB = 3,
- TEST_OSS_UPGRADE_JOB = 4,
- TEST_OSS_DOWNLOAD_JOB = 5,
- TEST_OSS_UPLOAD_JOB = 6,
- TEST_PING_JOB = 7,
- TEST_PLUGIN_JOB = 8,
- TEST_JOB_MAX = 9
+ TEST_ORCA_JOB = 1,
+ TEST_PING_JOB,
+ TEST_JOB_MAX
};
class NetworkTestDialog : public DPIDialog
@@ -65,24 +59,6 @@ protected:
Button* btn_bing;
wxStaticText* text_bing_title;
wxStaticText* text_bing_val;
- Button* btn_iot;
- wxStaticText* text_iot_title;
- wxStaticText* text_iot_value;
- Button* btn_oss;
- wxStaticText* text_oss_title;
- wxStaticText* text_oss_value;
- Button* btn_oss_upgrade;
- wxStaticText* text_oss_upgrade_title;
- wxStaticText* text_oss_upgrade_value;
- Button* btn_oss_download;
- wxStaticText* text_oss_download_title;
- wxStaticText* text_oss_download_value;
- Button* btn_oss_upload;
- wxStaticText* text_oss_upload_title;
- wxStaticText* text_oss_upload_value;
- Button* btn_network_plugin;
- wxStaticText* text_network_plugin_title;
- wxStaticText* text_network_plugin_value;
wxStaticText* text_ping_title;
wxStaticText* text_ping_value;
wxStaticText* text_result;
@@ -116,23 +92,10 @@ public:
void start_all_job();
void start_all_job_sequence();
void start_test_bing_thread();
- void start_test_bambulab_thread();
- void start_test_iot_thread();
- void start_test_oss_thread();
- void start_test_oss_upgrade_thread();
- void start_test_oss_download_thread();
- void start_test_oss_upload_thread();
+ void start_test_github_thread();
void start_test_ping_thread();
- void start_test_plugin_download_thread();
- void start_test_bing();
- void start_test_bambulab();
- void start_test_iot();
- void start_test_oss();
- void start_test_oss_upgrade();
- void start_test_oss_download();
- void start_test_oss_upload();
- void start_test_plugin_download();
+ void start_test_url(TestJob job, wxString name, wxString url);
void on_close(wxCloseEvent& event);
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index 1a978cac70..8f4700e653 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -6835,6 +6835,26 @@ void Plater::priv::on_tab_selection_changing(wxBookCtrlEvent& e)
const int new_sel = e.GetSelection();
sidebar_layout.show = new_sel == MainFrame::tp3DEditor || new_sel == MainFrame::tpPreview;
update_sidebar();
+ int old_sel = e.GetOldSelection();
+ if (wxGetApp().preset_bundle && wxGetApp().preset_bundle->is_bbl_vendor() && new_sel == MainFrame::tpMonitor) {
+ if (!wxGetApp().getAgent()) {
+ e.Veto();
+ BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins") % old_sel % new_sel;
+ if (q) {
+ wxCommandEvent* evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
+ wxQueueEvent(q, evt);
+ }
+ }
+ } else {
+ if (new_sel == MainFrame::tpMonitor && wxGetApp().preset_bundle != nullptr) {
+ auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
+ wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
+ if (url.empty()) {
+ // It's missing_connection page, reload so that we can replay the gif image
+ main_frame->m_printer_view->reload();
+ }
+ }
+ }
}
int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp
index 3e0cf07695..d5dd87da15 100644
--- a/src/slic3r/GUI/Preferences.cpp
+++ b/src/slic3r/GUI/Preferences.cpp
@@ -629,7 +629,7 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 23);
auto checkbox = new ::CheckBox(parent);
- checkbox->SetValue((app_config->get(param) == "true") ? true : false);
+ checkbox->SetValue(app_config->get_bool(param));
m_sizer_checkbox->Add(checkbox, 0, wxALIGN_CENTER, 0);
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8);
@@ -701,10 +701,16 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa
}
}
- #endif // __WXMSW__
+ if (param == "installed_networking") {
+ bool pbool = app_config->get_bool("installed_networking");
+ if (pbool) {
+ GUI::wxGetApp().CallAfter([] { GUI::wxGetApp().ShowDownNetPluginDlg(); });
+ }
+ }
- if (param == "developer_mode")
- {
+#endif // __WXMSW__
+
+ if (param == "developer_mode") {
m_developer_mode_def = app_config->get("developer_mode");
if (m_developer_mode_def == "true") {
Slic3r::GUI::wxGetApp().save_mode(comDevelop);
@@ -1004,6 +1010,7 @@ wxWindow* PreferencesDialog::create_general_page()
auto item_region= create_item_region_combobox(_L("Login Region"), page, _L("Login Region"), Regions);
auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("Stealth Mode"), 50, "stealth_mode");
+ auto item_enable_plugin = create_item_checkbox(_L("Enable network plugin"), page, _L("Enable network plugin"), 50, "installed_networking");
auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only");
std::vector Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"};
@@ -1020,6 +1027,7 @@ wxWindow* PreferencesDialog::create_general_page()
auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate everytime the color changed."), page, _L("If enabled, auto-calculate everytime the color changed."), 50, "auto_calculate");
auto title_presets = create_item_title(_L("Presets"), page, _L("Presets"));
+ auto title_network = create_item_title(_L("Network"), page, _L("Network"));
auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset");
auto item_system_sync = create_item_checkbox(_L("Update built-in Presets automatically."), page, _L("System Sync"), 50, "sync_system_preset");
auto item_save_presets = create_item_button(_L("Clear my choice on the unsaved presets."), _L("Clear"), page, _L("Clear my choice on the unsaved presets."), []() {
@@ -1080,12 +1088,14 @@ wxWindow* PreferencesDialog::create_general_page()
sizer_page->Add(item_show_splash_screen, 0, wxTOP, FromDIP(3));
sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3));
sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20));
- sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3));
- sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3));
sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3));
sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3));
sizer_page->Add(item_system_sync, 0, wxTOP, FromDIP(3));
sizer_page->Add(item_save_presets, 0, wxTOP, FromDIP(3));
+ sizer_page->Add(title_network, 0, wxTOP | wxEXPAND, FromDIP(20));
+ sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3));
+ sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3));
+ sizer_page->Add(item_enable_plugin, 0, wxTOP, FromDIP(3));
#ifdef _WIN32
sizer_page->Add(title_associate_file, 0, wxTOP| wxEXPAND, FromDIP(20));
sizer_page->Add(item_associate_3mf, 0, wxTOP, FromDIP(3));
diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp
index a0e2483dcd..b67a8dc34a 100644
--- a/src/slic3r/GUI/PrinterWebView.cpp
+++ b/src/slic3r/GUI/PrinterWebView.cpp
@@ -80,6 +80,11 @@ void PrinterWebView::load_url(wxString& url, wxString apikey)
//m_browser->SetFocus();
UpdateState();
}
+
+void PrinterWebView::reload()
+{
+ m_browser->Reload();
+}
/**
* Method that retrieves the current state from the web control and updates the
* GUI the reflect this current state.
diff --git a/src/slic3r/GUI/PrinterWebView.hpp b/src/slic3r/GUI/PrinterWebView.hpp
index 0e42f05a84..5b1908c9ee 100644
--- a/src/slic3r/GUI/PrinterWebView.hpp
+++ b/src/slic3r/GUI/PrinterWebView.hpp
@@ -41,6 +41,7 @@ public:
void OnClose(wxCloseEvent& evt);
void OnError(wxWebViewEvent& evt);
void OnLoaded(wxWebViewEvent& evt);
+ void reload();
private:
void SendAPIKey();
diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp
index 9e95685446..6b74b175b7 100644
--- a/src/slic3r/GUI/WebViewDialog.cpp
+++ b/src/slic3r/GUI/WebViewDialog.cpp
@@ -421,6 +421,11 @@ void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event)
Slic3r::GUI::wxGetApp().get_login_info();
}
+void WebViewPanel::SetLoginPanelVisibility(bool bshow)
+{
+ wxString strJS = wxString::Format("SetLoginPanelVisibility(%s)", bshow ? "true" : "false");
+ RunScript(strJS);
+}
void WebViewPanel::SendRecentList(int images)
{
boost::property_tree::wptree req;
diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp
index 6a9c8296d1..b96b9051fc 100644
--- a/src/slic3r/GUI/WebViewDialog.hpp
+++ b/src/slic3r/GUI/WebViewDialog.hpp
@@ -94,6 +94,7 @@ public:
public:
void SendRecentList(int images);
+ void SetLoginPanelVisibility(bool bshow);
void SendDesignStaffpick(bool on);
void OpenModelDetail(std::string id, NetworkAgent *agent);
void SendLoginInfo();