Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVojtech Kral <vojtech@kral.hk>2019-06-17 17:39:22 +0300
committerVojtech Kral <vojtech@kral.hk>2019-09-17 14:20:06 +0300
commit235b659cf97211f0b80c47008d8458b9173a3a40 (patch)
tree1e799e771c9d9e653ff5f142cfe1e62487fd65d9 /src/slic3r/GUI/ConfigWizard_private.hpp
parentdba9925c4ed37d5b44f6672824987fa9ca0ad7b8 (diff)
WIP: ConfigWizard: 3rd party bundle installation roughly done
Diffstat (limited to 'src/slic3r/GUI/ConfigWizard_private.hpp')
-rw-r--r--src/slic3r/GUI/ConfigWizard_private.hpp135
1 files changed, 97 insertions, 38 deletions
diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp
index 82708cc59..e6f389785 100644
--- a/src/slic3r/GUI/ConfigWizard_private.hpp
+++ b/src/slic3r/GUI/ConfigWizard_private.hpp
@@ -21,7 +21,8 @@
#include "libslic3r/PrintConfig.hpp"
#include "slic3r/Utils/PresetUpdater.hpp"
#include "AppConfig.hpp"
-#include "Preset.hpp"
+// #include "Preset.hpp"
+#include "PresetBundle.hpp"
#include "BedShapeDialog.hpp"
namespace fs = boost::filesystem;
@@ -43,13 +44,70 @@ enum {
ROW_SPACING = 75,
};
+
+
+// Configuration data structures extensions needed for the wizard
+
enum Technology {
// Bitflag equivalent of PrinterTechnology
T_FFF = 0x1,
T_SLA = 0x2,
- T_Any = ~0,
+ T_ANY = ~0,
+};
+
+struct Materials
+{
+ Technology technology;
+ std::vector<Preset> presets;
+ std::set<std::string> types;
+
+ Materials(Technology technology) : technology(technology) {}
+
+ const std::string& appconfig_section() const;
+ const std::string& get_type(Preset &preset) const;
+ const std::string& get_vendor(Preset &preset) const;
+
+ template<class F> void filter_presets(const std::string &type, const std::string &vendor, F cb) {
+ for (Preset &preset : presets) {
+ if ((type.empty() || get_type(preset) == type) && (vendor.empty() || get_vendor(preset) == vendor)) {
+ cb(preset);
+ }
+ }
+ }
+
+ static const std::string UNKNOWN;
+ static const std::string& get_filament_type(const Preset &preset);
+ static const std::string& get_filament_vendor(const Preset &preset);
+ static const std::string& get_material_type(Preset &preset);
+ static const std::string& get_material_vendor(const Preset &preset);
};
+struct Bundle
+{
+ fs::path source_path; // XXX: not needed?
+ std::unique_ptr<PresetBundle> preset_bundle;
+ VendorProfile *vendor_profile;
+ const bool is_in_resources;
+ const bool is_prusa_bundle;
+
+ Bundle(fs::path source_path, bool is_in_resources, bool is_prusa_bundle = false);
+ Bundle(Bundle &&other);
+
+ const std::string& vendor_id() const { return vendor_profile->id; }
+};
+
+struct BundleMap: std::unordered_map<std::string, Bundle>
+{
+ static BundleMap load();
+
+ Bundle& prusa_bundle();
+ const Bundle& prusa_bundle() const;
+};
+
+
+
+// GUI elements
+
typedef std::function<bool(const VendorProfile::PrinterModel&)> ModelFilter;
struct PrinterPicker: wxPanel
@@ -79,6 +137,8 @@ struct PrinterPicker: wxPanel
int get_width() const { return width; }
const std::vector<int>& get_button_indexes() { return m_button_indexes; }
+
+ static const std::string PRINTER_PLACEHOLDER;
private:
int width;
std::vector<int> m_button_indexes;
@@ -97,65 +157,50 @@ struct ConfigWizardPage: wxPanel
virtual ~ConfigWizardPage();
template<class T>
- void append(T *thing, int proportion = 0, int flag = wxEXPAND|wxTOP|wxBOTTOM, int border = 10)
+ T* append(T *thing, int proportion = 0, int flag = wxEXPAND|wxTOP|wxBOTTOM, int border = 10)
{
content->Add(thing, proportion, flag, border);
+ return thing;
}
- void append_text(wxString text);
+ wxStaticText* append_text(wxString text);
void append_spacer(int space);
ConfigWizard::priv *wizard_p() const { return parent->p.get(); }
virtual void apply_custom_config(DynamicPrintConfig &config) {}
+ virtual void set_run_reason(ConfigWizard::RunReason run_reason) {}
};
struct PageWelcome: ConfigWizardPage
{
+ wxStaticText *welcome_text;
wxCheckBox *cbox_reset;
PageWelcome(ConfigWizard *parent);
bool reset_user_profile() const { return cbox_reset != nullptr ? cbox_reset->GetValue() : false; }
+
+ virtual void set_run_reason(ConfigWizard::RunReason run_reason) override;
};
struct PagePrinters: ConfigWizardPage
{
std::vector<PrinterPicker *> printer_pickers;
+ Technology technology;
+ bool install;
- PagePrinters(ConfigWizard *parent, wxString title, wxString shortname, const VendorProfile &vendor, unsigned indent, Technology technology);
+ PagePrinters(ConfigWizard *parent,
+ wxString title,
+ wxString shortname,
+ const VendorProfile &vendor,
+ unsigned indent, Technology technology);
void select_all(bool select, bool alternates = false);
int get_width() const;
bool any_selected() const;
-};
-
-struct Materials
-{
- Technology technology;
- std::vector<Preset> presets;
- std::set<std::string> types;
-
- Materials(Technology technology) : technology(technology) {}
-
- const std::string& appconfig_section() const;
- const std::string& get_type(Preset &preset) const;
- const std::string& get_vendor(Preset &preset) const;
-
- template<class F> void filter_presets(const std::string &type, const std::string &vendor, F cb) {
- for (Preset &preset : presets) {
- if ((type.empty() || get_type(preset) == type) && (vendor.empty() || get_vendor(preset) == vendor)) {
- cb(preset);
- }
- }
- }
-
- static const std::string UNKNOWN;
- static const std::string& get_filament_type(const Preset &preset);
- static const std::string& get_filament_vendor(const Preset &preset);
- static const std::string& get_material_type(Preset &preset);
- static const std::string& get_material_vendor(const Preset &preset);
+ virtual void set_run_reason(ConfigWizard::RunReason run_reason) override;
};
// Here we extend wxListBox and wxCheckListBox
@@ -232,11 +277,11 @@ struct PageUpdate: ConfigWizardPage
struct PageVendors: ConfigWizardPage
{
- std::vector<PrinterPicker*> pickers;
+ // std::vector<PrinterPicker*> pickers;
PageVendors(ConfigWizard *parent);
- void on_vendor_pick(size_t i);
+ // void on_vendor_pick(size_t i);
};
struct PageFirmware: ConfigWizardPage
@@ -290,7 +335,7 @@ public:
void go_prev();
void go_next();
void go_to(size_t i);
- void go_to(ConfigWizardPage *page);
+ void go_to(const ConfigWizardPage *page);
void clear();
void msw_rescale();
@@ -328,16 +373,24 @@ private:
wxDEFINE_EVENT(EVT_INDEX_PAGE, wxCommandEvent);
+
+// ConfigWizard private data
+
struct ConfigWizard::priv
{
ConfigWizard *q;
ConfigWizard::RunReason run_reason = RR_USER;
AppConfig appconfig_new; // Backing for vendor/model/variant and material selections in the GUI
- std::unordered_map<std::string, VendorProfile> vendors;
+ // std::unordered_map<std::string, VendorProfile> vendors;
+ // PresetBundle bundle; // XXX: comment
+ BundleMap bundles; // XXX: comment
Materials filaments; // Holds available filament presets and their types & vendors
Materials sla_materials; // Ditto for SLA materials
- std::unordered_map<std::string, std::string> vendors_rsrc; // List of bundles to install from resources
+ // std::set<const VendorProfile*> install_3rdparty;
+ // XXX: rm: (?)
+ // std::unordered_map<std::string, std::string> vendors_rsrc; // List of bundles to install from resources
std::unique_ptr<DynamicPrintConfig> custom_config; // Backing for custom printer definition
+ bool any_fff_selected; // Used to decide whether to display Filaments page
bool any_sla_selected; // Used to decide whether to display SLA Materials page
wxScrolledWindow *hscroll = nullptr;
@@ -359,6 +412,7 @@ struct ConfigWizard::priv
PageCustom *page_custom = nullptr;
PageUpdate *page_update = nullptr;
PageVendors *page_vendors = nullptr; // XXX: ?
+ std::map<std::string, PagePrinters*> pages_3rdparty;
// Custom setup pages
PageFirmware *page_firmware = nullptr;
@@ -366,6 +420,9 @@ struct ConfigWizard::priv
PageDiameters *page_diams = nullptr;
PageTemperatures *page_temps = nullptr;
+ // Pointers to all pages (regardless or whether currently part of the ConfigWizardIndex)
+ std::vector<ConfigWizardPage*> all_pages;
+
priv(ConfigWizard *q)
: q(q)
, filaments(T_FFF)
@@ -376,14 +433,16 @@ struct ConfigWizard::priv
void load_pages();
void init_dialog_size();
- bool check_first_variant() const;
void load_vendors();
void add_page(ConfigWizardPage *page);
void enable_next(bool enable);
void set_start_page(ConfigWizard::StartPage start_page);
+ void create_3rdparty_pages();
+ void set_run_reason(RunReason run_reason);
void on_custom_setup();
void on_printer_pick(PagePrinters *page);
+ void on_3rdparty_install(const VendorProfile *vendor, bool install); // XXX: ?
void apply_config(AppConfig *app_config, PresetBundle *preset_bundle, const PresetUpdater *updater);