mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-12 03:51:47 +08:00
Fixed update of the default menu after changing of the mode.
+ Added check for the output directory for the G-code extport.
This commit is contained in:
parent
4a9602b073
commit
e79bcee739
@ -542,7 +542,7 @@ void AppConfig::update_config_dir(const std::string &dir)
|
|||||||
|
|
||||||
void AppConfig::update_skein_dir(const std::string &dir)
|
void AppConfig::update_skein_dir(const std::string &dir)
|
||||||
{
|
{
|
||||||
if (dir == sys_shapes_dir() || dir == custom_shapes_dir())
|
if (is_shapes_dir(dir))
|
||||||
return; // do not save "shapes gallery" directory
|
return; // do not save "shapes gallery" directory
|
||||||
this->set("recent", "skein_directory", dir);
|
this->set("recent", "skein_directory", dir);
|
||||||
}
|
}
|
||||||
@ -576,7 +576,7 @@ std::string AppConfig::get_last_output_dir(const std::string& alt, const bool re
|
|||||||
if (it2 != it->second.end() && it3 != it->second.end() && !it2->second.empty() && it3->second == "1")
|
if (it2 != it->second.end() && it3 != it->second.end() && !it2->second.empty() && it3->second == "1")
|
||||||
return it2->second;
|
return it2->second;
|
||||||
}
|
}
|
||||||
return alt;
|
return is_shapes_dir(alt) ? get_last_dir() : alt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppConfig::update_last_output_dir(const std::string& dir, const bool removable)
|
void AppConfig::update_last_output_dir(const std::string& dir, const bool removable)
|
||||||
|
@ -102,6 +102,7 @@ extern bool is_gcode_file(const std::string &path);
|
|||||||
extern bool is_img_file(const std::string& path);
|
extern bool is_img_file(const std::string& path);
|
||||||
extern bool is_stl_file(const boost::filesystem::directory_entry& path);
|
extern bool is_stl_file(const boost::filesystem::directory_entry& path);
|
||||||
extern bool is_stl_file(const std::string& path);
|
extern bool is_stl_file(const std::string& path);
|
||||||
|
extern bool is_shapes_dir(const std::string& dir);
|
||||||
|
|
||||||
// File path / name / extension splitting utilities, working with UTF-8,
|
// File path / name / extension splitting utilities, working with UTF-8,
|
||||||
// to be published to Perl.
|
// to be published to Perl.
|
||||||
|
@ -776,6 +776,11 @@ bool is_stl_file(const std::string &path)
|
|||||||
return boost::iends_with(path, ".stl");
|
return boost::iends_with(path, ".stl");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_shapes_dir(const std::string& dir)
|
||||||
|
{
|
||||||
|
return dir == sys_shapes_dir() || dir == custom_shapes_dir();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Slic3r
|
} // namespace Slic3r
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
@ -1780,7 +1780,7 @@ void GUI_App::update_mode()
|
|||||||
for (auto tab : tabs_list)
|
for (auto tab : tabs_list)
|
||||||
tab->update_mode();
|
tab->update_mode();
|
||||||
|
|
||||||
plater()->update_object_menu();
|
plater()->update_menus();
|
||||||
plater()->canvas3D()->update_gizmos_on_off_state();
|
plater()->canvas3D()->update_gizmos_on_off_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -953,6 +953,12 @@ void MenuFactory::init(wxWindow* parent)
|
|||||||
create_instance_menu();
|
create_instance_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuFactory::update()
|
||||||
|
{
|
||||||
|
update_default_menu();
|
||||||
|
update_object_menu();
|
||||||
|
}
|
||||||
|
|
||||||
wxMenu* MenuFactory::default_menu()
|
wxMenu* MenuFactory::default_menu()
|
||||||
{
|
{
|
||||||
return &m_default_menu;
|
return &m_default_menu;
|
||||||
@ -1077,6 +1083,14 @@ void MenuFactory::update_object_menu()
|
|||||||
append_menu_items_add_volume(&m_object_menu);
|
append_menu_items_add_volume(&m_object_menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuFactory::update_default_menu()
|
||||||
|
{
|
||||||
|
const auto menu_item_id = m_default_menu.FindItem(_("Add Shape"));
|
||||||
|
if (menu_item_id != wxNOT_FOUND)
|
||||||
|
m_default_menu.Destroy(menu_item_id);
|
||||||
|
create_default_menu();
|
||||||
|
}
|
||||||
|
|
||||||
void MenuFactory::msw_rescale()
|
void MenuFactory::msw_rescale()
|
||||||
{
|
{
|
||||||
for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu })
|
for (MenuWithSeparators* menu : { &m_object_menu, &m_sla_object_menu, &m_part_menu, &m_default_menu })
|
||||||
|
@ -40,7 +40,9 @@ public:
|
|||||||
~MenuFactory() = default;
|
~MenuFactory() = default;
|
||||||
|
|
||||||
void init(wxWindow* parent);
|
void init(wxWindow* parent);
|
||||||
|
void update();
|
||||||
void update_object_menu();
|
void update_object_menu();
|
||||||
|
void update_default_menu();
|
||||||
void msw_rescale();
|
void msw_rescale();
|
||||||
void sys_color_changed();
|
void sys_color_changed();
|
||||||
|
|
||||||
|
@ -2653,11 +2653,10 @@ wxString Plater::priv::get_export_file(GUI::FileType file_type)
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string dir = (boost::filesystem::path(output_file).parent_path()).string();
|
std::string out_dir = (boost::filesystem::path(output_file).parent_path()).string();
|
||||||
bool use_def_out_dir = dir == sys_shapes_dir() || dir == custom_shapes_dir();
|
|
||||||
|
|
||||||
wxFileDialog dlg(q, dlg_title,
|
wxFileDialog dlg(q, dlg_title,
|
||||||
use_def_out_dir ? from_u8(wxGetApp().app_config->get_last_dir()) : from_path(output_file.parent_path()), from_path(output_file.filename()),
|
is_shapes_dir(out_dir) ? from_u8(wxGetApp().app_config->get_last_dir()) : from_path(output_file.parent_path()), from_path(output_file.filename()),
|
||||||
wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
|
wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
|
||||||
|
|
||||||
if (dlg.ShowModal() != wxID_OK)
|
if (dlg.ShowModal() != wxID_OK)
|
||||||
@ -6269,7 +6268,7 @@ void Plater::mirror(Axis axis) { p->mirror(axis); }
|
|||||||
void Plater::split_object() { p->split_object(); }
|
void Plater::split_object() { p->split_object(); }
|
||||||
void Plater::split_volume() { p->split_volume(); }
|
void Plater::split_volume() { p->split_volume(); }
|
||||||
void Plater::optimize_rotation() { p->m_ui_jobs.optimize_rotation();}
|
void Plater::optimize_rotation() { p->m_ui_jobs.optimize_rotation();}
|
||||||
void Plater::update_object_menu() { p->menus.update_object_menu(); }
|
void Plater::update_menus() { p->menus.update(); }
|
||||||
void Plater::show_action_buttons(const bool ready_to_slice) const { p->show_action_buttons(ready_to_slice); }
|
void Plater::show_action_buttons(const bool ready_to_slice) const { p->show_action_buttons(ready_to_slice); }
|
||||||
|
|
||||||
void Plater::copy_selection_to_clipboard()
|
void Plater::copy_selection_to_clipboard()
|
||||||
|
@ -268,7 +268,7 @@ public:
|
|||||||
std::vector<std::string> get_extruder_colors_from_plater_config(const GCodeProcessor::Result* const result = nullptr) const;
|
std::vector<std::string> get_extruder_colors_from_plater_config(const GCodeProcessor::Result* const result = nullptr) const;
|
||||||
std::vector<std::string> get_colors_for_color_print(const GCodeProcessor::Result* const result = nullptr) const;
|
std::vector<std::string> get_colors_for_color_print(const GCodeProcessor::Result* const result = nullptr) const;
|
||||||
|
|
||||||
void update_object_menu();
|
void update_menus();
|
||||||
void show_action_buttons(const bool is_ready_to_slice) const;
|
void show_action_buttons(const bool is_ready_to_slice) const;
|
||||||
|
|
||||||
wxString get_project_filename(const wxString& extension = wxEmptyString) const;
|
wxString get_project_filename(const wxString& extension = wxEmptyString) const;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user