Mark unsaved project title with * (#5910)
* Mark unsaved project title with *
This commit is contained in:
parent
b47810435a
commit
5ff93fe103
4 changed files with 35 additions and 3 deletions
|
@ -1999,6 +1999,9 @@ void MainFrame::update_slice_print_status(SlicePrintEventType event, bool can_sl
|
||||||
m_slice_btn->Enable(enable_slice);
|
m_slice_btn->Enable(enable_slice);
|
||||||
m_slice_enable = enable_slice;
|
m_slice_enable = enable_slice;
|
||||||
m_print_enable = enable_print;
|
m_print_enable = enable_print;
|
||||||
|
|
||||||
|
if (wxGetApp().mainframe)
|
||||||
|
wxGetApp().plater()->update_title_dirty_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2572,6 +2572,7 @@ struct Plater::priv
|
||||||
//BBS store bbs project name
|
//BBS store bbs project name
|
||||||
wxString get_project_name();
|
wxString get_project_name();
|
||||||
void set_project_name(const wxString& project_name);
|
void set_project_name(const wxString& project_name);
|
||||||
|
void update_title_dirty_status();
|
||||||
|
|
||||||
// Call after plater and Canvas#D is initialized
|
// Call after plater and Canvas#D is initialized
|
||||||
void init_notification_manager();
|
void init_notification_manager();
|
||||||
|
@ -7649,6 +7650,25 @@ void Plater::priv::set_project_name(const wxString& project_name)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Plater::priv::update_title_dirty_status()
|
||||||
|
{
|
||||||
|
if (m_project_name.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxString title;
|
||||||
|
if (is_project_dirty())
|
||||||
|
title = "*" + m_project_name;
|
||||||
|
else
|
||||||
|
title = m_project_name;
|
||||||
|
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
wxGetApp().mainframe->topbar()->SetTitle(title);
|
||||||
|
#else
|
||||||
|
wxGetApp().mainframe->SetTitle(title);
|
||||||
|
wxGetApp().mainframe->update_title_colour_after_set_title();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void Plater::priv::set_project_filename(const wxString& filename)
|
void Plater::priv::set_project_filename(const wxString& filename)
|
||||||
{
|
{
|
||||||
boost::filesystem::path full_path = into_path(filename);
|
boost::filesystem::path full_path = into_path(filename);
|
||||||
|
@ -8525,6 +8545,7 @@ void Plater::priv::undo_redo_to(std::vector<UndoRedo::Snapshot>::const_iterator
|
||||||
}
|
}
|
||||||
|
|
||||||
dirty_state.update_from_undo_redo_stack(m_undo_redo_stack_main.project_modified());
|
dirty_state.update_from_undo_redo_stack(m_undo_redo_stack_main.project_modified());
|
||||||
|
update_title_dirty_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plater::priv::update_after_undo_redo(const UndoRedo::Snapshot& snapshot, bool /* temp_snapshot_was_taken */)
|
void Plater::priv::update_after_undo_redo(const UndoRedo::Snapshot& snapshot, bool /* temp_snapshot_was_taken */)
|
||||||
|
@ -8941,6 +8962,7 @@ int Plater::save_project(bool saveAs)
|
||||||
}
|
}
|
||||||
catch (...) {}
|
catch (...) {}
|
||||||
|
|
||||||
|
update_title_dirty_status();
|
||||||
return wxID_YES;
|
return wxID_YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12778,8 +12800,10 @@ void Plater::on_config_change(const DynamicPrintConfig &config)
|
||||||
if (update_scheduled)
|
if (update_scheduled)
|
||||||
update();
|
update();
|
||||||
|
|
||||||
if (p->main_frame->is_loaded())
|
if (p->main_frame->is_loaded()) {
|
||||||
this->p->schedule_background_process();
|
this->p->schedule_background_process();
|
||||||
|
update_title_dirty_status();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plater::set_bed_shape() const
|
void Plater::set_bed_shape() const
|
||||||
|
@ -14282,6 +14306,11 @@ bool Plater::PopupObjectTableBySelection()
|
||||||
return p->PopupObjectTable(obj_idx, vol_idx, pos);
|
return p->PopupObjectTable(obj_idx, vol_idx, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Plater::update_title_dirty_status()
|
||||||
|
{
|
||||||
|
p->update_title_dirty_status();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
wxMenu* Plater::plate_menu() { return p->menus.plate_menu(); }
|
wxMenu* Plater::plate_menu() { return p->menus.plate_menu(); }
|
||||||
wxMenu* Plater::object_menu() { return p->menus.object_menu(); }
|
wxMenu* Plater::object_menu() { return p->menus.object_menu(); }
|
||||||
|
|
|
@ -654,6 +654,7 @@ public:
|
||||||
|
|
||||||
bool need_update() const;
|
bool need_update() const;
|
||||||
void set_need_update(bool need_update);
|
void set_need_update(bool need_update);
|
||||||
|
void update_title_dirty_status();
|
||||||
|
|
||||||
// ROII wrapper for suppressing the Undo / Redo snapshot to be taken.
|
// ROII wrapper for suppressing the Undo / Redo snapshot to be taken.
|
||||||
class SuppressSnapshots
|
class SuppressSnapshots
|
||||||
|
|
|
@ -17,8 +17,7 @@ namespace GUI {
|
||||||
|
|
||||||
void ProjectDirtyStateManager::update_from_undo_redo_stack(bool dirty)
|
void ProjectDirtyStateManager::update_from_undo_redo_stack(bool dirty)
|
||||||
{
|
{
|
||||||
if (!m_plater_dirty)
|
m_plater_dirty = dirty;
|
||||||
m_plater_dirty = dirty;
|
|
||||||
if (const Plater *plater = wxGetApp().plater(); plater && wxGetApp().initialized())
|
if (const Plater *plater = wxGetApp().plater(); plater && wxGetApp().initialized())
|
||||||
wxGetApp().mainframe->update_title();
|
wxGetApp().mainframe->update_title();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue