ENH:update save enable state by event
jira: STUDIO-11156 Change-Id: If3076e987e4a2e6adc27ec851fad4e0dab85324c
This commit is contained in:
parent
bcd72a2217
commit
26a6a413bf
|
@ -0,0 +1,5 @@
|
||||||
|
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12.7398 4.84619L9.15381 1.26016C8.98676 1.09311 8.76084 1 8.52533 1H1.88864C1.39708 1 1 1.39845 1 1.88864V12.1114C1 12.6029 1.39845 13 1.88864 13H12.1114C12.6029 13 13 12.6016 13 12.1114V5.47467C13 5.23916 12.9055 5.01324 12.7398 4.84619ZM3.88909 1.88864H6.55637V3.44409H3.88909V1.88864ZM10.1109 12.1114H3.88909V10.1109H10.1109V12.1114ZM12.1114 12.1114H11.0009V9.66727C11.0009 9.42218 10.8024 9.22227 10.5559 9.22227H3.44409C3.19899 9.22227 2.99909 9.42081 2.99909 9.66727V12.1114H1.88864V1.88864H2.99909V3.88909C2.99909 4.13419 3.19763 4.33409 3.44409 4.33409H7C7.24509 4.33409 7.445 4.13555 7.445 3.88909V1.88864H8.52533L12.1114 5.47467V12.1114Z" fill="#909090"/>
|
||||||
|
<path d="M7.00038 1.36523H3.48145V3.90243H7.00038V1.36523Z" fill="#909090"/>
|
||||||
|
<path d="M10.5686 9.77148H3.48145V12.5565H10.5686V9.77148Z" fill="#909090"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 933 B |
|
@ -180,19 +180,19 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BBLTopbar::BBLTopbar(wxFrame* parent)
|
BBLTopbar::BBLTopbar(wxFrame* parent)
|
||||||
: wxAuiToolBar(parent, ID_TOOL_BAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_TEXT | wxAUI_TB_HORZ_TEXT)
|
: wxAuiToolBar(parent, ID_TOOL_BAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_TEXT | wxAUI_TB_HORZ_TEXT)
|
||||||
{
|
{
|
||||||
Init(parent);
|
Init(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
BBLTopbar::BBLTopbar(wxWindow* pwin, wxFrame* parent)
|
BBLTopbar::BBLTopbar(wxWindow* pwin, wxFrame* parent)
|
||||||
: wxAuiToolBar(pwin, ID_TOOL_BAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_TEXT | wxAUI_TB_HORZ_TEXT)
|
: wxAuiToolBar(pwin, ID_TOOL_BAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_TEXT | wxAUI_TB_HORZ_TEXT)
|
||||||
{
|
{
|
||||||
Init(parent);
|
Init(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BBLTopbar::Init(wxFrame* parent)
|
void BBLTopbar::Init(wxFrame* parent)
|
||||||
{
|
{
|
||||||
SetArtProvider(new BBLTopbarArt());
|
SetArtProvider(new BBLTopbarArt());
|
||||||
m_frame = parent;
|
m_frame = parent;
|
||||||
|
@ -230,8 +230,9 @@ void BBLTopbar::Init(wxFrame* parent)
|
||||||
this->AddSpacer(FromDIP(10));
|
this->AddSpacer(FromDIP(10));
|
||||||
|
|
||||||
wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE);
|
wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE);
|
||||||
wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap);
|
m_save_item = this->AddTool(wxID_SAVE, "", save_bitmap);
|
||||||
|
wxBitmap save_inactive_bitmap = create_scaled_bitmap("topbar_save_inactive", nullptr, TOPBAR_ICON_SIZE);
|
||||||
|
m_save_item->SetDisabledBitmap(save_inactive_bitmap);
|
||||||
this->AddSpacer(FromDIP(10));
|
this->AddSpacer(FromDIP(10));
|
||||||
|
|
||||||
wxBitmap undo_bitmap = create_scaled_bitmap("topbar_undo", nullptr, TOPBAR_ICON_SIZE);
|
wxBitmap undo_bitmap = create_scaled_bitmap("topbar_undo", nullptr, TOPBAR_ICON_SIZE);
|
||||||
|
@ -348,6 +349,7 @@ void BBLTopbar::OnSaveProject(wxAuiToolBarEvent& event)
|
||||||
MainFrame* main_frame = dynamic_cast<MainFrame*>(m_frame);
|
MainFrame* main_frame = dynamic_cast<MainFrame*>(m_frame);
|
||||||
Plater* plater = main_frame->plater();
|
Plater* plater = main_frame->plater();
|
||||||
plater->save_project();
|
plater->save_project();
|
||||||
|
EnableSaveItem(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BBLTopbar::OnUndo(wxAuiToolBarEvent& event)
|
void BBLTopbar::OnUndo(wxAuiToolBarEvent& event)
|
||||||
|
@ -364,6 +366,30 @@ void BBLTopbar::OnRedo(wxAuiToolBarEvent& event)
|
||||||
plater->redo();
|
plater->redo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BBLTopbar::EnableSaveItem(bool enable)
|
||||||
|
{
|
||||||
|
if (m_save_item) {
|
||||||
|
this->EnableTool(m_save_item->GetId(), enable);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BBLTopbar::EnableUndoItem(bool enable)
|
||||||
|
{
|
||||||
|
if (m_undo_item) {
|
||||||
|
this->EnableTool(m_undo_item->GetId(), enable);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BBLTopbar::EnableRedoItem(bool enable)
|
||||||
|
{
|
||||||
|
if (m_redo_item) {
|
||||||
|
this->EnableTool(m_redo_item->GetId(), enable);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BBLTopbar::EnableUndoRedoItems()
|
void BBLTopbar::EnableUndoRedoItems()
|
||||||
{
|
{
|
||||||
this->EnableTool(m_undo_item->GetId(), true);
|
this->EnableTool(m_undo_item->GetId(), true);
|
||||||
|
@ -636,7 +662,7 @@ void BBLTopbar::OnMouseLeftDown(wxMouseEvent& event)
|
||||||
wxPoint frame_pos = m_frame->GetScreenPosition();
|
wxPoint frame_pos = m_frame->GetScreenPosition();
|
||||||
m_delta = mouse_pos - frame_pos;
|
m_delta = mouse_pos - frame_pos;
|
||||||
|
|
||||||
if (FindToolByCurrentPosition() == NULL
|
if (FindToolByCurrentPosition() == NULL
|
||||||
|| this->FindToolByCurrentPosition() == m_title_item)
|
|| this->FindToolByCurrentPosition() == m_title_item)
|
||||||
{
|
{
|
||||||
CaptureMouse();
|
CaptureMouse();
|
||||||
|
@ -646,7 +672,7 @@ void BBLTopbar::OnMouseLeftDown(wxMouseEvent& event)
|
||||||
return;
|
return;
|
||||||
#endif // __WXMSW__
|
#endif // __WXMSW__
|
||||||
}
|
}
|
||||||
|
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -674,7 +700,7 @@ void BBLTopbar::OnMouseMotion(wxMouseEvent& event)
|
||||||
|
|
||||||
if (event.Dragging() && event.LeftIsDown())
|
if (event.Dragging() && event.LeftIsDown())
|
||||||
{
|
{
|
||||||
// leave max state and adjust position
|
// leave max state and adjust position
|
||||||
if (m_frame->IsMaximized()) {
|
if (m_frame->IsMaximized()) {
|
||||||
wxRect rect = m_frame->GetRect();
|
wxRect rect = m_frame->GetRect();
|
||||||
// Filter unexcept mouse move
|
// Filter unexcept mouse move
|
||||||
|
|
|
@ -39,7 +39,7 @@ public:
|
||||||
void OnPublishClicked(wxAuiToolBarEvent &event);
|
void OnPublishClicked(wxAuiToolBarEvent &event);
|
||||||
|
|
||||||
wxAuiToolBarItem* FindToolByCurrentPosition();
|
wxAuiToolBarItem* FindToolByCurrentPosition();
|
||||||
|
|
||||||
void SetFileMenu(wxMenu* file_menu);
|
void SetFileMenu(wxMenu* file_menu);
|
||||||
void AddDropDownSubMenu(wxMenu* sub_menu, const wxString& title);
|
void AddDropDownSubMenu(wxMenu* sub_menu, const wxString& title);
|
||||||
void AddDropDownMenuItem(wxMenuItem* menu_item);
|
void AddDropDownMenuItem(wxMenuItem* menu_item);
|
||||||
|
@ -49,6 +49,9 @@ public:
|
||||||
void SetMaximizedSize();
|
void SetMaximizedSize();
|
||||||
void SetWindowSize();
|
void SetWindowSize();
|
||||||
|
|
||||||
|
void EnableSaveItem(bool enable);
|
||||||
|
void EnableUndoItem(bool enable);
|
||||||
|
void EnableRedoItem(bool enable);
|
||||||
void EnableUndoRedoItems();
|
void EnableUndoRedoItems();
|
||||||
void DisableUndoRedoItems();
|
void DisableUndoRedoItems();
|
||||||
|
|
||||||
|
@ -68,8 +71,9 @@ private:
|
||||||
wxAuiToolBarItem* m_title_item;
|
wxAuiToolBarItem* m_title_item;
|
||||||
wxAuiToolBarItem* m_account_item;
|
wxAuiToolBarItem* m_account_item;
|
||||||
wxAuiToolBarItem* m_model_store_item;
|
wxAuiToolBarItem* m_model_store_item;
|
||||||
|
|
||||||
wxAuiToolBarItem *m_publish_item;
|
wxAuiToolBarItem *m_publish_item;
|
||||||
|
wxAuiToolBarItem *m_save_item;
|
||||||
wxAuiToolBarItem* m_undo_item;
|
wxAuiToolBarItem* m_undo_item;
|
||||||
wxAuiToolBarItem* m_redo_item;
|
wxAuiToolBarItem* m_redo_item;
|
||||||
wxAuiToolBarItem* m_calib_item;
|
wxAuiToolBarItem* m_calib_item;
|
||||||
|
|
|
@ -688,7 +688,13 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_
|
||||||
evt.IsShown() ? manger->start_refresher() : manger->stop_refresher();
|
evt.IsShown() ? manger->start_refresher() : manger->stop_refresher();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Bind(wxEVT_IDLE, ([this](wxIdleEvent &e) {
|
||||||
|
if (m_topbar && m_plater) {
|
||||||
|
m_topbar->EnableSaveItem(can_save());
|
||||||
|
m_topbar->EnableUndoItem(m_plater->can_undo());
|
||||||
|
m_topbar->EnableRedoItem(m_plater->can_redo());
|
||||||
|
}
|
||||||
|
}));
|
||||||
#ifdef _MSW_DARK_MODE
|
#ifdef _MSW_DARK_MODE
|
||||||
wxGetApp().UpdateDarkUIWin(this);
|
wxGetApp().UpdateDarkUIWin(this);
|
||||||
#endif // _MSW_DARK_MODE
|
#endif // _MSW_DARK_MODE
|
||||||
|
|
|
@ -14337,6 +14337,10 @@ void Plater::export_toolpaths_to_obj() const
|
||||||
p->preview->get_canvas3d()->export_toolpaths_to_obj(into_u8(path).c_str());
|
p->preview->get_canvas3d()->export_toolpaths_to_obj(into_u8(path).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Plater::is_empty_project() {
|
||||||
|
return model().objects.empty();
|
||||||
|
}
|
||||||
|
|
||||||
bool Plater::is_multi_extruder_ams_empty()
|
bool Plater::is_multi_extruder_ams_empty()
|
||||||
{
|
{
|
||||||
std::vector<std::string> extruder_ams_count_str = p->config->option<ConfigOptionStrings>("extruder_ams_count", true)->values;
|
std::vector<std::string> extruder_ams_count_str = p->config->option<ConfigOptionStrings>("extruder_ams_count", true)->values;
|
||||||
|
|
|
@ -338,7 +338,7 @@ public:
|
||||||
void set_using_exported_file(bool exported_file) {
|
void set_using_exported_file(bool exported_file) {
|
||||||
m_exported_file = exported_file;
|
m_exported_file = exported_file;
|
||||||
}
|
}
|
||||||
|
bool is_empty_project();
|
||||||
bool is_multi_extruder_ams_empty();
|
bool is_multi_extruder_ams_empty();
|
||||||
// BBS
|
// BBS
|
||||||
wxString get_project_name();
|
wxString get_project_name();
|
||||||
|
|
Loading…
Reference in New Issue