Prepared callback from c++ to Perl to inform about a change of object settings

This commit is contained in:
YuSanka 2018-06-12 19:15:03 +02:00
parent 6b56f99df7
commit f5ef672815
5 changed files with 64 additions and 14 deletions

View file

@ -143,6 +143,7 @@ wxDataViewCtrl *m_objects_ctrl = nullptr;
MyObjectTreeModel *m_objects_model = nullptr;
wxCollapsiblePane *m_collpane_settings = nullptr;
int m_event_object_selection_changed = 0;
int m_event_object_settings_changed = 0;
bool g_prevent_list_events = false; // We use this flag to avoid circular event handling Select()
// happens to fire a wxEVT_LIST_ITEM_SELECTED on OSX, whose event handler
// calls this method again and again and again
@ -1163,9 +1164,12 @@ void select_current_object(int idx)
}
}
void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer, int event_object_selection_changed)
void add_expert_mode_part( wxWindow* parent, wxBoxSizer* sizer,
int event_object_selection_changed,
int event_object_settings_changed)
{
m_event_object_selection_changed = event_object_selection_changed;
m_event_object_settings_changed = event_object_settings_changed;
wxWindowUpdateLocker noUpdates(parent);
// *** Objects List ***

View file

@ -202,7 +202,9 @@ void unselect_objects();
// Select current object in the list on c++ side
void select_current_object(int idx);
void add_expert_mode_part(wxWindow* parent, wxBoxSizer* sizer, int event_object_selection_changed);
void add_expert_mode_part( wxWindow* parent, wxBoxSizer* sizer,
int event_object_selection_changed,
int event_object_settings_changed);
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
// Update view mode according to selected menu
void update_mode();

View file

@ -83,9 +83,13 @@ void add_frequently_changed_parameters(SV *ui_parent, SV *ui_sizer, SV *ui_p_siz
(wxBoxSizer*)wxPli_sv_2_object(aTHX_ ui_sizer, "Wx::BoxSizer"),
(wxFlexGridSizer*)wxPli_sv_2_object(aTHX_ ui_p_sizer, "Wx::FlexGridSizer")); %};
void add_expert_mode_part(SV *ui_parent, SV *ui_sizer, int event)
%code%{ Slic3r::GUI::add_expert_mode_part((wxWindow*)wxPli_sv_2_object(aTHX_ ui_parent, "Wx::Window"),
(wxBoxSizer*)wxPli_sv_2_object(aTHX_ ui_sizer, "Wx::BoxSizer"), event); %};
void add_expert_mode_part( SV *ui_parent, SV *ui_sizer,
int event_object_selection_changed,
int event_object_settings_changed)
%code%{ Slic3r::GUI::add_expert_mode_part( (wxWindow*)wxPli_sv_2_object(aTHX_ ui_parent, "Wx::Window"),
(wxBoxSizer*)wxPli_sv_2_object(aTHX_ ui_sizer, "Wx::BoxSizer"),
event_object_selection_changed,
event_object_settings_changed); %};
void set_objects_from_perl( SV *ui_parent,
SV *frequently_changed_parameters_sizer,