mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 19:01:02 +00:00
Updated wxWidgets to 3.3.2 (#12941)
# Description Upgrade wxWidgets to the latest 3.3.2. The wxWidgets team mentioned that while 3.3 is not labeled “stable,” it is production-ready. It isn’t labeled “stable” only because it may introduce breaking ABI/API changes. As Linux distros are moving to Wayland, and given the number of fixes in wxWidgets to improve Wayland support, it’s worth upgrading to 3.3.2 instead of staying on 3.2.x. Note: I didn’t switch the dark mode implementation to wxWidgets for two reasons: 1. To avoid broader changes, since the current dark mode works well with wxWidgets 3.3.2. 2. wxWidgets dark mode doesn’t support changing themes on the fly; it requires an application restart for the change to take effect. # Screenshots/Recordings/Graphs <!-- > Please attach relevant screenshots to showcase the UI changes. > Please attach images that can help explain the changes. --> ## Tests <!-- > Please describe the tests that you have conducted to verify the changes made in this PR. -->
This commit is contained in:
@@ -124,7 +124,6 @@ endif()
|
|||||||
option(SLIC3R_STATIC "Compile OrcaSlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL})
|
option(SLIC3R_STATIC "Compile OrcaSlicer with static libraries (Boost, TBB, glew)" ${SLIC3R_STATIC_INITIAL})
|
||||||
option(SLIC3R_GUI "Compile OrcaSlicer with GUI components (OpenGL, wxWidgets)" 1)
|
option(SLIC3R_GUI "Compile OrcaSlicer with GUI components (OpenGL, wxWidgets)" 1)
|
||||||
option(SLIC3R_FHS "Assume OrcaSlicer is to be installed in a FHS directory structure" 0)
|
option(SLIC3R_FHS "Assume OrcaSlicer is to be installed in a FHS directory structure" 0)
|
||||||
option(SLIC3R_WX_STABLE "Build against wxWidgets stable (3.0) as oppsed to dev (3.1) on Linux" 0)
|
|
||||||
option(SLIC3R_PROFILE "Compile OrcaSlicer with an invasive Shiny profiler" 0)
|
option(SLIC3R_PROFILE "Compile OrcaSlicer with an invasive Shiny profiler" 0)
|
||||||
option(SLIC3R_PCH "Use precompiled headers" 1)
|
option(SLIC3R_PCH "Use precompiled headers" 1)
|
||||||
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
|
option(SLIC3R_MSVC_COMPILE_PARALLEL "Compile on Visual Studio in parallel" 1)
|
||||||
|
|||||||
Vendored
+24
-10
@@ -21,21 +21,13 @@ else ()
|
|||||||
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
|
set(_wx_edge "-DwxUSE_WEBVIEW_EDGE=OFF")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(_wx_opengl_override "")
|
|
||||||
if(APPLE AND CMAKE_VERSION VERSION_GREATER_EQUAL "4.0")
|
|
||||||
set(_wx_opengl_override
|
|
||||||
-DOPENGL_gl_LIBRARY="-framework OpenGL"
|
|
||||||
-DOPENGL_glu_LIBRARY="-framework OpenGL"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
orcaslicer_add_cmake_project(
|
orcaslicer_add_cmake_project(
|
||||||
wxWidgets
|
wxWidgets
|
||||||
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
||||||
|
GIT_TAG v3.3.2
|
||||||
GIT_SHALLOW ON
|
GIT_SHALLOW ON
|
||||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
${_wx_opengl_override}
|
|
||||||
-DwxBUILD_PRECOMP=ON
|
-DwxBUILD_PRECOMP=ON
|
||||||
${_wx_toolkit}
|
${_wx_toolkit}
|
||||||
"-DCMAKE_DEBUG_POSTFIX:STRING=${_wx_debug_postfix}"
|
"-DCMAKE_DEBUG_POSTFIX:STRING=${_wx_debug_postfix}"
|
||||||
@@ -44,7 +36,6 @@ orcaslicer_add_cmake_project(
|
|||||||
${_wx_shared}
|
${_wx_shared}
|
||||||
-DwxUSE_MEDIACTRL=ON
|
-DwxUSE_MEDIACTRL=ON
|
||||||
-DwxUSE_DETECT_SM=OFF
|
-DwxUSE_DETECT_SM=OFF
|
||||||
-DwxUSE_UNICODE=ON
|
|
||||||
-DwxUSE_PRIVATE_FONTS=ON
|
-DwxUSE_PRIVATE_FONTS=ON
|
||||||
-DwxUSE_OPENGL=ON
|
-DwxUSE_OPENGL=ON
|
||||||
-DwxUSE_GLCANVAS_EGL=OFF
|
-DwxUSE_GLCANVAS_EGL=OFF
|
||||||
@@ -62,6 +53,29 @@ orcaslicer_add_cmake_project(
|
|||||||
-DwxUSE_LIBJPEG=sys
|
-DwxUSE_LIBJPEG=sys
|
||||||
-DwxUSE_LIBTIFF=OFF
|
-DwxUSE_LIBTIFF=OFF
|
||||||
-DwxUSE_EXPAT=sys
|
-DwxUSE_EXPAT=sys
|
||||||
|
-DwxUSE_NANOSVG=OFF
|
||||||
|
)
|
||||||
|
|
||||||
|
# wxWidgets 3.3 cmake install doesn't include private headers.
|
||||||
|
# OrcaSlicer uses some of the private headers (for accessibility support).
|
||||||
|
# Copy the private headers directory after install.
|
||||||
|
if(MSVC)
|
||||||
|
set(_wx_inc_dest ${DESTDIR}/include/wx)
|
||||||
|
else()
|
||||||
|
set(_wx_inc_dest ${DESTDIR}/include/wx-3.3/wx)
|
||||||
|
endif()
|
||||||
|
ExternalProject_Add_Step(dep_wxWidgets copy_private_headers
|
||||||
|
DEPENDEES install
|
||||||
|
COMMENT "Copying wxWidgets private headers"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
<SOURCE_DIR>/include/wx/private
|
||||||
|
${_wx_inc_dest}/private
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
<SOURCE_DIR>/include/wx/generic/private
|
||||||
|
${_wx_inc_dest}/generic/private
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
<SOURCE_DIR>/include/wx/gtk/private
|
||||||
|
${_wx_inc_dest}/gtk/private
|
||||||
)
|
)
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
|||||||
@@ -97,7 +97,6 @@ modules:
|
|||||||
- -DBUILD_SHARED_LIBS=ON
|
- -DBUILD_SHARED_LIBS=ON
|
||||||
- -DwxUSE_MEDIACTRL=ON
|
- -DwxUSE_MEDIACTRL=ON
|
||||||
- -DwxUSE_DETECT_SM=OFF
|
- -DwxUSE_DETECT_SM=OFF
|
||||||
- -DwxUSE_UNICODE=ON
|
|
||||||
- -DwxUSE_PRIVATE_FONTS=ON
|
- -DwxUSE_PRIVATE_FONTS=ON
|
||||||
- -DwxUSE_OPENGL=ON
|
- -DwxUSE_OPENGL=ON
|
||||||
- -DwxUSE_GLCANVAS_EGL=OFF
|
- -DwxUSE_GLCANVAS_EGL=OFF
|
||||||
@@ -119,9 +118,12 @@ modules:
|
|||||||
- -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
|
- -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld
|
||||||
- -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld
|
- -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
# Use git instead of archive: wxWidgets 3.3 relies on multiple git
|
||||||
url: https://github.com/SoftFever/Orca-deps-wxWidgets/archive/refs/tags/orca-3.1.5-1.tar.gz
|
# submodules (PCRE2, etc.) that are not included in GitHub tarballs.
|
||||||
sha256: 1dc9d3865d899cb71c27a7e549aa5491e832ef6e81a7b6653ccb11f9c37fa99d
|
- type: git
|
||||||
|
url: https://github.com/SoftFever/Orca-deps-wxWidgets.git
|
||||||
|
tag: orca-3.3.2
|
||||||
|
commit: db1005db3dea2c37a46fb455a9a02e37aa360751
|
||||||
|
|
||||||
# OrcaSlicer C++ dependencies (built offline with pre-downloaded archives)
|
# OrcaSlicer C++ dependencies (built offline with pre-downloaded archives)
|
||||||
- name: orca_deps
|
- name: orca_deps
|
||||||
|
|||||||
+5
-7
@@ -30,20 +30,18 @@ if (SLIC3R_GUI)
|
|||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}")
|
set (wxWidgets_CONFIG_OPTIONS "--toolkit=gtk${SLIC3R_GTK}")
|
||||||
if (SLIC3R_WX_STABLE)
|
find_package(wxWidgets 3.3 REQUIRED COMPONENTS base core adv html gl aui net media webview)
|
||||||
find_package(wxWidgets 3.0 REQUIRED COMPONENTS base core adv html gl aui net media webview)
|
|
||||||
else ()
|
|
||||||
find_package(wxWidgets 3.1 REQUIRED COMPONENTS base core adv html gl aui net media webview)
|
|
||||||
endif ()
|
|
||||||
else ()
|
else ()
|
||||||
find_package(wxWidgets 3.1 REQUIRED COMPONENTS html adv gl core base webview aui net media)
|
find_package(wxWidgets 3.3 CONFIG REQUIRED COMPONENTS html adv gl core base webview aui net media)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}")
|
message(STATUS "wx-config path: ${wxWidgets_CONFIG_EXECUTABLE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(${wxWidgets_USE_FILE})
|
if(wxWidgets_USE_FILE)
|
||||||
|
include(${wxWidgets_USE_FILE})
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(JPEG QUIET)
|
find_package(JPEG QUIET)
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
#include <commctrl.h>
|
||||||
#ifdef SLIC3R_GUI
|
#ifdef SLIC3R_GUI
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -618,7 +618,7 @@ void AMSSettingTypePanel::CreateGui()
|
|||||||
h_sizer->AddStretchSpacer();
|
h_sizer->AddStretchSpacer();
|
||||||
h_sizer->Add(m_type_combobox, 0, wxEXPAND);
|
h_sizer->Add(m_type_combobox, 0, wxEXPAND);
|
||||||
h_sizer->Add(m_switching_icon, 0, wxALIGN_CENTER);
|
h_sizer->Add(m_switching_icon, 0, wxALIGN_CENTER);
|
||||||
h_sizer->Add(m_switching_tips, 0, wxEXPAND | wxLEFT | wxALIGN_CENTER, FromDIP(8));
|
h_sizer->Add(m_switching_tips, 0, wxEXPAND | wxLEFT, FromDIP(8));
|
||||||
SetSizer(h_sizer);
|
SetSizer(h_sizer);
|
||||||
Layout();
|
Layout();
|
||||||
Fit();
|
Fit();
|
||||||
@@ -754,7 +754,7 @@ void AMSSettingArrangeAMSOrder::CreateGui()
|
|||||||
m_btn_rearrange->Bind(wxEVT_BUTTON, &AMSSettingArrangeAMSOrder::OnBtnRearrangeClicked, this);
|
m_btn_rearrange->Bind(wxEVT_BUTTON, &AMSSettingArrangeAMSOrder::OnBtnRearrangeClicked, this);
|
||||||
h_sizer->Add(title, 0);
|
h_sizer->Add(title, 0);
|
||||||
h_sizer->AddStretchSpacer();
|
h_sizer->AddStretchSpacer();
|
||||||
h_sizer->Add(m_btn_rearrange, 0, wxEXPAND | wxALIGN_CENTER_VERTICAL);
|
h_sizer->Add(m_btn_rearrange, 0, wxEXPAND);
|
||||||
SetSizer(h_sizer);
|
SetSizer(h_sizer);
|
||||||
Layout();
|
Layout();
|
||||||
Fit();
|
Fit();
|
||||||
|
|||||||
@@ -293,7 +293,8 @@ AboutDialog::AboutDialog()
|
|||||||
find_txt += text_list[i][o];
|
find_txt += text_list[i][o];
|
||||||
count_txt += text_list[i][o];
|
count_txt += text_list[i][o];
|
||||||
} else {
|
} else {
|
||||||
find_txt += std::string("\n") + text_list[i][o];
|
find_txt += "\n";
|
||||||
|
find_txt += text_list[i][o];
|
||||||
count_txt = text_list[i][o];
|
count_txt = text_list[i][o];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -717,7 +717,7 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
|
|||||||
|
|
||||||
m_sizer_ams_right_horizonal->AddStretchSpacer();
|
m_sizer_ams_right_horizonal->AddStretchSpacer();
|
||||||
m_sizer_ams_right_horizonal->AddSpacer(FromDIP(5));
|
m_sizer_ams_right_horizonal->AddSpacer(FromDIP(5));
|
||||||
m_sizer_ams_right_horizonal->Add(m_reset_btn, 0, wxALIGN_TOP | wxEXPAND );
|
m_sizer_ams_right_horizonal->Add(m_reset_btn, 0, wxEXPAND );
|
||||||
m_reset_btn->Hide();
|
m_reset_btn->Hide();
|
||||||
m_right_first_text_panel->SetSizer(m_sizer_ams_right_horizonal);
|
m_right_first_text_panel->SetSizer(m_sizer_ams_right_horizonal);
|
||||||
const int same_height = 15;
|
const int same_height = 15;
|
||||||
@@ -813,7 +813,7 @@ void AmsMapingPopup::msw_rescale()
|
|||||||
m_split_left_line->SetMaxSize(wxSize(-1, 1));
|
m_split_left_line->SetMaxSize(wxSize(-1, 1));
|
||||||
sizer_split_ams->Add(0, 0, 0, wxEXPAND, 0);
|
sizer_split_ams->Add(0, 0, 0, wxEXPAND, 0);
|
||||||
sizer_split_ams->Add(ams_title_text, 0, wxALIGN_CENTER, 0);
|
sizer_split_ams->Add(ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||||
sizer_split_ams->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL | wxEXPAND, 0);
|
sizer_split_ams->Add(m_split_left_line, 1, wxEXPAND, 0);
|
||||||
return sizer_split_ams;
|
return sizer_split_ams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ void AuFile::on_input_enter(wxCommandEvent &evt)
|
|||||||
auto new_fullname = new_file_name + m_file_path.extension().string();
|
auto new_fullname = new_file_name + m_file_path.extension().string();
|
||||||
|
|
||||||
|
|
||||||
wxString new_fullname_path = dir.wstring() + "/" + new_fullname;
|
wxString new_fullname_path = wxString(dir.wstring()) + "/" + new_fullname;
|
||||||
fs::path new_dir_path(new_fullname_path.ToStdWstring());
|
fs::path new_dir_path(new_fullname_path.ToStdWstring());
|
||||||
|
|
||||||
|
|
||||||
@@ -955,7 +955,8 @@ void AuxiliaryPanel::on_import_file(wxCommandEvent &event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_exist) {
|
if (!is_exist) {
|
||||||
dir_path += "/" + src_bfs_path.filename().generic_wstring();
|
dir_path += "/";
|
||||||
|
dir_path += src_bfs_path.filename().generic_wstring();
|
||||||
} else {
|
} else {
|
||||||
time_t t1 = time(0);
|
time_t t1 = time(0);
|
||||||
char ch1[64];
|
char ch1[64];
|
||||||
@@ -965,7 +966,7 @@ void AuxiliaryPanel::on_import_file(wxCommandEvent &event)
|
|||||||
wxString name = src_bfs_path.filename().generic_wstring();
|
wxString name = src_bfs_path.filename().generic_wstring();
|
||||||
auto before_name = replaceSpace(name.ToStdString(), src_bfs_path.extension().string(), "");
|
auto before_name = replaceSpace(name.ToStdString(), src_bfs_path.extension().string(), "");
|
||||||
time_text = replaceSpace(time_text, ":", "_");
|
time_text = replaceSpace(time_text, ":", "_");
|
||||||
dir_path += "/" + before_name + "_" + time_text + src_bfs_path.extension().wstring();
|
dir_path += wxString("/") + before_name + "_" + time_text + src_bfs_path.extension().wstring();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -332,9 +332,12 @@ wxDataViewItemArray AuxiliaryModel::ImportFile(AuxiliaryModelNode* sel, wxArrayS
|
|||||||
// Copy imported file to project temp directory
|
// Copy imported file to project temp directory
|
||||||
fs::path src_bfs_path(file_path.ToStdWstring());
|
fs::path src_bfs_path(file_path.ToStdWstring());
|
||||||
wxString dir_path = m_root_dir;
|
wxString dir_path = m_root_dir;
|
||||||
if (sel != m_root)
|
if (sel != m_root) {
|
||||||
dir_path += "\\" + sel->name;
|
dir_path += "\\";
|
||||||
dir_path += "\\" + src_bfs_path.filename().generic_wstring();
|
dir_path += sel->name;
|
||||||
|
}
|
||||||
|
dir_path += "\\";
|
||||||
|
dir_path += src_bfs_path.filename().generic_wstring();
|
||||||
|
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_options::overwrite_existing, ec))
|
if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_options::overwrite_existing, ec))
|
||||||
|
|||||||
@@ -55,9 +55,9 @@ BBLStatusBar::BBLStatusBar(wxWindow *parent, int id)
|
|||||||
m_cancelbutton->Hide();
|
m_cancelbutton->Hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
m_sizer->Add(m_object_info_sizer, 1, wxEXPAND | wxALL | wxALIGN_LEFT, 5);
|
m_sizer->Add(m_object_info_sizer, 1, wxEXPAND | wxALL, 5);
|
||||||
m_sizer->Add(m_slice_info_sizer, 1, wxEXPAND | wxALL | wxALIGN_LEFT, 5);
|
m_sizer->Add(m_slice_info_sizer, 1, wxEXPAND | wxALL, 5);
|
||||||
m_sizer->Add(m_status_text, 1, wxEXPAND | wxALL | wxALIGN_LEFT, 5);
|
m_sizer->Add(m_status_text, 1, wxEXPAND | wxALL, 5);
|
||||||
m_sizer->Add(m_prog, 0, wxEXPAND | wxLEFT | wxALL, 5);
|
m_sizer->Add(m_prog, 0, wxEXPAND | wxLEFT | wxALL, 5);
|
||||||
m_sizer->Add(m_cancelbutton, 0, wxEXPAND | wxALL, 5);
|
m_sizer->Add(m_cancelbutton, 0, wxEXPAND | wxALL, 5);
|
||||||
m_sizer->SetSizeHints(m_self);
|
m_sizer->SetSizeHints(m_self);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#include "wx/artprov.h"
|
#include "wx/artprov.h"
|
||||||
#include "wx/aui/framemanager.h"
|
#include "wx/aui/framemanager.h"
|
||||||
#include "wx/display.h"
|
#include "wx/display.h"
|
||||||
|
#include <wx/utils.h>
|
||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
#include "GUI.hpp"
|
#include "GUI.hpp"
|
||||||
|
|||||||
@@ -91,8 +91,9 @@ BitmapComboBox::~BitmapComboBox()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
bool BitmapComboBox::OnAddBitmap(const wxBitmap& bitmap)
|
bool BitmapComboBox::OnAddBitmap(const wxBitmapBundle& bundle)
|
||||||
{
|
{
|
||||||
|
wxBitmap bitmap = bundle.GetBitmap(bundle.GetDefaultSize());
|
||||||
if (bitmap.IsOk())
|
if (bitmap.IsOk())
|
||||||
{
|
{
|
||||||
// we should use scaled! size values of bitmap
|
// we should use scaled! size values of bitmap
|
||||||
@@ -131,7 +132,8 @@ void BitmapComboBox::OnDrawItem(wxDC& dc,
|
|||||||
int item,
|
int item,
|
||||||
int flags) const
|
int flags) const
|
||||||
{
|
{
|
||||||
const wxBitmap& bmp = *(static_cast<wxBitmap*>(m_bitmaps[item]));
|
const wxBitmapBundle& bundle = m_bitmapbundles[item];
|
||||||
|
wxBitmap bmp = bundle.GetBitmap(bundle.GetDefaultSize());
|
||||||
if (bmp.IsOk())
|
if (bmp.IsOk())
|
||||||
{
|
{
|
||||||
// we should use scaled! size values of bitmap
|
// we should use scaled! size values of bitmap
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ protected:
|
|||||||
* For this purpose control drawing methods and
|
* For this purpose control drawing methods and
|
||||||
* control size calculation methods (virtual) are overridden.
|
* control size calculation methods (virtual) are overridden.
|
||||||
**/
|
**/
|
||||||
bool OnAddBitmap(const wxBitmap& bitmap) override;
|
bool OnAddBitmap(const wxBitmapBundle& bitmap) override;
|
||||||
void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override;
|
void OnDrawItem(wxDC& dc, const wxRect& rect, int item, int flags) const override;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1139,8 +1139,8 @@ void CalibrationPresetPage::create_multi_extruder_filament_list_panel(wxWindow *
|
|||||||
else {
|
else {
|
||||||
m_main_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
m_main_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
||||||
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
||||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
}
|
}
|
||||||
m_multi_extruder_ams_panel_sizer->Add(m_multi_exturder_ams_sizer);
|
m_multi_extruder_ams_panel_sizer->Add(m_multi_exturder_ams_sizer);
|
||||||
|
|
||||||
@@ -2152,8 +2152,8 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||||||
|
|
||||||
m_main_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
m_main_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
||||||
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
||||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
|
|
||||||
m_main_extruder_on_left = false;
|
m_main_extruder_on_left = false;
|
||||||
}
|
}
|
||||||
@@ -2163,8 +2163,8 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
|
|||||||
|
|
||||||
m_main_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
m_main_sizer->GetStaticBox()->SetLabel(_L("Left Nozzle"));
|
||||||
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
m_deputy_sizer->GetStaticBox()->SetLabel(_L("Right Nozzle"));
|
||||||
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_main_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL | wxALIGN_BOTTOM, 10);
|
m_multi_exturder_ams_sizer->Add(m_deputy_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
|
|
||||||
m_main_extruder_on_left = true;
|
m_main_extruder_on_left = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <wx/progdlg.h>
|
#include <wx/progdlg.h>
|
||||||
#include <wx/clipbrd.h>
|
#include <wx/clipbrd.h>
|
||||||
#include <wx/dcgraph.h>
|
#include <wx/dcgraph.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
#include <slic3r/GUI/StatusPanel.hpp>
|
#include <slic3r/GUI/StatusPanel.hpp>
|
||||||
|
|
||||||
@@ -127,7 +128,7 @@ CameraPopup::CameraPopup(wxWindow *parent)
|
|||||||
|
|
||||||
top_sizer->Add(m_custom_camera_hint, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, FromDIP(5));
|
top_sizer->Add(m_custom_camera_hint, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, FromDIP(5));
|
||||||
top_sizer->Add(0, 0, wxALL, 0);
|
top_sizer->Add(0, 0, wxALL, 0);
|
||||||
top_sizer->Add(m_custom_camera_input, 2, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxEXPAND | wxALL, FromDIP(5));
|
top_sizer->Add(m_custom_camera_input, 2, wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL, FromDIP(5));
|
||||||
top_sizer->Add(m_custom_camera_input_confirm, 1, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT | wxALL, FromDIP(5));
|
top_sizer->Add(m_custom_camera_input_confirm, 1, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT | wxALL, FromDIP(5));
|
||||||
main_sizer->Add(top_sizer, 0, wxALL, FromDIP(10));
|
main_sizer->Add(top_sizer, 0, wxALL, FromDIP(10));
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ CloneDialog::CloneDialog(wxWindow *parent)
|
|||||||
m_progress->SetProgressForedColour(StateColor::darkModeColorFor(wxColour("#DFDFDF")));
|
m_progress->SetProgressForedColour(StateColor::darkModeColorFor(wxColour("#DFDFDF")));
|
||||||
m_progress->SetDoubleBuffered(true);
|
m_progress->SetDoubleBuffered(true);
|
||||||
m_progress->Hide();
|
m_progress->Hide();
|
||||||
bottom_sizer->Add(m_progress, 2, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
bottom_sizer->Add(m_progress, 2, wxEXPAND | wxLEFT, FromDIP(10));
|
||||||
|
|
||||||
auto dlg_btns = new DialogButtons(this, {"Fill", "OK", "Cancel"}, "", 1 /*left_aligned*/);
|
auto dlg_btns = new DialogButtons(this, {"Fill", "OK", "Cancel"}, "", 1 /*left_aligned*/);
|
||||||
|
|
||||||
|
|||||||
@@ -902,20 +902,7 @@ void PageMaterials::update_lists(int sel_type, int sel_vendor, int last_selected
|
|||||||
wxArrayInt sel_printers;
|
wxArrayInt sel_printers;
|
||||||
int sel_printers_count = list_printer->GetSelections(sel_printers);
|
int sel_printers_count = list_printer->GetSelections(sel_printers);
|
||||||
|
|
||||||
// Does our wxWidgets version support operator== for wxArrayInt ?
|
|
||||||
#if wxCHECK_VERSION(3, 1, 1)
|
|
||||||
if (sel_printers != sel_printers_prev) {
|
if (sel_printers != sel_printers_prev) {
|
||||||
#else
|
|
||||||
auto are_equal = [](const wxArrayInt& arr_first, const wxArrayInt& arr_second) {
|
|
||||||
if (arr_first.GetCount() != arr_second.GetCount())
|
|
||||||
return false;
|
|
||||||
for (size_t i = 0; i < arr_first.GetCount(); i++)
|
|
||||||
if (arr_first[i] != arr_second[i])
|
|
||||||
return false;
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
if (!are_equal(sel_printers, sel_printers_prev)) {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Refresh type list
|
// Refresh type list
|
||||||
list_type->Clear();
|
list_type->Clear();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <openssl/evp.h>
|
#include <openssl/evp.h>
|
||||||
#include <wx/dcgraph.h>
|
#include <wx/dcgraph.h>
|
||||||
#include <wx/tooltip.h>
|
#include <wx/tooltip.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
#include <boost/nowide/cstdio.hpp>
|
#include <boost/nowide/cstdio.hpp>
|
||||||
#include "libslic3r/PresetBundle.hpp"
|
#include "libslic3r/PresetBundle.hpp"
|
||||||
#include "I18N.hpp"
|
#include "I18N.hpp"
|
||||||
@@ -770,7 +771,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_vendor_item()
|
|||||||
wxStaticText *static_vendor_text = new wxStaticText(this, wxID_ANY, _L("Vendor"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_vendor_text = new wxStaticText(this, wxID_ANY, _L("Vendor"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
// Convert all std::any to std::string
|
// Convert all std::any to std::string
|
||||||
std::vector<std::string> string_vendors;
|
std::vector<std::string> string_vendors;
|
||||||
@@ -811,7 +812,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_vendor_item()
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
});
|
});
|
||||||
m_filament_custom_vendor_input->Hide();
|
m_filament_custom_vendor_input->Hide();
|
||||||
vendor_sizer->Add(textInputSizer, 0, wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
vendor_sizer->Add(textInputSizer, 0, wxEXPAND, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxBoxSizer *checkbox_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *checkbox_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
@@ -848,7 +849,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_vendor_item()
|
|||||||
|
|
||||||
comboBoxSizer->Add(vendor_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
comboBoxSizer->Add(vendor_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
comboBoxSizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
comboBoxSizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
|
|
||||||
@@ -862,7 +863,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_type_item()
|
|||||||
wxStaticText *static_type_text = new wxStaticText(this, wxID_ANY, _L("Type"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(this, wxID_ANY, _L("Type"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
wxArrayString filament_type;
|
wxArrayString filament_type;
|
||||||
for (const wxString filament : m_system_filament_types_set) {
|
for (const wxString filament : m_system_filament_types_set) {
|
||||||
@@ -876,7 +877,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_type_item()
|
|||||||
m_filament_type_combobox->SetLabelColor(DEFAULT_PROMPT_TEXT_COLOUR);
|
m_filament_type_combobox->SetLabelColor(DEFAULT_PROMPT_TEXT_COLOUR);
|
||||||
m_filament_type_combobox->Set(filament_type);
|
m_filament_type_combobox->Set(filament_type);
|
||||||
comboBoxSizer->Add(m_filament_type_combobox, 0, wxEXPAND | wxALL, 0);
|
comboBoxSizer->Add(m_filament_type_combobox, 0, wxEXPAND | wxALL, 0);
|
||||||
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
m_filament_type_combobox->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &e) {
|
m_filament_type_combobox->Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &e) {
|
||||||
m_filament_type_combobox->SetLabelColor(*wxBLACK);
|
m_filament_type_combobox->SetLabelColor(*wxBLACK);
|
||||||
@@ -908,7 +909,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_serial_item()
|
|||||||
wxStaticText *static_serial_text = new wxStaticText(this, wxID_ANY, _L("Serial"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_serial_text = new wxStaticText(this, wxID_ANY, _L("Serial"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_filament_serial_input = new TextInput(this, "", "", "", wxDefaultPosition, NAME_OPTION_COMBOBOX_SIZE, wxTE_PROCESS_ENTER);
|
m_filament_serial_input = new TextInput(this, "", "", "", wxDefaultPosition, NAME_OPTION_COMBOBOX_SIZE, wxTE_PROCESS_ENTER);
|
||||||
@@ -927,7 +928,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_serial_item()
|
|||||||
static_eg_text->SetForegroundColour(wxColour("#6B6B6B"));
|
static_eg_text->SetForegroundColour(wxColour("#6B6B6B"));
|
||||||
static_eg_text->SetFont(::Label::Body_12);
|
static_eg_text->SetFont(::Label::Body_12);
|
||||||
comboBoxSizer->Add(static_eg_text, 0, wxEXPAND | wxTOP, FromDIP(5));
|
comboBoxSizer->Add(static_eg_text, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -940,7 +941,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_filament_preset_item()
|
|||||||
wxStaticText *static_filament_preset_text = new wxStaticText(this, wxID_ANY, _L("Filament Preset"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_filament_preset_text = new wxStaticText(this, wxID_ANY, _L("Filament Preset"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_filament_preset_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_filament_preset_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * comboBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
comboBoxSizer->Add(create_radio_item(m_create_type.base_filament, this, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxALL, 0);
|
comboBoxSizer->Add(create_radio_item(m_create_type.base_filament, this, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxALL, 0);
|
||||||
@@ -1015,7 +1016,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_filament_preset_item()
|
|||||||
|
|
||||||
comboBoxSizer->Add(create_radio_item(m_create_type.base_filament_preset, this, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
comboBoxSizer->Add(create_radio_item(m_create_type.base_filament_preset, this, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
|
|
||||||
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(comboBoxSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
horizontal_sizer->Add(0, 0, 0, wxLEFT, FromDIP(30));
|
horizontal_sizer->Add(0, 0, 0, wxLEFT, FromDIP(30));
|
||||||
|
|
||||||
@@ -1031,7 +1032,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_filament_preset_for_printer_item(
|
|||||||
m_filament_preset_panel->SetSize(PRINTER_LIST_SIZE);
|
m_filament_preset_panel->SetSize(PRINTER_LIST_SIZE);
|
||||||
m_filament_presets_sizer = new wxGridSizer(3, FromDIP(5), FromDIP(5));
|
m_filament_presets_sizer = new wxGridSizer(3, FromDIP(5), FromDIP(5));
|
||||||
m_filament_preset_panel->SetSizer(m_filament_presets_sizer);
|
m_filament_preset_panel->SetSizer(m_filament_presets_sizer);
|
||||||
vertical_sizer->Add(m_filament_preset_panel, 0, wxEXPAND | wxTOP | wxALIGN_CENTER_HORIZONTAL, FromDIP(5));
|
vertical_sizer->Add(m_filament_preset_panel, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
|
|
||||||
return vertical_sizer;
|
return vertical_sizer;
|
||||||
}
|
}
|
||||||
@@ -1647,16 +1648,16 @@ wxBoxSizer *CreatePrinterPresetDialog::create_step_switch_item()
|
|||||||
step_switch_panel->SetBackgroundColour(*wxWHITE);
|
step_switch_panel->SetBackgroundColour(*wxWHITE);
|
||||||
horizontal_sizer->Add(0, 0, 1, wxEXPAND,0);
|
horizontal_sizer->Add(0, 0, 1, wxEXPAND,0);
|
||||||
m_step_1 = new wxStaticBitmap(step_switch_panel, wxID_ANY, create_scaled_bitmap("step_1", nullptr, FromDIP(20)), wxDefaultPosition, wxDefaultSize);
|
m_step_1 = new wxStaticBitmap(step_switch_panel, wxID_ANY, create_scaled_bitmap("step_1", nullptr, FromDIP(20)), wxDefaultPosition, wxDefaultSize);
|
||||||
horizontal_sizer->Add(m_step_1, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
horizontal_sizer->Add(m_step_1, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(3));
|
||||||
wxStaticText *static_create_printer_text = new wxStaticText(step_switch_panel, wxID_ANY, m_create_type.create_printer, wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_create_printer_text = new wxStaticText(step_switch_panel, wxID_ANY, m_create_type.create_printer, wxDefaultPosition, wxDefaultSize);
|
||||||
horizontal_sizer->Add(static_create_printer_text, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
horizontal_sizer->Add(static_create_printer_text, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(3));
|
||||||
auto divider_line = new wxPanel(step_switch_panel, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(50), 1));
|
auto divider_line = new wxPanel(step_switch_panel, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(50), 1));
|
||||||
divider_line->SetBackgroundColour(PRINTER_LIST_COLOUR);
|
divider_line->SetBackgroundColour(PRINTER_LIST_COLOUR);
|
||||||
horizontal_sizer->Add(divider_line, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
horizontal_sizer->Add(divider_line, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
||||||
m_step_2 = new wxStaticBitmap(step_switch_panel, wxID_ANY, create_scaled_bitmap("step_2_ready", nullptr, FromDIP(20)), wxDefaultPosition, wxDefaultSize);
|
m_step_2 = new wxStaticBitmap(step_switch_panel, wxID_ANY, create_scaled_bitmap("step_2_ready", nullptr, FromDIP(20)), wxDefaultPosition, wxDefaultSize);
|
||||||
horizontal_sizer->Add(m_step_2, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
horizontal_sizer->Add(m_step_2, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(3));
|
||||||
wxStaticText *static_import_presets_text = new wxStaticText(step_switch_panel, wxID_ANY, _L("Import Preset"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_import_presets_text = new wxStaticText(step_switch_panel, wxID_ANY, _L("Import Preset"), wxDefaultPosition, wxDefaultSize);
|
||||||
horizontal_sizer->Add(static_import_presets_text, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(3));
|
horizontal_sizer->Add(static_import_presets_text, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(3));
|
||||||
horizontal_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
horizontal_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
step_switch_panel->SetSizer(horizontal_sizer);
|
step_switch_panel->SetSizer(horizontal_sizer);
|
||||||
@@ -1707,13 +1708,13 @@ wxBoxSizer *CreatePrinterPresetDialog::create_type_item(wxWindow *parent)
|
|||||||
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Create Type"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Create Type"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
radioBoxSizer->Add(create_radio_item(m_create_type.create_printer, parent, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxALL, 0);
|
radioBoxSizer->Add(create_radio_item(m_create_type.create_printer, parent, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxALL, 0);
|
||||||
radioBoxSizer->Add(create_radio_item(m_create_type.create_nozzle, parent, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
radioBoxSizer->Add(create_radio_item(m_create_type.create_nozzle, parent, wxEmptyString, m_create_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -1726,7 +1727,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_item(wxWindow *parent)
|
|||||||
wxStaticText *static_vendor_text = new wxStaticText(parent, wxID_ANY, _L("Printer"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_vendor_text = new wxStaticText(parent, wxID_ANY, _L("Printer"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
@@ -1854,7 +1855,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_item(wxWindow *parent)
|
|||||||
|
|
||||||
vertical_sizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
vertical_sizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
|
|
||||||
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
|
|
||||||
@@ -1868,7 +1869,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_nozzle_diameter_item(wxWindow *par
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Nozzle Diameter"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Nozzle Diameter"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *comboBoxSizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
@@ -1933,7 +1934,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_nozzle_diameter_item(wxWindow *par
|
|||||||
});
|
});
|
||||||
|
|
||||||
vertical_sizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
vertical_sizer->Add(checkbox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
horizontal_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(200));
|
horizontal_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(200));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
@@ -1947,12 +1948,12 @@ wxBoxSizer *CreatePrinterPresetDialog::create_bed_shape_item(wxWindow *parent)
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Bed Shape"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Bed Shape"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * bed_shape_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * bed_shape_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *static_bed_shape_text = new wxStaticText(parent, wxID_ANY, _L("Rectangle"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_bed_shape_text = new wxStaticText(parent, wxID_ANY, _L("Rectangle"), wxDefaultPosition, wxDefaultSize);
|
||||||
bed_shape_sizer->Add(static_bed_shape_text, 0, wxEXPAND | wxALL, 0);
|
bed_shape_sizer->Add(static_bed_shape_text, 0, wxEXPAND | wxALL, 0);
|
||||||
horizontal_sizer->Add(bed_shape_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(bed_shape_sizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -1965,26 +1966,26 @@ wxBoxSizer *CreatePrinterPresetDialog::create_bed_size_item(wxWindow *parent)
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Printable Space"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Printable Space"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * length_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * length_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
// ORCA use icon on input box to match style with other Point fields
|
// ORCA use icon on input box to match style with other Point fields
|
||||||
horizontal_sizer->Add(length_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(length_sizer, 0, wxEXPAND | wxLEFT | wxTOP, FromDIP(10));
|
||||||
wxBoxSizer *length_input_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *length_input_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_bed_size_x_input = new TextInput(parent, "200", _L("mm"), "inputbox_x", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
m_bed_size_x_input = new TextInput(parent, "200", _L("mm"), "inputbox_x", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
||||||
wxTextValidator validator(wxFILTER_DIGITS);
|
wxTextValidator validator(wxFILTER_DIGITS);
|
||||||
m_bed_size_x_input->GetTextCtrl()->SetValidator(validator);
|
m_bed_size_x_input->GetTextCtrl()->SetValidator(validator);
|
||||||
length_input_sizer->Add(m_bed_size_x_input, 0, wxEXPAND | wxLEFT, FromDIP(5));
|
length_input_sizer->Add(m_bed_size_x_input, 0, wxEXPAND | wxLEFT, FromDIP(5));
|
||||||
horizontal_sizer->Add(length_input_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(length_input_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
wxBoxSizer * width_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * width_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
// ORCA use icon on input box to match style with other Point fields
|
// ORCA use icon on input box to match style with other Point fields
|
||||||
horizontal_sizer->Add(width_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(width_sizer, 0, wxEXPAND | wxLEFT | wxTOP, FromDIP(10));
|
||||||
wxBoxSizer *width_input_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *width_input_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_bed_size_y_input = new TextInput(parent, "200", _L("mm"), "inputbox_y", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
m_bed_size_y_input = new TextInput(parent, "200", _L("mm"), "inputbox_y", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
||||||
m_bed_size_y_input->GetTextCtrl()->SetValidator(validator);
|
m_bed_size_y_input->GetTextCtrl()->SetValidator(validator);
|
||||||
width_input_sizer->Add(m_bed_size_y_input, 0, wxEXPAND | wxALL, 0);
|
width_input_sizer->Add(m_bed_size_y_input, 0, wxEXPAND | wxALL, 0);
|
||||||
horizontal_sizer->Add(width_input_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(width_input_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
|
|
||||||
@@ -1998,26 +1999,26 @@ wxBoxSizer *CreatePrinterPresetDialog::create_origin_item(wxWindow *parent)
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Origin"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Origin"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * length_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * length_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
// ORCA use icon on input box to match style with other Point fields
|
// ORCA use icon on input box to match style with other Point fields
|
||||||
horizontal_sizer->Add(length_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(length_sizer, 0, wxEXPAND | wxLEFT | wxTOP, FromDIP(10));
|
||||||
wxBoxSizer *length_input_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *length_input_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_bed_origin_x_input = new TextInput(parent, "0", _L("mm"), "inputbox_x", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
m_bed_origin_x_input = new TextInput(parent, "0", _L("mm"), "inputbox_x", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
||||||
wxTextValidator validator(wxFILTER_DIGITS);
|
wxTextValidator validator(wxFILTER_DIGITS);
|
||||||
m_bed_origin_x_input->GetTextCtrl()->SetValidator(validator);
|
m_bed_origin_x_input->GetTextCtrl()->SetValidator(validator);
|
||||||
length_input_sizer->Add(m_bed_origin_x_input, 0, wxEXPAND | wxLEFT, FromDIP(5)); // Align with other
|
length_input_sizer->Add(m_bed_origin_x_input, 0, wxEXPAND | wxLEFT, FromDIP(5)); // Align with other
|
||||||
horizontal_sizer->Add(length_input_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(length_input_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
wxBoxSizer * width_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * width_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
// ORCA use icon on input box to match style with other Point fields
|
// ORCA use icon on input box to match style with other Point fields
|
||||||
horizontal_sizer->Add(width_sizer, 0, wxEXPAND | wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(width_sizer, 0, wxEXPAND | wxLEFT | wxTOP, FromDIP(10));
|
||||||
wxBoxSizer *width_input_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *width_input_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_bed_origin_y_input = new TextInput(parent, "0", _L("mm"), "inputbox_y", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
m_bed_origin_y_input = new TextInput(parent, "0", _L("mm"), "inputbox_y", wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER);
|
||||||
m_bed_origin_y_input->GetTextCtrl()->SetValidator(validator);
|
m_bed_origin_y_input->GetTextCtrl()->SetValidator(validator);
|
||||||
width_input_sizer->Add(m_bed_origin_y_input, 0, wxEXPAND | wxALL, 0);
|
width_input_sizer->Add(m_bed_origin_y_input, 0, wxEXPAND | wxALL, 0);
|
||||||
horizontal_sizer->Add(width_input_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(width_input_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -2030,7 +2031,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_stl_item(wxWindow *parent)
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Hot Bed STL"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Hot Bed STL"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *hot_bed_stl_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *hot_bed_stl_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
@@ -2040,11 +2041,11 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_stl_item(wxWindow *parent)
|
|||||||
|
|
||||||
hot_bed_stl_sizer->Add(m_button_bed_stl, 0, wxEXPAND | wxALL, 0);
|
hot_bed_stl_sizer->Add(m_button_bed_stl, 0, wxEXPAND | wxALL, 0);
|
||||||
|
|
||||||
horizontal_sizer->Add(hot_bed_stl_sizer, 0, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(hot_bed_stl_sizer, 0, wxEXPAND | wxLEFT, FromDIP(10));
|
||||||
|
|
||||||
m_upload_stl_tip_text = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
|
m_upload_stl_tip_text = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
|
||||||
m_upload_stl_tip_text->SetLabelText(_L("Empty"));
|
m_upload_stl_tip_text->SetLabelText(_L("Empty"));
|
||||||
horizontal_sizer->Add(m_upload_stl_tip_text, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(m_upload_stl_tip_text, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2056,7 +2057,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_svg_item(wxWindow *parent)
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Hot Bed SVG"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Hot Bed SVG"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *hot_bed_stl_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *hot_bed_stl_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
@@ -2066,11 +2067,11 @@ wxBoxSizer *CreatePrinterPresetDialog::create_hot_bed_svg_item(wxWindow *parent)
|
|||||||
|
|
||||||
hot_bed_stl_sizer->Add(m_button_bed_svg, 0, wxEXPAND | wxALL, 0);
|
hot_bed_stl_sizer->Add(m_button_bed_svg, 0, wxEXPAND | wxALL, 0);
|
||||||
|
|
||||||
horizontal_sizer->Add(hot_bed_stl_sizer, 0, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(hot_bed_stl_sizer, 0, wxEXPAND | wxLEFT, FromDIP(10));
|
||||||
|
|
||||||
m_upload_svg_tip_text = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
|
m_upload_svg_tip_text = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
|
||||||
m_upload_svg_tip_text->SetLabelText(_L("Empty"));
|
m_upload_svg_tip_text->SetLabelText(_L("Empty"));
|
||||||
horizontal_sizer->Add(m_upload_svg_tip_text, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(m_upload_svg_tip_text, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2082,14 +2083,14 @@ wxBoxSizer *CreatePrinterPresetDialog::create_max_print_height_item(wxWindow *pa
|
|||||||
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Max Print Height"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(parent, wxID_ANY, _L("Max Print Height"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *hight_input_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *hight_input_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_print_height_input = new TextInput(parent, "200", _L("mm"), wxEmptyString, wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER); // Use same alignment with all other input boxes
|
m_print_height_input = new TextInput(parent, "200", _L("mm"), wxEmptyString, wxDefaultPosition, PRINTER_SPACE_SIZE, wxTE_PROCESS_ENTER); // Use same alignment with all other input boxes
|
||||||
wxTextValidator validator(wxFILTER_DIGITS);
|
wxTextValidator validator(wxFILTER_DIGITS);
|
||||||
m_print_height_input->GetTextCtrl()->SetValidator(validator);
|
m_print_height_input->GetTextCtrl()->SetValidator(validator);
|
||||||
hight_input_sizer->Add(m_print_height_input, 0, wxEXPAND | wxLEFT, FromDIP(5));
|
hight_input_sizer->Add(m_print_height_input, 0, wxEXPAND | wxLEFT, FromDIP(5));
|
||||||
horizontal_sizer->Add(hight_input_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
horizontal_sizer->Add(hight_input_sizer, 0, wxEXPAND | wxALL, FromDIP(5));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -2595,7 +2596,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_preset_item(wxWindow *pare
|
|||||||
wxStaticText *static_vendor_text = new wxStaticText(parent, wxID_ANY, _L("Printer Preset"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_vendor_text = new wxStaticText(parent, wxID_ANY, _L("Printer Preset"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * vertical_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *combobox_title = new wxStaticText(parent, wxID_ANY, m_create_type.base_curr_printer, wxDefaultPosition, wxDefaultSize, 0);
|
wxStaticText *combobox_title = new wxStaticText(parent, wxID_ANY, m_create_type.base_curr_printer, wxDefaultPosition, wxDefaultSize, 0);
|
||||||
@@ -2628,7 +2629,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_printer_preset_item(wxWindow *pare
|
|||||||
comboBox_sizer->Add(m_printer_model, 0, wxEXPAND | wxLEFT, FromDIP(10));
|
comboBox_sizer->Add(m_printer_model, 0, wxEXPAND | wxLEFT, FromDIP(10));
|
||||||
vertical_sizer->Add(comboBox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
vertical_sizer->Add(comboBox_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
|
|
||||||
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(vertical_sizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
|
|
||||||
@@ -2642,13 +2643,13 @@ wxBoxSizer *CreatePrinterPresetDialog::create_presets_item(wxWindow *parent)
|
|||||||
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Presets"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Presets"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
radioBoxSizer->Add(create_radio_item(m_create_type.base_template, parent, wxEmptyString, m_create_presets_btns), 0, wxEXPAND | wxALL, 0);
|
radioBoxSizer->Add(create_radio_item(m_create_type.base_template, parent, wxEmptyString, m_create_presets_btns), 0, wxEXPAND | wxALL, 0);
|
||||||
radioBoxSizer->Add(create_radio_item(m_create_type.base_curr_printer, parent, wxEmptyString, m_create_presets_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
radioBoxSizer->Add(create_radio_item(m_create_type.base_curr_printer, parent, wxEmptyString, m_create_presets_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -2734,7 +2735,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_presets_template_item(wxWindow *pa
|
|||||||
m_preset_template_panel->SetSizer(m_filament_sizer);
|
m_preset_template_panel->SetSizer(m_filament_sizer);
|
||||||
m_scrooled_preset_sizer->Add(m_preset_template_panel, 0, wxEXPAND | wxALL, 0);
|
m_scrooled_preset_sizer->Add(m_preset_template_panel, 0, wxEXPAND | wxALL, 0);
|
||||||
m_scrolled_preset_window->SetSizerAndFit(m_scrooled_preset_sizer);
|
m_scrolled_preset_window->SetSizerAndFit(m_scrooled_preset_sizer);
|
||||||
vertical_sizer->Add(m_scrolled_preset_window, 0, wxEXPAND | wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
vertical_sizer->Add(m_scrolled_preset_window, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(10));
|
||||||
|
|
||||||
return vertical_sizer;
|
return vertical_sizer;
|
||||||
}
|
}
|
||||||
@@ -3721,7 +3722,7 @@ wxBoxSizer *ExportConfigsDialog::create_export_config_item(wxWindow *parent)
|
|||||||
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Presets"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_serial_text = new wxStaticText(parent, wxID_ANY, _L("Presets"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *radioBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
@@ -3741,7 +3742,7 @@ wxBoxSizer *ExportConfigsDialog::create_export_config_item(wxWindow *parent)
|
|||||||
radioBoxSizer->Add(create_radio_item(m_exprot_type.printer_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
radioBoxSizer->Add(create_radio_item(m_exprot_type.printer_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
radioBoxSizer->Add(create_radio_item(m_exprot_type.filament_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
radioBoxSizer->Add(create_radio_item(m_exprot_type.filament_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
radioBoxSizer->Add(create_radio_item(m_exprot_type.process_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
radioBoxSizer->Add(create_radio_item(m_exprot_type.process_preset, parent, wxEmptyString, m_export_type_btns), 0, wxEXPAND | wxTOP, FromDIP(10));
|
||||||
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(radioBoxSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return horizontal_sizer;
|
return horizontal_sizer;
|
||||||
}
|
}
|
||||||
@@ -4284,7 +4285,7 @@ wxBoxSizer *ExportConfigsDialog::create_select_printer(wxWindow *parent)
|
|||||||
m_serial_text = new wxStaticText(parent, wxID_ANY, _L("Please select a type you want to export"), wxDefaultPosition, wxDefaultSize);
|
m_serial_text = new wxStaticText(parent, wxID_ANY, _L("Please select a type you want to export"), wxDefaultPosition, wxDefaultSize);
|
||||||
optionSizer->Add(m_serial_text, 0, wxEXPAND | wxALL, 0);
|
optionSizer->Add(m_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
optionSizer->SetMinSize(OPTION_SIZE);
|
optionSizer->SetMinSize(OPTION_SIZE);
|
||||||
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
m_scrolled_preset_window = new wxScrolledWindow(parent);
|
m_scrolled_preset_window = new wxScrolledWindow(parent);
|
||||||
m_scrolled_preset_window->SetScrollRate(5, 5);
|
m_scrolled_preset_window->SetScrollRate(5, 5);
|
||||||
m_scrolled_preset_window->SetBackgroundColour(*wxWHITE);
|
m_scrolled_preset_window->SetBackgroundColour(*wxWHITE);
|
||||||
@@ -4453,7 +4454,7 @@ EditFilamentPresetDialog::EditFilamentPresetDialog(wxWindow *parent, Filamentinf
|
|||||||
m_main_sizer->Add(create_add_filament_btn(), 0, wxEXPAND | wxALL, 0);
|
m_main_sizer->Add(create_add_filament_btn(), 0, wxEXPAND | wxALL, 0);
|
||||||
m_main_sizer->Add(create_preset_tree_sizer(), 0, wxEXPAND | wxALL, 0);
|
m_main_sizer->Add(create_preset_tree_sizer(), 0, wxEXPAND | wxALL, 0);
|
||||||
m_note_text = new wxStaticText(this, wxID_ANY, _L("Note: If the only preset under this filament is deleted, the filament will be deleted after exiting the dialog."));
|
m_note_text = new wxStaticText(this, wxID_ANY, _L("Note: If the only preset under this filament is deleted, the filament will be deleted after exiting the dialog."));
|
||||||
m_main_sizer->Add(m_note_text, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
m_main_sizer->Add(m_note_text, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, FromDIP(10));
|
||||||
m_note_text->Hide();
|
m_note_text->Hide();
|
||||||
m_main_sizer->Add(create_dialog_buttons(), 0, wxEXPAND);
|
m_main_sizer->Add(create_dialog_buttons(), 0, wxEXPAND);
|
||||||
|
|
||||||
@@ -4655,31 +4656,31 @@ wxBoxSizer *EditFilamentPresetDialog::create_filament_basic_info()
|
|||||||
wxStaticText *static_vendor_text = new wxStaticText(this, wxID_ANY, _L("Vendor"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_vendor_text = new wxStaticText(this, wxID_ANY, _L("Vendor"), wxDefaultPosition, wxDefaultSize);
|
||||||
vendor_key_sizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
vendor_key_sizer->Add(static_vendor_text, 0, wxEXPAND | wxALL, 0);
|
||||||
vendor_key_sizer->SetMinSize(OPTION_SIZE);
|
vendor_key_sizer->SetMinSize(OPTION_SIZE);
|
||||||
vendor_sizer->Add(vendor_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
vendor_sizer->Add(vendor_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer *vendor_value_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer *vendor_value_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *vendor_text = new wxStaticText(this, wxID_ANY, from_u8(m_vendor_name), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *vendor_text = new wxStaticText(this, wxID_ANY, from_u8(m_vendor_name), wxDefaultPosition, wxDefaultSize);
|
||||||
vendor_value_sizer->Add(vendor_text, 0, wxEXPAND | wxALL, 0);
|
vendor_value_sizer->Add(vendor_text, 0, wxEXPAND | wxALL, 0);
|
||||||
vendor_sizer->Add(vendor_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
vendor_sizer->Add(vendor_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
//type
|
//type
|
||||||
wxBoxSizer * type_key_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * type_key_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *static_type_text = new wxStaticText(this, wxID_ANY, _L("Type"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_type_text = new wxStaticText(this, wxID_ANY, _L("Type"), wxDefaultPosition, wxDefaultSize);
|
||||||
type_key_sizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
type_key_sizer->Add(static_type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
type_key_sizer->SetMinSize(OPTION_SIZE);
|
type_key_sizer->SetMinSize(OPTION_SIZE);
|
||||||
type_sizer->Add(type_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
type_sizer->Add(type_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * type_value_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * type_value_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *type_text = new wxStaticText(this, wxID_ANY, from_u8(m_filament_type), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *type_text = new wxStaticText(this, wxID_ANY, from_u8(m_filament_type), wxDefaultPosition, wxDefaultSize);
|
||||||
type_value_sizer->Add(type_text, 0, wxEXPAND | wxALL, 0);
|
type_value_sizer->Add(type_text, 0, wxEXPAND | wxALL, 0);
|
||||||
type_sizer->Add(type_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
type_sizer->Add(type_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
//serial
|
//serial
|
||||||
wxBoxSizer * serial_key_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * serial_key_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxStaticText *static_serial_text = new wxStaticText(this, wxID_ANY, _L("Serial"), wxDefaultPosition, wxDefaultSize);
|
wxStaticText *static_serial_text = new wxStaticText(this, wxID_ANY, _L("Serial"), wxDefaultPosition, wxDefaultSize);
|
||||||
serial_key_sizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
serial_key_sizer->Add(static_serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
serial_key_sizer->SetMinSize(OPTION_SIZE);
|
serial_key_sizer->SetMinSize(OPTION_SIZE);
|
||||||
serial_sizer->Add(serial_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
serial_sizer->Add(serial_key_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
wxBoxSizer * serial_value_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer * serial_value_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
wxString full_filamnet_serial = from_u8(m_filament_serial);
|
wxString full_filamnet_serial = from_u8(m_filament_serial);
|
||||||
@@ -4691,7 +4692,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_filament_basic_info()
|
|||||||
wxToolTip * toolTip = new wxToolTip(full_filamnet_serial);
|
wxToolTip * toolTip = new wxToolTip(full_filamnet_serial);
|
||||||
serial_text->SetToolTip(toolTip);
|
serial_text->SetToolTip(toolTip);
|
||||||
serial_value_sizer->Add(serial_text, 0, wxEXPAND | wxALL, 0);
|
serial_value_sizer->Add(serial_text, 0, wxEXPAND | wxALL, 0);
|
||||||
serial_sizer->Add(serial_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
serial_sizer->Add(serial_value_sizer, 0, wxEXPAND | wxLEFT | wxBOTTOM, FromDIP(10));
|
||||||
|
|
||||||
basic_info_sizer->Add(vendor_sizer, 0, wxEXPAND | wxALL, 0);
|
basic_info_sizer->Add(vendor_sizer, 0, wxEXPAND | wxALL, 0);
|
||||||
basic_info_sizer->Add(type_sizer, 0, wxEXPAND | wxALL, 0);
|
basic_info_sizer->Add(type_sizer, 0, wxEXPAND | wxALL, 0);
|
||||||
@@ -4738,7 +4739,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_preset_tree_sizer()
|
|||||||
wxBoxSizer* m_preset_tree_window_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* m_preset_tree_window_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_preset_tree_window_sizer->Add(m_preset_tree_panel, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(10));
|
m_preset_tree_window_sizer->Add(m_preset_tree_panel, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(10));
|
||||||
m_preset_tree_window->SetSizerAndFit(m_preset_tree_window_sizer);
|
m_preset_tree_window->SetSizerAndFit(m_preset_tree_window_sizer);
|
||||||
filament_preset_tree_sizer->Add(m_preset_tree_window, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
filament_preset_tree_sizer->Add(m_preset_tree_window, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
|
||||||
return filament_preset_tree_sizer;
|
return filament_preset_tree_sizer;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,15 +17,13 @@ void open_folder(const std::string& path)
|
|||||||
// Code taken from NotificationManager.cpp
|
// Code taken from NotificationManager.cpp
|
||||||
|
|
||||||
// Execute command to open a file explorer, platform dependent.
|
// Execute command to open a file explorer, platform dependent.
|
||||||
// FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade.
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const wxString widepath = from_u8(path);
|
const wxString widepath = from_u8(path);
|
||||||
const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr };
|
const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr };
|
||||||
::wxExecute(const_cast<wchar_t**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
const char* argv[] = { "open", path.data(), nullptr };
|
const char* argv[] = { "open", path.data(), nullptr };
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#else
|
#else
|
||||||
const char* argv[] = { "xdg-open", path.data(), nullptr };
|
const char* argv[] = { "xdg-open", path.data(), nullptr };
|
||||||
|
|
||||||
@@ -53,11 +51,11 @@ void open_folder(const std::string& path)
|
|||||||
exec_env.cwd = std::move(owd);
|
exec_env.cwd = std::move(owd);
|
||||||
}
|
}
|
||||||
|
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, &exec_env);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, &exec_env);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include <wx/dataview.h>
|
#include <wx/dataview.h>
|
||||||
|
|
||||||
#if wxUSE_MARKUP && wxCHECK_VERSION(3, 1, 1)
|
#if wxUSE_MARKUP
|
||||||
#define SUPPORTS_MARKUP
|
#define SUPPORTS_MARKUP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -2308,7 +2308,7 @@ void SliderCtrl::BUILD()
|
|||||||
m_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
m_textctrl->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||||
m_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
m_textctrl->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
||||||
|
|
||||||
temp->Add(m_slider, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, 0);
|
temp->Add(m_slider, 1, wxEXPAND, 0);
|
||||||
temp->Add(m_textctrl, 0, wxALIGN_CENTER_VERTICAL, 0);
|
temp->Add(m_textctrl, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
|
||||||
m_slider->Bind(wxEVT_SLIDER, ([this](wxCommandEvent e) {
|
m_slider->Bind(wxEVT_SLIDER, ([this](wxCommandEvent e) {
|
||||||
|
|||||||
@@ -169,9 +169,9 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent,
|
|||||||
else
|
else
|
||||||
m_default_map_panel = nullptr;
|
m_default_map_panel = nullptr;
|
||||||
|
|
||||||
panel_sizer->Add(m_manual_map_panel, 0, wxALIGN_CENTER | wxEXPAND);
|
panel_sizer->Add(m_manual_map_panel, 0, wxEXPAND);
|
||||||
panel_sizer->Add(m_auto_map_panel, 0, wxALIGN_CENTER | wxEXPAND);
|
panel_sizer->Add(m_auto_map_panel, 0, wxEXPAND);
|
||||||
if (show_default) panel_sizer->Add(m_default_map_panel, 0, wxALIGN_CENTER | wxEXPAND);
|
if (show_default) panel_sizer->Add(m_default_map_panel, 0, wxEXPAND);
|
||||||
main_sizer->Add(panel_sizer, 0, wxEXPAND);
|
main_sizer->Add(panel_sizer, 0, wxEXPAND);
|
||||||
|
|
||||||
wxPanel* bottom_panel = new wxPanel(this);
|
wxPanel* bottom_panel = new wxPanel(this);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "FilamentMapPanel.hpp"
|
#include "FilamentMapPanel.hpp"
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
#include <wx/dcbuffer.h>
|
#include <wx/dcbuffer.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
#include "wx/graphics.h"
|
#include "wx/graphics.h"
|
||||||
|
|
||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
@@ -54,14 +55,14 @@ FilamentMapManualPanel::FilamentMapManualPanel(wxWindow *p
|
|||||||
m_right_panel->SetMinSize({ FromDIP(260),-1 });
|
m_right_panel->SetMinSize({ FromDIP(260),-1 });
|
||||||
|
|
||||||
drag_sizer->AddStretchSpacer();
|
drag_sizer->AddStretchSpacer();
|
||||||
drag_sizer->Add(m_left_panel, 1, wxALIGN_CENTER | wxEXPAND);
|
drag_sizer->Add(m_left_panel, 1, wxEXPAND);
|
||||||
drag_sizer->AddSpacer(FromDIP(7));
|
drag_sizer->AddSpacer(FromDIP(7));
|
||||||
drag_sizer->Add(m_switch_btn, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(1));
|
drag_sizer->Add(m_switch_btn, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(1));
|
||||||
drag_sizer->AddSpacer(FromDIP(7));
|
drag_sizer->AddSpacer(FromDIP(7));
|
||||||
drag_sizer->Add(m_right_panel, 1, wxALIGN_CENTER | wxEXPAND);
|
drag_sizer->Add(m_right_panel, 1, wxEXPAND);
|
||||||
drag_sizer->AddStretchSpacer();
|
drag_sizer->AddStretchSpacer();
|
||||||
|
|
||||||
top_sizer->Add(drag_sizer, 0, wxALIGN_CENTER | wxEXPAND);
|
top_sizer->Add(drag_sizer, 0, wxEXPAND);
|
||||||
|
|
||||||
m_tips = new Label(this, _L("Tip: You can drag the filaments to reassign them to different nozzles."));
|
m_tips = new Label(this, _L("Tip: You can drag the filaments to reassign them to different nozzles."));
|
||||||
m_tips->SetFont(Label::Body_14);
|
m_tips->SetFont(Label::Body_14);
|
||||||
@@ -133,14 +134,14 @@ GUI::FilamentMapBtnPanel::FilamentMapBtnPanel(wxWindow *parent, const wxString &
|
|||||||
|
|
||||||
auto label_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto label_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
label_sizer->AddStretchSpacer();
|
label_sizer->AddStretchSpacer();
|
||||||
label_sizer->Add(m_btn, 0, wxALIGN_CENTER | wxEXPAND | wxLEFT, FromDIP(1));
|
label_sizer->Add(m_btn, 0, wxEXPAND | wxLEFT, FromDIP(1));
|
||||||
label_sizer->Add(m_label, 0, wxALIGN_CENTER | wxEXPAND| wxALL, FromDIP(3));
|
label_sizer->Add(m_label, 0, wxEXPAND| wxALL, FromDIP(3));
|
||||||
label_sizer->AddStretchSpacer();
|
label_sizer->AddStretchSpacer();
|
||||||
|
|
||||||
m_disable_tip = new Label(this, _L("(Sync with printer)"));
|
m_disable_tip = new Label(this, _L("(Sync with printer)"));
|
||||||
|
|
||||||
sizer->AddSpacer(FromDIP(32));
|
sizer->AddSpacer(FromDIP(32));
|
||||||
sizer->Add(label_sizer, 0, wxALIGN_CENTER | wxEXPAND);
|
sizer->Add(label_sizer, 0, wxEXPAND);
|
||||||
sizer->Add(m_disable_tip, 0, wxALIGN_CENTER);
|
sizer->Add(m_disable_tip, 0, wxALIGN_CENTER);
|
||||||
sizer->AddSpacer(FromDIP(3));
|
sizer->AddSpacer(FromDIP(3));
|
||||||
|
|
||||||
@@ -154,7 +155,7 @@ GUI::FilamentMapBtnPanel::FilamentMapBtnPanel(wxWindow *parent, const wxString &
|
|||||||
detail_sizer->Add(m_detail, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, horizontal_margin);
|
detail_sizer->Add(m_detail, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, horizontal_margin);
|
||||||
detail_sizer->AddStretchSpacer();
|
detail_sizer->AddStretchSpacer();
|
||||||
|
|
||||||
sizer->Add(detail_sizer, 0, wxALIGN_CENTER | wxEXPAND);
|
sizer->Add(detail_sizer, 0, wxEXPAND);
|
||||||
sizer->AddSpacer(FromDIP(10));
|
sizer->AddSpacer(FromDIP(10));
|
||||||
|
|
||||||
SetSizer(sizer);
|
SetSizer(sizer);
|
||||||
@@ -364,7 +365,7 @@ FilamentMapDefaultPanel::FilamentMapDefaultPanel(wxWindow *parent) : wxPanel(par
|
|||||||
m_label->Wrap(FromDIP(500));
|
m_label->Wrap(FromDIP(500));
|
||||||
|
|
||||||
sizer->AddStretchSpacer();
|
sizer->AddStretchSpacer();
|
||||||
sizer->Add(m_label, 1, wxEXPAND | wxALIGN_CENTER);
|
sizer->Add(m_label, 1, wxEXPAND);
|
||||||
sizer->AddStretchSpacer();
|
sizer->AddStretchSpacer();
|
||||||
|
|
||||||
SetSizerAndFit(sizer);
|
SetSizerAndFit(sizer);
|
||||||
|
|||||||
@@ -39,6 +39,7 @@
|
|||||||
#include <boost/nowide/fstream.hpp>
|
#include <boost/nowide/fstream.hpp>
|
||||||
#include <wx/progdlg.h>
|
#include <wx/progdlg.h>
|
||||||
#include <wx/numformatter.h>
|
#include <wx/numformatter.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|||||||
@@ -53,6 +53,7 @@
|
|||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
#include <wx/tooltip.h>
|
#include <wx/tooltip.h>
|
||||||
#include <wx/debug.h>
|
#include <wx/debug.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
#include <wx/fontutil.h>
|
#include <wx/fontutil.h>
|
||||||
// Print now includes tbb, and tbb includes Windows. This breaks compilation of wxWidgets if included before wx.
|
// Print now includes tbb, and tbb includes Windows. This breaks compilation of wxWidgets if included before wx.
|
||||||
#include "libslic3r/Print.hpp"
|
#include "libslic3r/Print.hpp"
|
||||||
@@ -78,6 +79,13 @@
|
|||||||
|
|
||||||
#include <imguizmo/ImGuizmo.h>
|
#include <imguizmo/ImGuizmo.h>
|
||||||
|
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
#if wxUSE_POPUPWIN
|
||||||
|
#include <wx/popupwin.h>
|
||||||
|
extern wxPopupWindow* wxCurrentPopupWindow;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static constexpr const float TRACKBALLSIZE = 0.8f;
|
static constexpr const float TRACKBALLSIZE = 0.8f;
|
||||||
|
|
||||||
static Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR = { 0.906f, 0.906f, 0.906f, 1.0f };
|
static Slic3r::ColorRGBA DEFAULT_BG_LIGHT_COLOR = { 0.906f, 0.906f, 0.906f, 1.0f };
|
||||||
@@ -4257,14 +4265,21 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
if (evt.Entering()) {
|
if (evt.Entering()) {
|
||||||
// Set focus in order to remove it from sidebar fields and ensure hotkeys work
|
// Set focus in order to remove it from sidebar fields and ensure hotkeys work
|
||||||
if (m_canvas != nullptr) {
|
if (m_canvas != nullptr) {
|
||||||
// Only set focus if the top level window of this canvas is active.
|
#if defined(__WXMSW__) && wxUSE_POPUPWIN
|
||||||
auto p = dynamic_cast<wxWindow*>(evt.GetEventObject());
|
// Don't steal focus when a popup window is active (e.g., search dropdown).
|
||||||
while (p->GetParent())
|
// Stealing focus triggers MSWDismissUnfocusedPopup, closing the popup unexpectedly.
|
||||||
p = p->GetParent();
|
if (!wxCurrentPopupWindow)
|
||||||
auto *top_level_wnd = dynamic_cast<wxTopLevelWindow*>(p);
|
#endif
|
||||||
//Orca: Set focus so hotkeys like 'tab' work when a notification is shown.
|
{
|
||||||
if (top_level_wnd != nullptr && top_level_wnd->IsActive())
|
// Only set focus if the top level window of this canvas is active.
|
||||||
m_canvas->SetFocus();
|
auto p = dynamic_cast<wxWindow*>(evt.GetEventObject());
|
||||||
|
while (p->GetParent())
|
||||||
|
p = p->GetParent();
|
||||||
|
auto *top_level_wnd = dynamic_cast<wxTopLevelWindow*>(p);
|
||||||
|
//Orca: Set focus so hotkeys like 'tab' work when a notification is shown.
|
||||||
|
if (top_level_wnd != nullptr && top_level_wnd->IsActive())
|
||||||
|
m_canvas->SetFocus();
|
||||||
|
}
|
||||||
m_mouse.position = pos.cast<double>();
|
m_mouse.position = pos.cast<double>();
|
||||||
m_tooltip_enabled = false;
|
m_tooltip_enabled = false;
|
||||||
// 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while
|
// 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while
|
||||||
@@ -4724,11 +4739,19 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
|
|||||||
|
|
||||||
void GLCanvas3D::on_paint(wxPaintEvent& evt)
|
void GLCanvas3D::on_paint(wxPaintEvent& evt)
|
||||||
{
|
{
|
||||||
if (m_initialized)
|
if (m_initialized) {
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
// Idle events are not dispatched during the Windows resize modal loop,
|
||||||
|
// so render immediately to avoid blank frames.
|
||||||
|
_refresh_if_shown_on_screen();
|
||||||
|
m_dirty = false;
|
||||||
|
#else
|
||||||
m_dirty = true;
|
m_dirty = true;
|
||||||
else
|
#endif
|
||||||
|
} else {
|
||||||
// Call render directly, so it gets initialized immediately, not from On Idle handler.
|
// Call render directly, so it gets initialized immediately, not from On Idle handler.
|
||||||
this->render();
|
this->render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLCanvas3D::force_set_focus() {
|
void GLCanvas3D::force_set_focus() {
|
||||||
|
|||||||
+8
-11
@@ -461,7 +461,7 @@ unsigned int combochecklist_get_flags(wxComboCtrl* comboCtrl)
|
|||||||
{
|
{
|
||||||
unsigned int flags = 0;
|
unsigned int flags = 0;
|
||||||
|
|
||||||
wxCheckListBoxComboPopup* popup = wxDynamicCast(comboCtrl->GetPopupControl(), wxCheckListBoxComboPopup);
|
wxCheckListBoxComboPopup* popup = dynamic_cast<wxCheckListBoxComboPopup*>(comboCtrl->GetPopupControl());
|
||||||
if (popup != nullptr) {
|
if (popup != nullptr) {
|
||||||
for (unsigned int i = 0; i < popup->GetCount(); ++i) {
|
for (unsigned int i = 0; i < popup->GetCount(); ++i) {
|
||||||
if (popup->IsChecked(i))
|
if (popup->IsChecked(i))
|
||||||
@@ -474,7 +474,7 @@ unsigned int combochecklist_get_flags(wxComboCtrl* comboCtrl)
|
|||||||
|
|
||||||
void combochecklist_set_flags(wxComboCtrl* comboCtrl, unsigned int flags)
|
void combochecklist_set_flags(wxComboCtrl* comboCtrl, unsigned int flags)
|
||||||
{
|
{
|
||||||
wxCheckListBoxComboPopup* popup = wxDynamicCast(comboCtrl->GetPopupControl(), wxCheckListBoxComboPopup);
|
wxCheckListBoxComboPopup* popup = dynamic_cast<wxCheckListBoxComboPopup*>(comboCtrl->GetPopupControl());
|
||||||
if (popup != nullptr) {
|
if (popup != nullptr) {
|
||||||
for (unsigned int i = 0; i < popup->GetCount(); ++i) {
|
for (unsigned int i = 0; i < popup->GetCount(); ++i) {
|
||||||
popup->Check(i, (flags & (1 << i)) != 0);
|
popup->Check(i, (flags & (1 << i)) != 0);
|
||||||
@@ -530,16 +530,14 @@ void login()
|
|||||||
void desktop_open_datadir_folder()
|
void desktop_open_datadir_folder()
|
||||||
{
|
{
|
||||||
// Execute command to open a file explorer, platform dependent.
|
// Execute command to open a file explorer, platform dependent.
|
||||||
// FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade.
|
|
||||||
|
|
||||||
const auto path = data_dir();
|
const auto path = data_dir();
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const wxString widepath = from_u8(path);
|
const wxString widepath = from_u8(path);
|
||||||
const wchar_t *argv[] = { L"explorer", widepath.GetData(), nullptr };
|
const wchar_t *argv[] = { L"explorer", widepath.GetData(), nullptr };
|
||||||
::wxExecute(const_cast<wchar_t**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
const char *argv[] = { "open", path.data(), nullptr };
|
const char *argv[] = { "open", path.data(), nullptr };
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#else
|
#else
|
||||||
const char *argv[] = { "xdg-open", path.data(), nullptr };
|
const char *argv[] = { "xdg-open", path.data(), nullptr };
|
||||||
|
|
||||||
@@ -567,10 +565,10 @@ void desktop_open_datadir_folder()
|
|||||||
exec_env.cwd = std::move(owd);
|
exec_env.cwd = std::move(owd);
|
||||||
}
|
}
|
||||||
|
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, &exec_env);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, &exec_env);
|
||||||
} else {
|
} else {
|
||||||
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -578,7 +576,6 @@ void desktop_open_datadir_folder()
|
|||||||
void desktop_open_any_folder( const std::string& path )
|
void desktop_open_any_folder( const std::string& path )
|
||||||
{
|
{
|
||||||
// Execute command to open a file explorer, platform dependent.
|
// Execute command to open a file explorer, platform dependent.
|
||||||
// FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade.
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const wxString widepath = from_u8(path);
|
const wxString widepath = from_u8(path);
|
||||||
@@ -619,10 +616,10 @@ void desktop_open_any_folder( const std::string& path )
|
|||||||
exec_env.cwd = std::move(owd);
|
exec_env.cwd = std::move(owd);
|
||||||
}
|
}
|
||||||
|
|
||||||
::wxExecute(const_cast<char **>(argv), wxEXEC_ASYNC, nullptr, &exec_env);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, &exec_env);
|
||||||
} else {
|
} else {
|
||||||
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
||||||
::wxExecute(const_cast<char **>(argv), wxEXEC_ASYNC, nullptr, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-26
@@ -633,24 +633,6 @@ wxString file_wildcards(FileType file_type, const std::string &custom_extension)
|
|||||||
static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); }
|
static std::string libslic3r_translate_callback(const char *s) { return wxGetTranslation(wxString(s, wxConvUTF8)).utf8_str().data(); }
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
static void register_win32_dpi_event()
|
|
||||||
{
|
|
||||||
enum { WM_DPICHANGED_ = 0x02e0 };
|
|
||||||
|
|
||||||
wxWindow::MSWRegisterMessageHandler(WM_DPICHANGED_, [](wxWindow *win, WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) {
|
|
||||||
const int dpi = wParam & 0xffff;
|
|
||||||
const auto rect = reinterpret_cast<PRECT>(lParam);
|
|
||||||
const wxRect wxrect(wxPoint(rect->top, rect->left), wxPoint(rect->bottom, rect->right));
|
|
||||||
|
|
||||||
DpiChangedEvent evt(EVT_DPI_CHANGED_SLICER, dpi, wxrect);
|
|
||||||
win->GetEventHandler()->AddPendingEvent(evt);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
#endif // !wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
|
|
||||||
static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 };
|
static GUID GUID_DEVINTERFACE_HID = { 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 };
|
||||||
|
|
||||||
static void register_win32_device_notification_event()
|
static void register_win32_device_notification_event()
|
||||||
@@ -2726,11 +2708,15 @@ bool GUI_App::on_init_inner()
|
|||||||
|
|
||||||
#if defined(__WXGTK20__) || defined(__WXGTK3__)
|
#if defined(__WXGTK20__) || defined(__WXGTK3__)
|
||||||
// Suppress harmless GTK critical warnings from the GTK3/wxWidgets interaction.
|
// Suppress harmless GTK critical warnings from the GTK3/wxWidgets interaction.
|
||||||
// These include widget allocation on hidden widgets and events on unrealized widgets.
|
// These include widget allocation on hidden widgets, events on unrealized widgets,
|
||||||
|
// and style context operations during widget construction (SetBackgroundColour
|
||||||
|
// before GTK widget realization).
|
||||||
g_log_set_handler("Gtk", G_LOG_LEVEL_CRITICAL,
|
g_log_set_handler("Gtk", G_LOG_LEVEL_CRITICAL,
|
||||||
[](const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {
|
[](const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {
|
||||||
if (message && (strstr(message, "gtk_widget_set_allocation") ||
|
if (message && (strstr(message, "gtk_widget_set_allocation") ||
|
||||||
strstr(message, "WIDGET_REALIZED_FOR_EVENT")))
|
strstr(message, "WIDGET_REALIZED_FOR_EVENT") ||
|
||||||
|
strstr(message, "gtk_widget_get_style_context") ||
|
||||||
|
strstr(message, "gtk_style_context_add_provider")))
|
||||||
return;
|
return;
|
||||||
g_log_default_handler(log_domain, log_level, message, user_data);
|
g_log_default_handler(log_domain, log_level, message, user_data);
|
||||||
}, nullptr);
|
}, nullptr);
|
||||||
@@ -2845,6 +2831,11 @@ bool GUI_App::on_init_inner()
|
|||||||
bool init_dark_color_mode = dark_mode();
|
bool init_dark_color_mode = dark_mode();
|
||||||
bool init_sys_menu_enabled = app_config->get("sys_menu_enabled") == "1";
|
bool init_sys_menu_enabled = app_config->get("sys_menu_enabled") == "1";
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
|
// Inform wxWidgets 3.3's dark mode system so it tracks NppDarkMode's state.
|
||||||
|
// Must be called before NppDarkMode::InitDarkMode() so that NppDarkMode's
|
||||||
|
// SetPreferredAppMode(ForceDark) overrides the AllowDark state set here.
|
||||||
|
// Orca: todo switch to native dark mode support in wxWidgets and remove NppDarkMode
|
||||||
|
MSWEnableDarkMode(DarkMode_Auto);
|
||||||
NppDarkMode::InitDarkMode(init_dark_color_mode, init_sys_menu_enabled);
|
NppDarkMode::InitDarkMode(init_dark_color_mode, init_sys_menu_enabled);
|
||||||
#endif // __WINDOWS__
|
#endif // __WINDOWS__
|
||||||
|
|
||||||
@@ -3094,9 +3085,6 @@ bool GUI_App::on_init_inner()
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
register_win32_dpi_event();
|
|
||||||
#endif // !wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
register_win32_device_notification_event();
|
register_win32_device_notification_event();
|
||||||
#endif // WIN32
|
#endif // WIN32
|
||||||
|
|
||||||
@@ -3657,9 +3645,15 @@ bool GUI_App::dark_mode()
|
|||||||
// proper dark mode was first introduced.
|
// proper dark mode was first introduced.
|
||||||
return wxPlatformInfo::Get().CheckOSVersion(10, 14) && mac_dark_mode();
|
return wxPlatformInfo::Get().CheckOSVersion(10, 14) && mac_dark_mode();
|
||||||
#else
|
#else
|
||||||
return wxGetApp().app_config->get("dark_color_mode") == "1" ? true : check_dark_mode();
|
// When the user has explicitly chosen a mode, honour it directly.
|
||||||
//const unsigned luma = get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
// Falling through to check_dark_mode() for an explicit "0" would query
|
||||||
//return luma < 128;
|
// wxSystemSettings::GetAppearance().IsDark(), which is contaminated by
|
||||||
|
// wxWidgets 3.3's MSWEnableDarkMode(DarkMode_Auto) and can return true
|
||||||
|
// even though the user asked for light mode.
|
||||||
|
const auto &val = wxGetApp().app_config->get("dark_color_mode");
|
||||||
|
if (val == "1") return true;
|
||||||
|
if (val == "0") return false;
|
||||||
|
return check_dark_mode();
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
//BBS disable DarkUI mode
|
//BBS disable DarkUI mode
|
||||||
@@ -4313,8 +4307,10 @@ void GUI_App::force_colors_update()
|
|||||||
#ifdef _MSW_DARK_MODE
|
#ifdef _MSW_DARK_MODE
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
NppDarkMode::SetDarkMode(dark_mode());
|
NppDarkMode::SetDarkMode(dark_mode());
|
||||||
|
#if wxVERSION_NUMBER < 3300
|
||||||
if (WXHWND wxHWND = wxToolTip::GetToolTipCtrl())
|
if (WXHWND wxHWND = wxToolTip::GetToolTipCtrl())
|
||||||
NppDarkMode::SetDarkExplorerTheme((HWND)wxHWND);
|
NppDarkMode::SetDarkExplorerTheme((HWND)wxHWND);
|
||||||
|
#endif
|
||||||
NppDarkMode::SetDarkTitleBar(mainframe->GetHWND());
|
NppDarkMode::SetDarkTitleBar(mainframe->GetHWND());
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ class GizmoObjectManipulation;
|
|||||||
static wxString dots("...", wxConvUTF8);
|
static wxString dots("...", wxConvUTF8);
|
||||||
|
|
||||||
// Does our wxWidgets version support markup?
|
// Does our wxWidgets version support markup?
|
||||||
#if wxUSE_MARKUP && wxCHECK_VERSION(3, 1, 1)
|
#if wxUSE_MARKUP
|
||||||
#define SUPPORTS_MARKUP
|
#define SUPPORTS_MARKUP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#include <wx/progdlg.h>
|
#include <wx/progdlg.h>
|
||||||
#include <wx/listbook.h>
|
#include <wx/listbook.h>
|
||||||
#include <wx/numformatter.h>
|
#include <wx/numformatter.h>
|
||||||
|
#include <wx/utils.h>
|
||||||
#include <wx/headerctrl.h>
|
#include <wx/headerctrl.h>
|
||||||
|
|
||||||
#include "slic3r/Utils/FixModelByWin10.hpp"
|
#include "slic3r/Utils/FixModelByWin10.hpp"
|
||||||
|
|||||||
@@ -148,10 +148,6 @@ void on_window_geometry(wxTopLevelWindow *tlw, std::function<void()> callback)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
wxDEFINE_EVENT(EVT_DPI_CHANGED_SLICER, DpiChangedEvent);
|
|
||||||
#endif // !wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
template<class F> typename F::FN winapi_get_function(const wchar_t *dll, const char *fn_name) {
|
template<class F> typename F::FN winapi_get_function(const wchar_t *dll, const char *fn_name) {
|
||||||
static HINSTANCE dll_handle = LoadLibraryExW(dll, nullptr, 0);
|
static HINSTANCE dll_handle = LoadLibraryExW(dll, nullptr, 0);
|
||||||
@@ -247,12 +243,7 @@ bool check_dark_mode() {
|
|||||||
return value <= 0;
|
return value <= 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if wxCHECK_VERSION(3,1,3)
|
|
||||||
return wxSystemSettings::GetAppearance().IsDark();
|
return wxSystemSettings::GetAppearance().IsDark();
|
||||||
#else
|
|
||||||
const unsigned luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
|
||||||
return luma < 128;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -81,24 +81,6 @@ void update_dark_config();
|
|||||||
void update_dark_ui(wxWindow* window);
|
void update_dark_ui(wxWindow* window);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
struct DpiChangedEvent : public wxEvent {
|
|
||||||
int dpi;
|
|
||||||
wxRect rect;
|
|
||||||
|
|
||||||
DpiChangedEvent(wxEventType eventType, int dpi, wxRect rect)
|
|
||||||
: wxEvent(0, eventType), dpi(dpi), rect(rect)
|
|
||||||
{}
|
|
||||||
|
|
||||||
virtual wxEvent *Clone() const
|
|
||||||
{
|
|
||||||
return new DpiChangedEvent(*this);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
wxDECLARE_EVENT(EVT_DPI_CHANGED_SLICER, DpiChangedEvent);
|
|
||||||
#endif // !wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
|
|
||||||
extern std::deque<wxDialog*> dialogStack;
|
extern std::deque<wxDialog*> dialogStack;
|
||||||
|
|
||||||
template<class P> class DPIAware : public P
|
template<class P> class DPIAware : public P
|
||||||
@@ -136,26 +118,12 @@ public:
|
|||||||
// recalc_font();
|
// recalc_font();
|
||||||
|
|
||||||
#ifndef __WXOSX__
|
#ifndef __WXOSX__
|
||||||
#if wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
this->Bind(wxEVT_DPI_CHANGED, [this](wxDPIChangedEvent& evt) {
|
this->Bind(wxEVT_DPI_CHANGED, [this](wxDPIChangedEvent& evt) {
|
||||||
m_scale_factor = (float)evt.GetNewDPI().x / (float)DPI_DEFAULT;
|
m_scale_factor = (float)evt.GetNewDPI().x / (float)DPI_DEFAULT;
|
||||||
m_new_font_point_size = get_default_font_for_dpi(this, evt.GetNewDPI().x).GetPointSize();
|
m_new_font_point_size = get_default_font_for_dpi(this, evt.GetNewDPI().x).GetPointSize();
|
||||||
if (m_can_rescale && (m_force_rescale || is_new_scale_factor()))
|
if (m_can_rescale && (m_force_rescale || is_new_scale_factor()))
|
||||||
rescale(wxRect());
|
rescale(wxRect());
|
||||||
});
|
});
|
||||||
#else
|
|
||||||
this->Bind(EVT_DPI_CHANGED_SLICER, [this](const DpiChangedEvent& evt) {
|
|
||||||
m_scale_factor = (float)evt.dpi / (float)DPI_DEFAULT;
|
|
||||||
|
|
||||||
m_new_font_point_size = get_default_font_for_dpi(this, evt.dpi).GetPointSize();
|
|
||||||
|
|
||||||
if (!m_can_rescale)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (m_force_rescale || is_new_scale_factor())
|
|
||||||
rescale(evt.rect);
|
|
||||||
});
|
|
||||||
#endif // wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
#endif // no __WXOSX__
|
#endif // no __WXOSX__
|
||||||
|
|
||||||
this->Bind(wxEVT_MOVE_START, [this](wxMoveEvent& event)
|
this->Bind(wxEVT_MOVE_START, [this](wxMoveEvent& event)
|
||||||
@@ -258,38 +226,11 @@ private:
|
|||||||
// check if new scale is differ from previous
|
// check if new scale is differ from previous
|
||||||
bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }
|
bool is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }
|
||||||
|
|
||||||
// function for a font scaling of the window
|
|
||||||
void scale_win_font(wxWindow *window, const int font_point_size)
|
|
||||||
{
|
|
||||||
wxFont new_font(window->GetFont());
|
|
||||||
new_font.SetPointSize(font_point_size);
|
|
||||||
window->SetFont(new_font);
|
|
||||||
}
|
|
||||||
|
|
||||||
// recursive function for scaling fonts for all controls in Window
|
|
||||||
void scale_controls_fonts(wxWindow *window, const int font_point_size)
|
|
||||||
{
|
|
||||||
auto children = window->GetChildren();
|
|
||||||
|
|
||||||
for (auto child : children) {
|
|
||||||
scale_controls_fonts(child, font_point_size);
|
|
||||||
scale_win_font(child, font_point_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
window->Layout();
|
|
||||||
}
|
|
||||||
|
|
||||||
void rescale(const wxRect &suggested_rect)
|
void rescale(const wxRect &suggested_rect)
|
||||||
{
|
{
|
||||||
this->Freeze();
|
this->Freeze();
|
||||||
|
|
||||||
m_force_rescale = false;
|
m_force_rescale = false;
|
||||||
#if !wxVERSION_EQUAL_OR_GREATER_THAN(3,1,3)
|
|
||||||
// rescale fonts of all controls
|
|
||||||
scale_controls_fonts(this, m_new_font_point_size);
|
|
||||||
// rescale current window font
|
|
||||||
scale_win_font(this, m_new_font_point_size);
|
|
||||||
#endif // wxVERSION_EQUAL_OR_GREATER_THAN
|
|
||||||
|
|
||||||
// set normal application font as a current window font
|
// set normal application font as a current window font
|
||||||
m_normal_font = this->GetFont();
|
m_normal_font = this->GetFont();
|
||||||
|
|||||||
@@ -64,11 +64,7 @@ namespace I18N {
|
|||||||
inline std::string translate_utf8(const std::wstring &s, const std::wstring &plural, unsigned int n) { return translate(s, plural, n).ToUTF8().data(); }
|
inline std::string translate_utf8(const std::wstring &s, const std::wstring &plural, unsigned int n) { return translate(s, plural, n).ToUTF8().data(); }
|
||||||
inline std::string translate_utf8(const wxString &s, const wxString &plural, unsigned int n) { return translate(s, plural, n).ToUTF8().data(); }
|
inline std::string translate_utf8(const wxString &s, const wxString &plural, unsigned int n) { return translate(s, plural, n).ToUTF8().data(); }
|
||||||
|
|
||||||
#if wxCHECK_VERSION(3, 1, 1)
|
#define _wxGetTranslation_ctx(S, CTX) wxGetTranslation((S), wxEmptyString, (CTX))
|
||||||
#define _wxGetTranslation_ctx(S, CTX) wxGetTranslation((S), wxEmptyString, (CTX))
|
|
||||||
#else
|
|
||||||
#define _wxGetTranslation_ctx(S, CTX) ((void)(CTX), wxGetTranslation((S)))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline wxString translate(const char *s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s, wxConvUTF8), ctx); }
|
inline wxString translate(const char *s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s, wxConvUTF8), ctx); }
|
||||||
inline wxString translate(const wchar_t *s, const char* ctx) { return _wxGetTranslation_ctx(s, ctx); }
|
inline wxString translate(const wchar_t *s, const char* ctx) { return _wxGetTranslation_ctx(s, ctx); }
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ public:
|
|||||||
|
|
||||||
ResizeEdgePanel(MainFrame* frame, Edge edge)
|
ResizeEdgePanel(MainFrame* frame, Edge edge)
|
||||||
: wxPanel(frame, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
: wxPanel(frame, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
||||||
wxBORDER_NONE | wxTRANSPARENT_WINDOW)
|
wxBORDER_NONE)
|
||||||
, m_frame(frame)
|
, m_frame(frame)
|
||||||
, m_edge(edge)
|
, m_edge(edge)
|
||||||
{
|
{
|
||||||
@@ -524,25 +524,6 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_
|
|||||||
update_layout();
|
update_layout();
|
||||||
sizer->SetSizeHints(this);
|
sizer->SetSizeHints(this);
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
// SetMaximize causes the window to overlap the taskbar, due to the fact this window has wxMAXIMIZE_BOX off
|
|
||||||
// https://forums.wxwidgets.org/viewtopic.php?t=50634
|
|
||||||
// Fix it here
|
|
||||||
this->Bind(wxEVT_MAXIMIZE, [this](auto &e) {
|
|
||||||
wxDisplay display(this);
|
|
||||||
auto size = display.GetClientArea().GetSize();
|
|
||||||
auto pos = display.GetClientArea().GetPosition();
|
|
||||||
HWND hWnd = GetHandle();
|
|
||||||
RECT borderThickness;
|
|
||||||
SetRectEmpty(&borderThickness);
|
|
||||||
AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE), FALSE, 0);
|
|
||||||
const auto max_size = size + wxSize{-borderThickness.left + borderThickness.right, -borderThickness.top + borderThickness.bottom};
|
|
||||||
const auto current_size = GetSize();
|
|
||||||
SetSize({std::min(max_size.x, current_size.x), std::min(max_size.y, current_size.y)});
|
|
||||||
Move(pos + wxPoint{borderThickness.left, borderThickness.top});
|
|
||||||
e.Skip();
|
|
||||||
});
|
|
||||||
#endif // WIN32
|
|
||||||
// BBS
|
// BBS
|
||||||
Fit();
|
Fit();
|
||||||
|
|
||||||
@@ -855,26 +836,31 @@ WXLRESULT MainFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam
|
|||||||
its wParam value is TRUE and the return value is 0 */
|
its wParam value is TRUE and the return value is 0 */
|
||||||
case WM_NCCALCSIZE:
|
case WM_NCCALCSIZE:
|
||||||
if (wParam) {
|
if (wParam) {
|
||||||
/* Detect whether window is maximized or not. We don't need to change the resize border when win is
|
|
||||||
* maximized because all resize borders are gone automatically */
|
|
||||||
WINDOWPLACEMENT wPos;
|
WINDOWPLACEMENT wPos;
|
||||||
// GetWindowPlacement fail if this member is not set correctly.
|
// GetWindowPlacement fail if this member is not set correctly.
|
||||||
wPos.length = sizeof(wPos);
|
wPos.length = sizeof(wPos);
|
||||||
GetWindowPlacement(hWnd, &wPos);
|
GetWindowPlacement(hWnd, &wPos);
|
||||||
|
NCCALCSIZE_PARAMS *sz = reinterpret_cast<NCCALCSIZE_PARAMS *>(lParam);
|
||||||
|
RECT borderThickness;
|
||||||
|
SetRectEmpty(&borderThickness);
|
||||||
|
// Use & ~WS_CAPTION to get only the border thickness, not the caption height.
|
||||||
|
// wxWidgets 3.3 adds WS_CAPTION when wxMINIMIZE_BOX/wxMAXIMIZE_BOX/wxCLOSE_BOX is set,
|
||||||
|
// but we use a custom titlebar so we must exclude the caption from NC area calculations.
|
||||||
|
AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE) & ~WS_CAPTION, FALSE, NULL);
|
||||||
|
borderThickness.left *= -1;
|
||||||
|
borderThickness.top *= -1;
|
||||||
if (wPos.showCmd != SW_SHOWMAXIMIZED) {
|
if (wPos.showCmd != SW_SHOWMAXIMIZED) {
|
||||||
RECT borderThickness;
|
|
||||||
SetRectEmpty(&borderThickness);
|
|
||||||
AdjustWindowRectEx(&borderThickness, GetWindowLongPtr(hWnd, GWL_STYLE) & ~WS_CAPTION, FALSE, NULL);
|
|
||||||
borderThickness.left *= -1;
|
|
||||||
borderThickness.top *= -1;
|
|
||||||
NCCALCSIZE_PARAMS *sz = reinterpret_cast<NCCALCSIZE_PARAMS *>(lParam);
|
|
||||||
// Add 1 pixel to the top border to make the window resizable from the top border
|
// Add 1 pixel to the top border to make the window resizable from the top border
|
||||||
sz->rgrc[0].top += 1; // borderThickness.top;
|
sz->rgrc[0].top += 1;
|
||||||
sz->rgrc[0].left += borderThickness.left;
|
} else {
|
||||||
sz->rgrc[0].right -= borderThickness.right;
|
// When maximized, Windows extends the window beyond the screen by the border thickness.
|
||||||
sz->rgrc[0].bottom -= borderThickness.bottom;
|
// Strip the full border overshoot so the client area matches the work area.
|
||||||
return 0;
|
sz->rgrc[0].top += borderThickness.top;
|
||||||
}
|
}
|
||||||
|
sz->rgrc[0].left += borderThickness.left;
|
||||||
|
sz->rgrc[0].right -= borderThickness.right;
|
||||||
|
sz->rgrc[0].bottom -= borderThickness.bottom;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1802,8 +1788,10 @@ wxBoxSizer* MainFrame::create_side_tools()
|
|||||||
m_slice_select = eSlicePlate;
|
m_slice_select = eSlicePlate;
|
||||||
m_print_select = ePrintPlate;
|
m_print_select = ePrintPlate;
|
||||||
|
|
||||||
auto slice_panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxTRANSPARENT_WINDOW);
|
auto slice_panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxDefaultSize);
|
||||||
auto print_panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxTRANSPARENT_WINDOW);
|
auto print_panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxDefaultSize);
|
||||||
|
slice_panel->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#3B4446")));
|
||||||
|
print_panel->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#3B4446")));
|
||||||
|
|
||||||
m_slice_btn = new SideButton(slice_panel, _L("Slice plate"), "");
|
m_slice_btn = new SideButton(slice_panel, _L("Slice plate"), "");
|
||||||
m_slice_option_btn = new SideButton(slice_panel, "", "sidebutton_dropdown", 0, 14);
|
m_slice_option_btn = new SideButton(slice_panel, "", "sidebutton_dropdown", 0, 14);
|
||||||
@@ -2336,6 +2324,11 @@ void MainFrame::update_side_button_style()
|
|||||||
m_print_option_btn->SetExtraSize(wxSize(FromDIP(10), FromDIP(10)));
|
m_print_option_btn->SetExtraSize(wxSize(FromDIP(10), FromDIP(10)));
|
||||||
m_print_option_btn->SetIconOffset(FromDIP(2));
|
m_print_option_btn->SetIconOffset(FromDIP(2));
|
||||||
m_print_option_btn->SetMinSize(wxSize(FromDIP(24), FromDIP(24)));
|
m_print_option_btn->SetMinSize(wxSize(FromDIP(24), FromDIP(24)));
|
||||||
|
|
||||||
|
// Keep panel backgrounds in sync with SideButton's darkModeColorFor(#3B4446) bottom strip
|
||||||
|
auto bg = StateColor::darkModeColorFor(wxColour("#3B4446"));
|
||||||
|
m_slice_btn->GetParent()->SetBackgroundColour(bg);
|
||||||
|
m_print_btn->GetParent()->SetBackgroundColour(bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainFrame::update_slice_print_status(SlicePrintEventType event, bool can_slice, bool can_print)
|
void MainFrame::update_slice_print_status(SlicePrintEventType event, bool can_slice, bool can_print)
|
||||||
|
|||||||
@@ -69,15 +69,13 @@ namespace {
|
|||||||
// Code taken from desktop_open_datadir_folder()
|
// Code taken from desktop_open_datadir_folder()
|
||||||
|
|
||||||
// Execute command to open a file explorer, platform dependent.
|
// Execute command to open a file explorer, platform dependent.
|
||||||
// FIXME: The const_casts aren't needed in wxWidgets 3.1, remove them when we upgrade.
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const wxString widepath = from_u8(path);
|
const wxString widepath = from_u8(path);
|
||||||
const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr };
|
const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr };
|
||||||
::wxExecute(const_cast<wchar_t**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
const char* argv[] = { "open", path.data(), nullptr };
|
const char* argv[] = { "open", path.data(), nullptr };
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr);
|
||||||
#else
|
#else
|
||||||
const char* argv[] = { "xdg-open", path.data(), nullptr };
|
const char* argv[] = { "xdg-open", path.data(), nullptr };
|
||||||
|
|
||||||
@@ -105,11 +103,11 @@ namespace {
|
|||||||
exec_env.cwd = std::move(owd);
|
exec_env.cwd = std::move(owd);
|
||||||
}
|
}
|
||||||
|
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, &exec_env);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, &exec_env);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
// Looks like we're NOT running from AppImage, we'll make no changes to the environment.
|
||||||
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr, nullptr);
|
::wxExecute(argv, wxEXEC_ASYNC, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ wxBoxSizer* ObjColorDialog::create_btn_sizer(long flags,bool exist_error)
|
|||||||
m_button_list[wxOK] = dlg_btns->GetOK();
|
m_button_list[wxOK] = dlg_btns->GetOK();
|
||||||
m_button_list[wxCANCEL] = dlg_btns->GetCANCEL();
|
m_button_list[wxCANCEL] = dlg_btns->GetCANCEL();
|
||||||
|
|
||||||
btn_sizer->Add(dlg_btns, 0, wxEXPAND | wxALIGN_CENTER_VERTICAL);
|
btn_sizer->Add(dlg_btns, 0, wxEXPAND);
|
||||||
return btn_sizer;
|
return btn_sizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,8 +310,8 @@ ObjColorPanel::ObjColorPanel(wxWindow *parent, Slic3r::ObjDialogInOut &in_out, c
|
|||||||
wxBORDER_NONE | wxBU_AUTODRAW);
|
wxBORDER_NONE | wxBU_AUTODRAW);
|
||||||
m_image_button->SetBitmap(image);
|
m_image_button->SetBitmap(image);
|
||||||
m_image_button->SetCanFocus(false);
|
m_image_button->SetCanFocus(false);
|
||||||
icon_sizer->Add(m_image_button, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL,
|
icon_sizer->Add(m_image_button, 0, wxEXPAND | wxALL,
|
||||||
FromDIP(0)); // wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxEXPAND | wxALL
|
FromDIP(0)); // wxEXPAND | wxALL
|
||||||
cur_combox->Raise();//for mac
|
cur_combox->Raise();//for mac
|
||||||
|
|
||||||
m_sizer_simple->Add(icon_sizer, FromDIP(0), wxALIGN_CENTER | wxALL, FromDIP(0));
|
m_sizer_simple->Add(icon_sizer, FromDIP(0), wxALIGN_CENTER | wxALL, FromDIP(0));
|
||||||
|
|||||||
@@ -19,9 +19,6 @@
|
|||||||
#include "GUI_Init.hpp"
|
#include "GUI_Init.hpp"
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
// Part of hack to remove crash when closing the application on OSX 10.9.5 when building against newer wxWidgets
|
|
||||||
#include <wx/platinfo.h>
|
|
||||||
|
|
||||||
#include "../Utils/MacDarkMode.hpp"
|
#include "../Utils/MacDarkMode.hpp"
|
||||||
#endif // __APPLE__
|
#endif // __APPLE__
|
||||||
|
|
||||||
@@ -237,26 +234,12 @@ bool OpenGLManager::s_force_power_of_two_textures = false;
|
|||||||
OpenGLManager::EMultisampleState OpenGLManager::s_multisample = OpenGLManager::EMultisampleState::Unknown;
|
OpenGLManager::EMultisampleState OpenGLManager::s_multisample = OpenGLManager::EMultisampleState::Unknown;
|
||||||
OpenGLManager::EFramebufferType OpenGLManager::s_framebuffers_type = OpenGLManager::EFramebufferType::Unknown;
|
OpenGLManager::EFramebufferType OpenGLManager::s_framebuffers_type = OpenGLManager::EFramebufferType::Unknown;
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
// Part of hack to remove crash when closing the application on OSX 10.9.5 when building against newer wxWidgets
|
|
||||||
OpenGLManager::OSInfo OpenGLManager::s_os_info;
|
|
||||||
#endif // __APPLE__
|
|
||||||
|
|
||||||
OpenGLManager::~OpenGLManager()
|
OpenGLManager::~OpenGLManager()
|
||||||
{
|
{
|
||||||
m_shaders_manager.shutdown();
|
m_shaders_manager.shutdown();
|
||||||
|
|
||||||
#ifdef __APPLE__
|
if (m_context != nullptr)
|
||||||
// This is an ugly hack needed to solve the crash happening when closing the application on OSX 10.9.5 with newer wxWidgets
|
delete m_context;
|
||||||
// The crash is triggered inside wxGLContext destructor
|
|
||||||
if (s_os_info.major != 10 || s_os_info.minor != 9 || s_os_info.micro != 5)
|
|
||||||
{
|
|
||||||
#endif //__APPLE__
|
|
||||||
if (m_context != nullptr)
|
|
||||||
delete m_context;
|
|
||||||
#ifdef __APPLE__
|
|
||||||
}
|
|
||||||
#endif //__APPLE__
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OpenGLManager::init_gl(bool popup_error)
|
bool OpenGLManager::init_gl(bool popup_error)
|
||||||
@@ -412,12 +395,6 @@ wxGLContext* OpenGLManager::init_glcontext(wxGLCanvas& canvas, const std::pair<i
|
|||||||
m_context = new wxGLContext(&canvas, nullptr, &attrs);
|
m_context = new wxGLContext(&canvas, nullptr, &attrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
// Part of hack to remove crash when closing the application on OSX 10.9.5 when building against newer wxWidgets
|
|
||||||
s_os_info.major = wxPlatformInfo::Get().GetOSMajorVersion();
|
|
||||||
s_os_info.minor = wxPlatformInfo::Get().GetOSMinorVersion();
|
|
||||||
s_os_info.micro = wxPlatformInfo::Get().GetOSMicroVersion();
|
|
||||||
#endif //__APPLE__
|
|
||||||
}
|
}
|
||||||
return m_context;
|
return m_context;
|
||||||
}
|
}
|
||||||
@@ -451,7 +428,10 @@ wxGLCanvas* OpenGLManager::create_wxglcanvas(wxWindow& parent)
|
|||||||
if (! can_multisample())
|
if (! can_multisample())
|
||||||
attribList[12] = 0;
|
attribList[12] = 0;
|
||||||
|
|
||||||
return new wxGLCanvas(&parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS);
|
wxGLCanvas* canvas = new wxGLCanvas(&parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS);
|
||||||
|
// The GL canvas paints its entire surface, so background erasing is unnecessary.
|
||||||
|
canvas->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
||||||
|
return canvas;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLManager::detect_multisample(int* attribList)
|
void OpenGLManager::detect_multisample(int* attribList)
|
||||||
|
|||||||
@@ -62,16 +62,6 @@ public:
|
|||||||
void detect() const;
|
void detect() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __APPLE__
|
|
||||||
// Part of hack to remove crash when closing the application on OSX 10.9.5 when building against newer wxWidgets
|
|
||||||
struct OSInfo
|
|
||||||
{
|
|
||||||
int major{ 0 };
|
|
||||||
int minor{ 0 };
|
|
||||||
int micro{ 0 };
|
|
||||||
};
|
|
||||||
#endif //__APPLE__
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class EMultisampleState : unsigned char
|
enum class EMultisampleState : unsigned char
|
||||||
{
|
{
|
||||||
@@ -84,10 +74,6 @@ private:
|
|||||||
wxGLContext* m_context{ nullptr };
|
wxGLContext* m_context{ nullptr };
|
||||||
GLShadersManager m_shaders_manager;
|
GLShadersManager m_shaders_manager;
|
||||||
static GLInfo s_gl_info;
|
static GLInfo s_gl_info;
|
||||||
#ifdef __APPLE__
|
|
||||||
// Part of hack to remove crash when closing the application on OSX 10.9.5 when building against newer wxWidgets
|
|
||||||
static OSInfo s_os_info;
|
|
||||||
#endif //__APPLE__
|
|
||||||
static bool s_compressed_textures_supported;
|
static bool s_compressed_textures_supported;
|
||||||
static bool s_force_power_of_two_textures;
|
static bool s_force_power_of_two_textures;
|
||||||
|
|
||||||
|
|||||||
@@ -197,9 +197,9 @@ PartSkipDialog::PartSkipDialog(wxWindow *parent) : DPIDialog(parent, wxID_ANY, _
|
|||||||
#else
|
#else
|
||||||
m_dlg_btn_sizer->Add(m_tot_label, 0, wxALIGN_CENTER_VERTICAL, 0);
|
m_dlg_btn_sizer->Add(m_tot_label, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
#endif
|
#endif
|
||||||
m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND, FromDIP(0));
|
||||||
m_dlg_btn_sizer->Add(m_apply_btn, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
m_dlg_btn_sizer->Add(m_apply_btn, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(24));
|
m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxEXPAND, FromDIP(24));
|
||||||
|
|
||||||
m_dlg_placeholder = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
m_dlg_placeholder = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
|
m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
|||||||
auto txt = new wxStaticText(parent, wxID_ANY, from_u8((boost::format("%1%\n\t%2%") % info % ca_file_hint).str()));
|
auto txt = new wxStaticText(parent, wxID_ANY, from_u8((boost::format("%1%\n\t%2%") % info % ca_file_hint).str()));
|
||||||
txt->SetFont(wxGetApp().normal_font());
|
txt->SetFont(wxGetApp().normal_font());
|
||||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizer->Add(txt, 1, wxEXPAND|wxALIGN_LEFT);
|
sizer->Add(txt, 1, wxEXPAND);
|
||||||
return sizer;
|
return sizer;
|
||||||
};
|
};
|
||||||
m_optgroup->append_line(line);
|
m_optgroup->append_line(line);
|
||||||
@@ -430,7 +430,7 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
|||||||
// Always fill in the "printhost_port" combo box from the config and select it.
|
// Always fill in the "printhost_port" combo box from the config and select it.
|
||||||
{
|
{
|
||||||
Choice* choice = dynamic_cast<Choice*>(m_optgroup->get_field("printhost_port"));
|
Choice* choice = dynamic_cast<Choice*>(m_optgroup->get_field("printhost_port"));
|
||||||
choice->set_values({ m_config->opt_string("printhost_port") });
|
choice->set_values(std::vector<std::string>{ m_config->opt_string("printhost_port") });
|
||||||
choice->set_selection();
|
choice->set_selection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ void OtherLayersSeqPanel::append_layer(const LayerSeqInfo* layer_info)
|
|||||||
single_layer_input_sizer->Add(end_layer_input, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER, FromDIP(5));
|
single_layer_input_sizer->Add(end_layer_input, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER, FromDIP(5));
|
||||||
single_layer_input_sizer->AddStretchSpacer();
|
single_layer_input_sizer->AddStretchSpacer();
|
||||||
single_layer_input_sizer->Add(drag_canvas, 0, wxLEFT | wxALIGN_CENTER, FromDIP(5));
|
single_layer_input_sizer->Add(drag_canvas, 0, wxLEFT | wxALIGN_CENTER, FromDIP(5));
|
||||||
layer_panel_sizer->Add(single_layer_input_sizer, 0, wxEXPAND | wxALIGN_CENTER | wxBOTTOM, FromDIP(10));
|
layer_panel_sizer->Add(single_layer_input_sizer, 0, wxEXPAND | wxBOTTOM, FromDIP(10));
|
||||||
m_layer_input_sizer_list.push_back(single_layer_input_sizer);
|
m_layer_input_sizer_list.push_back(single_layer_input_sizer);
|
||||||
m_begin_layer_input_list.push_back(begin_layer_input);
|
m_begin_layer_input_list.push_back(begin_layer_input);
|
||||||
m_end_layer_input_list.push_back(end_layer_input);
|
m_end_layer_input_list.push_back(end_layer_input);
|
||||||
|
|||||||
@@ -529,7 +529,7 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
|
|||||||
//if (isBBL) {
|
//if (isBBL) {
|
||||||
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
|
||||||
hsizer->Add(combo_printer, 1, wxEXPAND | wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
hsizer->Add(combo_printer, 1, wxEXPAND | wxALL, FromDIP(2));
|
||||||
hsizer->AddSpacer(FromDIP(2));
|
hsizer->AddSpacer(FromDIP(2));
|
||||||
hsizer->Add(btn_edit_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
|
hsizer->Add(btn_edit_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
|
||||||
//hsizer->Add(btn_connect_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
|
//hsizer->Add(btn_connect_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
|
||||||
@@ -1571,7 +1571,7 @@ void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent &e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sidebar::Sidebar(Plater *parent)
|
Sidebar::Sidebar(Plater *parent)
|
||||||
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent))
|
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(39 * wxGetApp().em_unit(), -1)), p(new priv(parent))
|
||||||
{
|
{
|
||||||
Choice::register_dynamic_list("support_filament", &dynamic_filament_list);
|
Choice::register_dynamic_list("support_filament", &dynamic_filament_list);
|
||||||
Choice::register_dynamic_list("support_interface_filament", &dynamic_filament_list);
|
Choice::register_dynamic_list("support_interface_filament", &dynamic_filament_list);
|
||||||
@@ -2186,7 +2186,7 @@ Sidebar::Sidebar(Plater *parent)
|
|||||||
|
|
||||||
auto search_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto search_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
search_sizer->Add(new wxWindow(p->m_search_bar, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(1));
|
search_sizer->Add(new wxWindow(p->m_search_bar, wxID_ANY, wxDefaultPosition, wxSize(0, 0)), 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(1));
|
||||||
search_sizer->Add(p->m_search_item, 1, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
search_sizer->Add(p->m_search_item, 1, wxEXPAND | wxALL, FromDIP(2));
|
||||||
p->m_search_bar->SetSizer(search_sizer);
|
p->m_search_bar->SetSizer(search_sizer);
|
||||||
p->m_search_bar->Layout();
|
p->m_search_bar->Layout();
|
||||||
search_sizer->Fit(p->m_search_bar);
|
search_sizer->Fit(p->m_search_bar);
|
||||||
@@ -2789,7 +2789,7 @@ void Sidebar::update_filaments_area_height()
|
|||||||
|
|
||||||
void Sidebar::msw_rescale()
|
void Sidebar::msw_rescale()
|
||||||
{
|
{
|
||||||
SetMinSize(wxSize(42 * wxGetApp().em_unit(), -1));
|
SetMinSize(wxSize(39 * wxGetApp().em_unit(), -1));
|
||||||
p->m_panel_printer_title->GetSizer()->SetMinSize(-1, 3 * wxGetApp().em_unit());
|
p->m_panel_printer_title->GetSizer()->SetMinSize(-1, 3 * wxGetApp().em_unit());
|
||||||
p->m_panel_filament_title->GetSizer()
|
p->m_panel_filament_title->GetSizer()
|
||||||
->SetMinSize(-1, 3 * wxGetApp().em_unit());
|
->SetMinSize(-1, 3 * wxGetApp().em_unit());
|
||||||
@@ -4929,7 +4929,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
|
|||||||
.TopDockable(false)
|
.TopDockable(false)
|
||||||
.BottomDockable(false)
|
.BottomDockable(false)
|
||||||
.Floatable(true)
|
.Floatable(true)
|
||||||
.BestSize(wxSize(42 * wxGetApp().em_unit(), 90 * wxGetApp().em_unit())));
|
.BestSize(wxSize(39 * wxGetApp().em_unit(), 90 * wxGetApp().em_unit())));
|
||||||
|
|
||||||
auto* panel_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto* panel_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
panel_sizer->Add(view3D, 1, wxEXPAND | wxALL, 0);
|
panel_sizer->Add(view3D, 1, wxEXPAND | wxALL, 0);
|
||||||
@@ -5299,12 +5299,14 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
|
|||||||
for (size_t i = 0; i < evt.data.size(); ++i) {
|
for (size_t i = 0; i < evt.data.size(); ++i) {
|
||||||
input_files.push_back(from_u8(evt.data[i].string()));
|
input_files.push_back(from_u8(evt.data[i].string()));
|
||||||
}
|
}
|
||||||
|
wxGetApp().mainframe->Show();
|
||||||
wxGetApp().mainframe->Raise();
|
wxGetApp().mainframe->Raise();
|
||||||
this->q->load_files(input_files);
|
this->q->load_files(input_files);
|
||||||
});
|
});
|
||||||
|
|
||||||
this->q->Bind(EVT_START_DOWNLOAD_OTHER_INSTANCE, [](StartDownloadOtherInstanceEvent& evt) {
|
this->q->Bind(EVT_START_DOWNLOAD_OTHER_INSTANCE, [](StartDownloadOtherInstanceEvent& evt) {
|
||||||
BOOST_LOG_TRIVIAL(trace) << "Received url from other instance event.";
|
BOOST_LOG_TRIVIAL(trace) << "Received url from other instance event.";
|
||||||
|
wxGetApp().mainframe->Show();
|
||||||
wxGetApp().mainframe->Raise();
|
wxGetApp().mainframe->Raise();
|
||||||
for (size_t i = 0; i < evt.data.size(); ++i) {
|
for (size_t i = 0; i < evt.data.size(); ++i) {
|
||||||
wxGetApp().start_download(evt.data[i]);
|
wxGetApp().start_download(evt.data[i]);
|
||||||
@@ -11557,8 +11559,8 @@ void Plater::priv::bring_instance_forward() const
|
|||||||
{
|
{
|
||||||
main_frame->Restore();
|
main_frame->Restore();
|
||||||
wxGetApp().GetTopWindow()->SetFocus(); // focus on my window
|
wxGetApp().GetTopWindow()->SetFocus(); // focus on my window
|
||||||
wxGetApp().GetTopWindow()->Raise(); // bring window to front
|
|
||||||
wxGetApp().GetTopWindow()->Show(true); // show the window
|
wxGetApp().GetTopWindow()->Show(true); // show the window
|
||||||
|
wxGetApp().GetTopWindow()->Raise(); // bring window to front
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12110,7 +12112,7 @@ void Plater::import_model_id(wxString download_info)
|
|||||||
/* load project */
|
/* load project */
|
||||||
// Orca: If download is a zip file, treat it as if file has been drag and dropped on the plater
|
// Orca: If download is a zip file, treat it as if file has been drag and dropped on the plater
|
||||||
if (target_path.extension() == ".zip")
|
if (target_path.extension() == ".zip")
|
||||||
this->load_files(wxArrayString(1, target_path.string()));
|
{ wxArrayString arr; arr.Add(wxString::FromUTF8(target_path.string())); this->load_files(arr); }
|
||||||
else
|
else
|
||||||
this->load_project(target_path.wstring());
|
this->load_project(target_path.wstring());
|
||||||
/*BBS set project info after load project, project info is reset in load project */
|
/*BBS set project info after load project, project info is reset in load project */
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS
|
|||||||
if (combobox->GetSelection() == m_current_language_selected)
|
if (combobox->GetSelection() == m_current_language_selected)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (e.GetString().mb_str() != app_config->get(param)) {
|
if (e.GetString().ToStdString() != app_config->get(param)) {
|
||||||
{
|
{
|
||||||
//check if the project has changed
|
//check if the project has changed
|
||||||
if (wxGetApp().plater()->is_project_dirty()) {
|
if (wxGetApp().plater()->is_project_dirty()) {
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ bool OptionsSearcher::search(const std::string &search, bool force /* = false*/,
|
|||||||
found.clear();
|
found.clear();
|
||||||
|
|
||||||
bool full_list = search.empty();
|
bool full_list = search.empty();
|
||||||
std::wstring sep = L" : ";
|
wxString sep = L" : ";
|
||||||
|
|
||||||
auto get_label = [this, &sep](const Option &opt, bool marked = true) {
|
auto get_label = [this, &sep](const Option &opt, bool marked = true) {
|
||||||
std::wstring out;
|
std::wstring out;
|
||||||
@@ -213,7 +213,7 @@ bool OptionsSearcher::search(const std::string &search, bool force /* = false*/,
|
|||||||
};
|
};
|
||||||
|
|
||||||
auto get_tooltip = [this, &sep](const Option &opt) {
|
auto get_tooltip = [this, &sep](const Option &opt) {
|
||||||
return marker_by_type(opt.type, printer_technology) + opt.category_local + sep + opt.group_local + sep + opt.label_local;
|
return wxString(marker_by_type(opt.type, printer_technology)) + opt.category_local + sep + opt.group_local + sep + opt.label_local;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::vector<uint16_t> matches, matches2;
|
std::vector<uint16_t> matches, matches2;
|
||||||
|
|||||||
@@ -449,12 +449,10 @@ PrintParams SendMultiMachinePage::request_params(MachineObject* obj)
|
|||||||
bool timelapse = app_config->get("print", "timelapse") == "1" ? true : false;
|
bool timelapse = app_config->get("print", "timelapse") == "1" ? true : false;
|
||||||
auto use_ams = false;
|
auto use_ams = false;
|
||||||
|
|
||||||
AmsRadioSelectorList::Node* node = m_radio_group.GetFirst();
|
|
||||||
auto groupid = 0;
|
auto groupid = 0;
|
||||||
|
|
||||||
|
for (auto it = m_radio_group.begin(); it != m_radio_group.end(); ++it) {
|
||||||
while (node) {
|
AmsRadioSelector* rs = *it;
|
||||||
AmsRadioSelector* rs = node->GetData();
|
|
||||||
if (rs->m_param_name == "use_ams" && rs->m_radiobox->GetValue()) {
|
if (rs->m_param_name == "use_ams" && rs->m_radiobox->GetValue()) {
|
||||||
use_ams = true;
|
use_ams = true;
|
||||||
}
|
}
|
||||||
@@ -462,8 +460,6 @@ PrintParams SendMultiMachinePage::request_params(MachineObject* obj)
|
|||||||
if (rs->m_param_name == "use_extra" && rs->m_radiobox->GetValue()) {
|
if (rs->m_param_name == "use_extra" && rs->m_radiobox->GetValue()) {
|
||||||
use_ams = false;
|
use_ams = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
node = node->GetNext();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//use ams
|
//use ams
|
||||||
@@ -938,7 +934,7 @@ wxBoxSizer* SendMultiMachinePage::create_item_radiobox(wxString title, wxWindow*
|
|||||||
|
|
||||||
void SendMultiMachinePage::OnSelectRadio(wxMouseEvent& event)
|
void SendMultiMachinePage::OnSelectRadio(wxMouseEvent& event)
|
||||||
{
|
{
|
||||||
AmsRadioSelectorList::Node* node = m_radio_group.GetFirst();
|
AmsRadioSelectorList::compatibility_iterator node = m_radio_group.GetFirst();
|
||||||
auto groupid = 0;
|
auto groupid = 0;
|
||||||
|
|
||||||
//while (node) {
|
//while (node) {
|
||||||
@@ -975,7 +971,7 @@ void SendMultiMachinePage::OnSelectRadio(wxMouseEvent& event)
|
|||||||
|
|
||||||
void SendMultiMachinePage::on_select_radio(std::string param)
|
void SendMultiMachinePage::on_select_radio(std::string param)
|
||||||
{
|
{
|
||||||
AmsRadioSelectorList::Node* node = m_radio_group.GetFirst();
|
AmsRadioSelectorList::compatibility_iterator node = m_radio_group.GetFirst();
|
||||||
auto groupid = 0;
|
auto groupid = 0;
|
||||||
|
|
||||||
while (node) {
|
while (node) {
|
||||||
@@ -995,7 +991,7 @@ void SendMultiMachinePage::on_select_radio(std::string param)
|
|||||||
|
|
||||||
bool SendMultiMachinePage::get_value_radio(std::string param)
|
bool SendMultiMachinePage::get_value_radio(std::string param)
|
||||||
{
|
{
|
||||||
AmsRadioSelectorList::Node* node = m_radio_group.GetFirst();
|
AmsRadioSelectorList::compatibility_iterator node = m_radio_group.GetFirst();
|
||||||
auto groupid = 0;
|
auto groupid = 0;
|
||||||
while (node) {
|
while (node) {
|
||||||
AmsRadioSelector* rs = node->GetData();
|
AmsRadioSelector* rs = node->GetData();
|
||||||
|
|||||||
@@ -481,7 +481,7 @@ static std::string generate_system_info_json()
|
|||||||
monitor_node.put("height", display.GetGeometry().GetHeight());
|
monitor_node.put("height", display.GetGeometry().GetHeight());
|
||||||
|
|
||||||
// Only get the scaling on Win, it is not reliable on other platforms.
|
// Only get the scaling on Win, it is not reliable on other platforms.
|
||||||
#if defined(_WIN32) && wxCHECK_VERSION(3, 1, 2)
|
#if defined(_WIN32)
|
||||||
double scaling = display.GetPPI().GetWidth() / 96.;
|
double scaling = display.GetPPI().GetWidth() / 96.;
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << std::setprecision(3) << scaling;
|
ss << std::setprecision(3) << scaling;
|
||||||
|
|||||||
@@ -783,7 +783,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
printingstage_horizontal_sizer->Add(m_printing_stage_value, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, 0);
|
printingstage_horizontal_sizer->Add(m_printing_stage_value, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, 0);
|
||||||
printingstage_horizontal_sizer->Add(m_question_button, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(5));
|
printingstage_horizontal_sizer->Add(m_question_button, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(5));
|
||||||
printingstage_vertical_sizer->Add(printingstage_horizontal_sizer, 0, wxALIGN_CENTER_VERTICAL, 0);
|
printingstage_vertical_sizer->Add(printingstage_horizontal_sizer, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
printingstage_vertical_sizer->Add(m_printing_stage_underline, 0, wxEXPAND |wxALIGN_TOP, 0);
|
printingstage_vertical_sizer->Add(m_printing_stage_underline, 0, wxEXPAND, 0);
|
||||||
m_printing_stage_panel->SetSizer(printingstage_vertical_sizer);
|
m_printing_stage_panel->SetSizer(printingstage_vertical_sizer);
|
||||||
|
|
||||||
// Orca: display the end time of the print
|
// Orca: display the end time of the print
|
||||||
@@ -2122,7 +2122,7 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent)
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
sizer_box->Add(steps_sizer, 0, wxEXPAND | wxALIGN_LEFT | wxTOP, FromDIP(5));
|
sizer_box->Add(steps_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
sizer_box->Add(m_button_retry, 0, wxLEFT, FromDIP(28));
|
sizer_box->Add(m_button_retry, 0, wxLEFT, FromDIP(28));
|
||||||
sizer_box->Add(0, 0, 0, wxTOP, FromDIP(5));
|
sizer_box->Add(0, 0, 0, wxTOP, FromDIP(5));
|
||||||
m_filament_load_box->SetBackgroundColour(*wxWHITE);
|
m_filament_load_box->SetBackgroundColour(*wxWHITE);
|
||||||
|
|||||||
@@ -495,7 +495,7 @@ void SyncAmsInfoDialog::add_two_image_control()
|
|||||||
m_swipe_left_button->SetBitmap(m_swipe_left_bmp_normal.bmp());
|
m_swipe_left_button->SetBitmap(m_swipe_left_bmp_normal.bmp());
|
||||||
});
|
});
|
||||||
m_swipe_left_button->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::to_previous_plate, this);
|
m_swipe_left_button->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::to_previous_plate, this);
|
||||||
swipe_left__sizer->Add(m_swipe_left_button, 0, wxALIGN_CENTER | wxEXPAND | wxALIGN_CENTER_VERTICAL);
|
swipe_left__sizer->Add(m_swipe_left_button, 0, wxEXPAND);
|
||||||
swipe_left__sizer->AddStretchSpacer();
|
swipe_left__sizer->AddStretchSpacer();
|
||||||
view_two_thumbnail_sizer->Add(swipe_left__sizer, 0, wxEXPAND);
|
view_two_thumbnail_sizer->Add(swipe_left__sizer, 0, wxEXPAND);
|
||||||
view_two_thumbnail_sizer->AddSpacer(FromDIP(24));
|
view_two_thumbnail_sizer->AddSpacer(FromDIP(24));
|
||||||
@@ -507,19 +507,19 @@ void SyncAmsInfoDialog::add_two_image_control()
|
|||||||
m_left_image_button = new wxButton(m_two_image_panel, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(LEFT_THUMBNAIL_SIZE_WIDTH), FromDIP(LEFT_THUMBNAIL_SIZE_WIDTH)),
|
m_left_image_button = new wxButton(m_two_image_panel, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(LEFT_THUMBNAIL_SIZE_WIDTH), FromDIP(LEFT_THUMBNAIL_SIZE_WIDTH)),
|
||||||
wxBORDER_NONE | wxBU_AUTODRAW);
|
wxBORDER_NONE | wxBU_AUTODRAW);
|
||||||
m_left_sizer_thumbnail = create_sizer_thumbnail(m_left_image_button, true);
|
m_left_sizer_thumbnail = create_sizer_thumbnail(m_left_image_button, true);
|
||||||
m_two_image_panel_sizer->Add(m_left_sizer_thumbnail, FromDIP(0), wxALIGN_LEFT | wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, FromDIP(8));
|
m_two_image_panel_sizer->Add(m_left_sizer_thumbnail, FromDIP(0), wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, FromDIP(8));
|
||||||
m_two_image_panel_sizer->AddSpacer(FromDIP(5));
|
m_two_image_panel_sizer->AddSpacer(FromDIP(5));
|
||||||
|
|
||||||
m_right_image_button = new wxButton(m_two_image_panel, wxID_ANY, {}, wxDefaultPosition,
|
m_right_image_button = new wxButton(m_two_image_panel, wxID_ANY, {}, wxDefaultPosition,
|
||||||
wxSize(FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH), FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH)),
|
wxSize(FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH), FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH)),
|
||||||
wxBORDER_NONE | wxBU_AUTODRAW);
|
wxBORDER_NONE | wxBU_AUTODRAW);
|
||||||
m_right_sizer_thumbnail = create_sizer_thumbnail(m_right_image_button, false);
|
m_right_sizer_thumbnail = create_sizer_thumbnail(m_right_image_button, false);
|
||||||
m_two_image_panel_sizer->Add(m_right_sizer_thumbnail, FromDIP(0), wxALIGN_LEFT | wxEXPAND | wxRIGHT | wxTOP | wxBOTTOM, FromDIP(8));
|
m_two_image_panel_sizer->Add(m_right_sizer_thumbnail, FromDIP(0), wxEXPAND | wxRIGHT | wxTOP | wxBOTTOM, FromDIP(8));
|
||||||
m_two_image_panel->SetSizer(m_two_image_panel_sizer);
|
m_two_image_panel->SetSizer(m_two_image_panel_sizer);
|
||||||
m_two_image_panel->Layout();
|
m_two_image_panel->Layout();
|
||||||
m_two_image_panel->Fit();
|
m_two_image_panel->Fit();
|
||||||
|
|
||||||
view_two_thumbnail_sizer->Add(m_two_image_panel, FromDIP(0), wxALIGN_LEFT | wxEXPAND | wxTOP, FromDIP(2));
|
view_two_thumbnail_sizer->Add(m_two_image_panel, FromDIP(0), wxEXPAND | wxTOP, FromDIP(2));
|
||||||
}
|
}
|
||||||
view_two_thumbnail_sizer->AddSpacer(FromDIP(20));
|
view_two_thumbnail_sizer->AddSpacer(FromDIP(20));
|
||||||
auto swipe_right__sizer = new wxBoxSizer(wxVERTICAL);
|
auto swipe_right__sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
@@ -536,7 +536,7 @@ void SyncAmsInfoDialog::add_two_image_control()
|
|||||||
});
|
});
|
||||||
m_swipe_right_button->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::to_next_plate, this);
|
m_swipe_right_button->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::to_next_plate, this);
|
||||||
|
|
||||||
swipe_right__sizer->Add(m_swipe_right_button, 0, wxALIGN_CENTER | wxEXPAND | wxALIGN_CENTER_VERTICAL);
|
swipe_right__sizer->Add(m_swipe_right_button, 0, wxEXPAND);
|
||||||
swipe_right__sizer->AddStretchSpacer();
|
swipe_right__sizer->AddStretchSpacer();
|
||||||
view_two_thumbnail_sizer->Add(swipe_right__sizer, 0, wxEXPAND);
|
view_two_thumbnail_sizer->Add(swipe_right__sizer, 0, wxEXPAND);
|
||||||
view_two_thumbnail_sizer->AddStretchSpacer();
|
view_two_thumbnail_sizer->AddStretchSpacer();
|
||||||
@@ -546,7 +546,7 @@ void SyncAmsInfoDialog::add_two_image_control()
|
|||||||
m_choose_plate_sizer->AddStretchSpacer();
|
m_choose_plate_sizer->AddStretchSpacer();
|
||||||
|
|
||||||
wxStaticText *chose_combox_title = new wxStaticText(m_two_thumbnail_panel, wxID_ANY, _CTX(L_CONTEXT("Plate", "Sync_AMS"), "Sync_AMS"));
|
wxStaticText *chose_combox_title = new wxStaticText(m_two_thumbnail_panel, wxID_ANY, _CTX(L_CONTEXT("Plate", "Sync_AMS"), "Sync_AMS"));
|
||||||
m_choose_plate_sizer->Add(chose_combox_title, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL | wxEXPAND | wxTOP, FromDIP(6));
|
m_choose_plate_sizer->Add(chose_combox_title, 0, wxEXPAND | wxTOP, FromDIP(6));
|
||||||
m_choose_plate_sizer->AddSpacer(FromDIP(10));
|
m_choose_plate_sizer->AddSpacer(FromDIP(10));
|
||||||
|
|
||||||
m_combobox_plate = new ComboBox(m_two_thumbnail_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(60), -1), 0, NULL, wxCB_READONLY);
|
m_combobox_plate = new ComboBox(m_two_thumbnail_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(60), -1), 0, NULL, wxCB_READONLY);
|
||||||
@@ -563,7 +563,7 @@ void SyncAmsInfoDialog::add_two_image_control()
|
|||||||
m_two_thumbnail_panel->SetSizer(m_two_thumbnail_panel_sizer);
|
m_two_thumbnail_panel->SetSizer(m_two_thumbnail_panel_sizer);
|
||||||
m_two_thumbnail_panel->Layout();
|
m_two_thumbnail_panel->Layout();
|
||||||
m_two_thumbnail_panel->Fit();
|
m_two_thumbnail_panel->Fit();
|
||||||
m_sizer_main->Add(m_two_thumbnail_panel, FromDIP(0), wxALIGN_CENTER | wxEXPAND | wxLEFT | wxRIGHT, FromDIP(25));
|
m_sizer_main->Add(m_two_thumbnail_panel, FromDIP(0), wxEXPAND | wxLEFT | wxRIGHT, FromDIP(25));
|
||||||
|
|
||||||
update_swipe_button_state();
|
update_swipe_button_state();
|
||||||
}
|
}
|
||||||
@@ -717,9 +717,9 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
|
|||||||
m_colormap_btn = new CapsuleButton(m_scrolledWindow, PageType::ptColorMap, _L("Mapping"), true);
|
m_colormap_btn = new CapsuleButton(m_scrolledWindow, PageType::ptColorMap, _L("Mapping"), true);
|
||||||
m_override_btn = new CapsuleButton(m_scrolledWindow, PageType::ptOverride, _L("Overwriting"), false);
|
m_override_btn = new CapsuleButton(m_scrolledWindow, PageType::ptOverride, _L("Overwriting"), false);
|
||||||
m_mode_combox_sizer->AddSpacer(SyncAmsInfoDialogWidth / 2.0f - FromDIP(8) / 2.0f - m_colormap_btn->GetSize().GetX());
|
m_mode_combox_sizer->AddSpacer(SyncAmsInfoDialogWidth / 2.0f - FromDIP(8) / 2.0f - m_colormap_btn->GetSize().GetX());
|
||||||
m_mode_combox_sizer->Add(m_colormap_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2));
|
m_mode_combox_sizer->Add(m_colormap_btn, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||||
m_mode_combox_sizer->AddSpacer(FromDIP(8));
|
m_mode_combox_sizer->AddSpacer(FromDIP(8));
|
||||||
m_mode_combox_sizer->Add(m_override_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2));
|
m_mode_combox_sizer->Add(m_override_btn, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||||
m_mode_combox_sizer->AddSpacer(SyncAmsInfoDialogWidth / 2.0f - FromDIP(8) / 2.0f - m_override_btn->GetSize().GetX() - FromDIP(60));
|
m_mode_combox_sizer->AddSpacer(SyncAmsInfoDialogWidth / 2.0f - FromDIP(8) / 2.0f - m_override_btn->GetSize().GetX() - FromDIP(60));
|
||||||
m_reset_all_btn = new ScalableButton(m_scrolledWindow, wxID_ANY, "reset_gray", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,
|
m_reset_all_btn = new ScalableButton(m_scrolledWindow, wxID_ANY, "reset_gray", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,
|
||||||
true, 14);
|
true, 14);
|
||||||
@@ -727,12 +727,12 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
|
|||||||
m_reset_all_btn->SetBackgroundColour(*wxWHITE);
|
m_reset_all_btn->SetBackgroundColour(*wxWHITE);
|
||||||
m_reset_all_btn->SetToolTip(_L("Reset all filament mapping"));
|
m_reset_all_btn->SetToolTip(_L("Reset all filament mapping"));
|
||||||
|
|
||||||
m_mode_combox_sizer->Add(m_reset_all_btn, 0, wxALIGN_LEFT | wxEXPAND | wxALL, FromDIP(2));
|
m_mode_combox_sizer->Add(m_reset_all_btn, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||||
|
|
||||||
m_colormap_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); // update_when_change_map_mode(e.GetSelection());
|
m_colormap_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); // update_when_change_map_mode(e.GetSelection());
|
||||||
m_override_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this);
|
m_override_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this);
|
||||||
|
|
||||||
bSizer->Add(m_mode_combox_sizer, FromDIP(0), wxEXPAND | wxALIGN_LEFT | wxTOP, FromDIP(10));
|
bSizer->Add(m_mode_combox_sizer, FromDIP(0), wxEXPAND | wxTOP, FromDIP(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_basic_panel = new wxPanel(m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
m_basic_panel = new wxPanel(m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
@@ -1079,7 +1079,7 @@ void SyncAmsInfoDialog::check_empty_project()
|
|||||||
if (!temp_plate->get_objects_on_this_plate().empty()) {
|
if (!temp_plate->get_objects_on_this_plate().empty()) {
|
||||||
if (m_is_empty_project) { m_is_empty_project = false; }
|
if (m_is_empty_project) { m_is_empty_project = false; }
|
||||||
if (i < 9) {
|
if (i < 9) {
|
||||||
m_plate_number_choices_str.Add("0" + std::to_wstring(i + 1));
|
m_plate_number_choices_str.Add(wxString("0") + std::to_wstring(i + 1));
|
||||||
}
|
}
|
||||||
else if (i == 9) {
|
else if (i == 9) {
|
||||||
m_plate_number_choices_str.Add("10");
|
m_plate_number_choices_str.Add("10");
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ SysInfoDialog::SysInfoDialog()
|
|||||||
title_font.SetFamily(wxFONTFAMILY_ROMAN);
|
title_font.SetFamily(wxFONTFAMILY_ROMAN);
|
||||||
title_font.SetPointSize(22);
|
title_font.SetPointSize(22);
|
||||||
title->SetFont(title_font);
|
title->SetFont(title_font);
|
||||||
vsizer->Add(title, 0, wxEXPAND | wxALIGN_LEFT | wxTOP, wxGetApp().em_unit()/*50*/);
|
vsizer->Add(title, 0, wxEXPAND | wxTOP, wxGetApp().em_unit()/*50*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
// main_info_text
|
// main_info_text
|
||||||
|
|||||||
@@ -182,6 +182,7 @@ void TabButton::render(wxDC &dc)
|
|||||||
pt.y = (size.y - showimg.GetHeight()) / 2;
|
pt.y = (size.y - showimg.GetHeight()) / 2;
|
||||||
dc.DrawBitmap(showimg, pt);
|
dc.DrawBitmap(showimg, pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabButton::messureSize()
|
void TabButton::messureSize()
|
||||||
|
|||||||
@@ -1078,7 +1078,7 @@ void AMSControl::createAmsPanel(wxSimplebook *parent, int &idx, std::vector<AMSi
|
|||||||
else{
|
else{
|
||||||
auto ext_image = new AMSExtImage(book_panel, pos, m_total_ext_count, false);
|
auto ext_image = new AMSExtImage(book_panel, pos, m_total_ext_count, false);
|
||||||
book_sizer->Add(ams1, 0, wxLEFT, FromDIP(30));
|
book_sizer->Add(ams1, 0, wxLEFT, FromDIP(30));
|
||||||
book_sizer->Add(ext_image, 0, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(30));
|
book_sizer->Add(ext_image, 0, wxEXPAND | wxLEFT, FromDIP(30));
|
||||||
ext_image->setTotalExtNum(series_name, printer_type, total_ext_num);
|
ext_image->setTotalExtNum(series_name, printer_type, total_ext_num);
|
||||||
m_ext_image_list[infos[0].ams_id] = ext_image;
|
m_ext_image_list[infos[0].ams_id] = ext_image;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ Button::Button(wxWindow* parent, wxString text, wxString icon, long style, int i
|
|||||||
bool Button::Create(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id)
|
bool Button::Create(wxWindow* parent, wxString text, wxString icon, long style, int iconSize, wxWindowID btn_id)
|
||||||
{
|
{
|
||||||
StaticBox::Create(parent, btn_id, wxDefaultPosition, wxDefaultSize, style);
|
StaticBox::Create(parent, btn_id, wxDefaultPosition, wxDefaultSize, style);
|
||||||
state_handler.attach({&text_color});
|
state_handler.attach(std::vector<StateColor const*>{&text_color});
|
||||||
state_handler.update_binds();
|
state_handler.update_binds();
|
||||||
//BBS set default font
|
//BBS set default font
|
||||||
SetFont(Label::Body_14);
|
SetFont(Label::Body_14);
|
||||||
@@ -364,14 +364,6 @@ void Button::render(wxDC& dc)
|
|||||||
dc.SetBrush(*wxLIGHT_GREY);
|
dc.SetBrush(*wxLIGHT_GREY);
|
||||||
dc.SetPen(wxPen(*wxLIGHT_GREY));
|
dc.SetPen(wxPen(*wxLIGHT_GREY));
|
||||||
dc.DrawRectangle(pt, textSize.GetSize());
|
dc.DrawRectangle(pt, textSize.GetSize());
|
||||||
#endif
|
|
||||||
#ifdef __WXOSX__
|
|
||||||
pt.y -= this->textSize.x / 2;
|
|
||||||
#endif
|
|
||||||
#ifdef __APPLE__
|
|
||||||
if (Slic3r::is_mac_version_15()) {
|
|
||||||
pt.y -= FromDIP(1);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
dc.DrawText(text, pt);
|
dc.DrawText(text, pt);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,16 @@ CheckBox::CheckBox(wxWindow *parent, int id)
|
|||||||
Bind(wxEVT_ENTER_WINDOW, &CheckBox::updateBitmap, this);
|
Bind(wxEVT_ENTER_WINDOW, &CheckBox::updateBitmap, this);
|
||||||
Bind(wxEVT_LEAVE_WINDOW, &CheckBox::updateBitmap, this);
|
Bind(wxEVT_LEAVE_WINDOW, &CheckBox::updateBitmap, this);
|
||||||
#endif
|
#endif
|
||||||
|
update();
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxSize bestSize = GetBestSize();
|
||||||
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
|
SetSize(bestSize);
|
||||||
|
SetMinSize(bestSize);
|
||||||
|
#else
|
||||||
SetSize(m_on.GetBmpSize());
|
SetSize(m_on.GetBmpSize());
|
||||||
SetMinSize(m_on.GetBmpSize());
|
SetMinSize(m_on.GetBmpSize());
|
||||||
update();
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckBox::SetValue(bool value)
|
void CheckBox::SetValue(bool value)
|
||||||
@@ -54,8 +61,16 @@ void CheckBox::Rescale()
|
|||||||
m_on_focused.msw_rescale();
|
m_on_focused.msw_rescale();
|
||||||
m_half_focused.msw_rescale();
|
m_half_focused.msw_rescale();
|
||||||
m_off_focused.msw_rescale();
|
m_off_focused.msw_rescale();
|
||||||
|
update();
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxSize bestSize = GetBestSize();
|
||||||
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
|
SetSize(bestSize);
|
||||||
|
SetMinSize(bestSize);
|
||||||
|
#else
|
||||||
SetSize(m_on.GetBmpSize());
|
SetSize(m_on.GetBmpSize());
|
||||||
update();
|
SetMinSize(m_on.GetBmpSize());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckBox::update()
|
void CheckBox::update()
|
||||||
|
|||||||
@@ -13,9 +13,16 @@ RadioBox::RadioBox(wxWindow *parent)
|
|||||||
// SetBackgroundStyle(wxBG_STYLE_TRANSPARENT);
|
// SetBackgroundStyle(wxBG_STYLE_TRANSPARENT);
|
||||||
if (parent) SetBackgroundColour(parent->GetBackgroundColour());
|
if (parent) SetBackgroundColour(parent->GetBackgroundColour());
|
||||||
// Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
// Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
||||||
|
update();
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxSize bestSize = GetBestSize();
|
||||||
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
|
SetSize(bestSize);
|
||||||
|
SetMinSize(bestSize);
|
||||||
|
#else
|
||||||
SetSize(m_on.GetBmpSize());
|
SetSize(m_on.GetBmpSize());
|
||||||
SetMinSize(m_on.GetBmpSize());
|
SetMinSize(m_on.GetBmpSize());
|
||||||
update();
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadioBox::SetValue(bool value)
|
void RadioBox::SetValue(bool value)
|
||||||
@@ -34,8 +41,16 @@ void RadioBox::Rescale()
|
|||||||
{
|
{
|
||||||
m_on.msw_rescale();
|
m_on.msw_rescale();
|
||||||
m_off.msw_rescale();
|
m_off.msw_rescale();
|
||||||
SetSize(m_on.GetBmpSize());
|
|
||||||
update();
|
update();
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxSize bestSize = GetBestSize();
|
||||||
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
|
SetSize(bestSize);
|
||||||
|
SetMinSize(bestSize);
|
||||||
|
#else
|
||||||
|
SetSize(m_on.GetBmpSize());
|
||||||
|
SetMinSize(m_on.GetBmpSize());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadioBox::update() {
|
void RadioBox::update() {
|
||||||
|
|||||||
@@ -278,13 +278,11 @@ void SideButton::dorender(wxDC& dc, wxDC& text_dc)
|
|||||||
auto text = GetLabel();
|
auto text = GetLabel();
|
||||||
if (!text.IsEmpty()) {
|
if (!text.IsEmpty()) {
|
||||||
pt.y += (rcContent.height - textSize.y) / 2;
|
pt.y += (rcContent.height - textSize.y) / 2;
|
||||||
#ifdef __APPLE__
|
|
||||||
pt.y -= FromDIP(2);
|
|
||||||
#endif
|
|
||||||
text_dc.SetFont(GetFont());
|
text_dc.SetFont(GetFont());
|
||||||
text_dc.SetTextForeground(text_color.colorForStates(states));
|
text_dc.SetTextForeground(text_color.colorForStates(states));
|
||||||
text_dc.DrawText(text, pt);
|
text_dc.DrawText(text, pt);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SideButton::messureSize()
|
void SideButton::messureSize()
|
||||||
|
|||||||
@@ -180,8 +180,15 @@ void SwitchButton::Rescale()
|
|||||||
(i == 0 ? m_off : m_on).bmp() = bmp;
|
(i == 0 ? m_off : m_on).bmp() = bmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetSize(m_on.GetBmpSize());
|
|
||||||
update();
|
update();
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
wxSize bestSize = GetBestSize();
|
||||||
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
|
SetSize(bestSize);
|
||||||
|
SetMinSize(bestSize);
|
||||||
|
#else
|
||||||
|
SetSize(m_on.GetBmpSize());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchButton::update()
|
void SwitchButton::update()
|
||||||
|
|||||||
@@ -173,6 +173,12 @@ private:
|
|||||||
|
|
||||||
class WebViewWebKit : public wxWebViewWebKit
|
class WebViewWebKit : public wxWebViewWebKit
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
WebViewWebKit()
|
||||||
|
: wxWebViewWebKit(wxWebView::NewConfiguration(wxWebViewBackendWebKit))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
~WebViewWebKit() override
|
~WebViewWebKit() override
|
||||||
{
|
{
|
||||||
RemoveScriptMessageHandler("wx");
|
RemoveScriptMessageHandler("wx");
|
||||||
@@ -258,7 +264,7 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url)
|
|||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
wxWebView* webView = new WebViewEdge;
|
wxWebView* webView = new WebViewEdge;
|
||||||
#elif defined(__WXOSX__)
|
#elif defined(__WXOSX__)
|
||||||
wxWebView *webView = new WebViewWebKit;
|
wxWebView* webView = new WebViewWebKit;
|
||||||
#else
|
#else
|
||||||
auto webView = wxWebView::New();
|
auto webView = wxWebView::New();
|
||||||
#endif
|
#endif
|
||||||
@@ -331,7 +337,7 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url)
|
|||||||
bool WebView::CheckWebViewRuntime()
|
bool WebView::CheckWebViewRuntime()
|
||||||
{
|
{
|
||||||
wxWebViewFactoryEdge factory;
|
wxWebViewFactoryEdge factory;
|
||||||
auto wxVersion = factory.GetVersionInfo();
|
auto wxVersion = factory.GetVersionInfo(wxVersionContext::RunTime);
|
||||||
return wxVersion.GetMajor() != 0;
|
return wxVersion.GetMajor() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,14 +12,4 @@
|
|||||||
// later when we no longer need to undef _
|
// later when we no longer need to undef _
|
||||||
#define __(s) wxGetTranslation((s))
|
#define __(s) wxGetTranslation((s))
|
||||||
|
|
||||||
// legacy macros
|
|
||||||
// https://wiki.wxwidgets.org/EventTypes_and_Event-Table_Macros
|
|
||||||
#ifndef wxEVT_BUTTON
|
|
||||||
#define wxEVT_BUTTON wxEVT_COMMAND_BUTTON_CLICKED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef wxEVT_HTML_LINK_CLICKED
|
|
||||||
#define wxEVT_HTML_LINK_CLICKED wxEVT_COMMAND_HTML_LINK_CLICKED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user