2017-09-19 11:55:48 +00:00
|
|
|
%module{Slic3r::XS};
|
|
|
|
|
|
|
|
%{
|
|
|
|
#include <xsinit.h>
|
|
|
|
#include "slic3r/GUI/Preset.hpp"
|
2017-10-30 17:41:50 +00:00
|
|
|
#include "slic3r/GUI/PresetBundle.hpp"
|
2017-09-19 11:55:48 +00:00
|
|
|
%}
|
|
|
|
|
|
|
|
%name{Slic3r::GUI::Preset} class Preset {
|
|
|
|
// owned by PresetCollection, no constructor/destructor
|
|
|
|
|
2017-10-25 10:53:31 +00:00
|
|
|
bool default() %code%{ RETVAL = THIS->is_default; %};
|
|
|
|
bool external() %code%{ RETVAL = THIS->is_external; %};
|
|
|
|
bool visible() %code%{ RETVAL = THIS->is_visible; %};
|
|
|
|
bool dirty() %code%{ RETVAL = THIS->is_dirty; %};
|
2017-09-19 11:55:48 +00:00
|
|
|
|
2017-10-25 10:53:31 +00:00
|
|
|
const char* name() %code%{ RETVAL = THIS->name.c_str(); %};
|
|
|
|
const char* file() %code%{ RETVAL = THIS->file.c_str(); %};
|
2017-09-19 11:55:48 +00:00
|
|
|
|
2017-10-25 10:53:31 +00:00
|
|
|
bool loaded() %code%{ RETVAL = THIS->loaded; %};
|
2017-09-19 11:55:48 +00:00
|
|
|
|
2017-11-01 18:30:05 +00:00
|
|
|
Ref<DynamicPrintConfig> config() %code%{ RETVAL = &THIS->config; %};
|
|
|
|
|
|
|
|
void set_num_extruders(int num_extruders);
|
2017-09-19 11:55:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
%name{Slic3r::GUI::PresetCollection} class PresetCollection {
|
|
|
|
|
|
|
|
Ref<Preset> preset(size_t idx) %code%{ RETVAL = &THIS->preset(idx); %};
|
2017-09-20 08:16:00 +00:00
|
|
|
Ref<Preset> default_preset() %code%{ RETVAL = &THIS->default_preset(); %};
|
2017-09-19 11:55:48 +00:00
|
|
|
size_t size() const;
|
|
|
|
size_t num_visible() const;
|
2017-10-25 10:53:31 +00:00
|
|
|
|
|
|
|
Ref<Preset> get_selected_preset() %code%{ RETVAL = &THIS->get_selected_preset(); %};
|
|
|
|
Ref<Preset> get_current_preset() %code%{ RETVAL = &THIS->get_edited_preset(); %};
|
|
|
|
std::string get_current_preset_name() %code%{ RETVAL = THIS->get_selected_preset().name; %};
|
|
|
|
Ref<Preset> get_edited_preset() %code%{ RETVAL = &THIS->get_edited_preset(); %};
|
|
|
|
|
|
|
|
Ref<Preset> find_preset(char *name, bool first_visible_if_not_found = false) %code%{ RETVAL = THIS->find_preset(name, first_visible_if_not_found); %};
|
|
|
|
|
|
|
|
bool current_is_dirty();
|
|
|
|
std::vector<std::string> current_dirty_options();
|
|
|
|
|
2017-10-26 15:17:39 +00:00
|
|
|
void update_tab_ui(SV *ui)
|
|
|
|
%code%{ auto cb = (wxChoice*)wxPli_sv_2_object( aTHX_ ui, "Wx::Choice" );
|
|
|
|
THIS->update_tab_ui(cb); %};
|
|
|
|
|
2017-10-25 10:53:31 +00:00
|
|
|
void update_platter_ui(SV *ui)
|
2017-10-26 15:17:39 +00:00
|
|
|
%code%{ auto cb = (wxBitmapComboBox*)wxPli_sv_2_object( aTHX_ ui, "Wx::BitmapComboBox" );
|
2017-10-25 10:53:31 +00:00
|
|
|
THIS->update_platter_ui(cb); %};
|
|
|
|
|
|
|
|
bool update_dirty_ui(SV *ui)
|
|
|
|
%code%{ RETVAL = THIS->update_dirty_ui((wxChoice*)wxPli_sv_2_object(aTHX_ ui, "Wx::Choice")); %};
|
|
|
|
|
|
|
|
bool select_preset_by_name(char *name) %code%{ RETVAL = THIS->select_preset_by_name(name, true); %};
|
|
|
|
|
2017-10-26 15:17:39 +00:00
|
|
|
void save_current_preset(char *new_name);
|
|
|
|
void delete_current_preset();
|
|
|
|
|
2017-09-19 11:55:48 +00:00
|
|
|
%{
|
|
|
|
|
|
|
|
SV*
|
|
|
|
PresetCollection::arrayref()
|
|
|
|
CODE:
|
|
|
|
AV* av = newAV();
|
|
|
|
av_fill(av, THIS->size()-1);
|
2017-10-26 15:17:39 +00:00
|
|
|
for (int i = 0; i < int(THIS->size()); ++ i) {
|
2017-09-19 11:55:48 +00:00
|
|
|
Preset &preset = THIS->preset(i);
|
2017-10-26 15:17:39 +00:00
|
|
|
av_store(av, i, perl_to_SV_ref(preset));
|
2017-09-19 11:55:48 +00:00
|
|
|
}
|
|
|
|
RETVAL = newRV_noinc((SV*)av);
|
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2017-10-25 10:53:31 +00:00
|
|
|
SV*
|
|
|
|
PresetCollection::presets_hash()
|
|
|
|
CODE:
|
|
|
|
HV* hv = newHV();
|
|
|
|
for (size_t i = 1; i < THIS->size(); ++ i) {
|
|
|
|
const Slic3r::Preset &preset = THIS->preset(i);
|
|
|
|
if (! preset.is_default && ! preset.is_external)
|
|
|
|
(void)hv_store(hv, preset.name.c_str(), - int(preset.name.size()), newSVpvn_utf8(preset.file.c_str(), preset.file.size(), true), 0);
|
|
|
|
}
|
|
|
|
RETVAL = (SV*)newRV_noinc((SV*)hv);
|
|
|
|
OUTPUT:
|
|
|
|
RETVAL
|
|
|
|
|
2017-09-19 11:55:48 +00:00
|
|
|
%}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
%name{Slic3r::GUI::PresetBundle} class PresetBundle {
|
|
|
|
PresetBundle();
|
|
|
|
~PresetBundle();
|
|
|
|
|
2017-10-30 17:15:41 +00:00
|
|
|
void setup_directories();
|
2017-10-26 15:17:39 +00:00
|
|
|
void load_presets(const char *dir_path);
|
2017-11-01 18:30:05 +00:00
|
|
|
void load_config_file(const char *path);
|
2017-10-26 15:17:39 +00:00
|
|
|
size_t load_configbundle(const char *path);
|
2017-11-01 18:30:05 +00:00
|
|
|
void export_configbundle(char *path);
|
2017-10-26 15:17:39 +00:00
|
|
|
void set_default_suppressed(bool default_suppressed);
|
|
|
|
|
2017-10-30 17:15:41 +00:00
|
|
|
void load_selections (AppConfig *config) %code%{ THIS->load_selections(*config); %};
|
|
|
|
void export_selections(AppConfig *config) %code%{ THIS->export_selections(*config); %};
|
|
|
|
|
2017-10-26 15:17:39 +00:00
|
|
|
Ref<PresetCollection> print() %code%{ RETVAL = &THIS->prints; %};
|
|
|
|
Ref<PresetCollection> filament() %code%{ RETVAL = &THIS->filaments; %};
|
|
|
|
Ref<PresetCollection> printer() %code%{ RETVAL = &THIS->printers; %};
|
|
|
|
|
|
|
|
std::vector<std::string> filament_presets() %code%{ RETVAL = THIS->filament_presets; %};
|
|
|
|
void set_filament_preset(int idx, const char *name);
|
|
|
|
void update_multi_material_filament_presets();
|
|
|
|
|
|
|
|
Clone<DynamicPrintConfig> full_config() %code%{ RETVAL = THIS->full_config(); %};
|
|
|
|
|
|
|
|
void update_platter_filament_ui(int extruder_idx, SV *ui)
|
|
|
|
%code%{ auto cb = (wxBitmapComboBox*)wxPli_sv_2_object(aTHX_ ui, "Wx::BitmapComboBox");
|
|
|
|
THIS->update_platter_filament_ui(extruder_idx, cb); %};
|
|
|
|
|
|
|
|
void update_platter_filament_ui_colors(int extruder_idx, SV *ui)
|
|
|
|
%code%{ auto cb = (wxBitmapComboBox*)wxPli_sv_2_object(aTHX_ ui, "Wx::BitmapComboBox");
|
|
|
|
THIS->update_platter_filament_ui_colors(extruder_idx, cb); %};
|
2017-10-02 15:35:00 +00:00
|
|
|
|
2017-09-19 11:55:48 +00:00
|
|
|
};
|