Some modifications:
- Added no_controller to create_preset_tab(). - Small changes in Tab"Setting" constructor.
This commit is contained in:
parent
fced9a85ec
commit
4d234e90ae
@ -162,9 +162,9 @@ sub _init_tabpanel {
|
|||||||
EVT_COMMAND($self, -1, $VALUE_CHANGE_EVENT, sub {
|
EVT_COMMAND($self, -1, $VALUE_CHANGE_EVENT, sub {
|
||||||
my ($self, $event) = @_;
|
my ($self, $event) = @_;
|
||||||
my $str = $event->GetString;
|
my $str = $event->GetString;
|
||||||
my ($opt_key, $title) = ($str =~ /(.*) (.*)/);
|
my ($opt_key, $name) = ($str =~ /(.*) (.*)/);
|
||||||
#print "VALUE_CHANGE_EVENT: ", $opt_key, "\n";
|
#print "VALUE_CHANGE_EVENT: ", $opt_key, "\n";
|
||||||
my $tab = Slic3r::GUI::get_preset_tab($title);
|
my $tab = Slic3r::GUI::get_preset_tab($name);
|
||||||
my $config = $tab->get_config;
|
my $config = $tab->get_config;
|
||||||
if ($self->{plater}) {
|
if ($self->{plater}) {
|
||||||
$self->{plater}->on_config_change($config); # propagate config change events to the plater
|
$self->{plater}->on_config_change($config); # propagate config change events to the plater
|
||||||
@ -180,11 +180,9 @@ sub _init_tabpanel {
|
|||||||
# or when the preset's "modified" status changes.
|
# or when the preset's "modified" status changes.
|
||||||
EVT_COMMAND($self, -1, $PRESETS_CHANGED_EVENT, sub {
|
EVT_COMMAND($self, -1, $PRESETS_CHANGED_EVENT, sub {
|
||||||
my ($self, $event) = @_;
|
my ($self, $event) = @_;
|
||||||
my $title = $event->GetString;
|
my $tab_name = $event->GetString;
|
||||||
my $tab_name = lc($title);
|
|
||||||
#print "PRESETS_CHANGED_EVENT: ", $tab_name , "\n";
|
|
||||||
|
|
||||||
my $tab = Slic3r::GUI::get_preset_tab($title);
|
my $tab = Slic3r::GUI::get_preset_tab($tab_name);
|
||||||
if ($self->{plater}) {
|
if ($self->{plater}) {
|
||||||
# Update preset combo boxes (Print settings, Filament, Printer) from their respective tabs.
|
# Update preset combo boxes (Print settings, Filament, Printer) from their respective tabs.
|
||||||
my $presets = $tab->get_presets;
|
my $presets = $tab->get_presets;
|
||||||
@ -205,10 +203,10 @@ sub _init_tabpanel {
|
|||||||
$self->{plater}->on_config_change($tab->get_config);
|
$self->{plater}->on_config_change($tab->get_config);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT);
|
Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config}, $self->{no_controller}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT);
|
||||||
$self->{options_tabs2}{print} = Slic3r::GUI::get_preset_tab("Print");
|
$self->{options_tabs2}{print} = Slic3r::GUI::get_preset_tab("print");
|
||||||
$self->{options_tabs2}{filament} = Slic3r::GUI::get_preset_tab("Filament");
|
$self->{options_tabs2}{filament} = Slic3r::GUI::get_preset_tab("filament");
|
||||||
$self->{options_tabs2}{printer} = Slic3r::GUI::get_preset_tab("Printer");
|
$self->{options_tabs2}{printer} = Slic3r::GUI::get_preset_tab("printer");
|
||||||
|
|
||||||
if ($self->{plater}) {
|
if ($self->{plater}) {
|
||||||
$self->{plater}->on_select_preset(sub {
|
$self->{plater}->on_select_preset(sub {
|
||||||
|
@ -186,15 +186,16 @@ void add_debug_menu(wxMenuBar *menu)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, int event_value_change, int event_presets_changed)
|
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config,
|
||||||
|
bool no_controller, int event_value_change, int event_presets_changed)
|
||||||
{
|
{
|
||||||
add_created_tab(new TabPrint (g_wxTabPanel, "Print"), preset_bundle, app_config);
|
add_created_tab(new TabPrint (g_wxTabPanel), preset_bundle, app_config, no_controller);
|
||||||
add_created_tab(new TabFilament(g_wxTabPanel, "Filament"), preset_bundle, app_config);
|
add_created_tab(new TabFilament(g_wxTabPanel), preset_bundle, app_config, no_controller);
|
||||||
add_created_tab(new TabPrinter (g_wxTabPanel, "Printer"), preset_bundle, app_config);
|
add_created_tab(new TabPrinter (g_wxTabPanel), preset_bundle, app_config, no_controller);
|
||||||
g_wxTabPanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, ([](wxCommandEvent e){
|
g_wxTabPanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, ([](wxCommandEvent e){
|
||||||
Tab* panel = (Tab*)g_wxTabPanel->GetCurrentPage();
|
Tab* panel = (Tab*)g_wxTabPanel->GetCurrentPage();
|
||||||
if (panel->GetName().compare("Print")==0 ||
|
if (panel->GetName().compare("Print Settings")==0 ||
|
||||||
panel->GetName().compare("Filament") == 0)
|
panel->GetName().compare("Filament Settings") == 0)
|
||||||
panel->OnActivate();
|
panel->OnActivate();
|
||||||
}), g_wxTabPanel->GetId() );
|
}), g_wxTabPanel->GetId() );
|
||||||
for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) {
|
for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) {
|
||||||
@ -212,7 +213,7 @@ TabIface* get_preset_tab_iface(char *name)
|
|||||||
Tab *tab = dynamic_cast<Tab*>(g_wxTabPanel->GetPage(i));
|
Tab *tab = dynamic_cast<Tab*>(g_wxTabPanel->GetPage(i));
|
||||||
if (! tab)
|
if (! tab)
|
||||||
continue;
|
continue;
|
||||||
if (tab->title().ToStdString() == name) {
|
if (tab->name() == name) {
|
||||||
return new TabIface(tab);
|
return new TabIface(tab);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -297,15 +298,14 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config)
|
void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config, bool no_controller)
|
||||||
{
|
{
|
||||||
panel->m_no_controller = app_config->get("no_controller").empty();
|
panel->m_no_controller = no_controller;
|
||||||
panel->m_show_btn_incompatible_presets = app_config->get("show_incompatible_presets").empty();
|
panel->m_show_btn_incompatible_presets = app_config->get("show_incompatible_presets").empty();
|
||||||
panel->create_preset_tab(preset_bundle);
|
panel->create_preset_tab(preset_bundle);
|
||||||
|
|
||||||
// Load the currently selected preset into the GUI, update the preset selection box.
|
// Load the currently selected preset into the GUI, update the preset selection box.
|
||||||
panel->load_current_preset();
|
panel->load_current_preset();
|
||||||
|
|
||||||
g_wxTabPanel->AddPage(panel, panel->title());
|
g_wxTabPanel->AddPage(panel, panel->title());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,11 +36,12 @@ void set_tab_panel(wxNotebook *tab_panel);
|
|||||||
|
|
||||||
void add_debug_menu(wxMenuBar *menu);
|
void add_debug_menu(wxMenuBar *menu);
|
||||||
// Create a new preset tab (print, filament and printer),
|
// Create a new preset tab (print, filament and printer),
|
||||||
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, int event_value_change, int event_presets_changed);
|
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config,
|
||||||
|
bool no_controller, int event_value_change, int event_presets_changed);
|
||||||
TabIface* get_preset_tab_iface(char *name);
|
TabIface* get_preset_tab_iface(char *name);
|
||||||
|
|
||||||
// add it at the end of the tab panel.
|
// add it at the end of the tab panel.
|
||||||
void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config);
|
void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config, bool no_controller);
|
||||||
// Change option value in config
|
// Change option value in config
|
||||||
void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value);
|
void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value);
|
||||||
|
|
||||||
|
@ -276,14 +276,13 @@ void Tab::on_value_change(std::string opt_key, boost::any value)
|
|||||||
{
|
{
|
||||||
if (m_event_value_change > 0) {
|
if (m_event_value_change > 0) {
|
||||||
wxCommandEvent event(m_event_value_change);
|
wxCommandEvent event(m_event_value_change);
|
||||||
std::string str_out = opt_key + " " + m_title;
|
std::string str_out = opt_key + " " + m_name;
|
||||||
event.SetString(str_out);
|
event.SetString(str_out);
|
||||||
if (opt_key == "extruders_count")
|
if (opt_key == "extruders_count")
|
||||||
{
|
{
|
||||||
int val = boost::any_cast<size_t>(value);
|
int val = boost::any_cast<size_t>(value);
|
||||||
event.SetInt(val);
|
event.SetInt(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_wxMainFrame->ProcessWindowEvent(event);
|
g_wxMainFrame->ProcessWindowEvent(event);
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
@ -298,7 +297,7 @@ void Tab::on_presets_changed(/*std::vector<std::string> reload_dependent_tabs*/)
|
|||||||
{
|
{
|
||||||
if (m_event_presets_changed > 0) {
|
if (m_event_presets_changed > 0) {
|
||||||
wxCommandEvent event(m_event_presets_changed);
|
wxCommandEvent event(m_event_presets_changed);
|
||||||
event.SetString(m_title);
|
event.SetString(m_name);
|
||||||
g_wxMainFrame->ProcessWindowEvent(event);
|
g_wxMainFrame->ProcessWindowEvent(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ class Tab: public wxPanel
|
|||||||
{
|
{
|
||||||
wxNotebook* m_parent;
|
wxNotebook* m_parent;
|
||||||
protected:
|
protected:
|
||||||
|
std::string m_name;
|
||||||
const wxString m_title;
|
const wxString m_title;
|
||||||
wxBitmapComboBox* m_presets_choice;
|
wxBitmapComboBox* m_presets_choice;
|
||||||
wxBitmapButton* m_btn_save_preset;
|
wxBitmapButton* m_btn_save_preset;
|
||||||
@ -108,18 +109,18 @@ public:
|
|||||||
bool m_show_btn_incompatible_presets;
|
bool m_show_btn_incompatible_presets;
|
||||||
PresetCollection* m_presets;
|
PresetCollection* m_presets;
|
||||||
DynamicPrintConfig* m_config;
|
DynamicPrintConfig* m_config;
|
||||||
// t_change m_on_value_change{ nullptr };
|
|
||||||
// std::function<void()> m_on_presets_changed{ nullptr };
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Tab() {}
|
Tab() {}
|
||||||
Tab(wxNotebook* parent, const char *title) : m_parent(parent), m_title(title) {
|
Tab(wxNotebook* parent, const char *title, const char* name) :
|
||||||
|
m_parent(parent), m_title(title), m_name(name) {
|
||||||
Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
|
||||||
}
|
}
|
||||||
~Tab(){}
|
~Tab(){}
|
||||||
|
|
||||||
wxWindow* parent() const { return m_parent; }
|
wxWindow* parent() const { return m_parent; }
|
||||||
wxString title() const { return m_title; }
|
wxString title() const { return m_title; }
|
||||||
|
std::string name() const { return m_name; }
|
||||||
|
|
||||||
// Set the events to the callbacks posted to the main frame window (currently implemented in Perl).
|
// Set the events to the callbacks posted to the main frame window (currently implemented in Perl).
|
||||||
void set_event_value_change(wxEventType evt) { m_event_value_change = evt; }
|
void set_event_value_change(wxEventType evt) { m_event_value_change = evt; }
|
||||||
@ -138,7 +139,7 @@ public:
|
|||||||
void OnTreeSelChange(wxTreeEvent& event);
|
void OnTreeSelChange(wxTreeEvent& event);
|
||||||
void OnKeyDown(wxKeyEvent& event);
|
void OnKeyDown(wxKeyEvent& event);
|
||||||
void OnComboBox(wxCommandEvent& event) {
|
void OnComboBox(wxCommandEvent& event) {
|
||||||
select_preset(static_cast<const wxComboBox*>(m_presets_choice)->GetStringSelection().ToStdString()); }
|
select_preset(static_cast<const wxComboBox*>(m_presets_choice)->GetStringSelection().ToStdString()); }
|
||||||
void save_preset(std::string name = "");
|
void save_preset(std::string name = "");
|
||||||
void delete_preset();
|
void delete_preset();
|
||||||
void toggle_show_hide_incompatible();
|
void toggle_show_hide_incompatible();
|
||||||
@ -161,8 +162,7 @@ public:
|
|||||||
bool current_preset_is_dirty();
|
bool current_preset_is_dirty();
|
||||||
DynamicPrintConfig* get_config() { return m_config; }
|
DynamicPrintConfig* get_config() { return m_config; }
|
||||||
PresetCollection* get_presets() { return m_presets; }
|
PresetCollection* get_presets() { return m_presets; }
|
||||||
std::vector<std::string> get_dependent_tabs() {
|
std::vector<std::string> get_dependent_tabs() { return m_reload_dependent_tabs; }
|
||||||
return m_reload_dependent_tabs; }
|
|
||||||
|
|
||||||
void on_value_change(std::string opt_key, boost::any value);
|
void on_value_change(std::string opt_key, boost::any value);
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ class TabPrint : public Tab
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TabPrint() {}
|
TabPrint() {}
|
||||||
TabPrint(wxNotebook* parent, const char *title) : Tab(parent, title) {}
|
TabPrint(wxNotebook* parent) : Tab(parent, "Print Settings", "print") {}
|
||||||
~TabPrint(){}
|
~TabPrint(){}
|
||||||
|
|
||||||
ogStaticText* m_recommended_thin_wall_thickness_description_line;
|
ogStaticText* m_recommended_thin_wall_thickness_description_line;
|
||||||
@ -194,7 +194,7 @@ class TabFilament : public Tab
|
|||||||
ogStaticText* m_cooling_description_line;
|
ogStaticText* m_cooling_description_line;
|
||||||
public:
|
public:
|
||||||
TabFilament() {}
|
TabFilament() {}
|
||||||
TabFilament(wxNotebook* parent, const char *title) : Tab(parent, title) {}
|
TabFilament(wxNotebook* parent) : Tab(parent, "Filament Settings", "filament") {}
|
||||||
~TabFilament(){}
|
~TabFilament(){}
|
||||||
|
|
||||||
void build() override;
|
void build() override;
|
||||||
@ -215,7 +215,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
TabPrinter() {}
|
TabPrinter() {}
|
||||||
TabPrinter(wxNotebook* parent, const char *title) : Tab(parent, title) {}
|
TabPrinter(wxNotebook* parent) : Tab(parent, "Printer Settings", "printer") {}
|
||||||
~TabPrinter(){}
|
~TabPrinter(){}
|
||||||
|
|
||||||
void build() override;
|
void build() override;
|
||||||
|
@ -7,7 +7,7 @@ void TabIface::load_current_preset() { m_tab->load_current_preset(); }
|
|||||||
void TabIface::update_tab_ui() { m_tab->update_tab_ui(); }
|
void TabIface::update_tab_ui() { m_tab->update_tab_ui(); }
|
||||||
void TabIface::update_ui_from_settings() { m_tab->update_ui_from_settings();}
|
void TabIface::update_ui_from_settings() { m_tab->update_ui_from_settings();}
|
||||||
void TabIface::select_preset(char* name) { m_tab->select_preset(name);}
|
void TabIface::select_preset(char* name) { m_tab->select_preset(name);}
|
||||||
char* TabIface::title() { return (char*)m_tab->title().ToStdString()/*ToUTF8()*/.data();}
|
char* TabIface::title() { return (char*)m_tab->title().ToStdString().data();}
|
||||||
void TabIface::load_config(DynamicPrintConfig* config) { m_tab->load_config(*config);}
|
void TabIface::load_config(DynamicPrintConfig* config) { m_tab->load_config(*config);}
|
||||||
bool TabIface::current_preset_is_dirty() { return m_tab->current_preset_is_dirty();}
|
bool TabIface::current_preset_is_dirty() { return m_tab->current_preset_is_dirty();}
|
||||||
DynamicPrintConfig* TabIface::get_config() { return m_tab->get_config();}
|
DynamicPrintConfig* TabIface::get_config() { return m_tab->get_config();}
|
||||||
|
@ -35,8 +35,8 @@ void set_tab_panel(SV *ui)
|
|||||||
void add_debug_menu(SV *ui)
|
void add_debug_menu(SV *ui)
|
||||||
%code%{ Slic3r::GUI::add_debug_menu((wxMenuBar*)wxPli_sv_2_object(aTHX_ ui, "Wx::MenuBar")); %};
|
%code%{ Slic3r::GUI::add_debug_menu((wxMenuBar*)wxPli_sv_2_object(aTHX_ ui, "Wx::MenuBar")); %};
|
||||||
|
|
||||||
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, int event_value_change, int event_presets_changed)
|
void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, bool no_controller, int event_value_change, int event_presets_changed)
|
||||||
%code%{ Slic3r::GUI::create_preset_tabs(preset_bundle, app_config, event_value_change, event_presets_changed); %};
|
%code%{ Slic3r::GUI::create_preset_tabs(preset_bundle, app_config, no_controller, event_value_change, event_presets_changed); %};
|
||||||
|
|
||||||
Ref<TabIface> get_preset_tab(char *name)
|
Ref<TabIface> get_preset_tab(char *name)
|
||||||
%code%{ RETVAL=Slic3r::GUI::get_preset_tab_iface(name); %};
|
%code%{ RETVAL=Slic3r::GUI::get_preset_tab_iface(name); %};
|
||||||
|
Loading…
Reference in New Issue
Block a user