mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Added editing of custom G-code
+ Code cleaning
This commit is contained in:
		
							parent
							
								
									74e4a743af
								
							
						
					
					
						commit
						8ec1465ea5
					
				
					 3 changed files with 60 additions and 182 deletions
				
			
		|  | @ -658,11 +658,8 @@ void Preview::create_double_slider() | |||
| 
 | ||||
| 
 | ||||
|     Bind(wxCUSTOMEVT_TICKSCHANGED, [this](wxEvent&) { | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // wxGetApp().preset_bundle->project_config.option<ConfigOptionFloats>("colorprint_heights")->values = m_slider->GetTicksValues();
 | ||||
| 
 | ||||
|         Model& model = wxGetApp().plater()->model(); | ||||
|         model.custom_gcode_per_height = m_slider->GetTicksValues_(); | ||||
|         model.custom_gcode_per_height = m_slider->GetTicksValues(); | ||||
|         m_schedule_background_process(); | ||||
| 
 | ||||
|         update_view_type(false); | ||||
|  | @ -761,9 +758,7 @@ void Preview::update_double_slider(const std::vector<double>& layers_z, bool kee | |||
|     } | ||||
|     m_slider->SetSelectionSpan(idx_low, idx_high); | ||||
| 
 | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // m_slider->SetTicksValues(ticks_from_config);
 | ||||
|     m_slider->SetTicksValues_(ticks_from_model); | ||||
|     m_slider->SetTicksValues(ticks_from_model); | ||||
| 
 | ||||
|     bool color_print_enable = (wxGetApp().plater()->printer_technology() == ptFFF); | ||||
|     //  #ys_FIXME_COLOR
 | ||||
|  |  | |||
|  | @ -2524,29 +2524,8 @@ double DoubleSlider::get_double_value(const SelectedSlider& selection) | |||
|     return m_values[selection == ssLower ? m_lower_value : m_higher_value]; | ||||
| } | ||||
| 
 | ||||
| std::vector<double> DoubleSlider::GetTicksValues() const | ||||
| { | ||||
|     std::vector<double> values; | ||||
| 
 | ||||
|     const int val_size = m_values.size(); | ||||
|     if (!m_values.empty()) | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // for (int tick : m_ticks) { 
 | ||||
|         //     if (tick > val_size)
 | ||||
|         //         break;
 | ||||
|         //     values.push_back(m_values[tick]);
 | ||||
|         // }
 | ||||
|         for (const TICK_CODE& tick : m_ticks_) { | ||||
|             if (tick.tick > val_size) | ||||
|                 break; | ||||
|             values.push_back(m_values[tick.tick]); | ||||
|         } | ||||
| 
 | ||||
|     return values; | ||||
| } | ||||
| 
 | ||||
| using t_custom_code = Slic3r::Model::CustomGCode; | ||||
| std::vector<t_custom_code> DoubleSlider::GetTicksValues_() const | ||||
| std::vector<t_custom_code> DoubleSlider::GetTicksValues() const | ||||
| { | ||||
|     std::vector<t_custom_code> values; | ||||
| 
 | ||||
|  | @ -2561,7 +2540,7 @@ std::vector<t_custom_code> DoubleSlider::GetTicksValues_() const | |||
|     return values; | ||||
| } | ||||
| 
 | ||||
| void DoubleSlider::SetTicksValues_(const std::vector<t_custom_code>& heights) | ||||
| void DoubleSlider::SetTicksValues(const std::vector<t_custom_code>& heights) | ||||
| { | ||||
|     if (m_values.empty()) | ||||
|         return; | ||||
|  | @ -2583,45 +2562,6 @@ void DoubleSlider::SetTicksValues_(const std::vector<t_custom_code>& heights) | |||
|         wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED)); | ||||
| } | ||||
| 
 | ||||
