diff --git a/src/slic3r/GUI/FilamentGroupPopup.cpp b/src/slic3r/GUI/FilamentGroupPopup.cpp index df78e69a80..799ded38fd 100644 --- a/src/slic3r/GUI/FilamentGroupPopup.cpp +++ b/src/slic3r/GUI/FilamentGroupPopup.cpp @@ -4,16 +4,15 @@ #include "wx/dcgraph.h" #include "I18N.hpp" #include "PartPlate.hpp" +#include "Widgets/HyperLink.hpp" namespace Slic3r { namespace GUI { static const wxColour LabelEnableColor = wxColour("#262E30"); static const wxColour LabelDisableColor = wxColour("#ACACAC"); static const wxColour GreyColor = wxColour("#6B6B6B"); -static const wxColour GreenColor = wxColour("#009688"); static const wxColour BackGroundColor = wxColour("#FFFFFF"); - static bool should_pop_up() { const auto &preset_bundle = wxGetApp().preset_bundle; @@ -47,6 +46,37 @@ static void set_prefered_map_mode(FilamentMapMode mode) app_config->set("prefered_filament_map_mode", mode_str); } +bool play_dual_extruder_slice_video() +{ + if (wxLaunchDefaultBrowser("https://e.bambulab.com/t?c=HDB24RlwSmt77YFH")) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("Video is being played using the system's default browser."); + return true; + } + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format("launch system's default browser failed"); + return false; +} + +bool play_dual_extruder_print_tpu_video() +{ + const wxString video_url = "https://e.bambulab.com/t?c=fwWqpBg37Liel92N"; + if (wxLaunchDefaultBrowser(video_url)){ + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("Print Tpu Video is being played using the system's default browser."); + return true; + } + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format("launch system's default browser failed"); + return false; +} + +bool open_filament_group_wiki() +{ + if (wxLaunchDefaultBrowser("https://e.bambulab.com/t?c=mOkvsXkJ9pldGYp9")) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("Wiki is being displayed using the system's default browser."); + return true; + } + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format("launch system's default browser failed"); + return false; +} + void FilamentGroupPopup::CreateBmps() { checked_bmp = create_scaled_bitmap("radio_on", nullptr, 16);; // ORCA match icons @@ -146,16 +176,20 @@ FilamentGroupPopup::FilamentGroupPopup(wxWindow *parent) : PopupWindow(parent, w { wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL); - - const std::string wiki_path = Slic3r::resources_dir() + "/wiki/filament_group_wiki_zh.html"; // NEEDFIX this link is broken - - auto* wiki_sizer = new wxBoxSizer(wxHORIZONTAL); - wiki_link = new HyperLink(this, _L("Wiki Guide"), wxString(wiki_path.c_str())); // ORCA - wiki_sizer->Add(wiki_link, 0, wxALIGN_CENTER | wxALL, FromDIP(3)); - - button_sizer->Add(wiki_sizer, 0, wxLEFT, horizontal_margin); + // ORCA Unified hyperlinks + video_link = new HyperLink(this, _L("Video tutorial")); + video_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent& e) + { + play_dual_extruder_slice_video(); + wxGetApp().app_config->set("play_slicing_video", "false"); + }); + button_sizer->Add(video_link, 0, wxLEFT, horizontal_margin + FromDIP(3)); button_sizer->AddStretchSpacer(); + wiki_link = new HyperLink(this, _L("Wiki Guide")); + wiki_link->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent&) { open_filament_group_wiki(); }); + button_sizer->Add(wiki_link, 0, wxLEFT, horizontal_margin); + top_sizer->Add(button_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, horizontal_margin); } diff --git a/src/slic3r/GUI/FilamentGroupPopup.hpp b/src/slic3r/GUI/FilamentGroupPopup.hpp index 1689c9c898..2355b13e9e 100644 --- a/src/slic3r/GUI/FilamentGroupPopup.hpp +++ b/src/slic3r/GUI/FilamentGroupPopup.hpp @@ -14,6 +14,10 @@ class PartPlate; class Plater; +bool play_dual_extruder_slice_video(); +bool play_dual_extruder_print_tpu_video(); +bool open_filament_group_wiki(); + class FilamentGroupPopup : public PopupWindow { public: @@ -69,6 +73,7 @@ private: wxStaticText *wiki_link; + wxStaticText *video_link; PartPlate* partplate_ref{ nullptr }; Plater* plater_ref{ nullptr }; diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 7f97ff8046..2608262944 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -20,6 +20,7 @@ #include "GUI_Utils.hpp" #include "GUI.hpp" #include "GLCanvas3D.hpp" +#include "FilamentGroupPopup.hpp" #include "GLToolbar.hpp" #include "GUI_Preview.hpp" #include "libslic3r/Print.hpp" @@ -2773,13 +2774,12 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding) auto link_filament_group_wiki = [&](const std::string& label) { ImVec2 wiki_part_size = ImGui::CalcTextSize(label.c_str()); - - ImColor HyperColor = ImColor(0, 150, 136, 255).Value; + ImColor HyperColor = ImColor(0, 150, 136, 255); // ORCA match color ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); imgui.text(label.c_str()); ImGui::PopStyleColor(); - // underline + // ORCA use underline to match hyperlink style ImVec2 lineEnd = ImGui::GetItemRectMax(); lineEnd.y -= 2.0f; ImVec2 lineStart = lineEnd; @@ -2788,8 +2788,7 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding) // click behavior if (ImGui::IsMouseHoveringRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax(), true)) { if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { - std::string wiki_path = Slic3r::resources_dir() + "/wiki/filament_group_wiki_zh.html"; - wxLaunchDefaultBrowser(wxString(wiki_path.c_str())); + open_filament_group_wiki(); } } }; @@ -2996,8 +2995,9 @@ void GCodeViewer::render_legend_color_arr_recommen(float window_padding) link_text(_u8L("Regroup filament")); ImGui::SameLine(); - ImGui::SetCursorPosX(ImGui::GetWindowContentRegionWidth() - window_padding - ImGui::CalcTextSize("Tips").x); - link_filament_group_wiki(_u8L("Tips")); + std::string wiki_str = _u8L("Wiki Guide"); // ORCA + ImGui::SetCursorPosX(ImGui::GetWindowContentRegionWidth() - window_padding - ImGui::CalcTextSize(wiki_str.c_str()).x); + link_filament_group_wiki(wiki_str); ImGui::EndChild(); }