Temporary changes and code cleaning
This commit is contained in:
parent
9ce9b87e81
commit
8f6e3cc43b
11 changed files with 92 additions and 281 deletions
|
@ -119,11 +119,6 @@ void break_to_debugger()
|
||||||
// #ys_FIXME_for_delete
|
// #ys_FIXME_for_delete
|
||||||
std::vector<Tab *> g_tabs_list;
|
std::vector<Tab *> g_tabs_list;
|
||||||
|
|
||||||
std::vector <std::shared_ptr<ConfigOptionsGroup>> m_optgroups;
|
|
||||||
double m_brim_width = 0.0;
|
|
||||||
size_t m_label_width = 100;
|
|
||||||
wxButton* g_wiping_dialog_button = nullptr;
|
|
||||||
|
|
||||||
//showed/hided controls according to the view mode
|
//showed/hided controls according to the view mode
|
||||||
wxWindow *g_right_panel = nullptr;
|
wxWindow *g_right_panel = nullptr;
|
||||||
wxBoxSizer *g_frequently_changed_parameters_sizer = nullptr;
|
wxBoxSizer *g_frequently_changed_parameters_sizer = nullptr;
|
||||||
|
@ -192,8 +187,6 @@ void set_objects_list_sizer(wxBoxSizer *objects_list_sizer){
|
||||||
g_object_list_sizer = objects_list_sizer;
|
g_object_list_sizer = objects_list_sizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static wxString dots("…", wxConvUTF8);
|
|
||||||
|
|
||||||
void open_model(wxWindow *parent, wxArrayString& input_files){
|
void open_model(wxWindow *parent, wxArrayString& input_files){
|
||||||
auto dialog = new wxFileDialog(parent /*? parent : GetTopWindow()*/,
|
auto dialog = new wxFileDialog(parent /*? parent : GetTopWindow()*/,
|
||||||
_(L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):")),
|
_(L("Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):")),
|
||||||
|
@ -432,11 +425,6 @@ void set_print_callback_event(Print *print, int id)
|
||||||
wxWindow* get_right_panel(){
|
wxWindow* get_right_panel(){
|
||||||
return g_right_panel;
|
return g_right_panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t& label_width(){
|
|
||||||
return m_label_width;
|
|
||||||
}
|
|
||||||
|
|
||||||
void create_combochecklist(wxComboCtrl* comboCtrl, std::string text, std::string items, bool initial_value)
|
void create_combochecklist(wxComboCtrl* comboCtrl, std::string text, std::string items, bool initial_value)
|
||||||
{
|
{
|
||||||
if (comboCtrl == nullptr)
|
if (comboCtrl == nullptr)
|
||||||
|
@ -531,16 +519,18 @@ void set_model_events_from_perl(Model &model,
|
||||||
// add_collapsible_panes(parent, sizer);
|
// add_collapsible_panes(parent, sizer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer)
|
void Sidebar::add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer/*, wxFlexGridSizer* preset_sizer*/)
|
||||||
{
|
{
|
||||||
DynamicPrintConfig* config = &wxGetApp().preset_bundle->prints.get_edited_preset().config;
|
DynamicPrintConfig* config = &wxGetApp().preset_bundle->prints.get_edited_preset().config;
|
||||||
std::shared_ptr<ConfigOptionsGroup> optgroup = std::make_shared<ConfigOptionsGroup>(parent, "", config);
|
std::shared_ptr<ConfigOptionsGroup> optgroup = std::make_shared<ConfigOptionsGroup>(parent, "", config);
|
||||||
const wxArrayInt& ar = preset_sizer->GetColWidths();
|
// const wxArrayInt& ar = preset_sizer->GetColWidths();
|
||||||
m_label_width = ar.IsEmpty() ? 100 : ar.front()-4;
|
// m_label_width = ar.IsEmpty() ? 100 : ar.front()-4;
|
||||||
optgroup->label_width = m_label_width;
|
optgroup->label_width = 100;// m_label_width;
|
||||||
|
|
||||||
|
auto m_optgroups = get_optgroups();
|
||||||
|
|
||||||
//Frequently changed parameters
|
//Frequently changed parameters
|
||||||
optgroup->m_on_change = [config](t_config_option_key opt_key, boost::any value){
|
optgroup->m_on_change = [config, m_optgroups](t_config_option_key opt_key, boost::any value){
|
||||||
TabPrint* tab_print = nullptr;
|
TabPrint* tab_print = nullptr;
|
||||||
for (size_t i = 0; i < wxGetApp().tab_panel()->GetPageCount(); ++i) {
|
for (size_t i = 0; i < wxGetApp().tab_panel()->GetPageCount(); ++i) {
|
||||||
Tab *tab = dynamic_cast<Tab*>(wxGetApp().tab_panel()->GetPage(i));
|
Tab *tab = dynamic_cast<Tab*>(wxGetApp().tab_panel()->GetPage(i));
|
||||||
|
@ -566,12 +556,12 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||||
double brim_width = config->opt_float("brim_width");
|
double brim_width = config->opt_float("brim_width");
|
||||||
if (boost::any_cast<bool>(value) == true)
|
if (boost::any_cast<bool>(value) == true)
|
||||||
{
|
{
|
||||||
new_val = m_brim_width == 0.0 ? 10 :
|
new_val = 10;// m_brim_width == 0.0 ? 10 :
|
||||||
m_brim_width < 0.0 ? m_brim_width * (-1) :
|
// m_brim_width < 0.0 ? m_brim_width * (-1) :
|
||||||
m_brim_width;
|
// m_brim_width;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
m_brim_width = brim_width * (-1);
|
// m_brim_width = brim_width * (-1);
|
||||||
new_val = 0;
|
new_val = 0;
|
||||||
}
|
}
|
||||||
new_conf.set_key_value("brim_width", new ConfigOptionFloat(new_val));
|
new_conf.set_key_value("brim_width", new ConfigOptionFloat(new_val));
|
||||||
|
@ -617,7 +607,7 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||||
option.opt.full_width = true;
|
option.opt.full_width = true;
|
||||||
optgroup->append_single_option_line(option);
|
optgroup->append_single_option_line(option);
|
||||||
|
|
||||||
m_brim_width = config->opt_float("brim_width");
|
auto m_brim_width = config->opt_float("brim_width");
|
||||||
def.label = L("Brim");
|
def.label = L("Brim");
|
||||||
def.type = coBool;
|
def.type = coBool;
|
||||||
def.tooltip = L("This flag enables the brim that will be printed around each object on the first layer.");
|
def.tooltip = L("This flag enables the brim that will be printed around each object on the first layer.");
|
||||||
|
@ -628,7 +618,8 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||||
|
|
||||||
|
|
||||||
Line line = { "", "" };
|
Line line = { "", "" };
|
||||||
line.widget = [config](wxWindow* parent){
|
line.widget = [config, this](wxWindow* parent){
|
||||||
|
auto g_wiping_dialog_button = get_wiping_dialog_button();
|
||||||
g_wiping_dialog_button = new wxButton(parent, wxID_ANY, _(L("Purging volumes")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
|
g_wiping_dialog_button = new wxButton(parent, wxID_ANY, _(L("Purging volumes")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
|
||||||
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
sizer->Add(g_wiping_dialog_button);
|
sizer->Add(g_wiping_dialog_button);
|
||||||
|
@ -655,26 +646,6 @@ void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFl
|
||||||
sizer->Add(optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT, 2);
|
sizer->Add(optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT, 2);
|
||||||
|
|
||||||
m_optgroups.push_back(optgroup);// ogFrequentlyChangingParameters
|
m_optgroups.push_back(optgroup);// ogFrequentlyChangingParameters
|
||||||
|
|
||||||
// Object List
|
|
||||||
add_objects_list(parent, sizer);
|
|
||||||
|
|
||||||
// Frequently Object Settings
|
|
||||||
add_object_settings(parent, sizer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void show_frequently_changed_parameters(bool show)
|
|
||||||
{
|
|
||||||
g_frequently_changed_parameters_sizer->Show(show);
|
|
||||||
if (!show) return;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < wxGetApp().tab_panel()->GetPageCount(); ++i) {
|
|
||||||
Tab *tab = dynamic_cast<Tab*>(wxGetApp().tab_panel()->GetPage(i));
|
|
||||||
if (!tab)
|
|
||||||
continue;
|
|
||||||
tab->update_wiping_button_visibility();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_buttons(bool show)
|
void show_buttons(bool show)
|
||||||
|
@ -706,42 +677,14 @@ void show_object_name(bool show)
|
||||||
grid_sizer->Show(static_cast<size_t>(1), show);
|
grid_sizer->Show(static_cast<size_t>(1), show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_mode()
|
|
||||||
{
|
|
||||||
wxWindowUpdateLocker noUpdates(g_right_panel->GetParent());
|
|
||||||
|
|
||||||
ConfigMenuIDs mode = wxGetApp().get_view_mode();
|
|
||||||
|
|
||||||
g_object_list_sizer->Show(mode == ConfigMenuModeExpert);
|
|
||||||
show_info_sizer(mode == ConfigMenuModeExpert);
|
|
||||||
show_buttons(mode == ConfigMenuModeExpert);
|
|
||||||
show_object_name(mode == ConfigMenuModeSimple);
|
|
||||||
show_manipulation_sizer(mode == ConfigMenuModeSimple);
|
|
||||||
|
|
||||||
// TODO There is a not the best place of it!
|
|
||||||
// *** Update showing of the collpane_settings
|
|
||||||
// show_collpane_settings(mode == ConfigMenuModeExpert);
|
|
||||||
// *************************
|
|
||||||
g_right_panel->Layout();
|
|
||||||
g_right_panel->GetParent()->Layout();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_expert_mode(){
|
|
||||||
return wxGetApp().get_view_mode() == ConfigMenuModeExpert;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConfigOptionsGroup* get_optgroup(size_t i)
|
ConfigOptionsGroup* get_optgroup(size_t i)
|
||||||
{
|
{
|
||||||
return m_optgroups.empty() ? nullptr : m_optgroups[i].get();
|
return wxGetApp().mainframe->m_plater->sidebar().get_optgroup(i);
|
||||||
|
// return m_optgroups.empty() ? nullptr : m_optgroups[i].get();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector <std::shared_ptr<ConfigOptionsGroup>>& get_optgroups() {
|
std::vector <std::shared_ptr<ConfigOptionsGroup>>& get_optgroups() {
|
||||||
return m_optgroups;
|
return wxGetApp().mainframe->m_plater->sidebar().get_optgroups();//m_optgroups;
|
||||||
}
|
|
||||||
|
|
||||||
wxButton* get_wiping_dialog_button()
|
|
||||||
{
|
|
||||||
return g_wiping_dialog_button;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindow* export_option_creator(wxWindow* parent)
|
wxWindow* export_option_creator(wxWindow* parent)
|
||||||
|
|
|
@ -117,7 +117,6 @@ void set_gui_appctl();
|
||||||
void open_model(wxWindow *parent, wxArrayString& input_files);
|
void open_model(wxWindow *parent, wxArrayString& input_files);
|
||||||
|
|
||||||
wxWindow* get_right_panel();
|
wxWindow* get_right_panel();
|
||||||
const size_t& label_width();
|
|
||||||
|
|
||||||
Tab* get_tab(const std::string& name);
|
Tab* get_tab(const std::string& name);
|
||||||
std::vector<PresetTab>* get_preset_tabs();
|
std::vector<PresetTab>* get_preset_tabs();
|
||||||
|
@ -150,9 +149,6 @@ void warning_catcher(wxWindow* parent, const wxString& message);
|
||||||
// to deliver a progress status message.
|
// to deliver a progress status message.
|
||||||
void set_print_callback_event(Print *print, int id);
|
void set_print_callback_event(Print *print, int id);
|
||||||
|
|
||||||
// update right panel of the Plater according to view mode
|
|
||||||
void update_mode();
|
|
||||||
|
|
||||||
void show_info_sizer(const bool show);
|
void show_info_sizer(const bool show);
|
||||||
|
|
||||||
// Creates a wxCheckListBoxComboPopup inside the given wxComboCtrl, filled with the given text and items.
|
// Creates a wxCheckListBoxComboPopup inside the given wxComboCtrl, filled with the given text and items.
|
||||||
|
@ -177,16 +173,12 @@ void set_model_events_from_perl(Model &model,
|
||||||
int event_remove_object,
|
int event_remove_object,
|
||||||
int event_update_scene);
|
int event_update_scene);
|
||||||
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
|
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer, wxFlexGridSizer* preset_sizer);
|
||||||
// Update view mode according to selected menu
|
|
||||||
void update_mode();
|
|
||||||
bool is_expert_mode();
|
|
||||||
|
|
||||||
// Callback to trigger a configuration update timer on the Plater.
|
// Callback to trigger a configuration update timer on the Plater.
|
||||||
static PerlCallback g_on_request_update_callback;
|
static PerlCallback g_on_request_update_callback;
|
||||||
|
|
||||||
ConfigOptionsGroup* get_optgroup(size_t i);
|
ConfigOptionsGroup* get_optgroup(size_t i);
|
||||||
std::vector <std::shared_ptr<ConfigOptionsGroup>>& get_optgroups();
|
std::vector <std::shared_ptr<ConfigOptionsGroup>>& get_optgroups();
|
||||||
wxButton* get_wiping_dialog_button();
|
|
||||||
|
|
||||||
void add_export_option(wxFileDialog* dlg, const std::string& format);
|
void add_export_option(wxFileDialog* dlg, const std::string& format);
|
||||||
int get_export_option(wxFileDialog* dlg);
|
int get_export_option(wxFileDialog* dlg);
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "Preferences.hpp"
|
#include "Preferences.hpp"
|
||||||
#include "Tab.hpp"
|
#include "Tab.hpp"
|
||||||
#include <I18N.hpp>
|
#include <I18N.hpp>
|
||||||
|
#include <wx/wupdlock.h>
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
@ -488,7 +489,22 @@ ConfigMenuIDs GUI_App::get_view_mode()
|
||||||
return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple;
|
return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple;
|
||||||
}
|
}
|
||||||
|
|
||||||
static wxString dots("…", wxConvUTF8);
|
// Update view mode according to selected menu
|
||||||
|
void GUI_App::update_mode()
|
||||||
|
{
|
||||||
|
wxWindowUpdateLocker noUpdates(/*g_right_panel->GetParent()*/mainframe);
|
||||||
|
|
||||||
|
ConfigMenuIDs mode = wxGetApp().get_view_mode();
|
||||||
|
|
||||||
|
// g_object_list_sizer->Show(mode == ConfigMenuModeExpert);
|
||||||
|
show_info_sizer(mode == ConfigMenuModeExpert);
|
||||||
|
// show_buttons(mode == ConfigMenuModeExpert);
|
||||||
|
// show_object_name(mode == ConfigMenuModeSimple);
|
||||||
|
show_manipulation_sizer(mode == ConfigMenuModeSimple);
|
||||||
|
|
||||||
|
/*g_right_panel*/mainframe->m_plater->Layout();
|
||||||
|
/*g_right_panel->GetParent()*/mainframe->Layout();
|
||||||
|
}
|
||||||
|
|
||||||
void GUI_App::add_config_menu(wxMenuBar *menu)
|
void GUI_App::add_config_menu(wxMenuBar *menu)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,8 @@ enum ConfigMenuIDs {
|
||||||
|
|
||||||
class Tab;
|
class Tab;
|
||||||
|
|
||||||
|
static wxString dots("…", wxConvUTF8);
|
||||||
|
|
||||||
class GUI_App : public wxApp
|
class GUI_App : public wxApp
|
||||||
{
|
{
|
||||||
bool no_plater{ false };
|
bool no_plater{ false };
|
||||||
|
@ -112,6 +114,7 @@ public:
|
||||||
void get_installed_languages(wxArrayString & names, wxArrayLong & identifiers);
|
void get_installed_languages(wxArrayString & names, wxArrayLong & identifiers);
|
||||||
|
|
||||||
ConfigMenuIDs get_view_mode();
|
ConfigMenuIDs get_view_mode();
|
||||||
|
void update_mode();
|
||||||
|
|
||||||
void add_config_menu(wxMenuBar *menu);
|
void add_config_menu(wxMenuBar *menu);
|
||||||
bool check_unsaved_changes();
|
bool check_unsaved_changes();
|
||||||
|
|
|
@ -158,8 +158,6 @@ void init_mesh_icons(){
|
||||||
bool is_parts_changed(){return m_parts_changed;}
|
bool is_parts_changed(){return m_parts_changed;}
|
||||||
bool is_part_settings_changed(){ return m_part_settings_changed; }
|
bool is_part_settings_changed(){ return m_part_settings_changed; }
|
||||||
|
|
||||||
static wxString dots("…", wxConvUTF8);
|
|
||||||
|
|
||||||
void set_tooltip_for_item(const wxPoint& pt)
|
void set_tooltip_for_item(const wxPoint& pt)
|
||||||
{
|
{
|
||||||
wxDataViewItem item;
|
wxDataViewItem item;
|
||||||
|
@ -452,34 +450,7 @@ wxSizer* object_movers(wxWindow *win)
|
||||||
return optgroup->sizer;
|
return optgroup->sizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxBoxSizer* content_settings(wxWindow *win)
|
void Sidebar::add_objects_list(wxWindow* parent, wxBoxSizer* sizer)
|
||||||
{
|
|
||||||
DynamicPrintConfig* config = &wxGetApp().preset_bundle->/*full_config();//*/printers.get_edited_preset().config; // TODO get config from Model_volume
|
|
||||||
std::shared_ptr<ConfigOptionsGroup> optgroup = std::make_shared<ConfigOptionsGroup>(win, "Extruders", config);
|
|
||||||
optgroup->label_width = label_width();
|
|
||||||
|
|
||||||
Option option = optgroup->get_option("extruder");
|
|
||||||
option.opt.default_value = new ConfigOptionInt(1);
|
|
||||||
optgroup->append_single_option_line(option);
|
|
||||||
|
|
||||||
get_optgroups().push_back(optgroup); // ogObjectSettings
|
|
||||||
|
|
||||||
auto sizer = new wxBoxSizer(wxVERTICAL);
|
|
||||||
sizer->Add(create_edit_object_buttons(win), 0, wxEXPAND, 0); // *** Edit Object Buttons***
|
|
||||||
|
|
||||||
sizer->Add(optgroup->sizer, 1, wxEXPAND | wxLEFT, 20);
|
|
||||||
|
|
||||||
auto add_btn = new wxButton(win, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
|
|
||||||
if (wxMSW) add_btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
|
|
||||||
add_btn->SetBitmap(wxBitmap(from_u8(Slic3r::var("add.png")), wxBITMAP_TYPE_PNG));
|
|
||||||
sizer->Add(add_btn, 0, wxALIGN_LEFT | wxLEFT, 20);
|
|
||||||
|
|
||||||
sizer->Add(object_movers(win), 0, wxEXPAND | wxLEFT, 20);
|
|
||||||
|
|
||||||
return sizer;
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_objects_list(wxWindow* parent, wxBoxSizer* sizer)
|
|
||||||
{
|
{
|
||||||
const auto ol_sizer = create_objects_list(parent);
|
const auto ol_sizer = create_objects_list(parent);
|
||||||
sizer->Add(ol_sizer, 1, wxEXPAND | wxTOP, 20);
|
sizer->Add(ol_sizer, 1, wxEXPAND | wxTOP, 20);
|
||||||
|
@ -535,13 +506,13 @@ Line add_og_to_object_settings(const std::string& option_name, const std::string
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_object_settings(wxWindow* parent, wxBoxSizer* sizer)
|
void Sidebar::add_object_settings(wxWindow* parent, wxBoxSizer* sizer, t_optgroups& optgroups)
|
||||||
{
|
{
|
||||||
auto optgroup = std::make_shared<ConfigOptionsGroup>(parent, _(L("Object Settings")));
|
auto optgroup = std::make_shared<ConfigOptionsGroup>(parent, _(L("Object Settings")));
|
||||||
optgroup->label_width = 100;
|
optgroup->label_width = 100;
|
||||||
optgroup->set_grid_vgap(5);
|
optgroup->set_grid_vgap(5);
|
||||||
|
|
||||||
optgroup->m_on_change = [](t_config_option_key opt_key, boost::any value){
|
optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value){
|
||||||
if (opt_key == "scale_unit"){
|
if (opt_key == "scale_unit"){
|
||||||
const wxString& selection = boost::any_cast<wxString>(value);
|
const wxString& selection = boost::any_cast<wxString>(value);
|
||||||
std::vector<std::string> axes{ "x", "y", "z" };
|
std::vector<std::string> axes{ "x", "y", "z" };
|
||||||
|
@ -566,7 +537,6 @@ void add_object_settings(wxWindow* parent, wxBoxSizer* sizer)
|
||||||
def.default_value = new ConfigOptionString{ " " };
|
def.default_value = new ConfigOptionString{ " " };
|
||||||
optgroup->append_single_option_line(Option(def, "object_name"));
|
optgroup->append_single_option_line(Option(def, "object_name"));
|
||||||
|
|
||||||
|
|
||||||
// Legend for object modification
|
// Legend for object modification
|
||||||
auto line = Line{ "", "" };
|
auto line = Line{ "", "" };
|
||||||
def.label = "";
|
def.label = "";
|
||||||
|
@ -604,54 +574,7 @@ void add_object_settings(wxWindow* parent, wxBoxSizer* sizer)
|
||||||
|
|
||||||
optgroup->disable();
|
optgroup->disable();
|
||||||
|
|
||||||
get_optgroups().push_back(optgroup); // ogFrequentlyObjectSettings
|
optgroups.push_back(optgroup); // ogFrequentlyObjectSettings
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// add Collapsible Pane to sizer
|
|
||||||
wxCollapsiblePane* add_collapsible_pane(wxWindow* parent, wxBoxSizer* sizer_parent, const wxString& name, std::function<wxSizer *(wxWindow *)> content_function)
|
|
||||||
{
|
|
||||||
#ifdef __WXMSW__
|
|
||||||
auto *collpane = new PrusaCollapsiblePaneMSW(parent, wxID_ANY, name);
|
|
||||||
#else
|
|
||||||
auto *collpane = new PrusaCollapsiblePane/*wxCollapsiblePane*/(parent, wxID_ANY, name);
|
|
||||||
#endif // __WXMSW__
|
|
||||||
// add the pane with a zero proportion value to the sizer which contains it
|
|
||||||
sizer_parent->Add(collpane, 0, wxGROW | wxALL, 0);
|
|
||||||
|
|
||||||
wxWindow *win = collpane->GetPane();
|
|
||||||
|
|
||||||
wxSizer *sizer = content_function(win);
|
|
||||||
|
|
||||||
wxSizer *sizer_pane = new wxBoxSizer(wxVERTICAL);
|
|
||||||
sizer_pane->Add(sizer, 1, wxGROW | wxEXPAND | wxBOTTOM, 2);
|
|
||||||
win->SetSizer(sizer_pane);
|
|
||||||
// sizer_pane->SetSizeHints(win);
|
|
||||||
return collpane;
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_collapsible_panes(wxWindow* parent, wxBoxSizer* sizer)
|
|
||||||
{
|
|
||||||
// *** Objects List ***
|
|
||||||
auto collpane = add_collapsible_pane(parent, sizer, "Objects List:", create_objects_list);
|
|
||||||
collpane->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, ([collpane](wxCommandEvent& e){
|
|
||||||
// wxWindowUpdateLocker noUpdates(g_right_panel);
|
|
||||||
if (collpane->IsCollapsed()) {
|
|
||||||
m_sizer_object_buttons->Show(false);
|
|
||||||
m_sizer_part_buttons->Show(false);
|
|
||||||
m_sizer_object_movers->Show(false);
|
|
||||||
if (!m_objects_ctrl->HasSelection())
|
|
||||||
m_collpane_settings->Show(false);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
// *** Object/Part Settings ***
|
|
||||||
m_collpane_settings = add_collapsible_pane(parent, sizer, "Object Settings", content_settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
void show_collpane_settings(bool expert_mode)
|
|
||||||
{
|
|
||||||
m_collpane_settings->Show(expert_mode && !m_objects_model->IsEmpty());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_object_to_list(const std::string &name, ModelObject* model_object)
|
void add_object_to_list(const std::string &name, ModelObject* model_object)
|
||||||
|
@ -695,17 +618,12 @@ void delete_object_from_list()
|
||||||
m_objects_model->Delete(item);
|
m_objects_model->Delete(item);
|
||||||
|
|
||||||
part_selection_changed();
|
part_selection_changed();
|
||||||
|
|
||||||
// if (m_objects_model->IsEmpty())
|
|
||||||
// m_collpane_settings->Show(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void delete_all_objects_from_list()
|
void delete_all_objects_from_list()
|
||||||
{
|
{
|
||||||
m_objects_model->DeleteAll();
|
m_objects_model->DeleteAll();
|
||||||
|
|
||||||
part_selection_changed();
|
part_selection_changed();
|
||||||
// m_collpane_settings->Show(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_object_count(int idx, int count)
|
void set_object_count(int idx, int count)
|
||||||
|
@ -1629,100 +1547,6 @@ void part_selection_changed()
|
||||||
m_selected_object_id = obj_idx;
|
m_selected_object_id = obj_idx;
|
||||||
|
|
||||||
update_settings_value();
|
update_settings_value();
|
||||||
|
|
||||||
/* wxWindowUpdateLocker noUpdates(get_right_panel());
|
|
||||||
|
|
||||||
m_move_options = Point3(0, 0, 0);
|
|
||||||
m_last_coords = Point3(0, 0, 0);
|
|
||||||
// reset move sliders
|
|
||||||
std::vector<std::string> opt_keys = {"x", "y", "z"};
|
|
||||||
auto og = get_optgroup(ogObjectMovers);
|
|
||||||
for (auto opt_key: opt_keys)
|
|
||||||
og->set_value(opt_key, int(0));
|
|
||||||
|
|
||||||
// if (!item || m_selected_object_id < 0){
|
|
||||||
if (m_selected_object_id < 0){
|
|
||||||
m_sizer_object_buttons->Show(false);
|
|
||||||
m_sizer_part_buttons->Show(false);
|
|
||||||
m_sizer_object_movers->Show(false);
|
|
||||||
m_collpane_settings->Show(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_collpane_settings->Show(true);
|
|
||||||
|
|
||||||
auto volume_id = m_objects_model->GetVolumeIdByItem(item);
|
|
||||||
if (volume_id < 0){
|
|
||||||
m_sizer_object_buttons->Show(true);
|
|
||||||
m_sizer_part_buttons->Show(false);
|
|
||||||
m_sizer_object_movers->Show(false);
|
|
||||||
m_collpane_settings->SetLabelText(_(L("Object Settings")) + ":");
|
|
||||||
|
|
||||||
// elsif($itemData->{type} eq 'object') {
|
|
||||||
// # select nothing in 3D preview
|
|
||||||
//
|
|
||||||
// # attach object config to settings panel
|
|
||||||
// $self->{optgroup_movers}->disable;
|
|
||||||
// $self->{staticbox}->SetLabel('Object Settings');
|
|
||||||
// @opt_keys = (map @{$_->get_keys}, Slic3r::Config::PrintObject->new, Slic3r::Config::PrintRegion->new);
|
|
||||||
// $config = $self->{model_object}->config;
|
|
||||||
// }
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_collpane_settings->SetLabelText(_(L("Part Settings")) + ":");
|
|
||||||
|
|
||||||
m_sizer_object_buttons->Show(false);
|
|
||||||
m_sizer_part_buttons->Show(true);
|
|
||||||
m_sizer_object_movers->Show(true);
|
|
||||||
|
|
||||||
auto bb_size = m_objects[m_selected_object_id]->bounding_box().size();
|
|
||||||
int scale = 10; //??
|
|
||||||
|
|
||||||
m_mover_x->SetMin(-bb_size.x * 4 * scale);
|
|
||||||
m_mover_x->SetMax(bb_size.x * 4 * scale);
|
|
||||||
|
|
||||||
m_mover_y->SetMin(-bb_size.y * 4 * scale);
|
|
||||||
m_mover_y->SetMax(bb_size.y * 4 * scale);
|
|
||||||
|
|
||||||
m_mover_z->SetMin(-bb_size.z * 4 * scale);
|
|
||||||
m_mover_z->SetMax(bb_size.z * 4 * scale);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// my ($config, @opt_keys);
|
|
||||||
m_btn_move_up->Enable(volume_id > 0);
|
|
||||||
m_btn_move_down->Enable(volume_id + 1 < m_objects[m_selected_object_id]->volumes.size());
|
|
||||||
|
|
||||||
// attach volume config to settings panel
|
|
||||||
auto volume = m_objects[m_selected_object_id]->volumes[volume_id];
|
|
||||||
|
|
||||||
if (volume->modifier)
|
|
||||||
og->enable();
|
|
||||||
else
|
|
||||||
og->disable();
|
|
||||||
|
|
||||||
// auto config = volume->config;
|
|
||||||
|
|
||||||
// get default values
|
|
||||||
// @opt_keys = @{Slic3r::Config::PrintRegion->new->get_keys};
|
|
||||||
// }
|
|
||||||
/*
|
|
||||||
# get default values
|
|
||||||
my $default_config = Slic3r::Config::new_from_defaults_keys(\@opt_keys);
|
|
||||||
|
|
||||||
# append default extruder
|
|
||||||
push @opt_keys, 'extruder';
|
|
||||||
$default_config->set('extruder', 0);
|
|
||||||
$config->set_ifndef('extruder', 0);
|
|
||||||
$self->{settings_panel}->set_default_config($default_config);
|
|
||||||
$self->{settings_panel}->set_config($config);
|
|
||||||
$self->{settings_panel}->set_opt_keys(\@opt_keys);
|
|
||||||
$self->{settings_panel}->set_fixed_options([qw(extruder)]);
|
|
||||||
$self->{settings_panel}->enable;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_extruder_column_hidden(bool hide)
|
void set_extruder_column_hidden(bool hide)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#ifndef slic3r_GUI_ObjectParts_hpp_
|
#ifndef slic3r_GUI_ObjectParts_hpp_
|
||||||
#define slic3r_GUI_ObjectParts_hpp_
|
#define slic3r_GUI_ObjectParts_hpp_
|
||||||
|
// #include "OptionsGroup.hpp"
|
||||||
|
|
||||||
class wxWindow;
|
class wxWindow;
|
||||||
class wxSizer;
|
class wxSizer;
|
||||||
|
@ -17,15 +18,13 @@ class ModelObject;
|
||||||
class Model;
|
class Model;
|
||||||
|
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
//class wxGLCanvas;
|
class ConfigOptionsGroup;
|
||||||
|
using t_optgroups = std::vector <std::shared_ptr<ConfigOptionsGroup>>;
|
||||||
|
|
||||||
enum ogGroup{
|
enum ogGroup{
|
||||||
ogFrequentlyChangingParameters,
|
ogFrequentlyChangingParameters,
|
||||||
ogFrequentlyObjectSettings,
|
ogFrequentlyObjectSettings,
|
||||||
ogCurrentSettings
|
ogObjectSettings
|
||||||
// ogObjectSettings,
|
|
||||||
// ogObjectMovers,
|
|
||||||
// ogPartSettings
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LambdaTypeIDs{
|
enum LambdaTypeIDs{
|
||||||
|
@ -49,10 +48,8 @@ struct OBJECT_PARAMETERS
|
||||||
typedef std::map<std::string, wxBitmap> t_category_icon;
|
typedef std::map<std::string, wxBitmap> t_category_icon;
|
||||||
inline t_category_icon& get_category_icon();
|
inline t_category_icon& get_category_icon();
|
||||||
|
|
||||||
void add_collapsible_panes(wxWindow* parent, wxBoxSizer* sizer);
|
|
||||||
void add_objects_list(wxWindow* parent, wxBoxSizer* sizer);
|
void add_objects_list(wxWindow* parent, wxBoxSizer* sizer);
|
||||||
void add_object_settings(wxWindow* parent, wxBoxSizer* sizer);
|
void add_object_settings(wxWindow* parent, wxBoxSizer* sizer, t_optgroups& optgroups);
|
||||||
void show_collpane_settings(bool expert_mode);
|
|
||||||
|
|
||||||
wxMenu *create_add_settings_popupmenu(bool is_part);
|
wxMenu *create_add_settings_popupmenu(bool is_part);
|
||||||
wxMenu *create_add_part_popupmenu();
|
wxMenu *create_add_part_popupmenu();
|
||||||
|
|
|
@ -8,7 +8,6 @@ namespace Slic3r
|
||||||
{
|
{
|
||||||
namespace GUI
|
namespace GUI
|
||||||
{
|
{
|
||||||
static wxString dots("…", wxConvUTF8);
|
|
||||||
|
|
||||||
LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent,
|
LambdaObjectDialog::LambdaObjectDialog(wxWindow* parent,
|
||||||
const wxString type_name):
|
const wxString type_name):
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
static wxString dots("…", wxConvUTF8);
|
|
||||||
|
|
||||||
MainFrame::MainFrame(const bool no_plater, const bool loaded) :
|
MainFrame::MainFrame(const bool no_plater, const bool loaded) :
|
||||||
wxFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE),
|
wxFrame(NULL, wxID_ANY, SLIC3R_BUILD, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE),
|
||||||
m_no_plater(no_plater),
|
m_no_plater(no_plater),
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "slic3r/Utils/ASCIIFolding.hpp"
|
#include "slic3r/Utils/ASCIIFolding.hpp"
|
||||||
|
|
||||||
#include <wx/glcanvas.h> // Needs to be last because reasons :-/
|
#include <wx/glcanvas.h> // Needs to be last because reasons :-/
|
||||||
|
#include "WipeTowerDialog.hpp"
|
||||||
|
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
using Slic3r::_3DScene;
|
using Slic3r::_3DScene;
|
||||||
|
@ -222,6 +223,12 @@ struct Sidebar::priv
|
||||||
wxButton *btn_reslice;
|
wxButton *btn_reslice;
|
||||||
// wxButton *btn_print; // XXX: remove
|
// wxButton *btn_print; // XXX: remove
|
||||||
wxButton *btn_send_gcode;
|
wxButton *btn_send_gcode;
|
||||||
|
|
||||||
|
std::vector <std::shared_ptr<ConfigOptionsGroup>> optgroups {};
|
||||||
|
double brim_width = 0.0;
|
||||||
|
size_t label_width = 100;
|
||||||
|
wxButton* btn_wiping_dialog {nullptr};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -265,7 +272,12 @@ Sidebar::Sidebar(wxWindow *parent)
|
||||||
|
|
||||||
// Frequently changed parameters
|
// Frequently changed parameters
|
||||||
p->sizer_params = new wxBoxSizer(wxVERTICAL);
|
p->sizer_params = new wxBoxSizer(wxVERTICAL);
|
||||||
GUI::add_frequently_changed_parameters(p->scrolled, p->sizer_params, p->sizer_presets);
|
add_frequently_changed_parameters(p->scrolled, p->sizer_params/*, p->sizer_presets*/);
|
||||||
|
|
||||||
|
// Object List
|
||||||
|
add_objects_list(p->scrolled, p->sizer_params);
|
||||||
|
// Frequently Object Settings
|
||||||
|
add_object_settings(p->scrolled, p->sizer_params, p->optgroups);
|
||||||
|
|
||||||
// Buttons in the scrolled area
|
// Buttons in the scrolled area
|
||||||
wxBitmap arrow_up(GUI::from_u8(Slic3r::var("brick_go.png")), wxBITMAP_TYPE_PNG);
|
wxBitmap arrow_up(GUI::from_u8(Slic3r::var("brick_go.png")), wxBITMAP_TYPE_PNG);
|
||||||
|
@ -356,6 +368,20 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
||||||
// wxTheApp->{preset_bundle}->export_selections(wxTheApp->{app_config});
|
// wxTheApp->{preset_bundle}->export_selections(wxTheApp->{app_config});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigOptionsGroup* Sidebar::get_optgroup(size_t i)
|
||||||
|
{
|
||||||
|
return p->optgroups.empty() ? nullptr : p->optgroups[i].get();
|
||||||
|
}
|
||||||
|
|
||||||
|
t_optgroups& Sidebar::get_optgroups() {
|
||||||
|
return p->optgroups;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxButton* Sidebar::get_wiping_dialog_button()
|
||||||
|
{
|
||||||
|
return p->btn_wiping_dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Plater::Object
|
// Plater::Object
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,15 @@
|
||||||
|
|
||||||
#include "Preset.hpp"
|
#include "Preset.hpp"
|
||||||
|
|
||||||
|
class wxBoxSizer;
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
class MainFrame;
|
class MainFrame;
|
||||||
|
class ConfigOptionsGroup;
|
||||||
|
|
||||||
|
using t_optgroups = std::vector <std::shared_ptr<ConfigOptionsGroup>>;
|
||||||
|
|
||||||
class Sidebar : public wxPanel
|
class Sidebar : public wxPanel
|
||||||
{
|
{
|
||||||
|
@ -25,6 +29,15 @@ public:
|
||||||
~Sidebar();
|
~Sidebar();
|
||||||
|
|
||||||
void update_presets(Slic3r::Preset::Type preset_type);
|
void update_presets(Slic3r::Preset::Type preset_type);
|
||||||
|
|
||||||
|
void add_frequently_changed_parameters(wxWindow* parent, wxBoxSizer* sizer);
|
||||||
|
void add_objects_list(wxWindow* parent, wxBoxSizer* sizer);
|
||||||
|
void add_object_settings(wxWindow* parent, wxBoxSizer* sizer, t_optgroups& optgroups);
|
||||||
|
|
||||||
|
|
||||||
|
ConfigOptionsGroup* get_optgroup(size_t i);
|
||||||
|
t_optgroups& get_optgroups();
|
||||||
|
wxButton* get_wiping_dialog_button();
|
||||||
private:
|
private:
|
||||||
struct priv;
|
struct priv;
|
||||||
std::unique_ptr<priv> p;
|
std::unique_ptr<priv> p;
|
||||||
|
|
|
@ -33,9 +33,6 @@
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
static wxString dots("…", wxConvUTF8);
|
|
||||||
|
|
||||||
// sub new
|
|
||||||
void Tab::create_preset_tab(PresetBundle *preset_bundle)
|
void Tab::create_preset_tab(PresetBundle *preset_bundle)
|
||||||
{
|
{
|
||||||
m_preset_bundle = preset_bundle;
|
m_preset_bundle = preset_bundle;
|
||||||
|
@ -720,9 +717,12 @@ void Tab::update_wiping_button_visibility() {
|
||||||
bool multiple_extruders = dynamic_cast<ConfigOptionFloats*>((m_preset_bundle->printers.get_edited_preset().config).option("nozzle_diameter"))->values.size() > 1;
|
bool multiple_extruders = dynamic_cast<ConfigOptionFloats*>((m_preset_bundle->printers.get_edited_preset().config).option("nozzle_diameter"))->values.size() > 1;
|
||||||
bool single_extruder_mm = dynamic_cast<ConfigOptionBool*>( (m_preset_bundle->printers.get_edited_preset().config).option("single_extruder_multi_material"))->value;
|
bool single_extruder_mm = dynamic_cast<ConfigOptionBool*>( (m_preset_bundle->printers.get_edited_preset().config).option("single_extruder_multi_material"))->value;
|
||||||
|
|
||||||
if (get_wiping_dialog_button()) {
|
if (!wxGetApp().mainframe)
|
||||||
get_wiping_dialog_button()->Show(wipe_tower_enabled && multiple_extruders && single_extruder_mm);
|
return;
|
||||||
(get_wiping_dialog_button()->GetParent())->Layout();
|
auto wiping_dialog_button = wxGetApp().mainframe->m_plater->sidebar().get_wiping_dialog_button();
|
||||||
|
if (wiping_dialog_button) {
|
||||||
|
wiping_dialog_button->Show(wipe_tower_enabled && multiple_extruders && single_extruder_mm);
|
||||||
|
wiping_dialog_button->GetParent()->Layout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue