ENH:displays the publish button based on user permissions
Change-Id: I853506fa61f1f8cf14dfeb4601c8bb5f1a0c5914
This commit is contained in:
parent
d1021e6861
commit
72b4827f85
|
@ -1,5 +1,10 @@
|
|||
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="18" height="18" fill="#212121"/>
|
||||
<path d="M5.97222 3H4C2.89543 3 2 3.89543 2 5V14C2 15.1046 2.89543 16 4 16H14.4444C15.549 16 16.4444 15.1046 16.4444 14V5C16.4444 3.89543 15.549 3 14.4444 3H12.8333" stroke="white" stroke-linecap="round"/>
|
||||
<path d="M9.93711 2.64645C9.74185 2.45118 9.42527 2.45118 9.23 2.64645L6.04802 5.82843C5.85276 6.02369 5.85276 6.34027 6.04802 6.53553C6.24329 6.7308 6.55987 6.7308 6.75513 6.53553L9.58356 3.70711L12.412 6.53553C12.6072 6.7308 12.9238 6.7308 13.1191 6.53553C13.3144 6.34027 13.3144 6.02369 13.1191 5.82843L9.93711 2.64645ZM9.08356 11.3056C9.08356 11.5817 9.30741 11.8056 9.58356 11.8056C9.8597 11.8056 10.0836 11.5817 10.0836 11.3056H9.08356ZM9.08356 3V11.3056H10.0836V3H9.08356Z" fill="white"/>
|
||||
<g clip-path="url(#clip0_0_3)">
|
||||
<path d="M18 0H0V18H18V0Z" fill="#262E30"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_0_3">
|
||||
<rect width="18" height="18" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 851 B After Width: | Height: | Size: 281 B |
|
@ -251,10 +251,11 @@ void BBLTopbar::Init(wxFrame* parent)
|
|||
this->AddStretchSpacer(1);
|
||||
|
||||
#if !BBL_RELEASE_TO_PUBLIC
|
||||
wxBitmap m_publish_bitmap = create_scaled_bitmap("topbar_publish", nullptr, TOPBAR_ICON_SIZE);
|
||||
m_publish_item = this->AddTool(ID_PUBLISH, "", m_publish_bitmap);
|
||||
wxBitmap m_publish_disable_bitmap = create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE);
|
||||
m_publish_bitmap = create_scaled_bitmap("topbar_publish", nullptr, TOPBAR_ICON_SIZE);
|
||||
m_publish_item = this->AddTool(ID_PUBLISH, "", m_publish_bitmap);
|
||||
m_publish_disable_bitmap = create_scaled_bitmap("topbar_publish_disable", nullptr, TOPBAR_ICON_SIZE);
|
||||
m_publish_item->SetDisabledBitmap(m_publish_disable_bitmap);
|
||||
this->EnableTool(m_publish_item->GetId(), false);
|
||||
this->AddSpacer(FromDIP(12));
|
||||
#endif
|
||||
|
||||
|
@ -320,6 +321,12 @@ BBLTopbar::~BBLTopbar()
|
|||
m_file_menu = nullptr;
|
||||
}
|
||||
|
||||
void BBLTopbar::show_publish_button(bool show)
|
||||
{
|
||||
this->EnableTool(m_publish_item->GetId(), show);
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void BBLTopbar::OnOpenProject(wxAuiToolBarEvent& event)
|
||||
{
|
||||
MainFrame* main_frame = dynamic_cast<MainFrame*>(m_frame);
|
||||
|
|
|
@ -16,6 +16,7 @@ public:
|
|||
BBLTopbar(wxFrame* parent);
|
||||
void Init(wxFrame *parent);
|
||||
~BBLTopbar();
|
||||
void show_publish_button(bool show);
|
||||
void UpdateToolbarWidth(int width);
|
||||
void Rescale();
|
||||
void OnIconize(wxAuiToolBarEvent& event);
|
||||
|
@ -68,6 +69,9 @@ private:
|
|||
wxAuiToolBarItem* m_redo_item;
|
||||
wxAuiToolBarItem* maximize_btn;
|
||||
|
||||
wxBitmap m_publish_bitmap;
|
||||
wxBitmap m_publish_disable_bitmap;
|
||||
|
||||
wxBitmap maximize_bitmap;
|
||||
wxBitmap window_bitmap;
|
||||
|
||||
|
|
|
@ -3200,6 +3200,12 @@ void GUI_App::request_user_logout()
|
|||
GUI::wxGetApp().sidebar().load_ams_list({});
|
||||
GUI::wxGetApp().remove_user_presets();
|
||||
GUI::wxGetApp().stop_sync_user_preset();
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
wxGetApp().mainframe->topbar()->show_publish_button(false);
|
||||
#else
|
||||
wxGetApp().mainframe->show_publish_button(false);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3529,6 +3535,21 @@ void GUI_App::on_user_login(wxCommandEvent &evt)
|
|||
GUI::wxGetApp().preset_bundle->update_user_presets_directory(user_id);
|
||||
if (online_login)
|
||||
GUI::wxGetApp().mainframe->show_sync_dialog();
|
||||
|
||||
//show publish button
|
||||
if (m_agent->is_user_login() && mainframe) {
|
||||
int identifier;
|
||||
int result = m_agent->get_user_info(&identifier);
|
||||
auto publish_identifier = identifier & 1;
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
if (result == 0 && publish_identifier >= 0) {
|
||||
mainframe->m_topbar->show_publish_button(publish_identifier == 0 ? false : true);
|
||||
}
|
||||
#else
|
||||
mainframe->show_publish_button(publish_identifier == 0 ? false : true);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
bool GUI_App::is_studio_active()
|
||||
|
|
|
@ -2150,7 +2150,7 @@ void MainFrame::init_menubar_as_editor()
|
|||
// BBS
|
||||
|
||||
//publish menu
|
||||
wxMenu* publishMenu = nullptr;
|
||||
|
||||
if (m_plater) {
|
||||
publishMenu = new wxMenu();
|
||||
add_common_publish_menu_items(publishMenu, this);
|
||||
|
@ -2364,11 +2364,19 @@ void MainFrame::init_menubar_as_editor()
|
|||
m_menubar->Append(editMenu, wxString::Format("&%s", _L("Edit")));
|
||||
if (viewMenu)
|
||||
m_menubar->Append(viewMenu, wxString::Format("&%s", _L("View")));
|
||||
if (publishMenu)
|
||||
m_menubar->Append(publishMenu, wxString::Format("&%s", _L("3D Models")));
|
||||
/*if (publishMenu)
|
||||
m_menubar->Append(publishMenu, wxString::Format("&%s", _L("3D Models")));*/
|
||||
if (helpMenu)
|
||||
m_menubar->Append(helpMenu, wxString::Format("&%s", _L("Help")));
|
||||
SetMenuBar(m_menubar);
|
||||
|
||||
if (wxGetApp().getAgent()->is_user_login()) {
|
||||
int identifier;
|
||||
int result = wxGetApp().getAgent()->get_user_info(&identifier);
|
||||
auto publish_identifier = identifier & 1;
|
||||
show_publish_button(publish_identifier == 0 ? false : true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef _MSW_DARK_MODE
|
||||
|
@ -2388,6 +2396,18 @@ void MainFrame::init_menubar_as_editor()
|
|||
#endif // __APPLE__
|
||||
}
|
||||
|
||||
void MainFrame::show_publish_button(bool show)
|
||||
{
|
||||
if (!m_menubar) return;
|
||||
|
||||
if (show){
|
||||
m_menubar->Insert(4, publishMenu, wxString::Format("&%s", _L("3D Models")));
|
||||
}
|
||||
else {
|
||||
m_menubar->Remove(4);
|
||||
}
|
||||
}
|
||||
|
||||
void MainFrame::open_menubar_item(const wxString& menu_name,const wxString& item_name)
|
||||
{
|
||||
if (m_menubar == nullptr)
|
||||
|
|
|
@ -89,7 +89,9 @@ class MainFrame : public DPIFrame
|
|||
wxString m_qs_last_input_file = wxEmptyString;
|
||||
wxString m_qs_last_output_file = wxEmptyString;
|
||||
wxString m_last_config = wxEmptyString;
|
||||
|
||||
wxMenuBar* m_menubar{ nullptr };
|
||||
wxMenu* publishMenu{ nullptr };
|
||||
|
||||
#if 0
|
||||
wxMenuItem* m_menu_item_repeat { nullptr }; // doesn't used now
|
||||
|
@ -234,6 +236,7 @@ public:
|
|||
BBLTopbar* topbar() { return m_topbar; }
|
||||
|
||||
void update_title();
|
||||
void show_publish_button(bool show);
|
||||
|
||||
void update_title_colour_after_set_title();
|
||||
void show_option(bool show);
|
||||
|
|
|
@ -14,15 +14,14 @@
|
|||
namespace Slic3r {
|
||||
namespace GUI {
|
||||
ModelMallDialog::ModelMallDialog(Plater* plater /*= nullptr*/)
|
||||
:DPIDialog(static_cast<wxWindow*>(nullptr), wxID_ANY, _L("3D Models"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_NO_PARENT|wxMINIMIZE_BOX)
|
||||
:DPIDialog(static_cast<wxWindow*>(nullptr), wxID_ANY, _L("3D Models"), wxDefaultPosition, wxDefaultSize, wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER)
|
||||
{
|
||||
// icon
|
||||
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str();
|
||||
SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
||||
|
||||
SetSize(MODEL_MALL_PAGE_SIZE);
|
||||
SetMaxSize(MODEL_MALL_PAGE_SIZE);
|
||||
SetMinSize(MODEL_MALL_PAGE_SIZE);
|
||||
SetMinSize(wxSize(MODEL_MALL_PAGE_SIZE.x / 4, MODEL_MALL_PAGE_SIZE.y / 4));
|
||||
|
||||
wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
|
@ -33,8 +32,7 @@ namespace GUI {
|
|||
m_web_control_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, MODEL_MALL_PAGE_CONTROL_SIZE, wxTAB_TRAVERSAL);
|
||||
m_web_control_panel->SetBackgroundColour(*wxWHITE);
|
||||
m_web_control_panel->SetSize(MODEL_MALL_PAGE_CONTROL_SIZE);
|
||||
m_web_control_panel->SetMaxSize(MODEL_MALL_PAGE_CONTROL_SIZE);
|
||||
m_web_control_panel->SetMinSize(MODEL_MALL_PAGE_CONTROL_SIZE);
|
||||
|
||||
|
||||
wxBoxSizer* m_sizer_web_control = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
|
@ -100,12 +98,10 @@ namespace GUI {
|
|||
|
||||
m_browser->SetSize(MODEL_MALL_PAGE_WEB_SIZE);
|
||||
m_browser->SetMinSize(MODEL_MALL_PAGE_WEB_SIZE);
|
||||
m_browser->SetMaxSize(MODEL_MALL_PAGE_WEB_SIZE);
|
||||
|
||||
m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ModelMallDialog::OnScriptMessage, this, m_browser->GetId());
|
||||
|
||||
m_sizer_main->Add(m_web_control_panel, 0, wxEXPAND, 0);
|
||||
m_sizer_main->Add(m_browser, 0, wxEXPAND, 0);
|
||||
m_sizer_main->Add(m_browser, 1, wxEXPAND, 0);
|
||||
SetSizer(m_sizer_main);
|
||||
Layout();
|
||||
Fit();
|
||||
|
|
|
@ -35,9 +35,9 @@
|
|||
#include "Widgets/Button.hpp"
|
||||
|
||||
|
||||
#define MODEL_MALL_PAGE_SIZE wxSize(FromDIP(1400 * 0.75), FromDIP(1040 * 0.75))
|
||||
#define MODEL_MALL_PAGE_CONTROL_SIZE wxSize(FromDIP(1400 * 0.75), FromDIP(40 * 0.75))
|
||||
#define MODEL_MALL_PAGE_WEB_SIZE wxSize(FromDIP(1400 * 0.75), FromDIP(1000 * 0.75))
|
||||
#define MODEL_MALL_PAGE_SIZE wxSize(FromDIP(1400 * 0.8), FromDIP(1040 * 0.8))
|
||||
#define MODEL_MALL_PAGE_CONTROL_SIZE wxSize(FromDIP(1400 * 0.8), FromDIP(40 * 0.8))
|
||||
#define MODEL_MALL_PAGE_WEB_SIZE wxSize(FromDIP(1400 * 0.8), FromDIP(1000 * 0.8))
|
||||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@ func_check_user_task_report NetworkAgent::check_user_task_report_ptr = n
|
|||
func_get_user_print_info NetworkAgent::get_user_print_info_ptr = nullptr;
|
||||
func_get_printer_firmware NetworkAgent::get_printer_firmware_ptr = nullptr;
|
||||
func_get_task_plate_index NetworkAgent::get_task_plate_index_ptr = nullptr;
|
||||
func_get_user_info NetworkAgent::get_user_info_ptr = nullptr;
|
||||
func_get_slice_info NetworkAgent::get_slice_info_ptr = nullptr;
|
||||
func_query_bind_status NetworkAgent::query_bind_status_ptr = nullptr;
|
||||
func_modify_printer_name NetworkAgent::modify_printer_name_ptr = nullptr;
|
||||
|
@ -226,6 +227,7 @@ int NetworkAgent::initialize_network_module(bool using_backup)
|
|||
get_user_print_info_ptr = reinterpret_cast<func_get_user_print_info>(get_network_function("bambu_network_get_user_print_info"));
|
||||
get_printer_firmware_ptr = reinterpret_cast<func_get_printer_firmware>(get_network_function("bambu_network_get_printer_firmware"));
|
||||
get_task_plate_index_ptr = reinterpret_cast<func_get_task_plate_index>(get_network_function("bambu_network_get_task_plate_index"));
|
||||
get_user_info_ptr = reinterpret_cast<func_get_user_info>(get_network_function("bambu_network_get_user_info"));
|
||||
get_slice_info_ptr = reinterpret_cast<func_get_slice_info>(get_network_function("bambu_network_get_slice_info"));
|
||||
query_bind_status_ptr = reinterpret_cast<func_query_bind_status>(get_network_function("bambu_network_query_bind_status"));
|
||||
modify_printer_name_ptr = reinterpret_cast<func_modify_printer_name>(get_network_function("bambu_network_modify_printer_name"));
|
||||
|
@ -320,6 +322,7 @@ int NetworkAgent::unload_network_module()
|
|||
get_user_print_info_ptr = nullptr;
|
||||
get_printer_firmware_ptr = nullptr;
|
||||
get_task_plate_index_ptr = nullptr;
|
||||
get_user_info_ptr = nullptr;
|
||||
get_slice_info_ptr = nullptr;
|
||||
query_bind_status_ptr = nullptr;
|
||||
modify_printer_name_ptr = nullptr;
|
||||
|
@ -1002,6 +1005,17 @@ int NetworkAgent::get_task_plate_index(std::string task_id, int* plate_index)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int NetworkAgent::get_user_info(int* identifier)
|
||||
{
|
||||
int ret = 0;
|
||||
if (network_agent && get_user_info_ptr) {
|
||||
ret = get_user_info_ptr(network_agent, identifier);
|
||||
if (ret)
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" error: network_agent=%1%, ret=%2%") % network_agent % ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int NetworkAgent::get_slice_info(std::string project_id, std::string profile_id, int plate_index, std::string* slice_json)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -66,6 +66,7 @@ typedef int (*func_check_user_task_report)(void *agent, int* task_id, bool* prin
|
|||
typedef int (*func_get_user_print_info)(void *agent, unsigned int* http_code, std::string* http_body);
|
||||
typedef int (*func_get_printer_firmware)(void *agent, std::string dev_id, unsigned* http_code, std::string* http_body);
|
||||
typedef int (*func_get_task_plate_index)(void *agent, std::string task_id, int* plate_index);
|
||||
typedef int (*func_get_user_info)(void *agent, int* identifier);
|
||||
typedef int (*func_get_slice_info)(void *agent, std::string project_id, std::string profile_id, int plate_index, std::string* slice_json);
|
||||
typedef int (*func_query_bind_status)(void *agent, std::vector<std::string> query_list, unsigned int* http_code, std::string* http_body);
|
||||
typedef int (*func_modify_printer_name)(void *agent, std::string dev_id, std::string dev_name);
|
||||
|
@ -148,6 +149,7 @@ public:
|
|||
int get_user_print_info(unsigned int* http_code, std::string* http_body);
|
||||
int get_printer_firmware(std::string dev_id, unsigned* http_code, std::string* http_body);
|
||||
int get_task_plate_index(std::string task_id, int* plate_index);
|
||||
int get_user_info(int* identifier);
|
||||
int get_slice_info(std::string project_id, std::string profile_id, int plate_index, std::string* slice_json);
|
||||
int query_bind_status(std::vector<std::string> query_list, unsigned int* http_code, std::string* http_body);
|
||||
int modify_printer_name(std::string dev_id, std::string dev_name);
|
||||
|
@ -220,6 +222,7 @@ private:
|
|||
static func_get_user_print_info get_user_print_info_ptr;
|
||||
static func_get_printer_firmware get_printer_firmware_ptr;
|
||||
static func_get_task_plate_index get_task_plate_index_ptr;
|
||||
static func_get_user_info get_user_info_ptr;
|
||||
static func_get_slice_info get_slice_info_ptr;
|
||||
static func_query_bind_status query_bind_status_ptr;
|
||||
static func_modify_printer_name modify_printer_name_ptr;
|
||||
|
|
Loading…
Reference in New Issue