| void DoubleSlider::SetTicksValues(const std::vector<double>& heights) | ||||
| { | ||||
|     if (m_values.empty()) | ||||
|         return; | ||||
| 
 | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // const bool was_empty = m_ticks.empty();
 | ||||
|     //
 | ||||
|     // m_ticks.clear();
 | ||||
|     // for (auto h : heights) {
 | ||||
|     //     auto it = std::lower_bound(m_values.begin(), m_values.end(), h - epsilon());
 | ||||
|     //
 | ||||
|     //     if (it == m_values.end())
 | ||||
|     //         continue;
 | ||||
|     //
 | ||||
|     //     m_ticks.insert(it-m_values.begin());
 | ||||
|     // }
 | ||||
|     //
 | ||||
|     // if (!was_empty && m_ticks.empty())
 | ||||
|     //     // Switch to the "Feature type"/"Tool" from the very beginning of a new object slicing after deleting of the old one
 | ||||
|     //     wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED));
 | ||||
| 
 | ||||
|     const bool was_empty = m_ticks_.empty(); | ||||
| 
 | ||||
|     m_ticks_.clear(); | ||||
|     for (auto h : heights) { | ||||
|         auto it = std::lower_bound(m_values.begin(), m_values.end(), h - epsilon()); | ||||
| 
 | ||||
|         if (it == m_values.end()) | ||||
|             continue; | ||||
| 
 | ||||
|         m_ticks_.insert(it-m_values.begin()); | ||||
|     } | ||||
|      | ||||
|     if (!was_empty && m_ticks_.empty()) | ||||
|         // Switch to the "Feature type"/"Tool" from the very beginning of a new object slicing after deleting of the old one
 | ||||
|         wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED)); | ||||
| } | ||||
| 
 | ||||
