Plater -> View Menu

This commit is contained in:
Enrico Turri 2018-10-17 12:59:58 +02:00
parent 7d1828df05
commit 2e274b5646
4 changed files with 32 additions and 21 deletions

View file

@ -3204,7 +3204,7 @@ void GLCanvas3D::select_view(const std::string& direction)
else if (direction == "rear") else if (direction == "rear")
dir_vec = VIEW_REAR; dir_vec = VIEW_REAR;
if ((dir_vec != nullptr) && !empty(volumes_bounding_box())) if (dir_vec != nullptr)
{ {
m_camera.phi = dir_vec[0]; m_camera.phi = dir_vec[0];
m_camera.set_theta(dir_vec[1]); m_camera.set_theta(dir_vec[1]);

View file

@ -319,23 +319,14 @@ void MainFrame::init_menubar()
// View menu // View menu
if (m_plater) { if (m_plater) {
m_viewMenu = new wxMenu(); m_viewMenu = new wxMenu();
// \xA0 is a non-breaing space. It is entered here to spoil the automatic accelerators, append_menu_item(m_viewMenu, wxID_ANY, _(L("Iso\t0")), _(L("Iso View")), [this](wxCommandEvent&){ select_view("iso"); });
// as the simple numeric accelerators spoil all numeric data entry. m_viewMenu->AppendSeparator();
// The camera control accelerators are captured by 3DScene Perl module instead. append_menu_item(m_viewMenu, wxID_ANY, _(L("Top\t1")), _(L("Top View")), [this](wxCommandEvent&){ select_view("top"); });
auto accel = [](const wxString& st1, const wxString& st2) { append_menu_item(m_viewMenu, wxID_ANY, _(L("Bottom\t2")), _(L("Bottom View")), [this](wxCommandEvent&){ select_view("bottom"); });
// if ($^O eq "MSWin32") append_menu_item(m_viewMenu, wxID_ANY, _(L("Front\t3")), _(L("Front View")), [this](wxCommandEvent&){ select_view("front"); });
// return st1 + "\t\xA0" + st2; append_menu_item(m_viewMenu, wxID_ANY, _(L("Rear\t4")), _(L("Rear View")), [this](wxCommandEvent&){ select_view("rear"); });
// else append_menu_item(m_viewMenu, wxID_ANY, _(L("Left\t5")), _(L("Left View")), [this](wxCommandEvent&){ select_view("left"); });
return st1; append_menu_item(m_viewMenu, wxID_ANY, _(L("Right\t6")), _(L("Right View")), [this](wxCommandEvent&){ select_view("right"); });
};
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Iso")), "0"), L("Iso View"), [this](wxCommandEvent&){ select_view("iso"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Top")), "1"), L("Top View"), [this](wxCommandEvent&){ select_view("top"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Bottom")), "2"), L("Bottom View"),[this](wxCommandEvent&){ select_view("bottom"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Front")), "3"), L("Front View"), [this](wxCommandEvent&){ select_view("front"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Rear")), "4"), L("Rear View"), [this](wxCommandEvent&){ select_view("rear"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Left")), "5"), L("Left View"), [this](wxCommandEvent&){ select_view("left"); });
append_menu_item(m_viewMenu, wxID_ANY, accel(_(L("Right")), "6"), L("Right View"), [this](wxCommandEvent&){ select_view("right"); });
} }
// Help menu // Help menu
@ -683,9 +674,10 @@ void MainFrame::select_tab(size_t tab) const{
} }
// Set a camera direction, zoom to all objects. // Set a camera direction, zoom to all objects.
void MainFrame::select_view(const std::string& direction){ void MainFrame::select_view(const std::string& direction)
// if (m_plater) {
// m_plater->select_view(direction); if (m_plater)
m_plater->select_view(direction);
} }
void MainFrame::on_presets_changed(SimpleEvent &event) void MainFrame::on_presets_changed(SimpleEvent &event)

View file

@ -761,6 +761,7 @@ struct Plater::priv
std::vector<int> collect_selections(); std::vector<int> collect_selections();
#endif // !ENABLE_EXTENDED_SELECTION #endif // !ENABLE_EXTENDED_SELECTION
void update(bool force_autocenter = false); void update(bool force_autocenter = false);
void select_view(const std::string& direction);
void update_ui_from_settings(); void update_ui_from_settings();
ProgressStatusBar* statusbar(); ProgressStatusBar* statusbar();
std::string get_config(const std::string &key) const; std::string get_config(const std::string &key) const;
@ -1002,6 +1003,19 @@ void Plater::priv::update(bool force_autocenter)
// schedule_background_process(); // TODO // schedule_background_process(); // TODO
} }
void Plater::priv::select_view(const std::string& direction)
{
int page_id = notebook->GetSelection();
if (page_id != wxNOT_FOUND)
{
const wxString& page_text = notebook->GetPageText(page_id);
if (page_text == _(L("3D")))
_3DScene::select_view(canvas3D, direction);
else if (page_text == _(L("Preview")))
preview->select_view(direction);
}
}
void Plater::priv::update_ui_from_settings() void Plater::priv::update_ui_from_settings()
{ {
// TODO: (?) // TODO: (?)
@ -1852,6 +1866,9 @@ void Plater::add()
void Plater::load_files(const std::vector<fs::path> &input_files) { p->load_files(input_files); } void Plater::load_files(const std::vector<fs::path> &input_files) { p->load_files(input_files); }
void Plater::update(bool force_autocenter) { p->update(force_autocenter); } void Plater::update(bool force_autocenter) { p->update(force_autocenter); }
void Plater::select_view(const std::string& direction) { p->select_view(direction); }
void Plater::remove(size_t obj_idx) { p->remove(obj_idx); } void Plater::remove(size_t obj_idx) { p->remove(obj_idx); }
void Plater::remove_selected() void Plater::remove_selected()

View file

@ -109,6 +109,8 @@ public:
void load_files(const std::vector<boost::filesystem::path> &input_files); void load_files(const std::vector<boost::filesystem::path> &input_files);
void update(bool force_autocenter = false); void update(bool force_autocenter = false);
void select_view(const std::string& direction);
void remove(size_t obj_idx); void remove(size_t obj_idx);
void remove_selected(); void remove_selected();
void increase(size_t num = 1); void increase(size_t num = 1);