Change imgui dialog in emboss to wxWidget dialog for better styling.
This commit is contained in:
parent
dee0aa6f90
commit
4cf8d671cb
@ -2203,32 +2203,47 @@ void GLGizmoEmboss::draw_delete_style_button() {
|
|||||||
bool is_last = m_style_manager.get_styles().size() == 1;
|
bool is_last = m_style_manager.get_styles().size() == 1;
|
||||||
bool can_delete = is_stored && !is_last;
|
bool can_delete = is_stored && !is_last;
|
||||||
|
|
||||||
std::string title = _u8L("Remove style");
|
|
||||||
const char * popup_id = title.c_str();
|
|
||||||
static size_t next_style_index = std::numeric_limits<size_t>::max();
|
|
||||||
if (draw_button(m_icons, IconType::erase, !can_delete)) {
|
if (draw_button(m_icons, IconType::erase, !can_delete)) {
|
||||||
|
std::string style_name = m_style_manager.get_style().name; // copy
|
||||||
|
wxString dialog_title = _L("Remove style");
|
||||||
|
size_t next_style_index = std::numeric_limits<size_t>::max();
|
||||||
|
Plater *plater = wxGetApp().plater();
|
||||||
|
bool exist_change = false;
|
||||||
while (true) {
|
while (true) {
|
||||||
// NOTE: can't use previous loaded activ index -> erase could change index
|
// NOTE: can't use previous loaded activ index -> erase could change index
|
||||||
size_t active_index = m_style_manager.get_style_index();
|
size_t active_index = m_style_manager.get_style_index();
|
||||||
next_style_index = (active_index > 0) ? active_index - 1 :
|
next_style_index = (active_index > 0) ? active_index - 1 :
|
||||||
active_index + 1;
|
active_index + 1;
|
||||||
|
|
||||||
if (next_style_index >= m_style_manager.get_styles().size()) {
|
if (next_style_index >= m_style_manager.get_styles().size()) {
|
||||||
// can't remove last font style
|
MessageDialog msg(plater, _L("Can't remove the last exising style."), dialog_title, wxICON_ERROR | wxOK);
|
||||||
// TODO: inform user
|
msg.ShowModal();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// IMPROVE: add function can_load?
|
// IMPROVE: add function can_load?
|
||||||
// clean unactivable styles
|
// clean unactivable styles
|
||||||
if (!m_style_manager.load_style(next_style_index)) {
|
if (!m_style_manager.load_style(next_style_index)) {
|
||||||
m_style_manager.erase(next_style_index);
|
m_style_manager.erase(next_style_index);
|
||||||
|
exist_change = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// load back
|
wxString message = GUI::format_wxstr(_L("Are you sure,\nthat you want permanently and unrecoverable \nremove \"%1%\" style?"), style_name);
|
||||||
m_style_manager.load_style(active_index);
|
MessageDialog msg(plater, message, dialog_title, wxICON_WARNING | wxYES | wxNO);
|
||||||
ImGui::OpenPopup(popup_id);
|
if (msg.ShowModal() == wxID_YES) {
|
||||||
|
// delete style
|
||||||
|
m_style_manager.erase(active_index);
|
||||||
|
exist_change = true;
|
||||||
|
process();
|
||||||
|
} else {
|
||||||
|
// load back style
|
||||||
|
m_style_manager.load_style(active_index);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (exist_change)
|
||||||
|
m_style_manager.store_styles_to_app_config(wxGetApp().app_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::IsItemHovered()) {
|
if (ImGui::IsItemHovered()) {
|
||||||
@ -2239,25 +2254,6 @@ void GLGizmoEmboss::draw_delete_style_button() {
|
|||||||
else/*if(!is_stored)*/ tooltip = GUI::format(_L("Can't delete temporary style \"%1%\"."), style_name);
|
else/*if(!is_stored)*/ tooltip = GUI::format(_L("Can't delete temporary style \"%1%\"."), style_name);
|
||||||
ImGui::SetTooltip("%s", tooltip.c_str());
|
ImGui::SetTooltip("%s", tooltip.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal(popup_id)) {
|
|
||||||
m_imgui->disable_background_fadeout_animation();
|
|
||||||
const std::string &style_name = m_style_manager.get_style().name;
|
|
||||||
std::string text_in_popup = GUI::format(_L("Are you sure,\nthat you want permanently and unrecoverable \nremove style \"%1%\"?"), style_name);
|
|
||||||
ImGui::Text("%s", text_in_popup.c_str());
|
|
||||||
if (ImGui::Button(_u8L("Yes").c_str())) {
|
|
||||||
size_t active_index = m_style_manager.get_style_index();
|
|
||||||
m_style_manager.load_style(next_style_index);
|
|
||||||
m_style_manager.erase(active_index);
|
|
||||||
m_style_manager.store_styles_to_app_config(wxGetApp().app_config);
|
|
||||||
ImGui::CloseCurrentPopup();
|
|
||||||
process();
|
|
||||||
}
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (ImGui::Button(_u8L("No").c_str()))
|
|
||||||
ImGui::CloseCurrentPopup();
|
|
||||||
ImGui::EndPopup();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIX IT: it should not change volume position before successfull change
|
// FIX IT: it should not change volume position before successfull change
|
||||||
|
Loading…
Reference in New Issue
Block a user