mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-30 13:52:00 +08:00
Merge branch 'ys_spe2352'
This commit is contained in:
commit
63eb6b7ddc
@ -648,7 +648,7 @@ void PageWelcome::set_run_reason(ConfigWizard::RunReason run_reason)
|
|||||||
}
|
}
|
||||||
|
|
||||||
PageUpdateManager::PageUpdateManager(ConfigWizard* parent_in)
|
PageUpdateManager::PageUpdateManager(ConfigWizard* parent_in)
|
||||||
: ConfigWizardPage(parent_in, _L("Manage Configuration Updates"), _L("Configuration Manager"))
|
: ConfigWizardPage(parent_in, _L("Configuration sources"), _L("Configuration Sources"))
|
||||||
{
|
{
|
||||||
this->SetFont(wxGetApp().normal_font());
|
this->SetFont(wxGetApp().normal_font());
|
||||||
|
|
||||||
@ -656,7 +656,7 @@ PageUpdateManager::PageUpdateManager(ConfigWizard* parent_in)
|
|||||||
|
|
||||||
manager = std::make_unique<RepositoryUpdateUIManager>(this, wxGetApp().plater()->get_preset_archive_database(), em);
|
manager = std::make_unique<RepositoryUpdateUIManager>(this, wxGetApp().plater()->get_preset_archive_database(), em);
|
||||||
|
|
||||||
warning_text = new wxStaticText(this, wxID_ANY, _L("WARNING: Select at least one repository."));
|
warning_text = new wxStaticText(this, wxID_ANY, _L("WARNING: Select at least one source."));
|
||||||
warning_text->SetFont(wxGetApp().bold_font());
|
warning_text->SetFont(wxGetApp().bold_font());
|
||||||
warning_text->Hide();
|
warning_text->Hide();
|
||||||
|
|
||||||
|
@ -257,14 +257,14 @@ static std::string to_string(libvgcode::EMoveType type)
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
// TRN: Following strings are labels in the G-code Viewer legend.
|
// TRN: Following strings are labels in the G-code Viewer legend.
|
||||||
case libvgcode::EMoveType::Noop: { return _u8L("Noop"); }
|
case libvgcode::EMoveType::Noop: { return ("Noop"); }
|
||||||
case libvgcode::EMoveType::Retract: { return _u8L("Retract"); }
|
case libvgcode::EMoveType::Retract: { return _u8L("Retract"); }
|
||||||
case libvgcode::EMoveType::Unretract: { return _u8L("Unretract"); }
|
case libvgcode::EMoveType::Unretract: { return _u8L("Unretract"); }
|
||||||
case libvgcode::EMoveType::Seam: { return _u8L("Seam"); }
|
case libvgcode::EMoveType::Seam: { return _u8L("Seam"); }
|
||||||
case libvgcode::EMoveType::ToolChange: { return _u8L("Tool Change"); }
|
case libvgcode::EMoveType::ToolChange: { return _u8L("Tool Change"); }
|
||||||
case libvgcode::EMoveType::ColorChange: { return _u8L("Color Change"); }
|
case libvgcode::EMoveType::ColorChange: { return _u8L("Color Change"); }
|
||||||
case libvgcode::EMoveType::PausePrint: { return _u8L("Pause Print"); }
|
case libvgcode::EMoveType::PausePrint: { return _u8L("Pause Print"); }
|
||||||
case libvgcode::EMoveType::CustomGCode: { return _u8L("Custom GCode"); }
|
case libvgcode::EMoveType::CustomGCode: { return _u8L("Custom G-code"); }
|
||||||
case libvgcode::EMoveType::Travel: { return _u8L("Travel"); }
|
case libvgcode::EMoveType::Travel: { return _u8L("Travel"); }
|
||||||
case libvgcode::EMoveType::Wipe: { return _u8L("Wipe"); }
|
case libvgcode::EMoveType::Wipe: { return _u8L("Wipe"); }
|
||||||
case libvgcode::EMoveType::Extrude: { return _u8L("Extrude"); }
|
case libvgcode::EMoveType::Extrude: { return _u8L("Extrude"); }
|
||||||
|
@ -3521,8 +3521,8 @@ bool GUI_App::check_updates(const bool invoked_by_user)
|
|||||||
if (!plater()->get_preset_archive_database()->extract_archives_with_check(failed_paths)) {
|
if (!plater()->get_preset_archive_database()->extract_archives_with_check(failed_paths)) {
|
||||||
int cnt = std::count(failed_paths.begin(), failed_paths.end(), '\n') + 1;
|
int cnt = std::count(failed_paths.begin(), failed_paths.end(), '\n') + 1;
|
||||||
// TRN: %1% contains paths from which loading failed. They are separated by \n, there is no \n at the end.
|
// TRN: %1% contains paths from which loading failed. They are separated by \n, there is no \n at the end.
|
||||||
failed_paths = GUI::format(_L_PLURAL("It was not possible to extract data from %1%. The repository will not be updated.",
|
failed_paths = GUI::format(_L_PLURAL("It was not possible to extract data from %1%. The source will not be updated.",
|
||||||
"It was not possible to extract data for following local repositories. They will not be updated.\n\n %1%", cnt), failed_paths);
|
"It was not possible to extract data for following local sources. They will not be updated.\n\n %1%", cnt), failed_paths);
|
||||||
show_error(nullptr, failed_paths);
|
show_error(nullptr, failed_paths);
|
||||||
}
|
}
|
||||||
// then its time for preset_updater sync
|
// then its time for preset_updater sync
|
||||||
@ -3919,7 +3919,7 @@ void GUI_App::search_and_select_filaments(const std::string& material, size_t ex
|
|||||||
{
|
{
|
||||||
out_message += /*(extruder_count == 1)
|
out_message += /*(extruder_count == 1)
|
||||||
? GUI::format(_L("Selected Filament:\n%1%"), filament_preset.preset->name)
|
? GUI::format(_L("Selected Filament:\n%1%"), filament_preset.preset->name)
|
||||||
: */GUI::format(_L("Extruder %1%: Selected Filament %2%\n"), extruder_index + 1, filament.preset->name);
|
: */GUI::format(_L("Extruder %1%: Selected filament %2%\n"), extruder_index + 1, filament.preset->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3934,7 +3934,7 @@ void GUI_App::search_and_select_filaments(const std::string& material, size_t ex
|
|||||||
&& filament.preset->name.compare(0, 9, "Prusament") == 0
|
&& filament.preset->name.compare(0, 9, "Prusament") == 0
|
||||||
&& select_filament_preset(filament.preset, extruder_index))
|
&& select_filament_preset(filament.preset, extruder_index))
|
||||||
{
|
{
|
||||||
out_message += GUI::format(_L("Extruder %1%: Selected and installed filament %2%\n"), extruder_index + 1, filament.preset->name);
|
out_message += GUI::format(_L("Extruder %1%: Installed and selected filament %2%\n"), extruder_index + 1, filament.preset->name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,14 +11,14 @@ namespace GUI {
|
|||||||
|
|
||||||
LoginDialog::LoginDialog(wxWindow* parent, UserAccount* user_account)
|
LoginDialog::LoginDialog(wxWindow* parent, UserAccount* user_account)
|
||||||
// TRN: This is the dialog title.
|
// TRN: This is the dialog title.
|
||||||
: DPIDialog(parent, wxID_ANY, _L("Prusa Account"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
: DPIDialog(parent, wxID_ANY, ("Prusa Account"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
|
||||||
, p_user_account(user_account)
|
, p_user_account(user_account)
|
||||||
{
|
{
|
||||||
const int em = wxGetApp().em_unit();
|
const int em = wxGetApp().em_unit();
|
||||||
bool logged = p_user_account->is_logged();
|
bool logged = p_user_account->is_logged();
|
||||||
wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
// sizer with black border
|
// sizer with black border
|
||||||
wxStaticBoxSizer* static_box_sizer = new wxStaticBoxSizer(wxVERTICAL, this, _L("Log into your Prusa Account"));
|
wxStaticBoxSizer* static_box_sizer = new wxStaticBoxSizer(wxVERTICAL, this, ("Log into your Prusa Account"));
|
||||||
static_box_sizer->SetMinSize(wxSize(em * 30, em * 15));
|
static_box_sizer->SetMinSize(wxSize(em * 30, em * 15));
|
||||||
// avatar
|
// avatar
|
||||||
boost::filesystem::path path = p_user_account->get_avatar_path(logged);
|
boost::filesystem::path path = p_user_account->get_avatar_path(logged);
|
||||||
@ -26,18 +26,18 @@ LoginDialog::LoginDialog(wxWindow* parent, UserAccount* user_account)
|
|||||||
m_avatar_bitmap = new wxStaticBitmap(this, wxID_ANY, logo.bmp(), wxDefaultPosition, wxDefaultSize);
|
m_avatar_bitmap = new wxStaticBitmap(this, wxID_ANY, logo.bmp(), wxDefaultPosition, wxDefaultSize);
|
||||||
static_box_sizer->Add(m_avatar_bitmap, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
static_box_sizer->Add(m_avatar_bitmap, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
||||||
// username
|
// username
|
||||||
const wxString username = GUI::format_wxstr("%1%", logged ? from_u8(p_user_account->get_username()) : _L("Anonymous"));
|
const wxString username = GUI::format_wxstr("%1%", logged ? from_u8(p_user_account->get_username()) : ("Anonymous"));
|
||||||
m_username_label = new wxStaticText(this, wxID_ANY, username, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER);
|
m_username_label = new wxStaticText(this, wxID_ANY, username, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER);
|
||||||
m_username_label->SetFont(m_username_label->GetFont().Bold());
|
m_username_label->SetFont(m_username_label->GetFont().Bold());
|
||||||
static_box_sizer->Add(m_username_label, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
|
static_box_sizer->Add(m_username_label, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5);
|
||||||
// login button
|
// login button
|
||||||
m_login_button_id = NewControlId();
|
m_login_button_id = NewControlId();
|
||||||
m_login_button = new wxButton(this, m_login_button_id, logged ? _L("Log out") : _L("Log in"));
|
m_login_button = new wxButton(this, m_login_button_id, logged ? ("Log out") : ("Log in"));
|
||||||
static_box_sizer->Add(m_login_button, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
static_box_sizer->Add(m_login_button, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
||||||
// TODO: why is m_login_button always hovered?
|
// TODO: why is m_login_button always hovered?
|
||||||
main_sizer->Add(static_box_sizer, 1, wxEXPAND | wxALL, 10);
|
main_sizer->Add(static_box_sizer, 1, wxEXPAND | wxALL, 10);
|
||||||
// continue button
|
// continue button
|
||||||
m_continue_button = new wxButton(this, wxID_OK, logged ? _L("Continue") : _L("Continue without Prusa Account"));
|
m_continue_button = new wxButton(this, wxID_OK, logged ? ("Continue") : ("Continue without Prusa Account"));
|
||||||
main_sizer->Add(m_continue_button, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
main_sizer->Add(m_continue_button, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
||||||
|
|
||||||
SetSizerAndFit(main_sizer);
|
SetSizerAndFit(main_sizer);
|
||||||
@ -61,7 +61,7 @@ void LoginDialog::update_account()
|
|||||||
{
|
{
|
||||||
bool logged = p_user_account->is_logged();
|
bool logged = p_user_account->is_logged();
|
||||||
|
|
||||||
const wxString username = GUI::format_wxstr("%1%", logged ? from_u8(p_user_account->get_username()) : _L("Anonymous"));
|
const wxString username = GUI::format_wxstr("%1%", logged ? from_u8(p_user_account->get_username()) : ("Anonymous"));
|
||||||
m_username_label->SetLabel(username);
|
m_username_label->SetLabel(username);
|
||||||
|
|
||||||
boost::filesystem::path path = p_user_account->get_avatar_path(logged);
|
boost::filesystem::path path = p_user_account->get_avatar_path(logged);
|
||||||
@ -71,8 +71,8 @@ void LoginDialog::update_account()
|
|||||||
m_avatar_bitmap->SetBitmap(logo.bmp());
|
m_avatar_bitmap->SetBitmap(logo.bmp());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_login_button->SetLabel(logged ? _L("Log out") : _L("Log in"));
|
m_login_button->SetLabel(logged ? ("Log out") : ("Log in"));
|
||||||
m_continue_button->SetLabel(logged ? _L("Continue") : _L("Continue without Prusa Account"));
|
m_continue_button->SetLabel(logged ? ("Continue") : ("Continue without Prusa Account"));
|
||||||
// TODO: resize correctly m_continue_button
|
// TODO: resize correctly m_continue_button
|
||||||
//m_continue_button->Fit();
|
//m_continue_button->Fit();
|
||||||
|
|
||||||
|
@ -472,7 +472,9 @@ void MainFrame::update_layout()
|
|||||||
|
|
||||||
if (m_layout == ESettingsLayout::Old)
|
if (m_layout == ESettingsLayout::Old)
|
||||||
m_tabpanel->InsertNewPage(0, m_plater, _L("Plater"), "", true);
|
m_tabpanel->InsertNewPage(0, m_plater, _L("Plater"), "", true);
|
||||||
|
|
||||||
|
update_topbars();
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
Thaw();
|
Thaw();
|
||||||
}
|
}
|
||||||
@ -596,6 +598,22 @@ static wxString GetTooltipForSettingsButton(PrinterTechnology pt)
|
|||||||
return from_u8(tooltip);
|
return from_u8(tooltip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainFrame::update_topbars()
|
||||||
|
{
|
||||||
|
if (wxGetApp().is_gcode_viewer())
|
||||||
|
return;
|
||||||
|
|
||||||
|
const bool show_login = !wxGetApp().app_config->has("show_login_button") || wxGetApp().app_config->get_bool("show_login_button");
|
||||||
|
m_tmp_top_bar->ShowUserAccount(show_login);
|
||||||
|
m_tabpanel->ShowUserAccount(show_login);
|
||||||
|
|
||||||
|
if (!show_login) {
|
||||||
|
if (auto user_account = wxGetApp().plater()->get_user_account();
|
||||||
|
user_account && user_account->is_logged())
|
||||||
|
user_account->do_logout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MainFrame::set_callbacks_for_topbar_menus()
|
void MainFrame::set_callbacks_for_topbar_menus()
|
||||||
{
|
{
|
||||||
m_bar_menus.set_workspaces_menu_callbacks(
|
m_bar_menus.set_workspaces_menu_callbacks(
|
||||||
@ -605,17 +623,33 @@ void MainFrame::set_callbacks_for_topbar_menus()
|
|||||||
);
|
);
|
||||||
|
|
||||||
m_bar_menus.set_account_menu_callbacks(
|
m_bar_menus.set_account_menu_callbacks(
|
||||||
[]() -> void { wxGetApp().plater()->toggle_remember_user_account_session(); },
|
|
||||||
[]() -> void { wxGetApp().plater()->act_with_user_account(); },
|
[]() -> void { wxGetApp().plater()->act_with_user_account(); },
|
||||||
|
[this]() -> void {
|
||||||
|
wxString preferences_item = _L("Show Log in button in application top bar");
|
||||||
|
wxString msg =
|
||||||
|
_L("PrusaSlicer will remember your choice.") + "\n\n" +
|
||||||
|
format_wxstr(_L("Visit \"Preferences\" and check \"%1%\"\nto changes your choice."), preferences_item);
|
||||||
|
|
||||||
|
MessageDialog msg_dlg(this, msg, _L("PrusaSlicer: Don't ask me again"), wxOK | wxCANCEL | wxICON_INFORMATION);
|
||||||
|
if (msg_dlg.ShowModal() == wxID_OK) {
|
||||||
|
wxGetApp().app_config->set("show_login_button", "0");
|
||||||
|
|
||||||
|
m_bar_menus.RemoveHideLoginItem();
|
||||||
|
update_topbars();
|
||||||
|
}
|
||||||
|
},
|
||||||
[]() -> TopBarMenus::UserAccountInfo {
|
[]() -> TopBarMenus::UserAccountInfo {
|
||||||
if (auto user_account = wxGetApp().plater()->get_user_account())
|
if (auto user_account = wxGetApp().plater()->get_user_account())
|
||||||
return { user_account->is_logged(),
|
return { user_account->is_logged(),
|
||||||
user_account->get_remember_session(),
|
|
||||||
user_account->get_username(),
|
user_account->get_username(),
|
||||||
user_account->get_avatar_path(true) };
|
user_account->get_avatar_path(true) };
|
||||||
return TopBarMenus::UserAccountInfo();
|
return TopBarMenus::UserAccountInfo();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// we need "Hide Log in button" menu item only till "show_login_button" wasn't changed
|
||||||
|
if (wxGetApp().app_config->has("show_login_button"))
|
||||||
|
m_bar_menus.RemoveHideLoginItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainFrame::init_tabpanel()
|
void MainFrame::init_tabpanel()
|
||||||
@ -1879,7 +1913,7 @@ void MainFrame::export_configbundle(bool export_physical_printers /*= false*/)
|
|||||||
wxSecretStore store = wxSecretStore::GetDefault();
|
wxSecretStore store = wxSecretStore::GetDefault();
|
||||||
wxString errmsg;
|
wxString errmsg;
|
||||||
if (!store.IsOk(&errmsg)) {
|
if (!store.IsOk(&errmsg)) {
|
||||||
std::string msg = GUI::format("%1% (%2%).", _u8L("Failed to load credentials from the system secret store."), errmsg);
|
std::string msg = GUI::format("%1% (%2%).", _u8L("Failed to load credentials from the system password store."), errmsg);
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
show_error(nullptr, msg);
|
show_error(nullptr, msg);
|
||||||
// Do not try again. System store is not reachable.
|
// Do not try again. System store is not reachable.
|
||||||
@ -1890,7 +1924,7 @@ void MainFrame::export_configbundle(bool export_physical_printers /*= false*/)
|
|||||||
wxString username;
|
wxString username;
|
||||||
wxSecretValue password;
|
wxSecretValue password;
|
||||||
if (!store.Load(service, username, password)) {
|
if (!store.Load(service, username, password)) {
|
||||||
std::string msg = GUI::format(_u8L("Failed to load credentials from the system secret store for printer %1%."), printer_id);
|
std::string msg = GUI::format(_u8L("Failed to load credentials from the system password store for printer %1%."), printer_id);
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
show_error(nullptr, msg);
|
show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
@ -2160,6 +2194,8 @@ void MainFrame::update_ui_from_settings()
|
|||||||
// m_plater->sidebar().show_export(bp_on);
|
// m_plater->sidebar().show_export(bp_on);
|
||||||
// m_plater->sidebar().Layout();
|
// m_plater->sidebar().Layout();
|
||||||
|
|
||||||
|
update_topbars();
|
||||||
|
|
||||||
if (m_plater)
|
if (m_plater)
|
||||||
m_plater->update_ui_from_settings();
|
m_plater->update_ui_from_settings();
|
||||||
for (auto tab: wxGetApp().tabs_list)
|
for (auto tab: wxGetApp().tabs_list)
|
||||||
|
@ -172,6 +172,7 @@ public:
|
|||||||
void update_title();
|
void update_title();
|
||||||
|
|
||||||
void set_callbacks_for_topbar_menus();
|
void set_callbacks_for_topbar_menus();
|
||||||
|
void update_topbars();
|
||||||
void init_tabpanel();
|
void init_tabpanel();
|
||||||
void create_preset_tabs();
|
void create_preset_tabs();
|
||||||
void add_created_tab(Tab* panel, const std::string& bmp_name = "");
|
void add_created_tab(Tab* panel, const std::string& bmp_name = "");
|
||||||
|
@ -189,7 +189,7 @@ bool save_secret(const std::string& id, const std::string& opt, const std::strin
|
|||||||
const wxString username = boost::nowide::widen(usr);
|
const wxString username = boost::nowide::widen(usr);
|
||||||
const wxSecretValue password(boost::nowide::widen(psswd));
|
const wxSecretValue password(boost::nowide::widen(psswd));
|
||||||
if (!store.Save(service, username, password)) {
|
if (!store.Save(service, username, password)) {
|
||||||
std::string msg(_u8L("Failed to save credentials to the system secret store."));
|
std::string msg(_u8L("Failed to save credentials to the system password store."));
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
show_error(nullptr, msg);
|
show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
@ -215,7 +215,7 @@ bool load_secret(const std::string& id, const std::string& opt, std::string& usr
|
|||||||
wxString username;
|
wxString username;
|
||||||
wxSecretValue password;
|
wxSecretValue password;
|
||||||
if (!store.Load(service, username, password)) {
|
if (!store.Load(service, username, password)) {
|
||||||
std::string msg(_u8L("Failed to load credentials from the system secret store."));
|
std::string msg(_u8L("Failed to load credentials from the system password store."));
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
show_error(nullptr, msg);
|
show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
|
@ -5965,7 +5965,7 @@ bool load_secret(const std::string& id, const std::string& opt, std::string& usr
|
|||||||
wxString username;
|
wxString username;
|
||||||
wxSecretValue password;
|
wxSecretValue password;
|
||||||
if (!store.Load(service, username, password)) {
|
if (!store.Load(service, username, password)) {
|
||||||
std::string msg(_u8L("Failed to load credentials from the system secret store."));
|
std::string msg(_u8L("Failed to load credentials from the system password store."));
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
show_error(nullptr, msg);
|
show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
@ -6965,8 +6965,11 @@ void Plater::act_with_user_account()
|
|||||||
if (p->user_account) {
|
if (p->user_account) {
|
||||||
if (p->user_account->is_logged())
|
if (p->user_account->is_logged())
|
||||||
p->user_account->do_logout();
|
p->user_account->do_logout();
|
||||||
else
|
else {
|
||||||
p->user_account->do_login();
|
p->user_account->do_login();
|
||||||
|
if (!wxGetApp().app_config->has("show_login_button"))
|
||||||
|
wxGetApp().app_config->set("show_login_button", "1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,8 +135,11 @@ void PreferencesDialog::show(const std::string& highlight_opt_key /*= std::strin
|
|||||||
downloader->set_path_name(app_config->get("url_downloader_dest"));
|
downloader->set_path_name(app_config->get("url_downloader_dest"));
|
||||||
downloader->allow(!app_config->has("downloader_url_registered") || app_config->get_bool("downloader_url_registered"));
|
downloader->allow(!app_config->has("downloader_url_registered") || app_config->get_bool("downloader_url_registered"));
|
||||||
|
|
||||||
for (const std::string& opt_key : {"suppress_hyperlinks", "downloader_url_registered"})
|
for (const std::string& opt_key : {"suppress_hyperlinks", "downloader_url_registered", "show_login_button"})
|
||||||
m_optgroup_other->set_value(opt_key, app_config->get_bool(opt_key));
|
m_optgroup_other->set_value(opt_key, app_config->get_bool(opt_key));
|
||||||
|
// by default "Log in" button is visible
|
||||||
|
if (!app_config->has("show_login_button"))
|
||||||
|
m_optgroup_other->set_value("show_login_button", true);
|
||||||
|
|
||||||
for (const std::string& opt_key : { "default_action_on_close_application"
|
for (const std::string& opt_key : { "default_action_on_close_application"
|
||||||
,"default_action_on_new_project"
|
,"default_action_on_new_project"
|
||||||
@ -626,6 +629,11 @@ void PreferencesDialog::build()
|
|||||||
//L("If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. "
|
//L("If enabled, the descriptions of configuration parameters in settings tabs wouldn't work as hyperlinks. "
|
||||||
// "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."),
|
// "If disabled, the descriptions of configuration parameters in settings tabs will work as hyperlinks."),
|
||||||
app_config->get_bool("suppress_hyperlinks"));
|
app_config->get_bool("suppress_hyperlinks"));
|
||||||
|
|
||||||
|
append_bool_option(m_optgroup_other, "show_login_button",
|
||||||
|
L("Show \"Log in\" button in application top bar"),
|
||||||
|
L("If enabled, PrusaSlicer will show up \"Log in\" button in application top bar."),
|
||||||
|
app_config->get_bool("show_login_button"));
|
||||||
|
|
||||||
append_bool_option(m_optgroup_other, "downloader_url_registered",
|
append_bool_option(m_optgroup_other, "downloader_url_registered",
|
||||||
L("Allow downloads from Printables.com"),
|
L("Allow downloads from Printables.com"),
|
||||||
|
@ -33,7 +33,7 @@ bool unzip_repository(const fs::path& source_path, const fs::path& target_path)
|
|||||||
mz_zip_archive archive;
|
mz_zip_archive archive;
|
||||||
mz_zip_zero_struct(&archive);
|
mz_zip_zero_struct(&archive);
|
||||||
if (!open_zip_reader(&archive, source_path.string())) {
|
if (!open_zip_reader(&archive, source_path.string())) {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Couldn't open zipped Archive Repository. " << source_path;
|
BOOST_LOG_TRIVIAL(error) << "Couldn't open zipped Archive source. " << source_path;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
size_t num_files = mz_zip_reader_get_num_files(&archive);
|
size_t num_files = mz_zip_reader_get_num_files(&archive);
|
||||||
@ -70,21 +70,21 @@ bool extract_repository_header(const pt::ptree& ptree, ArchiveRepository::Reposi
|
|||||||
if (const auto name = ptree.get_optional<std::string>("name"); name){
|
if (const auto name = ptree.get_optional<std::string>("name"); name){
|
||||||
data.name = *name;
|
data.name = *name;
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to find \"name\" parameter in repository manifest. Repository is invalid.";
|
BOOST_LOG_TRIVIAL(error) << "Failed to find \"name\" parameter in source manifest. Source is invalid.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (const auto id = ptree.get_optional<std::string>("id"); id) {
|
if (const auto id = ptree.get_optional<std::string>("id"); id) {
|
||||||
data.id = *id;
|
data.id = *id;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to find \"id\" parameter in repository manifest. Repository is invalid.";
|
BOOST_LOG_TRIVIAL(error) << "Failed to find \"id\" parameter in source manifest. Source is invalid.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (const auto url = ptree.get_optional<std::string>("url"); url) {
|
if (const auto url = ptree.get_optional<std::string>("url"); url) {
|
||||||
data.url = *url;
|
data.url = *url;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to find \"url\" parameter in repository manifest. Repository is invalid.";
|
BOOST_LOG_TRIVIAL(error) << "Failed to find \"url\" parameter in source manifest. Source is invalid.";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// optional atributes
|
// optional atributes
|
||||||
@ -140,13 +140,13 @@ bool extract_local_archive_repository( ArchiveRepository::RepositoryManifest& ma
|
|||||||
pt::ptree ptree;
|
pt::ptree ptree;
|
||||||
pt::read_json(manifest_path.string(), ptree);
|
pt::read_json(manifest_path.string(), ptree);
|
||||||
if (!extract_repository_header(ptree, manifest_data)) {
|
if (!extract_repository_header(ptree, manifest_data)) {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to load repository: " << manifest_data.tmp_path;
|
BOOST_LOG_TRIVIAL(error) << "Failed to load source " << manifest_data.tmp_path;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to read repository manifest JSON " << manifest_path << ". reason: " << e.what();
|
BOOST_LOG_TRIVIAL(error) << "Failed to read source manifest JSON " << manifest_path << ". reason: " << e.what();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -353,7 +353,7 @@ bool PresetArchiveDatabase::set_selected_repositories(const std::vector<std::str
|
|||||||
if (!archive->is_extracted()) {
|
if (!archive->is_extracted()) {
|
||||||
// non existent local repo since start selected
|
// non existent local repo since start selected
|
||||||
msg = GUI::format(
|
msg = GUI::format(
|
||||||
_L("Cannot select local repository from path: %1%. It was not extracted."),
|
_L("Cannot select local source from path: %1%. It was not extracted."),
|
||||||
archive->get_manifest().source_path
|
archive->get_manifest().source_path
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
@ -362,7 +362,7 @@ bool PresetArchiveDatabase::set_selected_repositories(const std::vector<std::str
|
|||||||
}
|
}
|
||||||
assert(!id.empty());
|
assert(!id.empty());
|
||||||
if (auto it = used_set.find(id); it != used_set.end()) {
|
if (auto it = used_set.find(id); it != used_set.end()) {
|
||||||
msg = GUI::format(_L("Cannot select two repositories with the same id: %1% and %2%"), it->second, name);
|
msg = GUI::format(_L("Cannot select two sources with the same id: %1% and %2%"), it->second, name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
used_set.emplace(id, name);
|
used_set.emplace(id, name);
|
||||||
@ -501,7 +501,7 @@ void PresetArchiveDatabase::load_app_manifest_json()
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
assert(true);
|
assert(true);
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to read Archive Repository Manifest at " << path;
|
BOOST_LOG_TRIVIAL(error) << "Failed to read Archive Source Manifest at " << path;
|
||||||
}
|
}
|
||||||
if (data.empty()) {
|
if (data.empty()) {
|
||||||
return;
|
return;
|
||||||
@ -546,7 +546,7 @@ void PresetArchiveDatabase::load_app_manifest_json()
|
|||||||
std::string uuid = get_next_uuid();
|
std::string uuid = get_next_uuid();
|
||||||
if (!extract_repository_header(subtree.second, manifest)) {
|
if (!extract_repository_header(subtree.second, manifest)) {
|
||||||
assert(true);
|
assert(true);
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to read one of repository headers.";
|
BOOST_LOG_TRIVIAL(error) << "Failed to read one of source headers.";
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// "selected" flag
|
// "selected" flag
|
||||||
@ -876,7 +876,7 @@ bool sync_inner(std::string& manifest)
|
|||||||
http
|
http
|
||||||
.timeout_max(30)
|
.timeout_max(30)
|
||||||
.on_error([&](std::string body, std::string error, unsigned http_status) {
|
.on_error([&](std::string body, std::string error, unsigned http_status) {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to get online archive repository manifests: "<< body << " ; " << error << " ; " << http_status;
|
BOOST_LOG_TRIVIAL(error) << "Failed to get online archive source manifests: "<< body << " ; " << error << " ; " << http_status;
|
||||||
ret = false;
|
ret = false;
|
||||||
})
|
})
|
||||||
.on_complete([&](std::string body, unsigned /* http_status */) {
|
.on_complete([&](std::string body, unsigned /* http_status */) {
|
||||||
|
@ -5515,7 +5515,7 @@ void TabSLAMaterial::update_description_lines()
|
|||||||
auto cfg = m_preset_bundle->full_config();
|
auto cfg = m_preset_bundle->full_config();
|
||||||
double lh = cfg.opt_float("layer_height");
|
double lh = cfg.opt_float("layer_height");
|
||||||
int zlayers = cfg.opt_int("zcorrection_layers");
|
int zlayers = cfg.opt_int("zcorrection_layers");
|
||||||
m_z_correction_to_mm_description->SetText(GUI::format_wxstr(_L("Current Z correction depth is: %1% mm"), zlayers * lh));
|
m_z_correction_to_mm_description->SetText(GUI::format_wxstr(_L("The current Z-axis height correction is: %1% mm"), zlayers * lh));
|
||||||
}
|
}
|
||||||
|
|
||||||
Tab::update_description_lines();
|
Tab::update_description_lines();
|
||||||
|
@ -492,12 +492,6 @@ TopBarItemsCtrl::TopBarItemsCtrl(wxWindow *parent, TopBarMenus* menus/* = nullpt
|
|||||||
|
|
||||||
m_sizer->SetItemMinSize(1, wxSize(42 * wxGetApp().em_unit(), -1));
|
m_sizer->SetItemMinSize(1, wxSize(42 * wxGetApp().em_unit(), -1));
|
||||||
|
|
||||||
this->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) {
|
|
||||||
auto user_account = m_menus->get_user_account_info();
|
|
||||||
evt.Enable(user_account.is_logged);
|
|
||||||
evt.Check (user_account.remember_session);
|
|
||||||
}, m_menus->remember_me_item_id);
|
|
||||||
|
|
||||||
update_btns_width();
|
update_btns_width();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,6 +511,12 @@ void TopBarItemsCtrl::UpdateMode()
|
|||||||
this->Layout();
|
this->Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TopBarItemsCtrl::ShowUserAccount(bool show)
|
||||||
|
{
|
||||||
|
m_account_btn->Show(show);
|
||||||
|
this->Layout();
|
||||||
|
}
|
||||||
|
|
||||||
void TopBarItemsCtrl::Rescale()
|
void TopBarItemsCtrl::Rescale()
|
||||||
{
|
{
|
||||||
update_margins();
|
update_margins();
|
||||||
|
@ -76,6 +76,7 @@ public:
|
|||||||
|
|
||||||
void SetSelection(int sel, bool force = false);
|
void SetSelection(int sel, bool force = false);
|
||||||
void UpdateMode();
|
void UpdateMode();
|
||||||
|
void ShowUserAccount(bool show);
|
||||||
void Rescale();
|
void Rescale();
|
||||||
void OnColorsChanged();
|
void OnColorsChanged();
|
||||||
void UpdateModeMarkers();
|
void UpdateModeMarkers();
|
||||||
@ -324,6 +325,11 @@ public:
|
|||||||
GetTopBarItemsCtrl()->UpdateMode();
|
GetTopBarItemsCtrl()->UpdateMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShowUserAccount(bool show)
|
||||||
|
{
|
||||||
|
GetTopBarItemsCtrl()->ShowUserAccount(show);
|
||||||
|
}
|
||||||
|
|
||||||
void Rescale()
|
void Rescale()
|
||||||
{
|
{
|
||||||
GetTopBarItemsCtrl()->Rescale();
|
GetTopBarItemsCtrl()->Rescale();
|
||||||
|
@ -83,12 +83,11 @@ void TopBarMenus::ApplyWorkspacesMenu()
|
|||||||
|
|
||||||
void TopBarMenus::CreateAccountMenu()
|
void TopBarMenus::CreateAccountMenu()
|
||||||
{
|
{
|
||||||
remember_me_item_id = wxWindow::NewControlId();
|
|
||||||
append_menu_check_item(&account, remember_me_item_id, _L("Remember me"), "" ,
|
|
||||||
[this](wxCommandEvent&) { if (m_cb_toggle_remember_session) m_cb_toggle_remember_session(); }, nullptr);
|
|
||||||
|
|
||||||
m_login_item = append_menu_item(&account, wxID_ANY, "", "",
|
m_login_item = append_menu_item(&account, wxID_ANY, "", "",
|
||||||
[this](wxCommandEvent&) { if (m_cb_act_with_user_account) m_cb_act_with_user_account(); }, "login");
|
[this](wxCommandEvent&) { if (m_cb_act_with_user_account) m_cb_act_with_user_account(); }, "login");
|
||||||
|
|
||||||
|
m_hide_login_item = append_menu_item(&account, wxID_ANY, _L("Hide \"Log in\" button"), "",
|
||||||
|
[this](wxCommandEvent&) { if (m_cb_hide_user_account) m_cb_hide_user_account(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void TopBarMenus::UpdateAccountMenu()
|
void TopBarMenus::UpdateAccountMenu()
|
||||||
@ -96,12 +95,20 @@ void TopBarMenus::UpdateAccountMenu()
|
|||||||
bool is_logged{ false };
|
bool is_logged{ false };
|
||||||
if (m_cb_get_user_account_info)
|
if (m_cb_get_user_account_info)
|
||||||
is_logged = m_cb_get_user_account_info().is_logged;
|
is_logged = m_cb_get_user_account_info().is_logged;
|
||||||
|
if (is_logged)
|
||||||
|
RemoveHideLoginItem();
|
||||||
if (m_login_item) {
|
if (m_login_item) {
|
||||||
m_login_item->SetItemLabel(is_logged ? _L("Prusa Account Log out") : _L("Prusa Account Log in"));
|
m_login_item->SetItemLabel(is_logged ? _L("Log out") : _L("Log in"));
|
||||||
set_menu_item_bitmap(m_login_item, is_logged ? "logout" : "login");
|
set_menu_item_bitmap(m_login_item, is_logged ? "logout" : "login");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TopBarMenus::RemoveHideLoginItem()
|
||||||
|
{
|
||||||
|
if (m_hide_login_item)
|
||||||
|
account.Remove(m_hide_login_item);
|
||||||
|
}
|
||||||
|
|
||||||
void TopBarMenus::Popup(TopBarItemsCtrl* popup_ctrl, wxMenu* menu, wxPoint pos)
|
void TopBarMenus::Popup(TopBarItemsCtrl* popup_ctrl, wxMenu* menu, wxPoint pos)
|
||||||
{
|
{
|
||||||
m_popup_ctrl = popup_ctrl;
|
m_popup_ctrl = popup_ctrl;
|
||||||
|
@ -12,7 +12,6 @@ class TopBarMenus
|
|||||||
public:
|
public:
|
||||||
struct UserAccountInfo {
|
struct UserAccountInfo {
|
||||||
bool is_logged { false };
|
bool is_logged { false };
|
||||||
bool remember_session{ false };
|
|
||||||
std::string user_name;
|
std::string user_name;
|
||||||
boost::filesystem::path avatar_path;
|
boost::filesystem::path avatar_path;
|
||||||
};
|
};
|
||||||
@ -21,6 +20,7 @@ private:
|
|||||||
|
|
||||||
// Prusa Account menu items
|
// Prusa Account menu items
|
||||||
wxMenuItem* m_login_item { nullptr };
|
wxMenuItem* m_login_item { nullptr };
|
||||||
|
wxMenuItem* m_hide_login_item { nullptr };
|
||||||
|
|
||||||
TopBarItemsCtrl* m_popup_ctrl { nullptr };
|
TopBarItemsCtrl* m_popup_ctrl { nullptr };
|
||||||
|
|
||||||
@ -28,15 +28,14 @@ private:
|
|||||||
std::function<void(int)> m_cb_save_mode { nullptr };
|
std::function<void(int)> m_cb_save_mode { nullptr };
|
||||||
std::function<std::string(int)> m_cb_get_mode_btn_color { nullptr };
|
std::function<std::string(int)> m_cb_get_mode_btn_color { nullptr };
|
||||||
|
|
||||||
std::function<void()> m_cb_toggle_remember_session { nullptr };
|
|
||||||
std::function<void()> m_cb_act_with_user_account { nullptr };
|
std::function<void()> m_cb_act_with_user_account { nullptr };
|
||||||
|
std::function<void()> m_cb_hide_user_account { nullptr };
|
||||||
std::function<UserAccountInfo()>m_cb_get_user_account_info { nullptr };
|
std::function<UserAccountInfo()>m_cb_get_user_account_info { nullptr };
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxMenu main;
|
wxMenu main;
|
||||||
wxMenu workspaces;
|
wxMenu workspaces;
|
||||||
wxMenu account;
|
wxMenu account;
|
||||||
wxWindowID remember_me_item_id { wxID_ANY };
|
|
||||||
|
|
||||||
TopBarMenus();
|
TopBarMenus();
|
||||||
~TopBarMenus() = default;
|
~TopBarMenus() = default;
|
||||||
@ -46,6 +45,7 @@ public:
|
|||||||
void ApplyWorkspacesMenu();
|
void ApplyWorkspacesMenu();
|
||||||
void CreateAccountMenu();
|
void CreateAccountMenu();
|
||||||
void UpdateAccountMenu();
|
void UpdateAccountMenu();
|
||||||
|
void RemoveHideLoginItem();
|
||||||
|
|
||||||
void Popup(TopBarItemsCtrl* popup_ctrl, wxMenu* menu, wxPoint pos);
|
void Popup(TopBarItemsCtrl* popup_ctrl, wxMenu* menu, wxPoint pos);
|
||||||
void BindEvtClose();
|
void BindEvtClose();
|
||||||
@ -68,12 +68,12 @@ public:
|
|||||||
ApplyWorkspacesMenu();
|
ApplyWorkspacesMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_account_menu_callbacks(std::function<void()> cb_toggle_remember_session,
|
void set_account_menu_callbacks(std::function<void()> cb_act_with_user_account ,
|
||||||
std::function<void()> cb_act_with_user_account ,
|
std::function<void()> cb_hide_user_account ,
|
||||||
std::function<UserAccountInfo()> cb_get_user_account_info )
|
std::function<UserAccountInfo()> cb_get_user_account_info )
|
||||||
{
|
{
|
||||||
m_cb_toggle_remember_session = cb_toggle_remember_session;
|
|
||||||
m_cb_act_with_user_account = cb_act_with_user_account;
|
m_cb_act_with_user_account = cb_act_with_user_account;
|
||||||
|
m_cb_hide_user_account = cb_hide_user_account;
|
||||||
m_cb_get_user_account_info = cb_get_user_account_info;
|
m_cb_get_user_account_info = cb_get_user_account_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ RepositoryUpdateUIManager::RepositoryUpdateUIManager(wxWindow* parent, PresetArc
|
|||||||
,m_pad(pad)
|
,m_pad(pad)
|
||||||
,m_main_sizer(new wxBoxSizer(wxVERTICAL))
|
,m_main_sizer(new wxBoxSizer(wxVERTICAL))
|
||||||
{
|
{
|
||||||
auto online_label = new wxStaticText(m_parent, wxID_ANY, _L("Online Repositories"));
|
auto online_label = new wxStaticText(m_parent, wxID_ANY, _L("Online sources"));
|
||||||
online_label->SetFont(wxGetApp().bold_font());
|
online_label->SetFont(wxGetApp().bold_font());
|
||||||
|
|
||||||
m_main_sizer->Add(online_label, 0, wxTOP | wxLEFT, 2 * em);
|
m_main_sizer->Add(online_label, 0, wxTOP | wxLEFT, 2 * em);
|
||||||
@ -40,7 +40,7 @@ RepositoryUpdateUIManager::RepositoryUpdateUIManager(wxWindow* parent, PresetArc
|
|||||||
|
|
||||||
m_main_sizer->AddSpacer(em);
|
m_main_sizer->AddSpacer(em);
|
||||||
|
|
||||||
auto offline_label = new wxStaticText(m_parent, wxID_ANY, _L("Local Repositories"));
|
auto offline_label = new wxStaticText(m_parent, wxID_ANY, _L("Local sources"));
|
||||||
offline_label->SetFont(wxGetApp().bold_font());
|
offline_label->SetFont(wxGetApp().bold_font());
|
||||||
|
|
||||||
m_main_sizer->Add(offline_label, 0, wxTOP | wxLEFT, 2 * em);
|
m_main_sizer->Add(offline_label, 0, wxTOP | wxLEFT, 2 * em);
|
||||||
@ -98,7 +98,7 @@ void RepositoryUpdateUIManager::fill_grids()
|
|||||||
// header
|
// header
|
||||||
|
|
||||||
// TRN: This string appears in Configuration Wizard in the 'Configuration Manager' step.
|
// TRN: This string appears in Configuration Wizard in the 'Configuration Manager' step.
|
||||||
for (const wxString& l : std::initializer_list<wxString>{ _L("Use"), "", _L("Name"), _L("Description") }) {
|
for (const wxString& l : std::initializer_list<wxString>{ "", "", _L("Name"), _L("Description")}) {
|
||||||
auto text = new wxStaticText(m_parent, wxID_ANY, l);
|
auto text = new wxStaticText(m_parent, wxID_ANY, l);
|
||||||
text->SetFont(wxGetApp().bold_font());
|
text->SetFont(wxGetApp().bold_font());
|
||||||
add(text);
|
add(text);
|
||||||
@ -139,7 +139,7 @@ void RepositoryUpdateUIManager::fill_grids()
|
|||||||
|
|
||||||
// header
|
// header
|
||||||
|
|
||||||
for (const wxString& l : std::initializer_list<wxString>{ _L("Use"), _L("Name"), _L("Descrition"), "", _L("Source file"), "", "" }) {
|
for (const wxString& l : std::initializer_list<wxString>{ "", _L("Name"), _L("Description"), "", _L("Source file"), "", ""}) {
|
||||||
auto text = new wxStaticText(m_parent, wxID_ANY, l);
|
auto text = new wxStaticText(m_parent, wxID_ANY, l);
|
||||||
text->SetFont(wxGetApp().bold_font());
|
text->SetFont(wxGetApp().bold_font());
|
||||||
add(text);
|
add(text);
|
||||||
|
@ -92,7 +92,7 @@ bool save_secret(const std::string& opt, const std::string& usr, const std::stri
|
|||||||
const wxString username = boost::nowide::widen(usr);
|
const wxString username = boost::nowide::widen(usr);
|
||||||
const wxSecretValue password(boost::nowide::widen(psswd));
|
const wxSecretValue password(boost::nowide::widen(psswd));
|
||||||
if (!store.Save(service, username, password)) {
|
if (!store.Save(service, username, password)) {
|
||||||
std::string msg(_u8L("Failed to save credentials to the system secret store."));
|
std::string msg(_u8L("Failed to save credentials to the system password store."));
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
//show_error(nullptr, msg);
|
//show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
@ -118,7 +118,7 @@ bool load_secret(const std::string& opt, std::string& usr, std::string& psswd)
|
|||||||
wxString username;
|
wxString username;
|
||||||
wxSecretValue password;
|
wxSecretValue password;
|
||||||
if (!store.Load(service, username, password)) {
|
if (!store.Load(service, username, password)) {
|
||||||
std::string msg(_u8L("Failed to load credentials from the system secret store."));
|
std::string msg(_u8L("Failed to load credentials from the system password store."));
|
||||||
BOOST_LOG_TRIVIAL(error) << msg;
|
BOOST_LOG_TRIVIAL(error) << msg;
|
||||||
//show_error(nullptr, msg);
|
//show_error(nullptr, msg);
|
||||||
return false;
|
return false;
|
||||||
|
@ -1053,7 +1053,7 @@ bool PresetUpdater::priv::perform_updates(Updates &&updates, const SharedArchive
|
|||||||
if (it != repositories.end())
|
if (it != repositories.end())
|
||||||
get_or_copy_missing_resource((*it), vp.id, resource, vp.repo_id);
|
get_or_copy_missing_resource((*it), vp.id, resource, vp.repo_id);
|
||||||
else {
|
else {
|
||||||
BOOST_LOG_TRIVIAL(error) << "Failed to prepare " << resource << " for " << vp.id << " " << model.id << ": Missing record for repository with repo_id " << vp.repo_id;
|
BOOST_LOG_TRIVIAL(error) << "Failed to prepare " << resource << " for " << vp.id << " " << model.id << ": Missing record for source with repo_id " << vp.repo_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
|
@ -315,11 +315,11 @@ bool PrusaConnectNew::get_storage(wxArrayString& storage_path, wxArrayString& st
|
|||||||
|
|
||||||
wxString PrusaConnectNew::get_test_ok_msg() const
|
wxString PrusaConnectNew::get_test_ok_msg() const
|
||||||
{
|
{
|
||||||
return _L("Test OK.");
|
return _L("Test passed.");
|
||||||
}
|
}
|
||||||
wxString PrusaConnectNew::get_test_failed_msg(wxString& msg) const
|
wxString PrusaConnectNew::get_test_failed_msg(wxString& msg) const
|
||||||
{
|
{
|
||||||
return _L("Test NOK.");
|
return _L("Test failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PrusaConnectNew::get_team_id(const std::string& data) const
|
std::string PrusaConnectNew::get_team_id(const std::string& data) const
|
||||||
|
Loading…
x
Reference in New Issue
Block a user