diff --git a/resources/images/filament_dark_transparent.svg b/resources/images/filament_dark_transparent.svg new file mode 100644 index 0000000000..c0c609157f --- /dev/null +++ b/resources/images/filament_dark_transparent.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/next_item_dark_disable.svg b/resources/images/next_item_dark_disable.svg new file mode 100644 index 0000000000..4612e648d3 --- /dev/null +++ b/resources/images/next_item_dark_disable.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/previous_item_dark_disable.svg b/resources/images/previous_item_dark_disable.svg new file mode 100644 index 0000000000..6a92757a0d --- /dev/null +++ b/resources/images/previous_item_dark_disable.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/transparent_material_up.svg b/resources/images/transparent_material_up.svg new file mode 100644 index 0000000000..bda02cee2f --- /dev/null +++ b/resources/images/transparent_material_up.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 9c98cdc9ef..1f9c980a9d 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -34,7 +34,8 @@ const int LEFT_OFFSET = 2; { m_arraw_bitmap_gray = ScalableBitmap(this, "drop_down2", FromDIP(8)); m_arraw_bitmap_white = ScalableBitmap(this, "topbar_dropdown", 12); - m_transparent_mitem = ScalableBitmap(this, "transparent_material_item", FromDIP(50)); + m_transparent_mitem = ScalableBitmap(this, "transparent_material_up", FromDIP(16)); + m_filament_wheel_transparent = ScalableBitmap(this, "filament_transparent", FromDIP(20));//wxGetApp().dark_mode() ? "filament_dark_transparent" //m_ams_wheel_mitem = ScalableBitmap(this, "ams_wheel", FromDIP(25)); m_ams_wheel_mitem = ScalableBitmap(this, "ams_wheel_narrow", 25); m_ams_not_match = ScalableBitmap(this, "filament_not_mactch", 25); @@ -206,7 +207,7 @@ void MaterialItem::doRender(wxDC& dc) auto acolor = m_ams_coloul; change_the_opacity(acolor); - if (mcolor.Alpha() == 0 || acolor.Alpha() == 0) { + if (mcolor.Alpha() == 0) { dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(1), FromDIP(1)); } @@ -315,7 +316,11 @@ void MaterialItem::doRender(wxDC& dc) wheel_left += m_ams_wheel_mitem.GetBmpSize().x; dc.DrawBitmap(m_ams_not_match.bmp(), (size.x - m_ams_not_match.GetBmpWidth()) / 2 - FromDIP(LEFT_OFFSET), wheel_top); } else { - dc.DrawBitmap(m_ams_wheel_mitem.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + if (mcolor.Alpha() == 0) { + dc.DrawBitmap(m_filament_wheel_transparent.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + } else { + dc.DrawBitmap(m_ams_wheel_mitem.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + } } } @@ -406,8 +411,8 @@ void MaterialSyncItem::doRender(wxDC &dc) auto acolor = m_ams_coloul; change_the_opacity(acolor); - if (mcolor.Alpha() == 0 || acolor.Alpha() == 0) { - dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(1), FromDIP(1)); + if (mcolor.Alpha() == 0) { + dc.DrawBitmap(m_transparent_mitem.bmp(), FromDIP(0), FromDIP(0)); } if (!IsEnabled()) { @@ -503,7 +508,11 @@ void MaterialSyncItem::doRender(wxDC &dc) auto wheel_left = (GetSize().x / 2 - m_ams_wheel_mitem.GetBmpSize().x) / 2 + FromDIP(2); auto wheel_top = ((float) GetSize().y * 0.6 - m_ams_wheel_mitem.GetBmpSize().y) / 2 + (float) GetSize().y * 0.4; if (m_match) {// different with parent - dc.DrawBitmap(m_ams_wheel_mitem.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + if (mcolor.Alpha() == 0) { + dc.DrawBitmap(m_filament_wheel_transparent.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + } else { + dc.DrawBitmap(m_ams_wheel_mitem.bmp(), wheel_left - FromDIP(LEFT_OFFSET), wheel_top); + } } //not draw m_ams_not_match } diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index 57389f36c3..2d0fa41f04 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -89,6 +89,7 @@ public: ScalableBitmap m_arraw_bitmap_gray; ScalableBitmap m_arraw_bitmap_white; ScalableBitmap m_transparent_mitem; + ScalableBitmap m_filament_wheel_transparent; ScalableBitmap m_ams_wheel_mitem; ScalableBitmap m_ams_not_match; diff --git a/src/slic3r/GUI/BaseTransparentDPIFrame.cpp b/src/slic3r/GUI/BaseTransparentDPIFrame.cpp index 9795934001..2b8ea95586 100644 --- a/src/slic3r/GUI/BaseTransparentDPIFrame.cpp +++ b/src/slic3r/GUI/BaseTransparentDPIFrame.cpp @@ -205,6 +205,15 @@ void BaseTransparentDPIFrame::call_start_gradual_disappearance()//for ok or canc start_gradual_disappearance(); } +void BaseTransparentDPIFrame::restart() { + m_display_stage = 0; + m_enter_window_valid = true; + SetTransparent(m_init_transparent); + if (m_refresh_timer) { + clear_timer_count(); + m_refresh_timer->Start(ANIMATION_REFRESH_INTERVAL); + } +} void BaseTransparentDPIFrame::start_gradual_disappearance() { clear_timer_count(); diff --git a/src/slic3r/GUI/BaseTransparentDPIFrame.hpp b/src/slic3r/GUI/BaseTransparentDPIFrame.hpp index 54a604cdff..7e37c83144 100644 --- a/src/slic3r/GUI/BaseTransparentDPIFrame.hpp +++ b/src/slic3r/GUI/BaseTransparentDPIFrame.hpp @@ -39,6 +39,7 @@ public: virtual void on_timer(wxTimerEvent &event); void set_target_pos_and_gradual_disappearance(wxPoint pos); void call_start_gradual_disappearance(); + void restart(); protected: Button *m_button_ok = nullptr; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 9d3f801eeb..5e7d51597b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2909,9 +2909,10 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) if (m_sna_dialog) { m_sna_dialog->on_hide(); } - m_fna_dialog.reset(); + m_fna_dialog->update_info(temp_fsa_info); + } else { + m_fna_dialog = std::make_shared(temp_fsa_info); } - m_fna_dialog = std::make_shared(temp_fsa_info); m_fna_dialog->on_show(); } @@ -3037,9 +3038,10 @@ void Sidebar::pop_sync_nozzle_and_ams_ialog() { if (m_fna_dialog) { m_fna_dialog->on_hide(); } - m_sna_dialog.reset(); + m_sna_dialog->update_info(temp_na_info); + } else { + m_sna_dialog = std::make_shared(temp_na_info); } - m_sna_dialog = std::make_shared(temp_na_info); m_sna_dialog->on_show(); } diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index b0595ce050..b7c3df2b8f 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -165,6 +165,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_thumbnailPanel->SetMinSize(wxSize(FromDIP(198), FromDIP(198))); m_thumbnailPanel->SetMaxSize(wxSize(FromDIP(198), FromDIP(198))); m_thumbnailPanel->SetBackgroundColour(*wxWHITE); + m_thumbnailPanel->SetToolTip(_L("If the transparency of the mapping changes, this thumbnail is for reference only.")); m_sizer_thumbnail->Add(m_thumbnailPanel, 0, wxALIGN_CENTER, 0); m_panel_image->SetSizer(m_sizer_thumbnail); m_panel_image->Layout(); @@ -4038,7 +4039,7 @@ void SelectMachineDialog::change_default_normal(int old_filament_id, wxColour te wxColour temp_ams_color_in_loop = m_cur_colors_in_thumbnail[filament_id]; wxColour ams_color = adjust_color_for_render(temp_ams_color_in_loop); //change color - new_px[3] = origin_px[3]; // alpha + new_px[3] = ams_color.Alpha(); //origin_px[3]; // alpha int origin_rgb = origin_px[0] + origin_px[1] + origin_px[2]; int no_light_px_rgb = no_light_px[0] + no_light_px[1] + no_light_px[2]; unsigned char i = 0; diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 651804b996..279fc5a577 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -233,6 +233,7 @@ void SyncAmsInfoDialog::set_default_normal(const ThumbnailData &data) image.SetAlpha((int) c, (int) r, px[3]); } } + //image.SaveFile("E:/preview.png", wxBITMAP_TYPE_PNG); image = image.Rescale(FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH), FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH)); m_right_image_button->SetBitmap(image); auto extruders = wxGetApp().plater()->get_partplate_list().get_plate(m_specify_plate_idx)->get_extruders(); @@ -459,15 +460,23 @@ void SyncAmsInfoDialog::update_more_setting(bool layout) void SyncAmsInfoDialog::init_bitmaps() { - m_swipe_left_bmp_normal = ScalableBitmap(this, "previous_item", m_bmp_pix_cont); - m_swipe_left_bmp_hover = ScalableBitmap(this, "previous_item_hover", m_bmp_pix_cont); - m_swipe_left_bmp_disable = ScalableBitmap(this, "previous_item_disable", m_bmp_pix_cont); - m_swipe_right_bmp_normal = ScalableBitmap(this, "next_item", m_bmp_pix_cont); - m_swipe_right_bmp_hover = ScalableBitmap(this, "next_item_hover", m_bmp_pix_cont); - m_swipe_right_bmp_disable = ScalableBitmap(this, "next_item_disable", m_bmp_pix_cont); + if (wxGetApp().dark_mode()) { + m_swipe_left_bmp_normal = ScalableBitmap(this, "previous_item", m_bmp_pix_cont); + m_swipe_left_bmp_hover = ScalableBitmap(this, "previous_item_disable", m_bmp_pix_cont); + m_swipe_left_bmp_disable = ScalableBitmap(this, "previous_item_dark_disable", m_bmp_pix_cont); + m_swipe_right_bmp_normal = ScalableBitmap(this, "next_item", m_bmp_pix_cont); + m_swipe_right_bmp_hover = ScalableBitmap(this, "next_item_disable", m_bmp_pix_cont); + m_swipe_right_bmp_disable = ScalableBitmap(this, "next_item_dark_disable", m_bmp_pix_cont); + } else { + m_swipe_left_bmp_normal = ScalableBitmap(this, "previous_item", m_bmp_pix_cont); + m_swipe_left_bmp_hover = ScalableBitmap(this, "previous_item_hover", m_bmp_pix_cont); + m_swipe_left_bmp_disable = ScalableBitmap(this, "previous_item_disable", m_bmp_pix_cont); + m_swipe_right_bmp_normal = ScalableBitmap(this, "next_item", m_bmp_pix_cont); + m_swipe_right_bmp_hover = ScalableBitmap(this, "next_item_hover", m_bmp_pix_cont); + m_swipe_right_bmp_disable = ScalableBitmap(this, "next_item_disable", m_bmp_pix_cont); + } } - void SyncAmsInfoDialog::add_two_image_control() {// thumbnail m_two_thumbnail_panel = new StaticBox(this); @@ -515,6 +524,7 @@ void SyncAmsInfoDialog::add_two_image_control() wxSize(FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH), FromDIP(RIGHT_THUMBNAIL_SIZE_WIDTH)), wxBORDER_NONE | wxBU_AUTODRAW); m_right_image_button->SetBackgroundColour(wxGetApp().dark_mode() ? wxColour(61, 61, 61, 0) : wxColour(238, 238, 238, 0)); + m_right_image_button->SetToolTip(_L("If the transparency of the mapping changes, this thumbnail is for reference only.")); 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->SetSizer(m_two_image_panel_sizer); @@ -4147,7 +4157,7 @@ void SyncAmsInfoDialog::change_default_normal(int old_filament_id, wxColour temp wxColour temp_ams_color_in_loop = m_cur_colors_in_thumbnail[filament_id]; wxColour ams_color = adjust_color_for_render(temp_ams_color_in_loop); // change color - new_px[3] = origin_px[3]; // alpha + new_px[3] = ams_color.Alpha(); //origin_px[3]; // alpha int origin_rgb = origin_px[0] + origin_px[1] + origin_px[2]; int no_light_px_rgb = no_light_px[0] + no_light_px[1] + no_light_px[2]; unsigned char i = 0; @@ -4310,6 +4320,12 @@ void SyncNozzleAndAmsDialog::deal_cancel() call_start_gradual_disappearance(); } +void SyncNozzleAndAmsDialog::update_info(InputInfo &info) { + m_input_info = info; + restart(); + SetPosition(m_input_info.dialog_pos); +} + FinishSyncAmsDialog::FinishSyncAmsDialog(InputInfo &input_info) : BaseTransparentDPIFrame(static_cast(wxGetApp().mainframe), 300, @@ -4331,4 +4347,11 @@ void FinishSyncAmsDialog::deal_ok() { call_start_gradual_disappearance(); } +void FinishSyncAmsDialog::update_info(InputInfo &info) +{ + m_input_info = info; + restart(); + SetPosition(m_input_info.dialog_pos); +} + }} // namespace Slic3r \ No newline at end of file diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index da20ea5e81..9d149c854c 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -366,6 +366,8 @@ public: ~SyncNozzleAndAmsDialog() override; void deal_ok() override; void deal_cancel() override; + void update_info(InputInfo& info); + private: InputInfo& m_input_info; }; @@ -381,6 +383,8 @@ public: FinishSyncAmsDialog(InputInfo &input_info); ~FinishSyncAmsDialog() override; void deal_ok(); + void update_info(InputInfo &info); + private: InputInfo& m_input_info; };