2018-04-20 10:58:07 +00:00
|
|
|
#ifndef slic3r_Tab_hpp_
|
|
|
|
#define slic3r_Tab_hpp_
|
|
|
|
|
2017-12-05 14:54:01 +00:00
|
|
|
// The "Expert" tab at the right of the main tabbed window.
|
|
|
|
//
|
|
|
|
// This file implements following packages:
|
|
|
|
// Slic3r::GUI::Tab;
|
|
|
|
// Slic3r::GUI::Tab::Print;
|
|
|
|
// Slic3r::GUI::Tab::Filament;
|
|
|
|
// Slic3r::GUI::Tab::Printer;
|
|
|
|
// Slic3r::GUI::Tab::Page
|
|
|
|
// - Option page: For example, the Slic3r::GUI::Tab::Print has option pages "Layers and perimeters", "Infill", "Skirt and brim" ...
|
|
|
|
// Slic3r::GUI::SavePresetWindow
|
|
|
|
// - Dialog to select a new preset name to store the configuration.
|
|
|
|
// Slic3r::GUI::Tab::Preset;
|
|
|
|
// - Single preset item: name, file is default or external.
|
|
|
|
|
|
|
|
#include <wx/panel.h>
|
|
|
|
#include <wx/notebook.h>
|
|
|
|
#include <wx/scrolwin.h>
|
|
|
|
#include <wx/sizer.h>
|
|
|
|
#include <wx/bmpcbox.h>
|
|
|
|
#include <wx/bmpbuttn.h>
|
|
|
|
#include <wx/treectrl.h>
|
|
|
|
#include <wx/imaglist.h>
|
|
|
|
|
|
|
|
#include <map>
|
|
|
|
#include <vector>
|
2017-12-13 13:45:10 +00:00
|
|
|
#include <memory>
|
|
|
|
|
2018-01-25 12:46:04 +00:00
|
|
|
#include "BedShapeDialog.hpp"
|
2018-10-03 14:27:02 +00:00
|
|
|
#include "Event.hpp"
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2019-01-10 10:05:58 +00:00
|
|
|
class PrusaModeSizer;
|
2017-12-05 14:54:01 +00:00
|
|
|
|
|
|
|
namespace Slic3r {
|
|
|
|
namespace GUI {
|
|
|
|
|
2018-04-20 10:58:07 +00:00
|
|
|
typedef std::pair<wxBitmap*, std::string> t_icon_description;
|
|
|
|
typedef std::vector<std::pair<wxBitmap*, std::string>> t_icon_descriptions;
|
|
|
|
|
2017-12-05 14:54:01 +00:00
|
|
|
// Single Tab page containing a{ vsizer } of{ optgroups }
|
|
|
|
// package Slic3r::GUI::Tab::Page;
|
2017-12-13 13:45:10 +00:00
|
|
|
using ConfigOptionsGroupShp = std::shared_ptr<ConfigOptionsGroup>;
|
2018-01-05 14:11:33 +00:00
|
|
|
class Page : public wxScrolledWindow
|
2017-12-05 14:54:01 +00:00
|
|
|
{
|
2017-12-26 22:04:54 +00:00
|
|
|
wxWindow* m_parent;
|
|
|
|
wxString m_title;
|
|
|
|
size_t m_iconID;
|
|
|
|
wxBoxSizer* m_vsizer;
|
2018-10-21 21:09:24 +00:00
|
|
|
bool m_show = true;
|
2017-12-05 14:54:01 +00:00
|
|
|
public:
|
2018-01-05 14:11:33 +00:00
|
|
|
Page(wxWindow* parent, const wxString title, const int iconID) :
|
2017-12-26 22:04:54 +00:00
|
|
|
m_parent(parent),
|
|
|
|
m_title(title),
|
|
|
|
m_iconID(iconID)
|
2017-12-05 14:54:01 +00:00
|
|
|
{
|
2017-12-26 22:04:54 +00:00
|
|
|
Create(m_parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
|
|
|
m_vsizer = new wxBoxSizer(wxVERTICAL);
|
2018-10-01 13:09:31 +00:00
|
|
|
m_item_color = &wxGetApp().get_label_clr_default();
|
2017-12-26 22:04:54 +00:00
|
|
|
SetSizer(m_vsizer);
|
2017-12-05 14:54:01 +00:00
|
|
|
}
|
2018-10-31 11:56:08 +00:00
|
|
|
~Page() {}
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2018-03-22 08:37:42 +00:00
|
|
|
bool m_is_modified_values{ false };
|
|
|
|
bool m_is_nonsys_values{ true };
|
|
|
|
|
2017-12-13 13:45:10 +00:00
|
|
|
public:
|
2018-02-07 16:13:52 +00:00
|
|
|
std::vector <ConfigOptionsGroupShp> m_optgroups;
|
2017-12-26 22:04:54 +00:00
|
|
|
DynamicPrintConfig* m_config;
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2017-12-26 22:04:54 +00:00
|
|
|
wxBoxSizer* vsizer() const { return m_vsizer; }
|
|
|
|
wxWindow* parent() const { return m_parent; }
|
|
|
|
wxString title() const { return m_title; }
|
|
|
|
size_t iconID() const { return m_iconID; }
|
|
|
|
void set_config(DynamicPrintConfig* config_in) { m_config = config_in; }
|
2018-01-11 09:33:17 +00:00
|
|
|
void reload_config();
|
2018-10-19 11:55:29 +00:00
|
|
|
void update_visibility(ConfigOptionMode mode);
|
2018-04-13 10:35:04 +00:00
|
|
|
Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
|
|
|
|
bool set_value(const t_config_option_key& opt_key, const boost::any& value);
|
|
|
|
ConfigOptionsGroupShp new_optgroup(const wxString& title, int noncommon_label_width = -1);
|
2018-04-18 11:32:21 +00:00
|
|
|
|
|
|
|
bool set_item_colour(const wxColour *clr) {
|
|
|
|
if (m_item_color != clr) {
|
|
|
|
m_item_color = clr;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
const wxColour get_item_colour() {
|
|
|
|
return *m_item_color;
|
|
|
|
}
|
2018-10-21 21:09:24 +00:00
|
|
|
bool get_show() const { return m_show; }
|
2018-04-18 11:32:21 +00:00
|
|
|
|
|
|
|
protected:
|
|
|
|
// Color of TreeCtrlItem. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
|
|
|
|
const wxColour* m_item_color;
|
2017-12-05 14:54:01 +00:00
|
|
|
};
|
|
|
|
|
2018-10-03 14:27:02 +00:00
|
|
|
|
|
|
|
wxDECLARE_EVENT(EVT_TAB_VALUE_CHANGED, wxCommandEvent);
|
|
|
|
wxDECLARE_EVENT(EVT_TAB_PRESETS_CHANGED, SimpleEvent);
|
|
|
|
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2018-01-05 14:11:33 +00:00
|
|
|
using PageShp = std::shared_ptr<Page>;
|
|
|
|
class Tab: public wxPanel
|
2017-12-05 14:54:01 +00:00
|
|
|
{
|
2017-12-26 22:04:54 +00:00
|
|
|
wxNotebook* m_parent;
|
2018-06-28 16:30:22 +00:00
|
|
|
#ifdef __WXOSX__
|
|
|
|
wxPanel* m_tmp_panel;
|
|
|
|
int m_size_move = -1;
|
|
|
|
#endif // __WXOSX__
|
2017-12-05 14:54:01 +00:00
|
|
|
protected:
|
2018-10-09 10:41:05 +00:00
|
|
|
Preset::Type m_type;
|
2018-01-25 20:44:22 +00:00
|
|
|
std::string m_name;
|
2017-12-26 22:04:54 +00:00
|
|
|
const wxString m_title;
|
|
|
|
wxBitmapComboBox* m_presets_choice;
|
|
|
|
wxBitmapButton* m_btn_save_preset;
|
|
|
|
wxBitmapButton* m_btn_delete_preset;
|
|
|
|
wxBitmapButton* m_btn_hide_incompatible_presets;
|
|
|
|
wxBoxSizer* m_hsizer;
|
|
|
|
wxBoxSizer* m_left_sizer;
|
|
|
|
wxTreeCtrl* m_treectrl;
|
|
|
|
wxImageList* m_icons;
|
2018-12-04 16:56:49 +00:00
|
|
|
|
2019-01-10 10:05:58 +00:00
|
|
|
PrusaModeSizer* m_mode_sizer;
|
|
|
|
|
2018-12-04 16:56:49 +00:00
|
|
|
struct PresetDependencies {
|
|
|
|
Preset::Type type = Preset::TYPE_INVALID;
|
|
|
|
wxCheckBox *checkbox = nullptr;
|
|
|
|
wxButton *btn = nullptr;
|
|
|
|
std::string key_list; // "compatible_printers"
|
|
|
|
std::string key_condition;
|
|
|
|
std::string dialog_title;
|
|
|
|
std::string dialog_label;
|
|
|
|
};
|
|
|
|
PresetDependencies m_compatible_printers;
|
|
|
|
PresetDependencies m_compatible_prints;
|
|
|
|
|
2018-03-21 21:21:37 +00:00
|
|
|
wxButton* m_undo_btn;
|
2018-04-19 14:20:30 +00:00
|
|
|
wxButton* m_undo_to_sys_btn;
|
|
|
|
wxButton* m_question_btn;
|
2018-04-10 12:00:48 +00:00
|
|
|
wxImageList* m_preset_icons;
|
2017-12-26 22:04:54 +00:00
|
|
|
|
2018-04-16 09:03:08 +00:00
|
|
|
// Cached bitmaps.
|
|
|
|
// A "flag" icon to be displayned next to the preset name in the Tab's combo box.
|
|
|
|
wxBitmap m_bmp_show_incompatible_presets;
|
|
|
|
wxBitmap m_bmp_hide_incompatible_presets;
|
|
|
|
// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
|
|
|
|
wxBitmap m_bmp_value_lock;
|
|
|
|
wxBitmap m_bmp_value_unlock;
|
|
|
|
wxBitmap m_bmp_white_bullet;
|
|
|
|
// The following bitmap points to either m_bmp_value_unlock or m_bmp_white_bullet, depending on whether the current preset has a parent preset.
|
|
|
|
wxBitmap *m_bmp_non_system;
|
|
|
|
// Bitmaps to be shown on the "Undo user changes" button next to each input field.
|
|
|
|
wxBitmap m_bmp_value_revert;
|
2018-04-24 10:12:15 +00:00
|
|
|
// wxBitmap m_bmp_value_unmodified;
|
2018-04-19 14:20:30 +00:00
|
|
|
wxBitmap m_bmp_question;
|
2018-04-16 09:03:08 +00:00
|
|
|
|
2018-04-17 08:15:48 +00:00
|
|
|
// Colors for ui "decoration"
|
|
|
|
wxColour m_sys_label_clr;
|
|
|
|
wxColour m_modified_label_clr;
|
|
|
|
wxColour m_default_text_clr;
|
|
|
|
|
2018-04-24 12:11:23 +00:00
|
|
|
// Tooltip text for reset buttons (for whole options group)
|
|
|
|
wxString m_ttg_value_lock;
|
|
|
|
wxString m_ttg_value_unlock;
|
|
|
|
wxString m_ttg_white_bullet_ns;
|
|
|
|
// The following text points to either m_ttg_value_unlock or m_ttg_white_bullet_ns, depending on whether the current preset has a parent preset.
|
|
|
|
wxString *m_ttg_non_system;
|
|
|
|
// Tooltip text to be shown on the "Undo user changes" button next to each input field.
|
|
|
|
wxString m_ttg_white_bullet;
|
|
|
|
wxString m_ttg_value_revert;
|
|
|
|
|
|
|
|
// Tooltip text for reset buttons (for each option in group)
|
2018-04-24 10:12:15 +00:00
|
|
|
wxString m_tt_value_lock;
|
|
|
|
wxString m_tt_value_unlock;
|
2018-04-24 12:11:23 +00:00
|
|
|
// The following text points to either m_tt_value_unlock or m_ttg_white_bullet_ns, depending on whether the current preset has a parent preset.
|
2018-04-24 10:12:15 +00:00
|
|
|
wxString *m_tt_non_system;
|
2018-04-24 12:11:23 +00:00
|
|
|
// Tooltip text to be shown on the "Undo user changes" button next to each input field.
|
2018-04-24 10:12:15 +00:00
|
|
|
wxString m_tt_white_bullet;
|
|
|
|
wxString m_tt_value_revert;
|
|
|
|
|
2017-12-26 22:04:54 +00:00
|
|
|
int m_icon_count;
|
2018-03-21 21:21:37 +00:00
|
|
|
std::map<std::string, size_t> m_icon_index; // Map from an icon file name to its index
|
|
|
|
std::vector<PageShp> m_pages;
|
2017-12-26 22:04:54 +00:00
|
|
|
bool m_disable_tree_sel_changed_event;
|
2018-01-16 15:28:01 +00:00
|
|
|
bool m_show_incompatible_presets;
|
|
|
|
|
2018-11-16 10:14:56 +00:00
|
|
|
std::vector<Preset::Type> m_dependent_tabs = {};
|
2018-04-18 11:32:21 +00:00
|
|
|
enum OptStatus { osSystemValue = 1, osInitValue = 2 };
|
|
|
|
std::map<std::string, int> m_options_list;
|
2018-06-28 18:13:01 +00:00
|
|
|
int m_opt_status_value = 0;
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2018-04-20 10:58:07 +00:00
|
|
|
t_icon_descriptions m_icon_descriptions = {};
|
|
|
|
|
2018-03-22 08:37:42 +00:00
|
|
|
bool m_is_modified_values{ false };
|
|
|
|
bool m_is_nonsys_values{ true };
|
2018-04-16 11:43:01 +00:00
|
|
|
bool m_postpone_update_ui {false};
|
2018-03-22 08:37:42 +00:00
|
|
|
|
2018-04-19 10:08:59 +00:00
|
|
|
size_t m_selected_preset_item{ 0 };
|
|
|
|
|
2018-11-16 10:14:56 +00:00
|
|
|
void set_type();
|
2018-10-09 10:41:05 +00:00
|
|
|
|
2019-02-20 15:09:18 +00:00
|
|
|
std::set<std::string> m_dirty_options = {};
|
|
|
|
|
2017-12-13 13:45:10 +00:00
|
|
|
public:
|
2017-12-26 22:04:54 +00:00
|
|
|
PresetBundle* m_preset_bundle;
|
2018-02-27 08:51:14 +00:00
|
|
|
bool m_show_btn_incompatible_presets = false;
|
2018-01-05 14:11:33 +00:00
|
|
|
PresetCollection* m_presets;
|
2018-01-12 16:16:59 +00:00
|
|
|
DynamicPrintConfig* m_config;
|
2018-03-22 10:46:15 +00:00
|
|
|
ogStaticText* m_parent_preset_description_line;
|
2018-04-13 16:22:06 +00:00
|
|
|
wxStaticText* m_colored_Label = nullptr;
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2017-12-05 14:54:01 +00:00
|
|
|
public:
|
2018-12-04 16:56:49 +00:00
|
|
|
Tab(wxNotebook* parent, const wxString& title, const char* name);
|
2019-01-24 14:32:50 +00:00
|
|
|
~Tab() {}
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2017-12-26 22:04:54 +00:00
|
|
|
wxWindow* parent() const { return m_parent; }
|
|
|
|
wxString title() const { return m_title; }
|
2018-01-25 20:44:22 +00:00
|
|
|
std::string name() const { return m_name; }
|
2018-10-09 10:41:05 +00:00
|
|
|
Preset::Type type() const { return m_type; }
|
2018-10-31 15:22:36 +00:00
|
|
|
virtual bool supports_printer_technology(const PrinterTechnology tech) = 0;
|
2018-01-21 22:35:00 +00:00
|
|
|
|
2018-10-04 14:43:10 +00:00
|
|
|
void create_preset_tab();
|
2018-01-05 14:11:33 +00:00
|
|
|
void load_current_preset();
|
2018-08-07 09:58:27 +00:00
|
|
|
void rebuild_page_tree(bool tree_sel_change_event = false);
|
2018-10-21 21:09:24 +00:00
|
|
|
void update_page_tree_visibility();
|
2018-08-01 09:09:51 +00:00
|
|
|
void select_preset(std::string preset_name = "");
|
2018-04-13 10:35:04 +00:00
|
|
|
bool may_discard_current_dirty_preset(PresetCollection* presets = nullptr, const std::string& new_printer_name = "");
|
2018-11-29 11:33:04 +00:00
|
|
|
bool may_switch_to_SLA_preset();
|
2017-12-19 10:59:42 +00:00
|
|
|
|
2017-12-13 13:45:10 +00:00
|
|
|
void OnTreeSelChange(wxTreeEvent& event);
|
|
|
|
void OnKeyDown(wxKeyEvent& event);
|
2018-02-01 09:01:05 +00:00
|
|
|
|
2018-01-16 15:28:01 +00:00
|
|
|
void save_preset(std::string name = "");
|
2018-01-18 10:45:25 +00:00
|
|
|
void delete_preset();
|
|
|
|
void toggle_show_hide_incompatible();
|
2018-01-16 15:28:01 +00:00
|
|
|
void update_show_hide_incompatible_button();
|
|
|
|
void update_ui_from_settings();
|
2018-04-30 12:20:33 +00:00
|
|
|
void update_labels_colour();
|
2018-03-09 07:34:32 +00:00
|
|
|
void update_changed_ui();
|
2018-04-13 16:22:06 +00:00
|
|
|
void get_sys_and_mod_flags(const std::string& opt_key, bool& sys_page, bool& modified_page);
|
2018-03-21 21:21:37 +00:00
|
|
|
void update_changed_tree_ui();
|
2018-03-22 08:37:42 +00:00
|
|
|
void update_undo_buttons();
|
2018-03-21 21:21:37 +00:00
|
|
|
|
2018-04-18 11:32:21 +00:00
|
|
|
void on_roll_back_value(const bool to_sys = false);
|
2018-03-22 09:56:57 +00:00
|
|
|
|
2018-04-13 10:35:04 +00:00
|
|
|
PageShp add_options_page(const wxString& title, const std::string& icon, bool is_extruder_pages = false);
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2018-06-27 07:07:04 +00:00
|
|
|
virtual void OnActivate();
|
2018-10-31 11:56:08 +00:00
|
|
|
virtual void on_preset_loaded() {}
|
2018-01-03 09:12:42 +00:00
|
|
|
virtual void build() = 0;
|
|
|
|
virtual void update() = 0;
|
2018-04-18 11:32:21 +00:00
|
|
|
virtual void init_options_list();
|
2018-03-16 11:56:03 +00:00
|
|
|
void load_initial_data();
|
2018-01-05 14:11:33 +00:00
|
|
|
void update_dirty();
|
2018-01-16 15:28:01 +00:00
|
|
|
void update_tab_ui();
|
2018-04-13 10:35:04 +00:00
|
|
|
void load_config(const DynamicPrintConfig& config);
|
2018-01-12 11:41:13 +00:00
|
|
|
virtual void reload_config();
|
2018-12-21 08:19:00 +00:00
|
|
|
void update_visibility();
|
2018-04-13 10:35:04 +00:00
|
|
|
Field* get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
|
|
|
|
bool set_value(const t_config_option_key& opt_key, const boost::any& value);
|
2018-01-15 11:13:05 +00:00
|
|
|
wxSizer* description_line_widget(wxWindow* parent, ogStaticText** StaticText);
|
2018-01-25 12:46:04 +00:00
|
|
|
bool current_preset_is_dirty();
|
2018-04-20 15:32:08 +00:00
|
|
|
|
2018-01-25 12:46:04 +00:00
|
|
|
DynamicPrintConfig* get_config() { return m_config; }
|
2018-04-20 15:32:08 +00:00
|
|
|
PresetCollection* get_presets() { return m_presets; }
|
|
|
|
size_t get_selected_preset_item() { return m_selected_preset_item; }
|
2018-01-21 22:35:00 +00:00
|
|
|
|
2018-04-13 10:35:04 +00:00
|
|
|
void on_value_change(const std::string& opt_key, const boost::any& value);
|
2018-01-21 22:35:00 +00:00
|
|
|
|
2018-05-17 12:07:50 +00:00
|
|
|
void update_wiping_button_visibility();
|
2018-12-04 16:56:49 +00:00
|
|
|
|
2018-01-21 22:35:00 +00:00
|
|
|
protected:
|
2018-12-04 16:56:49 +00:00
|
|
|
wxSizer* compatible_widget_create(wxWindow* parent, PresetDependencies &deps);
|
|
|
|
void compatible_widget_reload(PresetDependencies &deps);
|
|
|
|
void load_key_value(const std::string& opt_key, const boost::any& value, bool saved_value = false);
|
|
|
|
|
2018-01-21 22:35:00 +00:00
|
|
|
void on_presets_changed();
|
2018-04-26 10:40:17 +00:00
|
|
|
void update_preset_description_line();
|
2018-03-13 15:14:36 +00:00
|
|
|
void update_frequently_changed_parameters();
|
2018-04-20 10:58:07 +00:00
|
|
|
void fill_icon_descriptions();
|
2018-04-24 12:11:23 +00:00
|
|
|
void set_tooltips_text();
|
2019-02-20 15:09:18 +00:00
|
|
|
bool update_completed() const { return m_dirty_options.empty(); }
|
2017-12-05 14:54:01 +00:00
|
|
|
};
|
|
|
|
|
2018-01-05 14:11:33 +00:00
|
|
|
class TabPrint : public Tab
|
2017-12-05 14:54:01 +00:00
|
|
|
{
|
2019-01-14 14:38:54 +00:00
|
|
|
bool is_msg_dlg_already_exist {false};
|
2017-12-05 14:54:01 +00:00
|
|
|
public:
|
2018-09-17 10:01:02 +00:00
|
|
|
TabPrint(wxNotebook* parent) :
|
|
|
|
Tab(parent, _(L("Print Settings")), "print") {}
|
2018-10-31 11:56:08 +00:00
|
|
|
~TabPrint() {}
|
2017-12-13 13:45:10 +00:00
|
|
|
|
2018-01-15 11:13:05 +00:00
|
|
|
ogStaticText* m_recommended_thin_wall_thickness_description_line;
|
2018-01-11 09:33:17 +00:00
|
|
|
bool m_support_material_overhangs_queried = false;
|
|
|
|
|
2018-01-03 09:12:42 +00:00
|
|
|
void build() override;
|
2018-01-12 11:41:13 +00:00
|
|
|
void reload_config() override;
|
2018-01-05 14:11:33 +00:00
|
|
|
void update() override;
|
2018-01-16 15:28:01 +00:00
|
|
|
void OnActivate() override;
|
2018-10-31 15:22:36 +00:00
|
|
|
bool supports_printer_technology(const PrinterTechnology tech) override { return tech == ptFFF; }
|
2017-12-05 14:54:01 +00:00
|
|
|
};
|
2018-01-05 14:11:33 +00:00
|
|
|
class TabFilament : public Tab
|
2017-12-22 10:50:28 +00:00
|
|
|
{
|
2018-01-15 11:13:05 +00:00
|
|
|
ogStaticText* m_volumetric_speed_description_line;
|
|
|
|
ogStaticText* m_cooling_description_line;
|
2017-12-22 10:50:28 +00:00
|
|
|
public:
|
2018-09-17 10:01:02 +00:00
|
|
|
TabFilament(wxNotebook* parent) :
|
|
|
|
Tab(parent, _(L("Filament Settings")), "filament") {}
|
2018-10-31 11:56:08 +00:00
|
|
|
~TabFilament() {}
|
2017-12-22 10:50:28 +00:00
|
|
|
|
2018-01-03 09:12:42 +00:00
|
|
|
void build() override;
|
2018-01-12 11:41:13 +00:00
|
|
|
void reload_config() override;
|
|
|
|
void update() override;
|
|
|
|
void OnActivate() override;
|
2018-10-31 15:22:36 +00:00
|
|
|
bool supports_printer_technology(const PrinterTechnology tech) override { return tech == ptFFF; }
|
2017-12-22 10:50:28 +00:00
|
|
|
};
|
|
|
|
|
2018-01-05 14:11:33 +00:00
|
|
|
class TabPrinter : public Tab
|
2017-12-22 10:50:28 +00:00
|
|
|
{
|
2018-05-21 12:36:09 +00:00
|
|
|
bool m_has_single_extruder_MM_page = false;
|
2018-06-22 11:01:41 +00:00
|
|
|
bool m_use_silent_mode = false;
|
|
|
|
void append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key);
|
2018-06-25 14:03:43 +00:00
|
|
|
bool m_rebuild_kinematics_page = false;
|
2018-08-03 12:34:52 +00:00
|
|
|
|
2018-08-07 09:58:27 +00:00
|
|
|
std::vector<PageShp> m_pages_fff;
|
|
|
|
std::vector<PageShp> m_pages_sla;
|
2018-12-18 13:34:16 +00:00
|
|
|
|
|
|
|
void build_printhost(ConfigOptionsGroup *optgroup);
|
2017-12-22 10:50:28 +00:00
|
|
|
public:
|
2018-10-31 15:22:36 +00:00
|
|
|
wxButton* m_serial_test_btn = nullptr;
|
|
|
|
wxButton* m_print_host_test_btn = nullptr;
|
|
|
|
wxButton* m_printhost_browse_btn = nullptr;
|
2018-01-02 11:50:27 +00:00
|
|
|
|
|
|
|
size_t m_extruders_count;
|
2018-04-18 11:32:21 +00:00
|
|
|
size_t m_extruders_count_old = 0;
|
2018-03-07 14:05:41 +00:00
|
|
|
size_t m_initial_extruders_count;
|
2018-03-19 16:21:37 +00:00
|
|
|
size_t m_sys_extruders_count;
|
2018-01-02 11:50:27 +00:00
|
|
|
|
2018-08-07 09:58:27 +00:00
|
|
|
PrinterTechnology m_printer_technology = ptFFF;
|
2018-08-03 12:34:52 +00:00
|
|
|
|
2018-09-17 10:01:02 +00:00
|
|
|
TabPrinter(wxNotebook* parent) : Tab(parent, _(L("Printer Settings")), "printer") {}
|
2018-10-31 11:56:08 +00:00
|
|
|
~TabPrinter() {}
|
2017-12-22 10:50:28 +00:00
|
|
|
|
2018-01-03 09:12:42 +00:00
|
|
|
void build() override;
|
2018-08-07 09:58:27 +00:00
|
|
|
void build_fff();
|
|
|
|
void build_sla();
|
2018-08-03 12:34:52 +00:00
|
|
|
void update() override;
|
2018-08-07 09:58:27 +00:00
|
|
|
void update_fff();
|
|
|
|
void update_sla();
|
|
|
|
void update_pages(); // update m_pages according to printer technology
|
2018-01-12 16:16:59 +00:00
|
|
|
void update_serial_ports();
|
|
|
|
void extruders_count_changed(size_t extruders_count);
|
2018-06-22 14:13:34 +00:00
|
|
|
PageShp build_kinematics_page();
|
2018-01-03 09:12:42 +00:00
|
|
|
void build_extruder_pages();
|
2018-01-16 15:28:01 +00:00
|
|
|
void on_preset_loaded() override;
|
2018-04-18 11:32:21 +00:00
|
|
|
void init_options_list() override;
|
2018-10-31 15:22:36 +00:00
|
|
|
bool supports_printer_technology(const PrinterTechnology /* tech */) override { return true; }
|
2017-12-22 10:50:28 +00:00
|
|
|
};
|
|
|
|
|
2018-08-03 11:04:41 +00:00
|
|
|
class TabSLAMaterial : public Tab
|
|
|
|
{
|
|
|
|
public:
|
2018-09-17 10:01:02 +00:00
|
|
|
TabSLAMaterial(wxNotebook* parent) :
|
2018-12-04 18:10:31 +00:00
|
|
|
Tab(parent, _(L("Material Settings")), "sla_material") {}
|
2018-10-31 11:56:08 +00:00
|
|
|
~TabSLAMaterial() {}
|
2018-08-03 11:04:41 +00:00
|
|
|
|
|
|
|
void build() override;
|
2018-12-04 16:56:49 +00:00
|
|
|
void reload_config() override;
|
2018-08-03 11:04:41 +00:00
|
|
|
void update() override;
|
2018-08-08 15:47:59 +00:00
|
|
|
void init_options_list() override;
|
2018-10-31 15:22:36 +00:00
|
|
|
bool supports_printer_technology(const PrinterTechnology tech) override { return tech == ptSLA; }
|
2018-08-03 11:04:41 +00:00
|
|
|
};
|
|
|
|
|
2018-11-16 16:36:23 +00:00
|
|
|
class TabSLAPrint : public Tab
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
TabSLAPrint(wxNotebook* parent) :
|
2018-12-04 18:10:31 +00:00
|
|
|
Tab(parent, _(L("Print Settings")), "sla_print") {}
|
2018-11-16 16:36:23 +00:00
|
|
|
~TabSLAPrint() {}
|
2018-12-04 16:56:49 +00:00
|
|
|
void build() override;
|
|
|
|
void reload_config() override;
|
2018-11-16 16:36:23 +00:00
|
|
|
void update() override;
|
|
|
|
// void init_options_list() override;
|
|
|
|
bool supports_printer_technology(const PrinterTechnology tech) override { return tech == ptSLA; }
|
|
|
|
};
|
|
|
|
|
2018-01-18 10:45:25 +00:00
|
|
|
class SavePresetWindow :public wxDialog
|
|
|
|
{
|
|
|
|
public:
|
2018-10-31 11:56:08 +00:00
|
|
|
SavePresetWindow(wxWindow* parent) :wxDialog(parent, wxID_ANY, _(L("Save preset"))) {}
|
|
|
|
~SavePresetWindow() {}
|
2018-01-18 10:45:25 +00:00
|
|
|
|
|
|
|
std::string m_chosen_name;
|
|
|
|
wxComboBox* m_combo;
|
|
|
|
|
2018-04-13 10:35:04 +00:00
|
|
|
void build(const wxString& title, const std::string& default_name, std::vector<std::string> &values);
|
2018-01-18 10:45:25 +00:00
|
|
|
void accept();
|
|
|
|
std::string get_name() { return m_chosen_name; }
|
|
|
|
};
|
|
|
|
|
2017-12-05 14:54:01 +00:00
|
|
|
} // GUI
|
|
|
|
} // Slic3r
|
2018-04-20 10:58:07 +00:00
|
|
|
|
|
|
|
#endif /* slic3r_Tab_hpp_ */
|