From 1880bd29ddc48764207720ede74cfde3cd2aaab2 Mon Sep 17 00:00:00 2001 From: Hanif Koh Date: Sun, 11 Oct 2026 14:54:55 +0800 Subject: [PATCH] Remove Never-Built and Stub Source Files SysInfoDialog, JumpPointSearch and WebUpdatePlugin are in no CMake list on any platform, and nothing includes ConfigExceptions.hpp, wxinit.h or Utils/Profile.hpp. MultiTaskModel holds only empty namespaces. Also drop the empty GUI_App::system_info() and comments that still mention SysInfoDialog. --- src/libslic3r/JumpPointSearch.cpp | 349 ---------------------------- src/libslic3r/JumpPointSearch.hpp | 39 ---- src/libslic3r/Utils.hpp | 1 - src/libslic3r/utils.cpp | 4 +- src/slic3r/CMakeLists.txt | 3 - src/slic3r/GUI/ConfigExceptions.hpp | 19 -- src/slic3r/GUI/GUI_App.cpp | 6 - src/slic3r/GUI/GUI_App.hpp | 1 - src/slic3r/GUI/MultiTaskModel.cpp | 6 - src/slic3r/GUI/MultiTaskModel.hpp | 11 - src/slic3r/GUI/SysInfoDialog.cpp | 232 ------------------ src/slic3r/GUI/SysInfoDialog.hpp | 36 --- src/slic3r/GUI/WebUpdatePlugin.cpp | 0 src/slic3r/GUI/WebUpdatePlugin.hpp | 0 src/slic3r/GUI/wxinit.h | 15 -- src/slic3r/Utils/Profile.hpp | 19 -- 16 files changed, 1 insertion(+), 740 deletions(-) delete mode 100644 src/libslic3r/JumpPointSearch.cpp delete mode 100644 src/libslic3r/JumpPointSearch.hpp delete mode 100644 src/slic3r/GUI/ConfigExceptions.hpp delete mode 100644 src/slic3r/GUI/MultiTaskModel.cpp delete mode 100644 src/slic3r/GUI/MultiTaskModel.hpp delete mode 100644 src/slic3r/GUI/SysInfoDialog.cpp delete mode 100644 src/slic3r/GUI/SysInfoDialog.hpp delete mode 100644 src/slic3r/GUI/WebUpdatePlugin.cpp delete mode 100644 src/slic3r/GUI/WebUpdatePlugin.hpp delete mode 100644 src/slic3r/GUI/wxinit.h delete mode 100644 src/slic3r/Utils/Profile.hpp diff --git a/src/libslic3r/JumpPointSearch.cpp b/src/libslic3r/JumpPointSearch.cpp deleted file mode 100644 index 9eb18017fb..0000000000 --- a/src/libslic3r/JumpPointSearch.cpp +++ /dev/null @@ -1,349 +0,0 @@ -#include "JumpPointSearch.hpp" -#include "BoundingBox.hpp" -#include "ExPolygon.hpp" -#include "Point.hpp" -#include "libslic3r/AStar.hpp" -#include "libslic3r/KDTreeIndirect.hpp" -#include "libslic3r/Polygon.hpp" -#include "libslic3r/Polyline.hpp" -#include "libslic3r/libslic3r.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -//#define DEBUG_FILES -#ifdef DEBUG_FILES -#include "libslic3r/SVG.hpp" -#endif - -namespace Slic3r { - -// execute fn for each pixel on the line. If fn returns false, terminate the iteration -template void dda(coord_t x0, coord_t y0, coord_t x1, coord_t y1, const PointFn &fn) -{ - coord_t dx = abs(x1 - x0); - coord_t dy = abs(y1 - y0); - coord_t x = x0; - coord_t y = y0; - coord_t n = 1 + dx + dy; - coord_t x_inc = (x1 > x0) ? 1 : -1; - coord_t y_inc = (y1 > y0) ? 1 : -1; - coord_t error = dx - dy; - dx *= 2; - dy *= 2; - - for (; n > 0; --n) { - if (!fn(x, y)) return; - - if (error > 0) { - x += x_inc; - error -= dy; - } else { - y += y_inc; - error += dx; - } - } -} - -// will draw the line twice, second time with and offset of 1 in the direction of normal -// may call the fn on the same coordiantes multiple times! -template void double_dda_with_offset(coord_t x0, coord_t y0, coord_t x1, coord_t y1, const PointFn &fn) -{ - Vec2d normal = Point{y1 - y0, x1 - x0}.cast().normalized(); - normal.x() = ceil(normal.x()); - normal.y() = ceil(normal.y()); - Point start_offset = Point(x0, y0) + (normal).cast(); - Point end_offset = Point(x1, y1) + (normal).cast(); - - dda(x0, y0, x1, y1, fn); - dda(start_offset.x(), start_offset.y(), end_offset.x(), end_offset.y(), fn); -} - -template class JPSTracer -{ -public: - // Use incoming_dir [0,0] for starting points, so that all directions are checked from that point - struct Node - { - CellPositionType position; - CellPositionType incoming_dir; - }; - - JPSTracer(CellPositionType target, CellQueryFn is_passable) : target(target), is_passable(is_passable) {} - -private: - CellPositionType target; - CellQueryFn is_passable; // should return boolean whether the cell is passable or not - - CellPositionType find_jump_point(CellPositionType start, CellPositionType forward_dir) const - { - CellPositionType next = start + forward_dir; - while (next != target && is_passable(next) && !(is_jump_point(next, forward_dir))) { next = next + forward_dir; } - - if (is_passable(next)) { - return next; - } else { - return start; - } - } - - bool is_jump_point(CellPositionType pos, CellPositionType forward_dir) const - { - if (abs(forward_dir.x()) + abs(forward_dir.y()) == 2) { - // diagonal - CellPositionType horizontal_check_dir = CellPositionType{forward_dir.x(), 0}; - CellPositionType vertical_check_dir = CellPositionType{0, forward_dir.y()}; - - if (!is_passable(pos - horizontal_check_dir) && is_passable(pos + forward_dir - 2 * horizontal_check_dir)) { return true; } - - if (!is_passable(pos - vertical_check_dir) && is_passable(pos + forward_dir - 2 * vertical_check_dir)) { return true; } - - if (find_jump_point(pos, horizontal_check_dir) != pos) { return true; } - - if (find_jump_point(pos, vertical_check_dir) != pos) { return true; } - - return false; - } else { // horizontal or vertical - CellPositionType side_dir = CellPositionType(forward_dir.y(), forward_dir.x()); - - if (!is_passable(pos + side_dir) && is_passable(pos + forward_dir + side_dir)) { return true; } - - if (!is_passable(pos - side_dir) && is_passable(pos + forward_dir - side_dir)) { return true; } - - return false; - } - } - -public: - template void foreach_reachable(const Node &from, Fn &&fn) const - { - const CellPositionType & pos = from.position; - const CellPositionType & forward_dir = from.incoming_dir; - std::vector dirs_to_check{}; - - if (abs(forward_dir.x()) + abs(forward_dir.y()) == 0) { // special case for starting point - dirs_to_check = all_directions; - } else if (abs(forward_dir.x()) + abs(forward_dir.y()) == 2) { - // diagonal - CellPositionType horizontal_check_dir = CellPositionType{forward_dir.x(), 0}; - CellPositionType vertical_check_dir = CellPositionType{0, forward_dir.y()}; - - if (!is_passable(pos - horizontal_check_dir) && is_passable(pos + forward_dir - 2 * horizontal_check_dir)) { - dirs_to_check.push_back(forward_dir - 2 * horizontal_check_dir); - } - - if (!is_passable(pos - vertical_check_dir) && is_passable(pos + forward_dir - 2 * vertical_check_dir)) { - dirs_to_check.push_back(forward_dir - 2 * vertical_check_dir); - } - - dirs_to_check.push_back(horizontal_check_dir); - dirs_to_check.push_back(vertical_check_dir); - dirs_to_check.push_back(forward_dir); - - } else { // horizontal or vertical - CellPositionType side_dir = CellPositionType(forward_dir.y(), forward_dir.x()); - - if (!is_passable(pos + side_dir) && is_passable(pos + forward_dir + side_dir)) { dirs_to_check.push_back(forward_dir + side_dir); } - - if (!is_passable(pos - side_dir) && is_passable(pos + forward_dir - side_dir)) { dirs_to_check.push_back(forward_dir - side_dir); } - dirs_to_check.push_back(forward_dir); - } - - for (const CellPositionType &dir : dirs_to_check) { - CellPositionType jp = find_jump_point(pos, dir); - if (jp != pos) fn(Node{jp, dir}); - } - } - - float distance(Node a, Node b) const { return (a.position - b.position).template cast().norm(); } - - float goal_heuristic(Node n) const { return n.position == target ? -1.f : (target - n.position).template cast().norm(); } - - size_t unique_id(Node n) const { return (static_cast(uint16_t(n.position.x())) << 16) + static_cast(uint16_t(n.position.y())); } - - const std::vector all_directions{{1, 0}, {1, 1}, {0, 1}, {-1, 1}, {-1, 0}, {-1, -1}, {0, -1}, {1, -1}}; -}; - -void JPSPathFinder::clear() -{ - inpassable.clear(); - max_search_box.max = Pixel(std::numeric_limits::min(), std::numeric_limits::min()); - max_search_box.min = Pixel(std::numeric_limits::max(), std::numeric_limits::max()); - add_obstacles(bed_shape); -} - -void JPSPathFinder::add_obstacles(const Lines &obstacles) -{ - auto store_obstacle = [&](coord_t x, coord_t y) { - max_search_box.max.x() = std::max(max_search_box.max.x(), x); - max_search_box.max.y() = std::max(max_search_box.max.y(), y); - max_search_box.min.x() = std::min(max_search_box.min.x(), x); - max_search_box.min.y() = std::min(max_search_box.min.y(), y); - inpassable.insert(Pixel{x, y}); - return true; - }; - - for (const Line &l : obstacles) { - Pixel start = pixelize(l.a); - Pixel end = pixelize(l.b); - double_dda_with_offset(start.x(), start.y(), end.x(), end.y(), store_obstacle); - } -} - -Polyline JPSPathFinder::find_path(const Point &p0, const Point &p1) -{ - Pixel start = pixelize(p0); - Pixel end = pixelize(p1); - if (inpassable.empty() || (start - end).cast().norm() < 3.0) { return Polyline{p0, p1}; } - - if (inpassable.find(start) != inpassable.end()) { - dda(start.x(), start.y(), end.x(), end.y(), [&](coord_t x, coord_t y) { - if (inpassable.find(Pixel(x, y)) == inpassable.end() || start == end) { // new start not found yet, and xy passable - start = Pixel(x, y); - return false; - } - return true; - }); - } - - if (inpassable.find(end) != inpassable.end()) { - dda(end.x(), end.y(), start.x(), start.y(), [&](coord_t x, coord_t y) { - if (inpassable.find(Pixel(x, y)) == inpassable.end() || start == end) { // new start not found yet, and xy passable - end = Pixel(x, y); - return false; - } - return true; - }); - } - - BoundingBox search_box = max_search_box; - search_box.max -= Pixel(1, 1); - search_box.min += Pixel(1, 1); - - BoundingBox bounding_square(Points{start, end}); - bounding_square.max += Pixel(5, 5); - bounding_square.min -= Pixel(5, 5); - coord_t bounding_square_size = 2 * std::max(bounding_square.size().x(), bounding_square.size().y()); - bounding_square.max.x() += (bounding_square_size - bounding_square.size().x()) / 2; - bounding_square.min.x() -= (bounding_square_size - bounding_square.size().x()) / 2; - bounding_square.max.y() += (bounding_square_size - bounding_square.size().y()) / 2; - bounding_square.min.y() -= (bounding_square_size - bounding_square.size().y()) / 2; - - // Intersection - limit the search box to a square area around the start and end, to fasten the path searching - search_box.max = search_box.max.cwiseMin(bounding_square.max); - search_box.min = search_box.min.cwiseMax(bounding_square.min); - - auto cell_query = [&](Pixel pixel) { return search_box.contains(pixel) && (pixel == start || pixel == end || inpassable.find(pixel) == inpassable.end()); }; - - JPSTracer tracer(end, cell_query); - using QNode = astar::QNode>; - - std::unordered_map astar_cache{}; - std::vector> out_path; - std::vector out_nodes; - - if (!astar::search_route(tracer, {start, {0, 0}}, std::back_inserter(out_nodes), astar_cache)) { - // path not found - just reconstruct the best path from astar cache. - // Note that astar_cache is NOT empty - at least the starting point should always be there - auto coordiante_func = [&astar_cache](size_t idx, size_t dim) { return float(astar_cache[idx].node.position[dim]); }; - std::vector keys; - keys.reserve(astar_cache.size()); - for (const auto &pair : astar_cache) { keys.push_back(pair.first); } - KDTreeIndirect<2, float, decltype(coordiante_func)> kd_tree(coordiante_func, keys); - size_t closest_qnode = find_closest_point(kd_tree, end.cast()); - - out_path.push_back(end); - while (closest_qnode != astar::Unassigned) { - out_path.push_back(astar_cache[closest_qnode].node.position); - closest_qnode = astar_cache[closest_qnode].parent; - } - } else { - for (const auto &node : out_nodes) { out_path.push_back(node.position); } - out_path.push_back(start); - } - -#ifdef DEBUG_FILES - auto scaled_points = [](const Points &ps) { - Points r; - for (const Point &p : ps) { r.push_back(Point::new_scale(p.x(), p.y())); } - return r; - }; - auto scaled_point = [](const Point &p) { return Point::new_scale(p.x(), p.y()); }; - ::Slic3r::SVG svg(debug_out_path(("path_jps" + std::to_string(print_z) + "_" + std::to_string(rand() % 1000)).c_str()).c_str(), - BoundingBox(scaled_point(search_box.min), scaled_point(search_box.max))); - for (const auto &p : inpassable) { svg.draw(scaled_point(p), "black", scale_(0.4)); } - for (const auto &qn : astar_cache) { svg.draw(scaled_point(qn.second.node.position), "blue", scale_(0.3)); } - svg.draw(Polyline(scaled_points(out_path)), "yellow", scale_(0.25)); - svg.draw(scaled_point(end), "purple", scale_(0.4)); - svg.draw(scaled_point(start), "green", scale_(0.4)); -#endif - - std::vector> tmp_path; - tmp_path.reserve(out_path.size()); - // Some path found, reverse and remove points that do not change direction - std::reverse(out_path.begin(), out_path.end()); - { - tmp_path.push_back(out_path.front()); // first point - for (size_t i = 1; i < out_path.size() - 1; i++) { - if ((out_path[i] - out_path[i - 1]).cast().normalized() != (out_path[i + 1] - out_path[i]).cast().normalized()) { tmp_path.push_back(out_path[i]); } - } - tmp_path.push_back(out_path.back()); // last_point - out_path = tmp_path; - } - -#ifdef DEBUG_FILES - svg.draw(Polyline(scaled_points(out_path)), "orange", scale_(0.20)); -#endif - - tmp_path.clear(); - // remove redundant jump points - there are points that change direction but are not needed - this inefficiency arises from the - // usage of grid search The removal alg tries to find the longest Px Px+k path without obstacles. If Px Px+k+1 is blocked, it will - // insert the Px+k point to result and continue search from Px+k - { - tmp_path.push_back(out_path.front()); // first point - size_t index_of_last_stored_point = 0; - for (size_t i = 1; i < out_path.size(); i++) { - if (i - index_of_last_stored_point < 2) continue; - bool passable = true; - auto store_obstacle = [&](coord_t x, coord_t y) { - if (Pixel(x, y) != start && Pixel(x, y) != end && inpassable.find(Pixel(x, y)) != inpassable.end()) { - passable = false; - return false; - } - return true; - }; - dda(tmp_path.back().x(), tmp_path.back().y(), out_path[i].x(), out_path[i].y(), store_obstacle); - if (!passable) { - tmp_path.push_back(out_path[i - 1]); - index_of_last_stored_point = i - 1; - } - } - tmp_path.push_back(out_path.back()); // last_point - out_path = tmp_path; - } - -#ifdef DEBUG_FILES - svg.draw(Polyline(scaled_points(out_path)), "red", scale_(0.15)); - svg.Close(); -#endif - - // before returing the path, transform it from pixels back to points. - // Also replace the first and last pixel by input points so that result path patches input params exactly. - for (Pixel &p : out_path) { p = unpixelize(p); } - out_path.front() = p0; - out_path.back() = p1; - - return Polyline(out_path); -} - -} // namespace Slic3r diff --git a/src/libslic3r/JumpPointSearch.hpp b/src/libslic3r/JumpPointSearch.hpp deleted file mode 100644 index b5fbf6aaf0..0000000000 --- a/src/libslic3r/JumpPointSearch.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once -#include "Line.hpp" -#ifndef SRC_LIBSLIC3R_JUMPPOINTSEARCH_HPP_ -#define SRC_LIBSLIC3R_JUMPPOINTSEARCH_HPP_ - -#include "BoundingBox.hpp" -#include "Polygon.hpp" -#include "libslic3r/Layer.hpp" -#include "libslic3r/Point.hpp" -#include "libslic3r/Polyline.hpp" -#include "libslic3r/libslic3r.h" -#include -#include - -namespace Slic3r { - -class JPSPathFinder -{ - using Pixel = Point; - std::unordered_set inpassable; - coordf_t print_z; - BoundingBox max_search_box; - Lines bed_shape; - - const coord_t resolution = scaled(1.5); - Pixel pixelize(const Point &p) { return p / resolution; } - Point unpixelize(const Pixel &p) { return p * resolution; } - -public: - JPSPathFinder() = default; - void init_bed_shape(const Points &bed_shape) { this->bed_shape = (to_lines(Polygon{bed_shape})); }; - void clear(); - void add_obstacles(const Lines &obstacles); - Polyline find_path(const Point &start, const Point &end); -}; - -} // namespace Slic3r - -#endif /* SRC_LIBSLIC3R_JUMPPOINTSEARCH_HPP_ */ diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 24ebe9a337..d9d30573fc 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -109,7 +109,6 @@ extern std::string format_memsize_MB(size_t n); extern std::string format_memsize(size_t bytes, unsigned int decimals = 1); // Return string to be added to the boost::log output to inform about the current process memory allocation. // The string is non-empty if the loglevel >= info (3) or ignore_loglevel==true. -// Latter is used to get the memory info from SysInfoDialog. extern std::string log_memory_info(bool ignore_loglevel = false); extern void disable_multi_threading(); // Returns the size of physical memory (RAM) in bytes. diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index cd9ecf100d..e8cc1759d5 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -1744,9 +1744,7 @@ std::string format_diameter_to_str(double diameter, int precision) return oss.str(); } -// Returns platform-specific string to be used as log output or parsed in SysInfoDialog. -// The latter parses the string with (semi)colons as separators, it should look about as -// "desc1: value1; desc2: value2" or similar (spaces should not matter). +// Returns platform-specific string to be used as log output. std::string log_memory_info(bool ignore_loglevel) { std::string out; diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 4c63c11e30..f31864f1d6 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -416,8 +416,6 @@ set(SLIC3R_GUI_SOURCES GUI/MultiSendMachineModel.hpp GUI/MultiTaskManagerPage.cpp GUI/MultiTaskManagerPage.hpp - GUI/MultiTaskModel.cpp - GUI/MultiTaskModel.hpp GUI/NetworkTestDialog.cpp GUI/NetworkTestDialog.hpp GUI/Notebook.cpp @@ -804,7 +802,6 @@ set(SLIC3R_GUI_SOURCES Utils/PrintHost.hpp Utils/Process.cpp Utils/Process.hpp - Utils/Profile.hpp Utils/RaycastManager.cpp Utils/RaycastManager.hpp Utils/Repetier.cpp diff --git a/src/slic3r/GUI/ConfigExceptions.hpp b/src/slic3r/GUI/ConfigExceptions.hpp deleted file mode 100644 index e3c5b08cea..0000000000 --- a/src/slic3r/GUI/ConfigExceptions.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -#include "libslic3r/Exception.hpp" - -namespace Slic3r { - -class ConfigError : public Slic3r::RuntimeError { - using Slic3r::RuntimeError::RuntimeError; -}; - -namespace GUI { - -class ConfigGUITypeError : public ConfigError { - using ConfigError::ConfigError; -}; - -} // namespace GUI -} // namespace Slic3r diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 8940e13e6e..b4fea35073 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4855,12 +4855,6 @@ void GUI_App::recreate_GUI(const wxString &msg_name) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "recreate_GUI exit"; } -void GUI_App::system_info() -{ - //SysInfoDialog dlg; - //dlg.ShowModal(); -} - void GUI_App::keyboard_shortcuts(ShortcutContext page, wxWindow* parent) { KBShortcutsDialog dlg(parent != nullptr ? parent : mainframe, page); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 0a2ddc5f17..e03c3d280a 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -519,7 +519,6 @@ public: void check_printer_presets(); void recreate_GUI(const wxString& message); - void system_info(); void keyboard_shortcuts(ShortcutContext page, wxWindow* parent = nullptr); // the main frame when null void troubleshoot(); void load_project(wxWindow *parent, wxString& input_file) const; diff --git a/src/slic3r/GUI/MultiTaskModel.cpp b/src/slic3r/GUI/MultiTaskModel.cpp deleted file mode 100644 index b23468b93e..0000000000 --- a/src/slic3r/GUI/MultiTaskModel.cpp +++ /dev/null @@ -1,6 +0,0 @@ - -namespace Slic3r { -namespace GUI { - -} // namespace GUI -} // namespace Slic3r diff --git a/src/slic3r/GUI/MultiTaskModel.hpp b/src/slic3r/GUI/MultiTaskModel.hpp deleted file mode 100644 index 6b233e9302..0000000000 --- a/src/slic3r/GUI/MultiTaskModel.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef slic3r_MultiTaskModel_hpp_ -#define slic3r_MultiTaskModel_hpp_ - -namespace Slic3r { -namespace GUI { - - -} // namespace GUI -} // namespace Slic3r - -#endif diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp deleted file mode 100644 index 585767d318..0000000000 --- a/src/slic3r/GUI/SysInfoDialog.cpp +++ /dev/null @@ -1,232 +0,0 @@ -#include "SysInfoDialog.hpp" -#include "I18N.hpp" -#include "3DScene.hpp" -#include "GUI.hpp" -#include "../Utils/UndoRedo.hpp" -#include "Plater.hpp" - -#include - -#include - -#include -#include -#include "GUI_App.hpp" -#include "MainFrame.hpp" -#include "wxExtensions.hpp" -#include "libslic3r/BlacklistedLibraryCheck.hpp" -#include "libslic3r/Color.hpp" -#include "format.hpp" - -#ifdef _WIN32 - // The standard Windows includes. - #define WIN32_LEAN_AND_MEAN - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include - #include -#endif /* _WIN32 */ - -namespace Slic3r { -namespace GUI { - -std::string get_main_info(bool format_as_html) -{ - std::stringstream out; - - std::string b_start = format_as_html ? "" : ""; - std::string b_end = format_as_html ? "" : ""; - std::string line_end = format_as_html ? "
" : "\n"; - - if (!format_as_html) - out << b_start << (wxGetApp().is_editor() ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME) << b_end << line_end; - out << b_start << "Version: " << b_end << SLIC3R_VERSION << line_end; - out << b_start << "Build: " << b_end << (wxGetApp().is_editor() ? SLIC3R_BUILD_ID : GCODEVIEWER_BUILD_ID) << line_end; - out << line_end; - out << b_start << "Operating System: " << b_end << wxPlatformInfo::Get().GetOperatingSystemFamilyName() << line_end; - out << b_start << "System Architecture: " << b_end << wxPlatformInfo::Get().GetArchName() << line_end; - out << b_start << -#if defined _WIN32 - "Windows Version: " -#else - // Hopefully some kind of unix / linux. - "System Version: " -#endif - << b_end << wxPlatformInfo::Get().GetOperatingSystemDescription() << line_end; - out << b_start << "Total RAM size [MB]: " << b_end << Slic3r::format_memsize_MB(Slic3r::total_physical_memory()); - - return out.str(); -} - -std::string get_mem_info(bool format_as_html) -{ - std::stringstream out; - - std::string b_start = format_as_html ? "" : ""; - std::string b_end = format_as_html ? "" : ""; - std::string line_end = format_as_html ? "
" : "\n"; - - std::string mem_info_str = log_memory_info(true); - std::istringstream mem_info(mem_info_str); - std::string value; - while (std::getline(mem_info, value, ':')) { - out << b_start << (value+": ") << b_end; - std::getline(mem_info, value, ';'); - out << value << line_end; - } - - const Slic3r::UndoRedo::Stack &stack = wxGetApp().plater()->undo_redo_stack_main(); - out << b_start << "RAM size reserved for the Undo / Redo stack: " << b_end << Slic3r::format_memsize_MB(stack.get_memory_limit()) << line_end; - out << b_start << "RAM size occupied by the Undo / Redo stack: " << b_end << Slic3r::format_memsize_MB(stack.memsize()) << line_end << line_end; - - return out.str(); -} - -SysInfoDialog::SysInfoDialog() - : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, (wxGetApp().is_editor() ? wxString(SLIC3R_APP_FULL_NAME) : wxString(GCODEVIEWER_APP_NAME)) + " - " + _L("System Information"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) -{ - wxColour bgr_clr = wxGetApp().get_window_default_clr();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); - SetBackgroundColour(bgr_clr); - SetFont(wxGetApp().normal_font()); - - wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); - hsizer->SetMinSize(wxSize(50 * wxGetApp().em_unit(), -1)); - - auto main_sizer = new wxBoxSizer(wxVERTICAL); - main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); - - // logo - m_logo_bmp = ScalableBitmap(this, wxGetApp().logo_name(), 192); - m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); - hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); - - wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); - hsizer->Add(vsizer, 1, wxEXPAND|wxLEFT, 20); - - // title - { - wxStaticText* title = new wxStaticText(this, wxID_ANY, wxGetApp().is_editor() ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME, wxDefaultPosition, wxDefaultSize); - wxFont title_font = wxGetApp().bold_font(); - title_font.SetFamily(wxFONTFAMILY_ROMAN); - title_font.SetPointSize(22); - title->SetFont(title_font); - vsizer->Add(title, 0, wxEXPAND | wxTOP, wxGetApp().em_unit()/*50*/); - } - - // main_info_text - wxFont font = get_default_font(this); - const auto text_clr = wxGetApp().get_label_clr_default();//wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); - auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue())); - auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue())); - - const int fs = font.GetPointSize() - 1; - int size[] = { static_cast(fs*1.5), static_cast(fs*1.4), static_cast(fs*1.3), fs, fs, fs, fs }; - - m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER); - { - m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); - m_html->SetBorders(2); - const auto text = wxString::Format( - "" - "" - "" - "%s" - "" - "" - "", bgr_clr_str, text_clr_str, text_clr_str, - get_main_info(true)); - m_html->SetPage(text); - vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit()); - } - - // opengl_info - m_opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); - { - m_opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); - m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); - m_opengl_info_html->SetBorders(10); - wxString blacklisted_libraries_message; -#ifdef WIN32 - std::wstring blacklisted_libraries = BlacklistedLibraryCheck::get_instance().get_blacklisted_string().c_str(); - if (! blacklisted_libraries.empty()) - blacklisted_libraries_message = wxString("
") + _L("Blacklisted libraries loaded into OrcaSlicer process:") + "
" + blacklisted_libraries; -#endif // WIN32 - const auto text = GUI::format_wxstr( - "" - "" - "" - "%s
%s
%s
%s" - "
" - "" - "", bgr_clr_str, text_clr_str, text_clr_str, - blacklisted_libraries_message, - get_mem_info(true), wxGetApp().get_gl_info(false), - "" + _L("SIMD is supported:") + " " + Eigen::SimdInstructionSetsInUse()); - - m_opengl_info_html->SetPage(text); - main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15); - } - - wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK); - m_btn_copy_to_clipboard = new wxButton(this, wxID_ANY, _L("Copy to Clipboard"), wxDefaultPosition, wxDefaultSize); - - buttons->Insert(0, m_btn_copy_to_clipboard, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 5); - m_btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this); - - this->SetEscapeId(wxID_OK); - this->Bind(wxEVT_BUTTON, &SysInfoDialog::onCloseDialog, this, wxID_OK); - main_sizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3); - - wxGetApp().UpdateDlgDarkUI(this, true); - -// this->Bind(wxEVT_LEFT_DOWN, &SysInfoDialog::onCloseDialog, this); -// logo->Bind(wxEVT_LEFT_DOWN, &SysInfoDialog::onCloseDialog, this); - - SetSizer(main_sizer); - main_sizer->SetSizeHints(this); -} - -void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect) -{ - m_logo_bmp.msw_rescale(); - m_logo->SetBitmap(m_logo_bmp.bmp()); - - wxFont font = get_default_font(this); - const int fs = font.GetPointSize() - 1; - int font_size[] = { static_cast(fs*1.5), static_cast(fs*1.4), static_cast(fs*1.3), fs, fs, fs, fs }; - - m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); - m_html->Refresh(); - - const int& em = em_unit(); - - msw_buttons_rescale(this, em, { wxID_OK, m_btn_copy_to_clipboard->GetId() }); - - m_opengl_info_html->SetMinSize(wxSize(-1, 16 * em)); - m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size); - m_opengl_info_html->Refresh(); - - const wxSize& size = wxSize(65 * em, 55 * em); - - SetMinSize(size); - Fit(); - - Refresh(); -} - -void SysInfoDialog::onCopyToClipboard(wxEvent &) -{ - wxTheClipboard->Open(); - const auto text = get_main_info(false) + "\n" + wxGetApp().get_gl_info(true); - wxTheClipboard->SetData(new wxTextDataObject(text)); - wxTheClipboard->Close(); -} - -void SysInfoDialog::onCloseDialog(wxEvent &) -{ - this->EndModal(wxID_CLOSE); -} - -} // namespace GUI -} // namespace Slic3r diff --git a/src/slic3r/GUI/SysInfoDialog.hpp b/src/slic3r/GUI/SysInfoDialog.hpp deleted file mode 100644 index 25a59f0fa7..0000000000 --- a/src/slic3r/GUI/SysInfoDialog.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef slic3r_GUI_SysInfoDialog_hpp_ -#define slic3r_GUI_SysInfoDialog_hpp_ - -#include -#include -#include - -#include "GUI_Utils.hpp" -#include "wxExtensions.hpp" - -namespace Slic3r { -namespace GUI { - -class SysInfoDialog : public DPIDialog -{ - ScalableBitmap m_logo_bmp; - wxStaticBitmap* m_logo; - wxHtmlWindow* m_opengl_info_html; - wxHtmlWindow* m_html; - - wxButton* m_btn_copy_to_clipboard; - -public: - SysInfoDialog(); - -protected: - void on_dpi_changed(const wxRect &suggested_rect) override; - -private: - void onCopyToClipboard(wxEvent &); - void onCloseDialog(wxEvent &); -}; -} // namespace GUI -} // namespace Slic3r - -#endif diff --git a/src/slic3r/GUI/WebUpdatePlugin.cpp b/src/slic3r/GUI/WebUpdatePlugin.cpp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/slic3r/GUI/WebUpdatePlugin.hpp b/src/slic3r/GUI/WebUpdatePlugin.hpp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/slic3r/GUI/wxinit.h b/src/slic3r/GUI/wxinit.h deleted file mode 100644 index 4c5ab9fb36..0000000000 --- a/src/slic3r/GUI/wxinit.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef slic3r_wxinit_hpp_ -#define slic3r_wxinit_hpp_ - -#include -#include -#include - -// Perl redefines a _ macro, so we undef this one -#undef _ - -// We do want to use translation however, so define it as __ so we can do a find/replace -// later when we no longer need to undef _ -#define __(s) wxGetTranslation((s)) - -#endif diff --git a/src/slic3r/Utils/Profile.hpp b/src/slic3r/Utils/Profile.hpp deleted file mode 100644 index 5fb1e31167..0000000000 --- a/src/slic3r/Utils/Profile.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef slic3r_GUI_Profile_hpp_ -#define slic3r_GUI_Profile_hpp_ - -// Profiling support using the Shiny intrusive profiler -//#define SLIC3R_PROFILE_GUI -#if defined(SLIC3R_PROFILE) && defined(SLIC3R_PROFILE_GUI) - #include - #define SLIC3R_GUI_PROFILE_FUNC() PROFILE_FUNC() - #define SLIC3R_GUI_PROFILE_BLOCK(name) PROFILE_BLOCK(name) - #define SLIC3R_GUI_PROFILE_UPDATE() PROFILE_UPDATE() - #define SLIC3R_GUI_PROFILE_OUTPUT(x) PROFILE_OUTPUT(x) -#else - #define SLIC3R_GUI_PROFILE_FUNC() - #define SLIC3R_GUI_PROFILE_BLOCK(name) - #define SLIC3R_GUI_PROFILE_UPDATE() - #define SLIC3R_GUI_PROFILE_OUTPUT(x) -#endif - -#endif // slic3r_GUI_Profile_hpp_