Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_imgui_slider
2
deps/wxWidgets/wxWidgets.cmake
vendored
|
@ -13,7 +13,7 @@ prusaslicer_add_cmake_project(wxWidgets
|
|||
# GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets"
|
||||
# GIT_TAG tm_cross_compile #${_wx_git_tag}
|
||||
URL https://github.com/prusa3d/wxWidgets/archive/refs/heads/v3.1.4-patched.zip
|
||||
URL_HASH SHA256=a1e145a083d173cf320c0bd8522c7ee5829052b49b68fe5268ac84f0c576b940
|
||||
URL_HASH SHA256=21ed12eb5c215b00999f0374af652be0a6f785df10d18d0dfec8d81ed4abaea3
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG
|
||||
CMAKE_ARGS
|
||||
-DwxBUILD_PRECOMP=ON
|
||||
|
|
2
resources/profiles/Voron.idx
Normal file
|
@ -0,0 +1,2 @@
|
|||
min_slic3r_version = 2.4.0-beta0
|
||||
1.0.0 Initial version
|
1558
resources/profiles/Voron.ini
Normal file
BIN
resources/profiles/Voron/Voron_v0_120_thumbnail.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
resources/profiles/Voron/Voron_v1_250_afterburner_thumbnail.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
resources/profiles/Voron/Voron_v1_300_afterburner_thumbnail.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
resources/profiles/Voron/Voron_v2_250_afterburner_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/Voron_v2_250_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/Voron_v2_300_afterburner_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/Voron_v2_300_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/Voron_v2_350_afterburner_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/Voron_v2_350_thumbnail.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
resources/profiles/Voron/bedtexture-v0-120.png
Normal file
After Width: | Height: | Size: 284 KiB |
BIN
resources/profiles/Voron/bedtexture-v1-250.png
Normal file
After Width: | Height: | Size: 509 KiB |
BIN
resources/profiles/Voron/bedtexture-v1-300.png
Normal file
After Width: | Height: | Size: 218 KiB |
BIN
resources/profiles/Voron/bedtexture-v2-250.png
Normal file
After Width: | Height: | Size: 509 KiB |
BIN
resources/profiles/Voron/bedtexture-v2-300.png
Normal file
After Width: | Height: | Size: 218 KiB |
BIN
resources/profiles/Voron/bedtexture-v2-350.png
Normal file
After Width: | Height: | Size: 251 KiB |
BIN
resources/profiles/Voron/printbed-v0-120.stl
Normal file
BIN
resources/profiles/Voron/printbed-v1-250.stl
Normal file
BIN
resources/profiles/Voron/printbed-v1-300.stl
Normal file
9858
resources/profiles/Voron/printbed-v2-250.stl
Normal file
9858
resources/profiles/Voron/printbed-v2-300.stl
Normal file
9858
resources/profiles/Voron/printbed-v2-350.stl
Normal file
|
@ -182,6 +182,9 @@ void AppConfig::set_defaults()
|
|||
|
||||
if (get("dark_color_mode").empty())
|
||||
set("dark_color_mode", "0");
|
||||
|
||||
if (get("sys_menu_enabled").empty())
|
||||
set("sys_menu_enabled", "1");
|
||||
#endif // _WIN32
|
||||
|
||||
// Remove legacy window positions/sizes
|
||||
|
|
|
@ -53,7 +53,7 @@ struct LifetimeGuard
|
|||
|
||||
BonjourDialog::BonjourDialog(wxWindow *parent, Slic3r::PrinterTechnology tech)
|
||||
: wxDialog(parent, wxID_ANY, _(L("Network lookup")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
|
||||
, list(new wxListView(this, wxID_ANY))
|
||||
, list(new wxListView(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSIMPLE_BORDER))
|
||||
, replies(new ReplySet)
|
||||
, label(new wxStaticText(this, wxID_ANY, ""))
|
||||
, timer(new wxTimer())
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include <wx/wupdlock.h>
|
||||
#include <wx/debug.h>
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
#include <wx/msw/dark_mode.h>
|
||||
#endif // _MSW_DARK_MODE
|
||||
|
||||
#include "libslic3r/Platform.hpp"
|
||||
#include "libslic3r/Utils.hpp"
|
||||
#include "libslic3r/Config.hpp"
|
||||
|
@ -2796,7 +2800,11 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
|
|||
|
||||
auto *vsizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto *topsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto *hline = new wxStaticLine(this);
|
||||
wxStaticLine* hline = nullptr;
|
||||
#ifdef _MSW_DARK_MODE
|
||||
if (!NppDarkMode::IsEnabled())
|
||||
#endif //_MSW_DARK_MODE
|
||||
hline = new wxStaticLine(this);
|
||||
p->btnsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
// Initially we _do not_ SetScrollRate in order to figure out the overall width of the Wizard without scrolling.
|
||||
|
@ -2872,7 +2880,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent)
|
|||
p->index->go_to(size_t{0});
|
||||
|
||||
vsizer->Add(topsizer, 1, wxEXPAND | wxALL, DIALOG_MARGIN);
|
||||
vsizer->Add(hline, 0, wxEXPAND);
|
||||
if (hline)
|
||||
vsizer->Add(hline, 0, wxEXPAND);
|
||||
vsizer->Add(p->btnsizer, 0, wxEXPAND | wxALL, DIALOG_MARGIN);
|
||||
|
||||
SetSizer(vsizer);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "GUI_Init.hpp"
|
||||
#include "GUI_ObjectList.hpp"
|
||||
#include "GUI_ObjectManipulation.hpp"
|
||||
#include "GUI_Factories.hpp"
|
||||
#include "format.hpp"
|
||||
#include "I18N.hpp"
|
||||
|
||||
|
@ -1020,11 +1021,7 @@ bool GUI_App::on_init_inner()
|
|||
wxInitAllImageHandlers();
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
if (bool dark_mode = app_config->get("dark_color_mode") == "1") {
|
||||
NppDarkMode::InitDarkMode();
|
||||
if (dark_mode != NppDarkMode::IsDarkMode())
|
||||
NppDarkMode::SetDarkMode(dark_mode);
|
||||
}
|
||||
NppDarkMode::InitDarkMode(app_config->get("dark_color_mode") == "1", app_config->get("sys_menu_enabled") == "1");
|
||||
#endif
|
||||
SplashScreen* scrn = nullptr;
|
||||
if (app_config->get("show_splash_screen") == "1") {
|
||||
|
@ -1347,10 +1344,9 @@ void GUI_App::UpdateDVCDarkUI(wxDataViewCtrl* dvc, bool highlited/* = false*/)
|
|||
{
|
||||
#ifdef _WIN32
|
||||
UpdateDarkUI(dvc, highlited ? dark_mode() : false);
|
||||
wxItemAttr attr(dark_mode() ? m_color_highlight_default : m_color_label_default,
|
||||
m_color_window_default,
|
||||
m_normal_font);
|
||||
dvc->SetHeaderAttr(attr);
|
||||
#ifdef _MSW_DARK_MODE
|
||||
dvc->RefreshHeaderDarkMode(&m_normal_font);
|
||||
#endif //_MSW_DARK_MODE
|
||||
if (dvc->HasFlag(wxDV_ROW_LINES))
|
||||
dvc->SetAlternateRowColour(m_color_highlight_default);
|
||||
if (dvc->GetBorder() != wxBORDER_SIMPLE)
|
||||
|
@ -1574,12 +1570,44 @@ void fatal_error(wxWindow* parent)
|
|||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
static void update_scrolls(wxWindow* window)
|
||||
{
|
||||
wxWindowList::compatibility_iterator node = window->GetChildren().GetFirst();
|
||||
while (node)
|
||||
{
|
||||
wxWindow* win = node->GetData();
|
||||
if (dynamic_cast<wxScrollHelper*>(win) ||
|
||||
dynamic_cast<wxTreeCtrl*>(win) ||
|
||||
dynamic_cast<wxTextCtrl*>(win))
|
||||
NppDarkMode::SetDarkExplorerTheme(win->GetHWND());
|
||||
|
||||
update_scrolls(win);
|
||||
node = node->GetNext();
|
||||
}
|
||||
}
|
||||
#endif //_MSW_DARK_MODE
|
||||
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
void GUI_App::force_menu_update()
|
||||
{
|
||||
NppDarkMode::SetSystemMenuForApp(app_config->get("sys_menu_enabled") == "1");
|
||||
}
|
||||
#endif //_MSW_DARK_MODE
|
||||
|
||||
void GUI_App::force_colors_update()
|
||||
{
|
||||
#ifdef _MSW_DARK_MODE
|
||||
NppDarkMode::SetDarkMode(app_config->get("dark_color_mode") == "1");
|
||||
if (WXHWND wxHWND = wxToolTip::GetToolTipCtrl())
|
||||
NppDarkMode::SetDarkExplorerTheme((HWND)wxHWND);
|
||||
NppDarkMode::SetDarkTitleBar(mainframe->GetHWND());
|
||||
#endif //_MSW_DARK_MODE
|
||||
m_force_colors_update = true;
|
||||
}
|
||||
#endif
|
||||
#endif //_WIN32
|
||||
|
||||
// Called after the Preferences dialog is closed and the program settings are saved.
|
||||
// Update the UI based on the current preferences.
|
||||
|
@ -1587,11 +1615,14 @@ void GUI_App::update_ui_from_settings()
|
|||
{
|
||||
update_label_colours();
|
||||
#ifdef _WIN32
|
||||
// Upadte UU colors before Update UI from settings
|
||||
// Upadte UI colors before Update UI from settings
|
||||
if (m_force_colors_update) {
|
||||
m_force_colors_update = false;
|
||||
mainframe->force_color_changed();
|
||||
mainframe->diff_dialog.force_color_changed();
|
||||
#ifdef _MSW_DARK_MODE
|
||||
update_scrolls(mainframe);
|
||||
#endif //_MSW_DARK_MODE
|
||||
}
|
||||
#endif
|
||||
mainframe->update_ui_from_settings();
|
||||
|
|
|
@ -210,6 +210,9 @@ public:
|
|||
const wxColour& get_color_hovered_btn_label() { return m_color_hovered_btn_label; }
|
||||
const wxColour& get_color_selected_btn_bg() { return m_color_selected_btn_bg; }
|
||||
void force_colors_update();
|
||||
#ifdef _MSW_DARK_MODE
|
||||
void force_menu_update();
|
||||
#endif //_MSW_DARK_MODE
|
||||
#endif
|
||||
|
||||
const wxFont& small_font() { return m_small_font; }
|
||||
|
|
|
@ -1087,6 +1087,8 @@ void Sidebar::msw_rescale()
|
|||
p->btn_reslice ->SetMinSize(wxSize(-1, scaled_height));
|
||||
|
||||
p->scrolled->Layout();
|
||||
|
||||
p->searcher.dlg_msw_rescale();
|
||||
}
|
||||
|
||||
void Sidebar::sys_color_changed()
|
||||
|
@ -1125,6 +1127,8 @@ void Sidebar::sys_color_changed()
|
|||
p->btn_export_gcode_removable->msw_rescale();
|
||||
|
||||
p->scrolled->Layout();
|
||||
|
||||
p->searcher.dlg_sys_color_changed();
|
||||
}
|
||||
|
||||
void Sidebar::search()
|
||||
|
|
|
@ -350,8 +350,6 @@ void PreferencesDialog::build(size_t selected_tab)
|
|||
tabs->Layout();
|
||||
this->layout();
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
def.label = L("Sequential slider applied only to top layer");
|
||||
|
@ -395,16 +393,6 @@ void PreferencesDialog::build(size_t selected_tab)
|
|||
m_optgroup_gui->append_single_option_line(option);
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
}
|
||||
def.label = L("Use Dark color mode (experimental)");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, UI will use Dark mode colors. "
|
||||
"If disabled, old UI will be used.");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("dark_color_mode") == "1" });
|
||||
option = Option(def, "dark_color_mode");
|
||||
m_optgroup_gui->append_single_option_line(option);
|
||||
|
||||
if (is_editor) {
|
||||
def.label = L("Set settings tabs as menu items (experimental)");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, Settings Tabs will be placed as menu items. "
|
||||
|
@ -484,6 +472,36 @@ void PreferencesDialog::build(size_t selected_tab)
|
|||
}
|
||||
#endif // ENABLE_ENVIRONMENT_MAP
|
||||
|
||||
#ifdef _WIN32
|
||||
// Add "Dark Mode" tab
|
||||
if (is_editor) {
|
||||
// Add "Dark Mode" tab
|
||||
m_optgroup_dark_mode = create_options_tab(_L("Dark mode (experimental)"), tabs);
|
||||
m_optgroup_dark_mode->m_on_change = [this](t_config_option_key opt_key, boost::any value) {
|
||||
m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : "0";
|
||||
};
|
||||
|
||||
def.label = L("Enable dark mode");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, UI will use Dark mode colors. "
|
||||
"If disabled, old UI will be used.");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("dark_color_mode") == "1" });
|
||||
option = Option(def, "dark_color_mode");
|
||||
m_optgroup_dark_mode->append_single_option_line(option);
|
||||
|
||||
def.label = L("Use system menu for application");
|
||||
def.type = coBool;
|
||||
def.tooltip = L("If enabled, application will use standart Windows system menu,\n"
|
||||
"but on some combination od display scales it can looks ugly. "
|
||||
"If disabled, old UI will be used.");
|
||||
def.set_default_value(new ConfigOptionBool{ app_config->get("sys_menu_enabled") == "1" });
|
||||
option = Option(def, "sys_menu_enabled");
|
||||
m_optgroup_dark_mode->append_single_option_line(option);
|
||||
|
||||
activate_options_tab(m_optgroup_dark_mode);
|
||||
}
|
||||
#endif //_WIN32
|
||||
|
||||
// update alignment of the controls for all tabs
|
||||
update_ctrls_alignment();
|
||||
|
||||
|
@ -525,7 +543,7 @@ void PreferencesDialog::accept(wxEvent&)
|
|||
// if (m_values.find("no_defaults") != m_values.end()
|
||||
// warning_catcher(this, wxString::Format(_L("You need to restart %s to make the changes effective."), SLIC3R_APP_NAME));
|
||||
|
||||
std::vector<std::string> options_to_recreate_GUI = { "no_defaults", "tabs_as_menu" };
|
||||
std::vector<std::string> options_to_recreate_GUI = { "no_defaults", "tabs_as_menu", "sys_menu_enabled" };
|
||||
|
||||
for (const std::string& option : options_to_recreate_GUI) {
|
||||
if (m_values.find(option) != m_values.end()) {
|
||||
|
@ -588,11 +606,14 @@ void PreferencesDialog::accept(wxEvent&)
|
|||
|
||||
EndModal(wxID_OK);
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
#ifdef _WIN32
|
||||
if (m_values.find("dark_color_mode") != m_values.end())
|
||||
wxGetApp().force_colors_update();
|
||||
#endif
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
if (m_values.find("sys_menu_enabled") != m_values.end())
|
||||
wxGetApp().force_menu_update();
|
||||
#endif //_MSW_DARK_MODE
|
||||
#endif // _WIN32
|
||||
if (m_settings_layout_changed)
|
||||
;// application will be recreated after Preference dialog will be destroyed
|
||||
else
|
||||
|
|
|
@ -29,6 +29,9 @@ class PreferencesDialog : public DPIDialog
|
|||
std::shared_ptr<ConfigOptionsGroup> m_optgroup_general;
|
||||
std::shared_ptr<ConfigOptionsGroup> m_optgroup_camera;
|
||||
std::shared_ptr<ConfigOptionsGroup> m_optgroup_gui;
|
||||
#ifdef _WIN32
|
||||
std::shared_ptr<ConfigOptionsGroup> m_optgroup_dark_mode;
|
||||
#endif //_WIN32
|
||||
#if ENABLE_ENVIRONMENT_MAP
|
||||
std::shared_ptr<ConfigOptionsGroup> m_optgroup_render;
|
||||
#endif // ENABLE_ENVIRONMENT_MAP
|
||||
|
|
|
@ -401,6 +401,18 @@ void OptionsSearcher::show_dialog()
|
|||
search_dialog->Popup();
|
||||
}
|
||||
|
||||
void OptionsSearcher::dlg_sys_color_changed()
|
||||
{
|
||||
if (search_dialog)
|
||||
search_dialog->on_sys_color_changed();
|
||||
}
|
||||
|
||||
void OptionsSearcher::dlg_msw_rescale()
|
||||
{
|
||||
if (search_dialog)
|
||||
search_dialog->msw_rescale();
|
||||
}
|
||||
|
||||
void OptionsSearcher::add_key(const std::string& opt_key, Preset::Type type, const wxString& group, const wxString& category)
|
||||
{
|
||||
groups_and_categories[get_key(opt_key, type)] = GroupAndCategory{group, category};
|
||||
|
@ -666,7 +678,7 @@ void SearchDialog::OnLeftDown(wxMouseEvent& event)
|
|||
ProcessSelection(search_list->GetSelection());
|
||||
}
|
||||
|
||||
void SearchDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||
void SearchDialog::msw_rescale()
|
||||
{
|
||||
const int& em = em_unit();
|
||||
|
||||
|
|
|
@ -138,6 +138,8 @@ public:
|
|||
void sort_options_by_label() { sort_options(); }
|
||||
|
||||
void show_dialog();
|
||||
void dlg_sys_color_changed();
|
||||
void dlg_msw_rescale();
|
||||
};
|
||||
|
||||
|
||||
|
@ -180,9 +182,11 @@ public:
|
|||
void Popup(wxPoint position = wxDefaultPosition);
|
||||
void ProcessSelection(wxDataViewItem selection);
|
||||
|
||||
protected:
|
||||
void on_dpi_changed(const wxRect& suggested_rect) override;
|
||||
void msw_rescale();
|
||||
void on_sys_color_changed() override;
|
||||
|
||||
protected:
|
||||
void on_dpi_changed(const wxRect& suggested_rect) override { msw_rescale(); }
|
||||
};
|
||||
|
||||
|
||||
|
|