1664{
1665
1666
1667
1668
1669
1670 wxBoxSizer*sizer_page = new wxBoxSizer(wxVERTICAL);
1671 wxFlexGridSizer* g_sizer;
1672 auto v_gap = FromDIP(4);
1673
1678 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
1680 g_sizer->AddGrowableCol(0, 1);
1681
1684
1686 g_sizer->Add(item_language);
1687
1688 std::vector<wxString>Units = {
_L(
"Metric") +
" (mm, g)",
_L(
"Imperial") +
" (in, oz)"};
1690 g_sizer->Add(item_currency);
1691
1692 std::vector<wxString> DefaultPage = {
_L(
"Home"),
_L(
"Prepare")};
1693 auto item_default_page =
create_item_combobox(
_L(
"Default page"),
_L(
"Set the page opened on startup."),
"default_page", DefaultPage);
1694 g_sizer->Add(item_default_page);
1695
1696#ifdef _WIN32
1698 g_sizer->Add(item_darkmode);
1699#endif
1700
1702 #if __APPLE__
1703 _L(
"On OSX there is always only one instance of app running by default. However it is allowed to run multiple instances "
1704 "of same app from the command line. In such case this settings will allow only one instance."),
1705 #else
1706 _L(
"If this is enabled, when starting OrcaSlicer and another instance of the same OrcaSlicer is already running, that instance will be reactivated instead."),
1707 #endif
1708 "single_instance");
1709 g_sizer->Add(item_single_instance);
1710
1711 auto item_show_splash_scr =
create_item_checkbox(
_L(
"Show splash screen"),
_L(
"Show the splash screen during startup."),
"show_splash_screen");
1712 g_sizer->Add(item_show_splash_scr);
1713
1714#ifdef __linux__
1715 auto item_window_button_pos =
create_item_checkbox(
_L(
"Use window buttons on left side"),
"",
"window_buttons_on_left",
_L(
"(Requires restart)"));
1716 g_sizer->Add(item_window_button_pos);
1717#endif
1718
1719
1720
1721
1723 g_sizer->Add(item_downloads);
1724
1727
1728 std::vector<wxString> projectLoadSettingsBehaviourOptions = {
_L(
"Load All"),
_L(
"Ask When Relevant"),
_L(
"Always Ask"),
_L(
"Load Geometry Only")};
1731 g_sizer->Add(item_project_load);
1732
1733 auto item_backup =
create_item_backup(
_L(
"Auto backup"),
_L(
"Backup your project periodically to help with restoring from an occasional crash."));
1734 g_sizer->Add(item_backup);
1735
1736 auto item_max_recent_count =
create_item_input(
_L(
"Maximum recent files"),
"",
_L(
"Maximum count of recent files"),
"max_recent_count", [](wxString value) {
1737 long max = 0;
1738 if (value.ToLong(&max))
1739 wxGetApp().mainframe->set_max_recent_count(max);
1740 });
1741 g_sizer->Add(item_max_recent_count);
1742
1743 auto item_recent_models =
create_item_checkbox(
_L(
"Add STL/STEP files to recent files list"),
"",
"recent_models");
1744 g_sizer->Add(item_recent_models);
1745
1746 auto item_gcodes_warning =
create_item_checkbox(
_L(
"Don't warn when loading 3MF with modified G-code"),
"",
"no_warn_when_modified_gcodes");
1747 g_sizer->Add(item_gcodes_warning);
1748
1750 _L(
"Show options when importing STEP file"),
_L(
"If enabled, a parameter settings dialog will appear during STEP file import."),
1751 "enable_step_mesh_setting", wxEmptyString, "import_export#dont-show-again"
1752 );
1753 g_sizer->Add(item_step_dialog);
1754
1755 auto item_step_linear =
create_item_decimal_input(
_L(
"STEP importing: linear deflection"),
"mm",
_L(
"Linear deflection used when meshing imported STEP files.\nSmaller values produce higher-quality meshes but increase processing time.\nUsed as the default in the import dialog, or directly when the import dialog is disabled.\nDefault: 0.003 mm."),
"linear_deflection", 0.001, 0.1, 3);
1756 g_sizer->Add(item_step_linear);
1757
1758 auto item_step_angle =
create_item_decimal_input(
_L(
"STEP importing: angle deflection"),
"",
_L(
"Angle deflection used when meshing imported STEP files.\nSmaller values produce higher-quality meshes but increase processing time.\nUsed as the default in the import dialog, or directly when the import dialog is disabled.\nDefault: 0.5."),
"angle_deflection", 0.01, 1.0, 2);
1759 g_sizer->Add(item_step_angle);
1760
1761 auto item_step_split =
create_item_checkbox(
_L(
"STEP importing: Split into multiple objects"),
_L(
"If enabled, compound and compsolid shapes in imported STEP files are split into multiple objects.\nUsed as the default in the import dialog, or directly when the import dialog is disabled.\nDefault: disabled."),
"is_split_compound");
1762 g_sizer->Add(item_step_split);
1763
1766 _L(
"Controls the quantization bit depth used when compressing the mesh to Draco format.\n"
1767 "0 = lossless compression (geometry is preserved at full precision). Valid lossy values range from 8 to 30.\n"
1768 "Lower values produce smaller files but lose more geometric detail; higher values preserve more detail at the cost of larger files."),
1770 );
1771 g_sizer->Add(item_draco_bits);
1772
1774 _L(
"If enabled, saved projects store the absolute path to imported source files (STEP/STL/...), so "
1775 "\"Reload from disk\" still works when the source file is kept in a different folder than the project. "
1776 "If disabled, only the filename is stored, which keeps projects portable and avoids embedding absolute paths."),
1777 "export_sources_full_pathnames");
1778 g_sizer->Add(item_full_source_paths);
1779
1782
1783 auto item_remember_printer =
create_item_checkbox(
_L(
"Remember printer configuration"),
_L(
"If enabled, Orca will remember and switch filament/process configuration for each printer automatically."),
"remember_printer_config");
1784 g_sizer->Add(item_remember_printer);
1785
1786 auto item_filament_preset_grouping =
create_item_combobox(
_L(
"Group user filament presets"),
_L(
"Group user filament presets based on selection"),
1787 "group_filament_presets", {
_L(
"All"),
_L(
"None"),
_L(
"By type"),
_L(
"By vendor")}, [](wxString value) {wxGetApp().plater()->sidebar().update_presets(
Preset::TYPE_FILAMENT);});
1788 g_sizer->Add(item_filament_preset_grouping);
1789
1790
1792 wxGetApp().plater()->sidebar().update_filaments_area_height();
1794 });
1795 auto item_filament_area_height =
create_item_spinctrl(
_L(
"Optimize filaments area height for..."),
"",
_L(
"filaments"),
_L(
"Optimizes filament area maximum height by chosen filament count."),
1797 g_sizer->Add(item_filament_area_height);
1798
1799 auto item_shared_profiles =
create_item_checkbox(
_L(
"Show shared profiles notification"),
_L(
"Show a notification with a link to browse shared profiles when the selected printer is changed."),
"show_shared_profiles_notification");
1800 g_sizer->Add(item_shared_profiles);
1801
1804
1805 auto item_multi_machine =
create_item_checkbox(
_L(
"Multi device management"),
_L(
"With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."),
"enable_multi_machine",
_L(
"(Requires restart)"));
1806 g_sizer->Add(item_multi_machine);
1807
1809 _L(
"When enabled, the Speed Dial keyboard shortcut (Space by default) opens the action search from any page."),
1810 "enable_speed_dial");
1811 g_sizer->Add(item_speed_dial);
1812
1814 _L(
"Recent actions"),
1815 "",
1816
1818 _L(
"How many recently launched actions to show at the top of the Speed Dial. Set to 0 to hide recent actions."),
1822 g_sizer->Add(item_speed_dial_recents);
1823
1824#ifdef SLIC3R_CAD
1826 _L(
"With this option enabled, the Design tab is shown, where models can be built and edited "
1827 "parametrically. This feature is experimental and still under development."),
1828 "enable_cad_feature",
_L(
"(Requires restart)"));
1829 g_sizer->Add(item_cad_feature);
1830#endif
1831
1832#if 0
1834
1835
1836 auto item_pop_up_filament_map_dialog =
create_item_checkbox(
_L(
"Pop up to select filament grouping mode"),
_L(
"Pop up to select filament grouping mode"), 50,
"pop_up_filament_map_dialog");
1837 g_sizer->Add(item_pop_up_filament_map_dialog);
1838#endif
1839
1842
1844 _L(
"Visible plugin pages"),
1845 "",
1847 _L(
"Number of plugin pages shown as fixed tabs before the remaining pages collapse into a dropdown on the last tab."),
1851 [](int value) { wxGetApp().mainframe->plugin_pages().set_visible_page_count(value); }
1852 );
1853 g_sizer->Add(item_plugin_pages_visible_count);
1854
1855 g_sizer->AddSpacer(FromDIP(10));
1856 sizer_page->Add(g_sizer, 0, wxEXPAND);
1857
1862 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
1864 g_sizer->AddGrowableCol(0, 1);
1865
1868
1869 std::vector<wxString> FlushOptionLabels = {
_L(
"All"),
_L(
"Color"),
_L(
"None")};
1870 std::vector<std::string> FlushOptionValues = { "all","color change","disabled" };
1871 auto item_auto_flush =
create_item_combobox(
_L(
"Auto flush after changing..."),
_L(
"Auto calculate flushing volumes when selected values changed"),
"auto_calculate_flush", FlushOptionLabels, FlushOptionValues);
1872 g_sizer->Add(item_auto_flush);
1873
1874 auto item_auto_arrange =
create_item_checkbox(
_L(
"Auto arrange plate after cloning"),
"",
"auto_arrange");
1875 g_sizer->Add(item_auto_arrange);
1876
1879
1881 _L(
"Auto slice after changes"),
1882 _L(
"If enabled, OrcaSlicer will re-slice automatically whenever slicing-related settings change."),
1883 _L(
"Delay in seconds before auto slicing starts, allowing multiple edits to be grouped. Use 0 to slice immediately."));
1884 g_sizer->Add(item_auto_reslice);
1885
1886 auto item_mix_print_high_low_temperature =
create_item_checkbox(
_L(
"Remove mixed temperature restriction"),
_L(
"With this option enabled, you can print materials with a large temperature difference together."),
"enable_high_low_temp_mixed_printing");
1887 g_sizer->Add(item_mix_print_high_low_temperature);
1888
1889 auto item_remember_print_action =
create_item_checkbox(
_L(
"Remember last print action"),
_L(
"If enabled, OrcaSlicer will remember the last selected option in the print button's dropdown (e.g. Print, Export plate sliced file, Export G-code file) and use it as the default on next startup."),
"remember_print_action");
1890 g_sizer->Add(item_remember_print_action);
1891
1894
1895 std::vector<wxString> CameraNavStyle = {
_L(
"Default"),
_L(
"Touchpad")};
1896 auto item_camera_nav_style =
create_item_combobox(
_L(
"Camera style"),
_L(
"Select camera navigation style.\nDefault: LMB+move for rotation, RMB/MMB+move for panning.\nTouchpad: Alt+move for rotation, Shift+move for panning."),
"camera_navigation_style", CameraNavStyle);
1897 g_sizer->Add(item_camera_nav_style);
1898
1900 g_sizer->Add(camera_orbit_mult);
1901
1902 auto item_zoom_to_mouse =
create_item_checkbox(
_L(
"Zoom to mouse position"),
_L(
"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center."),
"zoom_to_mouse");
1903 g_sizer->Add(item_zoom_to_mouse);
1904
1905 auto item_use_free_camera =
create_item_checkbox(
_L(
"Use free camera"),
_L(
"If enabled, use free camera. If not enabled, use constrained camera."),
"use_free_camera");
1906 g_sizer->Add(item_use_free_camera);
1907
1908 auto reverse_mouse_zoom =
create_item_checkbox(
_L(
"Reverse mouse zoom"),
_L(
"If enabled, reverses the direction of zoom with mouse wheel."),
"reverse_mouse_wheel_zoom");
1909 g_sizer->Add(reverse_mouse_zoom);
1910
1911#ifdef SLIC3R_CAD
1912
1913 if (wxGetApp().is_enable_cad_feature()) {
1915 _L(
"In the Design tab, draw a mate connector as a small face instead of the conventional "
1916 "disc with a roll quadrant. A face shows its orientation at a glance, without learning the disc convention. "
1917 "Turn this off for the conventional CAD representation."), "design_connector_face_glyph");
1918 g_sizer->Add(item_connector_face_glyph);
1919
1920
1921
1922
1924 _L(
"Treat sketch endpoints within 0.001 mm as one joint and weld the loop shut. "
1925 "Off: only exactly coincident endpoints join, so a loop with a tiny gap is "
1926 "shown as open instead of being closed for you. Saved with each design; "
1927 "applies to designs started after the change."),
1928 "auto_close_sketch_loops");
1929 g_sizer->Add(item_auto_close_sketch_loops);
1930 }
1931#endif
1932
1933 std::vector<wxString> ButtonDragActions = {
_L(
"None"),
_L(
"Pan"),
_L(
"Rotate")};
1934 auto item_left_mouse_drag =
create_item_combobox(
_L(
"Left Mouse Drag"),
_L(
"Set the action that dragging the left mouse button should perform."),
"left_mouse_drag_action", ButtonDragActions);
1935 g_sizer->Add(item_left_mouse_drag);
1936 auto item_middle_mouse_drag =
create_item_combobox(
_L(
"Middle Mouse Drag"),
_L(
"Set the action that dragging the middle mouse button should perform."),
"middle_mouse_drag_action", ButtonDragActions);
1937 g_sizer->Add(item_middle_mouse_drag);
1938 auto item_right_mouse_drag =
create_item_combobox(
_L(
"Right Mouse Drag"),
_L(
"Set the action that dragging the right mouse button should perform."),
"right_mouse_drag_action", ButtonDragActions);
1939 g_sizer->Add(item_right_mouse_drag);
1940
1943
1944 auto item_shortcuts =
create_item_button(
_L(
"Keyboard shortcuts"),
_L(
"Edit") +
dots,
"",
_L(
"Choose the key for each action."), [
this]() {
1946 });
1947 g_sizer->Add(item_shortcuts);
1948
1951
1952 auto item_save_choise =
create_item_button(
_L(
"Unsaved projects"),
_L(
"Clear"),
"",
_L(
"Clear my choice on the unsaved projects."), []() {
1953 wxGetApp().app_config->set("save_project_choise", "");
1954 });
1955 g_sizer->Add(item_save_choise);
1956
1957 auto item_save_presets =
create_item_button(
_L(
"Unsaved presets"),
_L(
"Clear"),
"",
_L(
"Clear my choice on the unsaved presets."), []() {
1958 wxGetApp().app_config->set("save_preset_choise", "");
1959 });
1960 g_sizer->Add(item_save_presets);
1961
1962 auto item_restore_hide_pop_ups =
create_item_button(
_L(
"Synchronizing printer preset"),
_L(
"Clear"),
L"",
_L(
"Clear my choice for synchronizing printer preset after loading the file."), []() {
1963 wxGetApp().app_config->erase("app", "sync_after_load_file_show_flag");
1964 });
1965 g_sizer->Add(item_restore_hide_pop_ups);
1966
1967 g_sizer->AddSpacer(FromDIP(10));
1968 sizer_page->Add(g_sizer, 0, wxEXPAND);
1969
1974 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
1976 g_sizer->AddGrowableCol(0, 1);
1977
1980
1982 _L(
"Smooth normals"),
1983 _L(
"Applies smooth normals to the model.\n\nRequires manual scene reload to take effect "
1984 "(right-click on 3D view → \"Reload All\")."),
1986 );
1987 g_sizer->Add(smooth_normals);
1988
1991
1993 _L(
"Phong shading"),
1994 _L(
"Uses Phong shading inside realistic view.")
1996 );
1997 g_sizer->Add(item_realistic_phong);
1998
2000 _L(
"Enable in Preview"),
2001 _L(
"Also applies realistic view to the Preview canvas, not just Prepare.\n"
2002 "Preview draws the full toolpath geometry, so shadows and SSAO cost considerably"
2003 " more there than on a plain model."),
2005 );
2006 g_sizer->Add(item_realistic_preview);
2007
2009 _L(
"SSAO ambient occlusion"),
2010 _L(
"Applies SSAO in realistic view."),
2012 );
2013 g_sizer->Add(item_realistic_ssao);
2014
2015 std::vector<wxString> ShadowsLabels = {
_L(
"Off"),
2016
2018
2020 std::vector<std::string> ShadowsValues = { "off", "static", "orbit" };
2023 _L(
"Renders cast shadows on the plate, other objects, and each object onto itself in realistic view.\n"
2024 "Static: the light stays fixed in the world, so the shadows are only recomputed when the scene changes.\n"
2025 "Orbit: the light turns with the camera, recomputing the shadows every frame the camera moves."),
2027 g_sizer->Add(item_realistic_shadows);
2028
2030 _L(
"Glossy toolpaths"),
2031 _L(
"Highlights the toolpaths in Preview as glossy plastic in realistic view.\n"
2032 "Off, a translucent filament is matte and an opaque one keeps the highlight of the plain view."),
2034 );
2035 g_sizer->Add(item_realistic_gloss);
2036
2039
2041 _L(
"MSAA Multiplier"),
2042 _L(
"Set the Multi-Sample Anti-Aliasing level.\n"
2043 "Higher values result in smoother edges, but the impact on performance is exponential.\n"
2044 "Lower values improve performance, at the cost of jagged edges.\n"
2045 "If disabled, its recommended to enable FXAA to reduce jagged edges with minimal performance impact.\n\n"
2046 "Requires application restart."),
2048 {
_L(
"Disabled"),
"2x",
"4x",
"8x",
"16x"},
2049 {"0", "2", "4", "8", "16"}
2050 );
2051 g_sizer->Add(item_antialiasing);
2052
2054 _L(
"FXAA post-processing"),
2055 _L(
"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n"
2056 "Useful for disabling or reducing the MSAA setting to improve performance.\n\n"
2057 "Takes effect immediately."),
2059 );
2060 g_sizer->Add(item_fxaa);
2061
2064
2067 _L(
"(0 = unlimited)"),
2069 _L(
"Limits viewport frame rate to reduce GPU load and power usage.\n"
2070 "Set to 0 for unlimited frame rate."),
2072 0,
2073 240
2074 );
2075 g_sizer->Add(item_fps_cap);
2076
2078 _L(
"Reuse the 3D scene while idle"),
2079 _L(
"Skips redrawing the 3D scene when only the mouse cursor moves over the viewport,\n"
2080 "and reuses the previous frame's scene instead. Reduces GPU load.\n"
2081 "Disable it if the viewport shows stale or missing contents.\n\n"
2082 "Takes effect immediately."),
2084 );
2085 g_sizer->Add(item_scene_cache);
2086
2088 _L(
"Skip unchanged frames"),
2089 _L(
"Skips drawing a frame altogether when it would be identical to the one already on screen.\n"
2090 "Only applies to frames that reuse the 3D scene, so it needs Reuse the 3D scene while idle.\n"
2091 "Disable it if a hover highlight, tooltip or animation stops updating.\n\n"
2092 "Takes effect immediately."),
2094 );
2095 g_sizer->Add(item_skip_identical_frames);
2097
2099 _L(
"Show FPS overlay"),
2100 _L(
"Displays rendering counts in the top-right corner of the viewport.") +
"\n" +
2101 _L(
"FPS: frames presented to the screen per second.") +
"\n" +
2102 _L(
"3D: frames per second that redrew the 3D scene."),
2104 );
2105 g_sizer->Add(item_fps_overlay);
2106
2108 _L(
"Show render timings"),
2109 _L(
"Displays how many milliseconds each part of a frame that redraws the 3D scene takes, in the top-right corner of the viewport.") +
"\n" +
2110 _L(
"CPU: time spent issuing the drawing commands.") +
"\n" +
2111 _L(
"GPU: time the graphics card spent running them.") +
"\n" +
2112 _L(
"Adds a small overhead to each frame while enabled."),
2114 );
2115 g_sizer->Add(item_render_timings);
2116
2117 if (wxGetApp().is_editor()) {
2119 _L(
"Replaces the current project with the OrcaSliced Combo, then measures the frame rate and render timings while the camera turns around it in Prepare and Preview, and while the layer slider moves through the sliced layers."),
2120 [this]() {
2123 });
2124 g_sizer->Add(item_benchmark);
2125 }
2126
2129
2130
2131 std::vector<wxString> PreviewViewTypeLabels;
2132 std::vector<std::string> PreviewViewTypeValues;
2134 PreviewViewTypeValues.push_back(value);
2135 PreviewViewTypeLabels.push_back(
from_u8(label));
2136 }
2138 _L(
"Default view type"),
2139 _L(
"The color scheme the sliced preview opens with.\n"
2140 "Automatic: Filament for multi material prints, Line Type for single material ones.\n"
2141 "Last used: the view type you selected last.\n"
2142 "Any other value always opens that view type.\n"
2143 "You can still switch the view type in the preview afterwards."),
2144 "preview_default_view_type", PreviewViewTypeLabels, PreviewViewTypeValues);
2145 g_sizer->Add(item_preview_view_type);
2146
2148 _L(
"Dim lower layers"),
2149 _L(
"When scrubbing the layer slider in the sliced preview, render the layers below the current one darkened so that only the layer being viewed is shown at full brightness."),
2150 "preview_dim_previous_layers"
2151 );
2152 g_sizer->Add(item_dim_previous_layers);
2153
2155 _L(
"Dimmed layer brightness"),
2156 "",
2158 _L(
"How brightly the dimmed layers are rendered when \"Dim lower layers\" is enabled.\n"
2159 "99% is barely darkened, 0% renders them black. Capped at 99% because 100% would be the same as disabling the option."),
2160 "preview_dim_previous_layers_brightness",
2161 0,
2162 99,
2163
2164 [](int value) {
2167 canvas->get_gcode_viewer().set_dim_previous_layers_brightness(0.01f * value);
2168 canvas->set_as_dirty();
2169 canvas->request_extra_frame();
2170 }
2171 }
2172 }
2173 );
2174 g_sizer->Add(item_dim_previous_layers_brightness);
2175
2177 _L(
"Translucent filaments"),
2178 _L(
"Draw the toolpaths of filaments whose color is partly transparent as see-through, as the 3D view draws their objects. Turn it off to draw every filament opaque."),
2179 "preview_translucent_filaments"
2180 );
2181 g_sizer->Add(item_translucent_filaments);
2182
2183 g_sizer->AddSpacer(FromDIP(10));
2184 sizer_page->Add(g_sizer, 0, wxEXPAND);
2185
2190 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
2192 g_sizer->AddGrowableCol(0, 1);
2193
2196
2198 g_sizer->Add(item_region);
2199
2200 auto item_stealth_mode =
create_item_checkbox(
_L(
"Stealth mode"),
_L(
"This disables all cloud features, including Orca Cloud profile syncing. Users who prefer to work entirely offline can enable this option.\nNote: When Stealth Mode is enabled, your user profiles will not be backed up to Orca Cloud."),
"stealth_mode");
2201 g_sizer->Add(item_stealth_mode);
2202
2203 auto item_hide_login_side_panel =
create_item_checkbox(
_L(
"Hide login side panel"),
_L(
"Hide the login side panel on the home page."),
"hide_login_side_panel");
2204 g_sizer->Add(item_hide_login_side_panel);
2205
2207 NetworkTestDialog dlg(wxGetApp().mainframe);
2208 dlg.ShowModal();
2209 });
2210 g_sizer->Add(item_network_test);
2211
2214
2215 auto item_bambu_cloud =
create_item_bambu_cloud(
_L(
"Enable Bambu Cloud"),
_L(
"Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu login section appears on the homepage."));
2216 g_sizer->Add(item_bambu_cloud);
2217
2220
2221 auto item_stable_updates =
create_item_checkbox(
_L(
"Check for stable updates only"),
"",
"check_stable_update_only");
2222 g_sizer->Add(item_stable_updates);
2223
2224 auto item_user_sync =
create_item_checkbox(
_L(
"Auto sync user presets (Printer/Filament/Process)"),
"",
"sync_user_preset");
2225 g_sizer->Add(item_user_sync);
2226
2230 }
2231
2233 _L(
"Filament sync mode"),
2234 _L(
"Choose whether sync updates both filament preset and color, or only color."),
2235 "sync_ams_filament_mode",
2236 {
_L(
"Filament & Color"),
_L(
"Color only")});
2237 g_sizer->Add(item_filament_sync_mode);
2238
2239 auto item_system_sync =
create_item_checkbox(
_L(
"Update built-in presets automatically."),
"",
"sync_system_preset");
2240 g_sizer->Add(item_system_sync);
2241
2243 _L(
"Store authentication tokens in an encrypted file instead of the system keychain. (Requires restart)"),
2245 g_sizer->Add(item_token_storage);
2246
2249
2250 auto item_enable_plugin =
create_item_checkbox(
_L(
"Enable Bambu network plug-in"),
"",
"installed_networking");
2251 g_sizer->Add(item_enable_plugin);
2252
2254 g_sizer->Add(item_plugin_version);
2255
2256 g_sizer->AddSpacer(FromDIP(10));
2257 sizer_page->Add(g_sizer, 0, wxEXPAND);
2258
2262#ifdef _WIN32
2263
2264
2265
2268 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
2270 g_sizer->AddGrowableCol(0, 1);
2271
2273
2275 _L(
"File associations for the Microsoft Store version are managed by Windows Settings."),
2276 _L(
"Open Windows Default Apps Settings"),
"",
"",
2277 []() { wxLaunchDefaultBrowser("ms-settings:defaultapps"); });
2278 g_sizer->Add(item_open_default_apps);
2279
2280 g_sizer->AddSpacer(FromDIP(10));
2281 sizer_page->Add(g_sizer, 0, wxEXPAND);
2282 } else {
2284 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
2286 g_sizer->AddGrowableCol(0, 1);
2287
2290
2291 auto item_associate_3mf =
create_item_checkbox(
_L(
"Associate 3MF files to OrcaSlicer"),
_L(
"If enabled, this sets OrcaSlicer as the default application to open 3MF files.") ,
"associate_3mf");
2292 g_sizer->Add(item_associate_3mf);
2293
2294 auto item_associate_drc =
create_item_checkbox(
_L(
"Associate DRC files to OrcaSlicer"),
_L(
"If enabled, sets OrcaSlicer as default application to open DRC files."),
"associate_drc");
2295 g_sizer->Add(item_associate_drc);
2296
2297 auto item_associate_stl =
create_item_checkbox(
_L(
"Associate STL files to OrcaSlicer"),
_L(
"If enabled, this sets OrcaSlicer as the default application to open STL files.") ,
"associate_stl");
2298 g_sizer->Add(item_associate_stl);
2299
2300 auto item_associate_step =
create_item_checkbox(
_L(
"Associate STEP files to OrcaSlicer"),
_L(
"If enabled, this sets OrcaSlicer as the default application to open STEP files."),
"associate_step");
2301 g_sizer->Add(item_associate_step);
2302
2305
2306 auto associate_url_prusa = create_item_link_association(
L"prusaslicer",
"Printables.com");
2307 g_sizer->Add(associate_url_prusa);
2308
2309 auto associate_url_bambu = create_item_link_association(
L"bambustudio",
"Makerworld.com");
2310 g_sizer->Add(associate_url_bambu);
2311
2312 auto associate_url_cura = create_item_link_association(
L"cura",
"Thingiverse.com");
2313 g_sizer->Add(associate_url_cura);
2314
2315 g_sizer->AddSpacer(FromDIP(10));
2316 sizer_page->Add(g_sizer, 0, wxEXPAND);
2317 }
2318#endif
2319
2324 f_sizers.push_back(
new wxFlexGridSizer(1, 1, v_gap, 0));
2326 g_sizer->AddGrowableCol(0, 1);
2327
2330
2331 auto item_develop_mode =
create_item_checkbox(
_L(
"Developer mode"),
"",
"developer_mode", wxEmptyString,
"option_mode#developer+mode");
2332 g_sizer->Add(item_develop_mode);
2333
2334 auto item_ams_blacklist =
create_item_checkbox(
_L(
"Skip AMS blacklist check"),
"",
"skip_ams_blacklist_check");
2335 g_sizer->Add(item_ams_blacklist);
2336
2337 auto item_show_unsupported =
create_item_checkbox(
_L(
"Show unsupported presets"),
_L(
"Show incompatible/unsupported presets in the printer and filament dropdown lists. These presets cannot be selected."),
"show_unsupported_presets");
2338 g_sizer->Add(item_show_unsupported);
2339
2341 _L(
"If enabled, exporting a G-code file also writes its statistics as JSON next to it, as <name>.statistics.json, "
2342 "and an exported sliced 3MF file holds them inside: print time, filament and feature totals, "
2343 "and the same per layer and per object."),
2344 "export_statistics");
2345 g_sizer->Add(item_export_statistics);
2346
2349
2350 auto item_keep_painting =
create_item_checkbox(
_L(
"Keep painted feature after mesh change"),
_L(
"Attempt to keep painted features (color/seam/support/fuzzy etc.) after changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\nHighly experimental! Slow and may create artifact."),
"keep_painting");
2351 g_sizer->Add(item_keep_painting);
2352
2354 _L(
"Use printer agents instead of print hosts"),
_L(
2355 "Route print jobs for non-Bambu printers through printer plug-in agents instead of the classic print-host upload flow.\nWhen disabled, OrcaSlicer uses the legacy print-host behavior."),
2356 "use_printer_agents");
2357 g_sizer->Add(item_plugin_printer_agents);
2358
2360
2362 auto item_allow_abnormal_storage =
create_item_checkbox(
_L(
"Allow Abnormal Storage"),
_L(
"This allows the use of Storage that is marked as abnormal by the Printer.\nUse at your own risk, can cause issues!"),
"allow_abnormal_storage");
2363 g_sizer->Add(item_allow_abnormal_storage);
2364
2367 auto log_level_list = std::vector<wxString>{
_L(
"fatal"),
_L(
"error"),
_L(
"warning"),
_L(
"info"),
_L(
"debug"),
_L(
"trace")};
2369 g_sizer->Add(loglevel_combox);
2370
2372#if !BBL_RELEASE_TO_PUBLIC
2375 g_sizer->Add(debug_page, 1, wxEXPAND);
2376#endif
2377
2378 g_sizer->AddSpacer(FromDIP(10));
2379 sizer_page->Add(g_sizer, 0, wxEXPAND);
2380
2383
2384 g_sizer = nullptr;
2385
2386
2387 for (
size_t i = 1; i <
f_sizers.size(); ++i)
2389
2392
2396}
#define OPTION_PROJECT_LOAD_BEHAVIOUR_ALWAYS_ASK
Definition AppConfig.hpp:25
#define SETTING_OPENGL_PHONG_SSAO
Definition AppConfig.hpp:47
#define OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_ALL
Definition AppConfig.hpp:23
#define SETTING_OPENGL_FXAA_ENABLED
Definition AppConfig.hpp:35
#define SETTING_SPEED_DIAL_RECENT_COUNT
Definition AppConfig.hpp:57
#define SETTING_OPENGL_SHOW_RENDER_TIMINGS
Definition AppConfig.hpp:40
#define SPEED_DIAL_RECENT_COUNT_MIN
Definition AppConfig.hpp:58
#define SETTING_USE_ENCRYPTED_TOKEN_FILE
Definition AppConfig.hpp:32
#define SETTING_OPENGL_REALISTIC_SHADOWS
Definition AppConfig.hpp:46
#define SETTING_PLUGIN_PAGES_VISIBLE_COUNT
Definition AppConfig.hpp:52
#define SETTING_OPENGL_PHONG_SMOOTH_NORMALS
Definition AppConfig.hpp:48
#define SETTING_OPENGL_REALISTIC_PREVIEW
Definition AppConfig.hpp:49
#define PLUGIN_PAGES_VISIBLE_COUNT_MAX
Definition AppConfig.hpp:55
#define SPEED_DIAL_RECENT_COUNT_MAX
Definition AppConfig.hpp:60
#define OPTION_PROJECT_LOAD_BEHAVIOUR_ASK_WHEN_RELEVANT
Definition AppConfig.hpp:24
#define SETTING_OPENGL_AA_SAMPLES
Definition AppConfig.hpp:34
#define SETTING_OPENGL_FPS_CAP
Definition AppConfig.hpp:36
#define PLUGIN_PAGES_VISIBLE_COUNT_MIN
Definition AppConfig.hpp:53
#define SETTING_PROJECT_LOAD_BEHAVIOUR
Definition AppConfig.hpp:22
#define OPTION_PROJECT_LOAD_BEHAVIOUR_LOAD_GEOMETRY
Definition AppConfig.hpp:26
#define SETTING_OPENGL_SHOW_FPS_OVERLAY
Definition AppConfig.hpp:39
#define SETTING_OPENGL_REALISTIC_GLOSS
Definition AppConfig.hpp:50
#define SETTING_OPENGL_REALISTIC_PHONG
Definition AppConfig.hpp:42
#define DRC_BITS_MIN
Definition DRC.hpp:6
#define DRC_BITS_MAX
Definition DRC.hpp:7
static std::vector< std::pair< std::string, std::string > > default_view_type_choices()
Definition GCodeViewer.cpp:1256
wxBoxSizer * create_item_backup(wxString title, wxString tooltip)
Definition Preferences.cpp:877
wxBoxSizer * create_debug_page()
Definition Preferences.cpp:2418
wxBoxSizer * create_item_spinctrl(wxString title, wxString title2, wxString side_label, wxString tooltip, std::string param, int min, int max, std::function< void(int)> onchange=nullptr, const wxString wiki_url="")
Definition Preferences.cpp:736
wxBoxSizer * create_camera_orbit_mult_input(wxString title, wxString tooltip)
Definition Preferences.cpp:787
wxBoxSizer * create_item_language_combobox(wxString title, wxString tooltip)
Definition Preferences.cpp:398
wxBoxSizer * create_item_downloads(wxString title, wxString tooltip)
Definition Preferences.cpp:1261
wxBoxSizer * create_item_input(wxString title, wxString title2, wxString tooltip, std::string param, std::function< void(wxString)> onchange={}, const wxString wiki_url="")
Definition Preferences.cpp:695
wxBoxSizer * create_item_loglevel_combobox(wxString title, wxString tooltip, std::vector< wxString > vlist)
Definition Preferences.cpp:667
wxBoxSizer * create_item_combobox(wxString title, wxString tooltip, std::string param, std::vector< wxString > vlist, std::function< void(wxString)> onchange={}, const wxString wiki_url="")
Definition Preferences.cpp:352
std::map< PreferencesTab, int > m_tab_index
Definition Preferences.hpp:51
wxBoxSizer * create_item_auto_reslice(wxString title, wxString checkbox_tooltip, wxString delay_tooltip)
Definition Preferences.cpp:942
wxBoxSizer * create_item_bambu_cloud(wxString title, wxString tooltip)
Definition Preferences.cpp:1297
wxBoxSizer * create_item_darkmode(wxString title, wxString tooltip, std::string param)
Definition Preferences.cpp:1001
void UpdateSidebarLayout()
Definition Preferences.cpp:2545
wxBoxSizer * create_item_button(wxString title, wxString title2, wxString tooltip, wxString tooltip2, std::function< void()> onclick, const wxString wiki_url="")
Definition Preferences.cpp:1244
wxTimer m_filament_height_timer
Definition Preferences.hpp:77
wxBoxSizer * create_item_decimal_input(wxString title, wxString title2, wxString tooltip, std::string param, double min, double max, int decimals, const wxString wiki_url="")
Definition Preferences.cpp:836
wxBoxSizer * create_item_network_plugin_version(wxString title, wxString tooltip)
Definition Preferences.cpp:1325
wxBoxSizer * create_item_region_combobox(wxString title, wxString tooltip)
Definition Preferences.cpp:587
@ General
Definition Preferences.hpp:40
@ Online
Definition Preferences.hpp:40
@ Control
Definition Preferences.hpp:40
@ Graphics
Definition Preferences.hpp:40
bool is_running_in_msix()
Definition GUI_Utils.cpp:197
void run_scene_benchmark()
Definition SceneBenchmark.cpp:547
@ Global
Definition Shortcuts.hpp:21
wxString from_u8(const std::string &str)
Definition GUI.cpp:544