| void DoubleSlider::get_lower_and_higher_position(int& lower_pos, int& higher_pos) | ||||
| { | ||||
|     const double step = get_scroll_step(); | ||||
|  | @ -2695,9 +2635,6 @@ void DoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoin | |||
|         return; | ||||
| 
 | ||||
|     wxBitmap* icon = m_is_action_icon_focesed ? &m_bmp_add_tick_off.bmp() : &m_bmp_add_tick_on.bmp(); | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // if (m_ticks.find(tick) != m_ticks.end())
 | ||||
|     //     icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp();
 | ||||
|     if (m_ticks_.find(tick) != m_ticks_.end()) | ||||
|         icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off.bmp() : &m_bmp_del_tick_on.bmp(); | ||||
| 
 | ||||
|  | @ -2841,12 +2778,8 @@ void DoubleSlider::draw_ticks(wxDC& dc) | |||
|     int height, width; | ||||
|     get_size(&width, &height); | ||||
|     const wxCoord mid = is_horizontal() ? 0.5*height : 0.5*width; | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // for (auto tick : m_ticks)
 | ||||
|     for (auto tick : m_ticks_) | ||||
|     { | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // const wxCoord pos = get_position_from_value(tick);
 | ||||
|         const wxCoord pos = get_position_from_value(tick.tick); | ||||
| 
 | ||||
|         is_horizontal() ?   dc.DrawLine(pos, mid-14, pos, mid-9) : | ||||
|  | @ -2889,43 +2822,6 @@ void DoubleSlider::draw_colored_band(wxDC& dc) | |||
|         main_band.SetBottom(height - SLIDER_MARGIN + 1); | ||||
|     } | ||||
| 
 | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // if (m_ticks.empty()) {
 | ||||
|     /*if (m_ticks_.empty()) {
 | ||||
|         dc.SetPen(GetParent()->GetBackgroundColour()); | ||||
|         dc.SetBrush(GetParent()->GetBackgroundColour()); | ||||
|         dc.DrawRectangle(main_band); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     const std::vector<std::string>& colors = Slic3r::GCodePreviewData::ColorPrintColors(); | ||||
|     const size_t colors_cnt = colors.size(); | ||||
| 
 | ||||
|     wxColour clr(colors[0]); | ||||
|     dc.SetPen(clr); | ||||
|     dc.SetBrush(clr); | ||||
|     dc.DrawRectangle(main_band); | ||||
| 
 | ||||
|     size_t i = 1; | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // for (auto tick : m_ticks)
 | ||||
|     for (auto tick : m_ticks_) | ||||
|     { | ||||
|         if (i == colors_cnt) | ||||
|             i = 0; | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         //const wxCoord pos = get_position_from_value(tick);
 | ||||
|         const wxCoord pos = get_position_from_value(tick.tick); | ||||
|         is_horizontal() ?   main_band.SetLeft(SLIDER_MARGIN + pos) : | ||||
|                             main_band.SetBottom(pos-1); | ||||
| 
 | ||||
|         clr = wxColour(colors[i]); | ||||
|         dc.SetPen(clr); | ||||
|         dc.SetBrush(clr); | ||||
|         dc.DrawRectangle(main_band); | ||||
|         i++; | ||||
|     }*/ | ||||
| 
 | ||||
|     auto draw_band = [](wxDC& dc, const wxColour& clr, const wxRect& band_rc) { | ||||
|         dc.SetPen(clr); | ||||
|         dc.SetBrush(clr); | ||||
|  | @ -2979,8 +2875,6 @@ void DoubleSlider::draw_one_layer_icon(wxDC& dc) | |||
| 
 | ||||
| void DoubleSlider::draw_revert_icon(wxDC& dc) | ||||
| { | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // if (m_ticks.empty() || !m_is_enabled_tick_manipulation)
 | ||||
|     if (m_ticks_.empty() || !m_is_enabled_tick_manipulation) | ||||
|         return; | ||||
| 
 | ||||
|  | @ -3051,23 +2945,15 @@ bool DoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect) | |||
| 
 | ||||
| int DoubleSlider::is_point_near_tick(const wxPoint& pt) | ||||
| { | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // for (auto tick : m_ticks) {
 | ||||
|     for (auto tick : m_ticks_) { | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // const wxCoord pos = get_position_from_value(tick);
 | ||||
|         const wxCoord pos = get_position_from_value(tick.tick); | ||||
| 
 | ||||
|         if (is_horizontal()) { | ||||
|             if (pos - 4 <= pt.x && pt.x <= pos + 4) | ||||
|                 // #ys_FIXME_COLOR
 | ||||
|                 // return tick;
 | ||||
|                 return tick.tick; | ||||
|         } | ||||
|         else { | ||||
|             if (pos - 4 <= pt.y && pt.y <= pos + 4)  | ||||
|                 // #ys_FIXME_COLOR
 | ||||
|                 // return tick;
 | ||||
|                 return tick.tick; | ||||
|         } | ||||
|     } | ||||
|  | @ -3120,8 +3006,6 @@ void DoubleSlider::OnLeftDown(wxMouseEvent& event) | |||
|         m_selection == ssLower ? correct_lower_value() : correct_higher_value(); | ||||
|         if (!m_selection) m_selection = ssHigher; | ||||
| 
 | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // m_ticks.clear();
 | ||||
|         m_ticks_.clear(); | ||||
|         wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED)); | ||||
|     } | ||||
|  | @ -3202,12 +3086,14 @@ wxString DoubleSlider::get_tooltip(IconFocus icon_focus) | |||
|                   // tick_code_it->gcode == Slic3r::ColorChangeCode          ? _(L("Delete color change")) :
 | ||||
|                   tick_code_it->gcode == Slic3r::ColorChangeCode             ? ( m_state == msSingleExtruder ? //_(L("Delete color change")) :
 | ||||
|                       _(L("For Delete color change use left mouse button click\n" | ||||
|                           "For Delete color change or Edit color use right mouse button click")) : | ||||
|                           "For Edit color use right mouse button click")) : | ||||
|                       from_u8((boost::format(_utf8(L("Delete color change for Extruder %1%"))) % tick_code_it->extruder).str()) ): | ||||
|                   tick_code_it->gcode == Slic3r::PausePrintCode             ? _(L("Delete pause")) : | ||||
|                   tick_code_it->gcode == Slic3r::ExtruderChangeCode         ? //( m_state == msSingleExtruder ? _(L("Delete color change")) :
 | ||||
|                       from_u8((boost::format(_utf8(L("Delete extruder change to \"%1%\""))) % tick_code_it->extruder).str()) /*) */: | ||||
|                       from_u8((boost::format(_utf8(L("Delete \"%1%\" code"))) % tick_code_it->gcode).str()); | ||||
|                       // from_u8((boost::format(_utf8(L("Delete \"%1%\" code"))) % tick_code_it->gcode).str());
 | ||||
