mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 10:51:22 +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/slic3r/GUI/AMSDryControl.hpp
|
||||||
src/libslic3r/PresetBundle.cpp
|
src/libslic3r/PresetBundle.cpp
|
||||||
src/slic3r/GUI/CAD/DesignPanel.cpp
|
src/slic3r/GUI/CAD/DesignPanel.cpp
|
||||||
|
src/slic3r/GUI/CAD/SketchInlineEditor.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoPrimitive.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoPrimitive.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoSketch.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
|
// 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).
|
// 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) {
|
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('L', DesignSketchTool::Mode::Line, _L("Line — click start, then end"));
|
||||||
sk_key('R', DesignSketchTool::Mode::CornerRect, _L("Rectangle — click two opposite corners"));
|
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
|
// 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
|
// it afterwards left the header reading "Fillet 1" over a chamfer. Nothing in the
|
||||||
// opener resets the combo, so this order is safe.
|
// 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); };
|
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); };
|
if (m_dressup_type) m_dressup_type->SetSelection(1); open_feature(k_dress); };
|
||||||
for (int op = 0; op < 3; ++op)
|
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);
|
open_feature(k_bool);
|
||||||
if (m_bool_op) { m_bool_op->SetSelection(op); refresh_preview(); } };
|
if (m_bool_op) { m_bool_op->SetSelection(op); refresh_preview(); } };
|
||||||
for (int t = 0; t < 2; ++t)
|
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); };
|
open_feature(k_pat); if (m_pattern_type) m_pattern_type->SetSelection(t); };
|
||||||
|
|
||||||
auto* b_poly = icon_btn("design_polygon", _L("Polygon"));
|
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;
|
mate_ghost = false;
|
||||||
};
|
};
|
||||||
menu.Bind(wxEVT_MENU_HIGHLIGHT,
|
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);
|
const int i = e.GetMenuId() - (mate_base + 1);
|
||||||
// Off the palette (a verb row, the header, or nothing) — a stale ghost from the row
|
// 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.
|
// 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
|
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);
|
const int i = e.GetId() - (mate_base + 1);
|
||||||
if (i < 0 || i >= int(opts.size()) || !opts[i].viable) return;
|
if (i < 0 || i >= int(opts.size()) || !opts[i].viable) return;
|
||||||
drop_ghost(); // the real bodies are about to become the ghost's pose
|
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
|
// 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
|
// enumerated perfectly and fired nothing. Restricting the range keeps each half to its own ids
|
||||||
// regardless of bind order.
|
// 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;
|
const int i = e.GetMenuId() - base;
|
||||||
if (i < 0 || i >= int(bound.size()) || bound[i] == nullptr || bound[i]->hint == nullptr)
|
if (i < 0 || i >= int(bound.size()) || bound[i] == nullptr || bound[i]->hint == nullptr)
|
||||||
return;
|
return;
|
||||||
@@ -6674,7 +6674,7 @@ void DesignPanel::show_offer_menu(const wxPoint& screen_pos)
|
|||||||
set_status(wxGetTranslation(wxString::FromUTF8(bound[i]->hint)));
|
set_status(wxGetTranslation(wxString::FromUTF8(bound[i]->hint)));
|
||||||
m_status->Update(); // the popup owns the loop; without this the line repaints late
|
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)
|
}, 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;
|
const int i = e.GetId() - base;
|
||||||
if (i >= 0 && i < int(bound.size()) && bound[i])
|
if (i >= 0 && i < int(bound.size()) && bound[i])
|
||||||
run_offer_action(bound[i]->action);
|
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())));
|
constraint_reject_text(plan.reason, type), int(sel.size())));
|
||||||
return;
|
return;
|
||||||
case ConstraintPlan::Kind::AskValue:
|
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);
|
commit(plan.defs, v);
|
||||||
});
|
});
|
||||||
return;
|
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
|
// just sits there and the user has no idea what it wants. Say so in the title line and
|
||||||
// keep editing.
|
// keep editing.
|
||||||
ux_trace("refused", m_title, std::string("typed=") + m_buf);
|
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;
|
m_focus_pending = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <imgui/imgui_internal.h>
|
#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()
|
#define UL(s) Slic3r::GUI::I18N::translate_utf8((s)).c_str()
|
||||||
|
|
||||||
namespace Slic3r {
|
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 (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) {
|
} else if (is_revolve) {
|
||||||
if (btn(L("Revolve"), ok)) apply_revolve();
|
if (btn(_u8L("Revolve").c_str(), ok)) apply_revolve();
|
||||||
} else {
|
} 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(_u8L("Clear All").c_str(), {-1,0})) clear_all();
|
||||||
if (ImGui::Button(L("Close"), {-1,0})) m_parent.reset_all_gizmos();
|
if (ImGui::Button(_u8L("Close").c_str(), {-1,0})) m_parent.reset_all_gizmos();
|
||||||
|
|
||||||
GizmoImguiEnd();
|
GizmoImguiEnd();
|
||||||
ImGuiWrapper::pop_toolbar_style();
|
ImGuiWrapper::pop_toolbar_style();
|
||||||
|
|||||||
Reference in New Issue
Block a user