mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-18 14:32:36 +00:00
Merge branch 'main' into feature/texture_displacement
This commit is contained in:
@@ -292,5 +292,6 @@ src/slic3r/GUI/AMSDryControl.cpp
|
||||
src/slic3r/GUI/AMSDryControl.hpp
|
||||
src/libslic3r/PresetBundle.cpp
|
||||
src/slic3r/GUI/CAD/DesignPanel.cpp
|
||||
src/slic3r/GUI/CAD/SketchInlineEditor.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoPrimitive.cpp
|
||||
src/slic3r/GUI/Gizmos/GLGizmoSketch.cpp
|
||||
|
||||
@@ -403,7 +403,7 @@ DesignPanel::DesignPanel(wxWindow* parent)
|
||||
// bind to their default mode; the other modes stay in the toolbar flyout. Registered here
|
||||
// where select_tool is in scope; the closures run at key-press time (members are live by then).
|
||||
auto sk_key = [this, select_tool](int ch, DesignSketchTool::Mode m, const wxString& h) {
|
||||
m_keys_sketch[ch] = [this, select_tool, m, h] { select_tool(m, h); };
|
||||
m_keys_sketch[ch] = [select_tool, m, h] { select_tool(m, h); };
|
||||
};
|
||||
sk_key('L', DesignSketchTool::Mode::Line, _L("Line — click start, then end"));
|
||||
sk_key('R', DesignSketchTool::Mode::CornerRect, _L("Rectangle — click two opposite corners"));
|
||||
@@ -1445,16 +1445,16 @@ DesignPanel::DesignPanel(wxWindow* parent)
|
||||
// Choose FIRST, then open: open_tool() titles the card from m_dressup_type, so setting
|
||||
// it afterwards left the header reading "Fillet 1" over a chamfer. Nothing in the
|
||||
// opener resets the combo, so this order is safe.
|
||||
m_verb_actions["btn:dress#0"] = [this, open_feature, k_dress] {
|
||||
m_verb_actions["btn:dress#0"] = [this, open_feature] {
|
||||
if (m_dressup_type) m_dressup_type->SetSelection(0); open_feature(k_dress); };
|
||||
m_verb_actions["btn:dress#1"] = [this, open_feature, k_dress] {
|
||||
m_verb_actions["btn:dress#1"] = [this, open_feature] {
|
||||
if (m_dressup_type) m_dressup_type->SetSelection(1); open_feature(k_dress); };
|
||||
for (int op = 0; op < 3; ++op)
|
||||
m_verb_actions["btn:bool#" + std::to_string(op)] = [this, open_feature, k_bool, op] {
|
||||
m_verb_actions["btn:bool#" + std::to_string(op)] = [this, open_feature, op] {
|
||||
open_feature(k_bool);
|
||||
if (m_bool_op) { m_bool_op->SetSelection(op); refresh_preview(); } };
|
||||
for (int t = 0; t < 2; ++t)
|
||||
m_verb_actions["btn:pat#" + std::to_string(t)] = [this, open_feature, k_pat, t] {
|
||||
m_verb_actions["btn:pat#" + std::to_string(t)] = [this, open_feature, t] {
|
||||
open_feature(k_pat); if (m_pattern_type) m_pattern_type->SetSelection(t); };
|
||||
|
||||
auto* b_poly = icon_btn("design_polygon", _L("Polygon"));
|
||||
@@ -6625,7 +6625,7 @@ void DesignPanel::show_offer_menu(const wxPoint& screen_pos)
|
||||
mate_ghost = false;
|
||||
};
|
||||
menu.Bind(wxEVT_MENU_HIGHLIGHT,
|
||||
[this, cs_a, cs_b, opts, mate_base, &mate_ghost, drop_ghost](wxMenuEvent& e) {
|
||||
[this, cs_a, cs_b, opts, &mate_ghost, drop_ghost](wxMenuEvent& e) {
|
||||
const int i = e.GetMenuId() - (mate_base + 1);
|
||||
// Off the palette (a verb row, the header, or nothing) — a stale ghost from the row
|
||||
// you just left is worse than none, so it goes as soon as the cursor does.
|
||||
@@ -6635,7 +6635,7 @@ void DesignPanel::show_offer_menu(const wxPoint& screen_pos)
|
||||
m_viewport->repaint_now(); // synchronous: the popup owns the loop, a queued repaint is never serviced
|
||||
});
|
||||
|
||||
menu.Bind(wxEVT_MENU, [this, cs_a, cs_b, opts, mate_base, drop_ghost](wxCommandEvent& e) {
|
||||
menu.Bind(wxEVT_MENU, [this, cs_a, cs_b, opts, drop_ghost](wxCommandEvent& e) {
|
||||
const int i = e.GetId() - (mate_base + 1);
|
||||
if (i < 0 || i >= int(opts.size()) || !opts[i].viable) return;
|
||||
drop_ghost(); // the real bodies are about to become the ghost's pose
|
||||
@@ -6666,7 +6666,7 @@ void DesignPanel::show_offer_menu(const wxPoint& screen_pos)
|
||||
// status message on screen, and clicking one created nothing at all. The whole mate palette
|
||||
// enumerated perfectly and fired nothing. Restricting the range keeps each half to its own ids
|
||||
// regardless of bind order.
|
||||
menu.Bind(wxEVT_MENU_HIGHLIGHT, [this, &bound, base](wxMenuEvent& e) {
|
||||
menu.Bind(wxEVT_MENU_HIGHLIGHT, [this, &bound](wxMenuEvent& e) {
|
||||
const int i = e.GetMenuId() - base;
|
||||
if (i < 0 || i >= int(bound.size()) || bound[i] == nullptr || bound[i]->hint == nullptr)
|
||||
return;
|
||||
@@ -6674,7 +6674,7 @@ void DesignPanel::show_offer_menu(const wxPoint& screen_pos)
|
||||
set_status(wxGetTranslation(wxString::FromUTF8(bound[i]->hint)));
|
||||
m_status->Update(); // the popup owns the loop; without this the line repaints late
|
||||
}, base, base + 499); // 499: the mate section starts at base + 500 (see mate_base)
|
||||
menu.Bind(wxEVT_MENU, [this, &bound, base](wxCommandEvent& e) {
|
||||
menu.Bind(wxEVT_MENU, [this, &bound](wxCommandEvent& e) {
|
||||
const int i = e.GetId() - base;
|
||||
if (i >= 0 && i < int(bound.size()) && bound[i])
|
||||
run_offer_action(bound[i]->action);
|
||||
@@ -7935,7 +7935,7 @@ void DesignPanel::apply_live_constraint(SketchConstraintType type)
|
||||
constraint_reject_text(plan.reason, type), int(sel.size())));
|
||||
return;
|
||||
case ConstraintPlan::Kind::AskValue:
|
||||
m_viewport->open_inline_value(plan.prefill, [this, plan, commit](double v) {
|
||||
m_viewport->open_inline_value(plan.prefill, [plan, commit](double v) {
|
||||
commit(plan.defs, v);
|
||||
});
|
||||
return;
|
||||
|
||||
@@ -121,7 +121,7 @@ void SketchInlineEditor::do_commit()
|
||||
// just sits there and the user has no idea what it wants. Say so in the title line and
|
||||
// keep editing.
|
||||
ux_trace("refused", m_title, std::string("typed=") + m_buf);
|
||||
m_err = (m_buf[0] == '\0') ? into_u8(_L("Enter a number")) : into_u8(_L("Not a number"));
|
||||
m_err = (m_buf[0] == '\0') ? _u8L("Enter a number") : _u8L("Not a number");
|
||||
m_focus_pending = true;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#endif
|
||||
#include <imgui/imgui_internal.h>
|
||||
|
||||
#define L(s) Slic3r::GUI::I18N::translate((s)).c_str()
|
||||
#define UL(s) Slic3r::GUI::I18N::translate_utf8((s)).c_str()
|
||||
|
||||
namespace Slic3r {
|
||||
@@ -374,15 +373,15 @@ void GLGizmoSketch::on_render_input_window(float x, float y, float bottom_limit)
|
||||
};
|
||||
|
||||
if (m_sp.is_pocket && has_sel) {
|
||||
if (btn(L("Pocket (Cut)"), ok)) apply_pocket();
|
||||
if (btn(_u8L("Pocket (Cut)").c_str(), ok)) apply_pocket();
|
||||
} else if (is_revolve) {
|
||||
if (btn(L("Revolve"), ok)) apply_revolve();
|
||||
if (btn(_u8L("Revolve").c_str(), ok)) apply_revolve();
|
||||
} else {
|
||||
if (btn(L("Extrude"), ok)) apply_extrude();
|
||||
if (btn(_u8L("Extrude").c_str(), ok)) apply_extrude();
|
||||
}
|
||||
|
||||
if (ImGui::Button(L("Clear All"), {-1,0})) clear_all();
|
||||
if (ImGui::Button(L("Close"), {-1,0})) m_parent.reset_all_gizmos();
|
||||
if (ImGui::Button(_u8L("Clear All").c_str(), {-1,0})) clear_all();
|
||||
if (ImGui::Button(_u8L("Close").c_str(), {-1,0})) m_parent.reset_all_gizmos();
|
||||
|
||||
GizmoImguiEnd();
|
||||
ImGuiWrapper::pop_toolbar_style();
|
||||
|
||||
Reference in New Issue
Block a user