|                       from_u8((boost::format(_utf8(L("For Delete \"%1%\" code use left mouse button click\n" | ||||
|                                                        "For Edit \"%1%\" code use right mouse button click"))) % tick_code_it->gcode ).str()); | ||||
|     } | ||||
| 
 | ||||
|     return tooltip; | ||||
|  | @ -3225,8 +3111,6 @@ void DoubleSlider::OnMotion(wxMouseEvent& event) | |||
| 
 | ||||
|     if (!m_is_left_down && !m_is_one_layer) { | ||||
|         m_is_action_icon_focesed = is_point_in_rect(pos, m_rect_tick_action); | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // is_revert_icon_focused = !m_ticks.empty() && is_point_in_rect(pos, m_rect_revert_icon);
 | ||||
|         if (!m_ticks_.empty() && is_point_in_rect(pos, m_rect_revert_icon)) | ||||
|             icon_focus = ifRevert; | ||||
|         else if (is_point_in_rect(pos, m_rect_cog_icon)) | ||||
|  | @ -3251,10 +3135,6 @@ void DoubleSlider::OnMotion(wxMouseEvent& event) | |||
|     event.Skip(); | ||||
| 
 | ||||
|     // Set tooltips with information for each icon
 | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // const wxString tooltip = m_is_one_layer_icon_focesed    ? _(L("One layer mode"))    :
 | ||||
|     //                          m_is_action_icon_focesed       ? _(L("Add/Del color change")) :
 | ||||
|     //                          is_revert_icon_focused         ? _(L("Discard all color changes")) : "";
 | ||||
|     this->SetToolTip(get_tooltip(icon_focus)); | ||||
| 
 | ||||
|     if (action) | ||||
|  | @ -3371,22 +3251,6 @@ void DoubleSlider::action_tick(const TicksAction action) | |||
| 
 | ||||
|     const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; | ||||
| 
 | ||||
|     // #ys_FIXME_COLOR
 | ||||
|     // if (action == taOnIcon) {
 | ||||
|     //     if (!m_ticks.insert(tick).second)
 | ||||
|     //         m_ticks.erase(tick);
 | ||||
|     // }
 | ||||
|     // else {
 | ||||
|     //     const auto it = m_ticks.find(tick);
 | ||||
|     //     if (it == m_ticks.end() && action == taAdd)
 | ||||
|     //         m_ticks.insert(tick);
 | ||||
|     //     else if (it != m_ticks.end() && action == taDel)
 | ||||
|     //         m_ticks.erase(tick);
 | ||||
|     // }
 | ||||
|     // wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED));
 | ||||
|     // Refresh();
 | ||||
|     // Update();
 | ||||
| 
 | ||||
|     const auto it = m_ticks_.find(tick); | ||||
| 
 | ||||
|     if (it != m_ticks_.end()) // erase this tick
 | ||||
|  | @ -3496,9 +3360,7 @@ void DoubleSlider::OnRightDown(wxMouseEvent& event) | |||
|     if (is_point_in_rect(pos, m_rect_tick_action) && m_is_enabled_tick_manipulation) | ||||
|     { | ||||
|         const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; | ||||
|         // if on this Y doesn't exist tick
 | ||||
|         // #ys_FIXME_COLOR
 | ||||
|         // if (m_ticks.find(tick) == m_ticks.end())
 | ||||
|         // if on this Z doesn't exist tick
 | ||||
|         auto it = m_ticks_.find(tick); | ||||
|         if (it == m_ticks_.end()) | ||||
|         { | ||||
|  | @ -3506,10 +3368,10 @@ void DoubleSlider::OnRightDown(wxMouseEvent& event) | |||
|             m_show_context_menu = true; | ||||
|             return; | ||||
|         } | ||||
|         if (it->gcode == Slic3r::ColorChangeCode) | ||||
|         if (it->gcode != Slic3r::ExtruderChangeCode && it->gcode != Slic3r::PausePrintCode) | ||||
|         { | ||||
|             // show "Edit color" or "Delete color change" menu on OnRightUp()
 | ||||
|             m_show_edit_color_menu = true; | ||||
|             // show "Edit" and "Delete" menu on OnRightUp()
 | ||||
|             m_show_edit_menu = true; | ||||
|             return; | ||||
|         } | ||||
|     } | ||||
|  | @ -3601,18 +3463,21 @@ void DoubleSlider::OnRightUp(wxMouseEvent& event) | |||
| 
 | ||||
|         m_show_context_menu = false; | ||||
|     } | ||||
|     else if (m_show_edit_color_menu) { | ||||
|     else if (m_show_edit_menu) { | ||||
|         wxMenu menu; | ||||
| 
 | ||||
|         append_menu_item(&menu, wxID_ANY, _(L("Edit color")), "", | ||||
|             [this](wxCommandEvent&) { edit_color(); }, "change_extruder", &menu); | ||||
|         std::set<TICK_CODE>::iterator it = m_ticks_.find(m_selection == ssLower ? m_lower_value : m_higher_value); | ||||
|         const bool is_color_change = it->gcode == Slic3r::ColorChangeCode; | ||||
| 
 | ||||
|         append_menu_item(&menu, wxID_ANY, _(L("Delete color change")), "", | ||||
|         append_menu_item(&menu, wxID_ANY, is_color_change ? _(L("Edit color")) : _(L("Edit custom G-code")), "", | ||||
|             [this](wxCommandEvent&) { edit_tick(); }, "change_extruder", &menu); | ||||
| 
 | ||||
|         append_menu_item(&menu, wxID_ANY, it->gcode == Slic3r::ColorChangeCode ? _(L("Delete color change")) : _(L("Delete custom G-code")), "", | ||||
|             [this](wxCommandEvent&) { action_tick(taDel); }, "colorchange_delete_off.png", &menu); | ||||
| 
 | ||||
|         Slic3r::GUI::wxGetApp().plater()->PopupMenu(&menu); | ||||
| 
 | ||||
|         m_show_edit_color_menu = false; | ||||
|         m_show_edit_menu = false; | ||||
|     } | ||||
| 
 | ||||
|     Refresh(); | ||||
|  | @ -3637,6 +3502,20 @@ static std::string get_new_color(const std::string& color) | |||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| static std::string get_custom_code(const std::string& code_in, double height) | ||||
| { | ||||
|     wxString msg_text = from_u8(_utf8(L("Enter custom G-code used on current layer"))) + " :"; | ||||
|     wxString msg_header = from_u8((boost::format(_utf8(L("Custom Gcode on current layer (%1% mm)."))) % height).str()); | ||||
| 
 | ||||
|     // get custom gcode
 | ||||
|     wxTextEntryDialog dlg(nullptr, msg_text, msg_header, code_in, | ||||
|         wxTextEntryDialogStyle | wxTE_MULTILINE); | ||||
|     if (dlg.ShowModal() != wxID_OK || dlg.GetValue().IsEmpty()) | ||||
|         return ""; | ||||
| 
 | ||||
|     return dlg.GetValue().ToStdString(); | ||||
| } | ||||
| 
 | ||||
| void DoubleSlider::add_code(std::string code, int selected_extruder/* = -1*/) | ||||
| { | ||||
|     const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; | ||||
|  | @ -3671,17 +3550,7 @@ void DoubleSlider::add_code(std::string code, int selected_extruder/* = -1*/) | |||
|         } | ||||
|         else if (code.empty()) | ||||
|         { | ||||
|             wxString msg_text = from_u8(_utf8(L("Enter custom G-code used on current layer"))) + " :"; | ||||
|             wxString msg_header = from_u8((boost::format(_utf8(L("Custom Gcode on current layer (%1% mm)."))) % m_values[tick]).str()); | ||||
| 
 | ||||
|             // get custom gcode
 | ||||
|             wxTextEntryDialog dlg(nullptr, msg_text, msg_header, m_custom_gcode, | ||||
|                                   wxTextEntryDialogStyle | wxTE_MULTILINE); | ||||
|             if (dlg.ShowModal() != wxID_OK || dlg.GetValue().IsEmpty()) | ||||
|                 return; | ||||
| 
 | ||||
|             m_custom_gcode = dlg.GetValue(); | ||||
|             code = m_custom_gcode.c_str(); | ||||
|             m_custom_gcode = code = get_custom_code(m_custom_gcode, m_values[tick]); | ||||
|         } | ||||
| 
 | ||||
|         int extruder = 1; | ||||
|  | @ -3702,18 +3571,34 @@ void DoubleSlider::add_code(std::string code, int selected_extruder/* = -1*/) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void DoubleSlider::edit_color() | ||||
| void DoubleSlider::edit_tick() | ||||
| { | ||||
|     const int tick = m_selection == ssLower ? m_lower_value : m_higher_value; | ||||
|     // if on this Z exists tick
 | ||||
|     std::set<TICK_CODE>::iterator it = m_ticks_.find(tick); | ||||
|     if (it != m_ticks_.end()) | ||||
|     { | ||||
|         std::string color = get_new_color(it->color); | ||||
|         if (color.empty()) | ||||
|         std::string edited_value; | ||||
|         if (it->gcode == Slic3r::ColorChangeCode) | ||||
|             edited_value = get_new_color(it->color); | ||||
|         else | ||||
|             edited_value = get_custom_code(it->gcode, m_values[it->tick]); | ||||
| 
 | ||||
|         if (edited_value.empty()) | ||||
|             return; | ||||
| 
 | ||||
|         TICK_CODE changed_tick = *it; | ||||
|         changed_tick.color = color; | ||||
|         if (it->gcode == Slic3r::ColorChangeCode) { | ||||
|             if (it->color == edited_value) | ||||
|                 return; | ||||
|             changed_tick.color = edited_value; | ||||
|         } | ||||
|         else { | ||||
|             if (it->gcode == edited_value) | ||||
|                 return; | ||||
|             changed_tick.gcode = edited_value; | ||||
|         } | ||||
|          | ||||
|         m_ticks_.erase(it); | ||||
|         m_ticks_.insert(changed_tick); | ||||
| 
 | ||||
|  |  | |||
|  | @ -808,10 +808,8 @@ public: | |||
|         m_values = values; | ||||
|     } | ||||
|     void ChangeOneLayerLock(); | ||||
|     std::vector<double> GetTicksValues() const; | ||||
|     std::vector<Slic3r::Model::CustomGCode> GetTicksValues_() const; | ||||
|     void SetTicksValues_(const std::vector<Slic3r::Model::CustomGCode> &heights); | ||||
|     void SetTicksValues(const std::vector<double>& heights); | ||||
|     std::vector<Slic3r::Model::CustomGCode> GetTicksValues() const; | ||||
|     void SetTicksValues(const std::vector<Slic3r::Model::CustomGCode> &heights); | ||||
|     void EnableTickManipulation(bool enable = true) { | ||||
|         m_is_enabled_tick_manipulation = enable; | ||||
|     } | ||||
|  | @ -854,7 +852,7 @@ public: | |||
|     int  get_extruder_for_tick(int tick); | ||||
|     void OnRightUp(wxMouseEvent& event); | ||||
|     void add_code(std::string code, int selected_extruder = -1); | ||||
|     void edit_color(); | ||||
|     void edit_tick(); | ||||
|     void change_extruder(int extruder); | ||||
|     void edit_extruder_sequence(); | ||||
| 
 | ||||
|  | @ -924,11 +922,11 @@ private: | |||
|     bool        m_is_one_layer_icon_focesed = false; | ||||
|     bool        m_is_enabled_tick_manipulation = true; | ||||
|     bool        m_show_context_menu = false; | ||||
|     bool        m_show_edit_color_menu = false; | ||||
|     bool        m_show_edit_menu = false; | ||||
|     bool        m_edit_extruder_sequence = false; | ||||
|     bool        m_suppress_add_code = false; | ||||
|     ManipulationState m_state = msSingleExtruder; | ||||
|     wxString    m_custom_gcode = wxEmptyString; | ||||
|     std::string m_custom_gcode = ""; | ||||
|     int         m_current_extruder = -1; | ||||
| 
 | ||||
|     wxRect      m_rect_lower_thumb; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka