Add a new error dialog
This commit is contained in:
parent
4344eaebca
commit
5624b8afd2
9 changed files with 178 additions and 85 deletions
|
@ -249,7 +249,7 @@ sub catch_error {
|
||||||
# static method accepting a wxWindow object as first parameter
|
# static method accepting a wxWindow object as first parameter
|
||||||
sub show_error {
|
sub show_error {
|
||||||
my ($parent, $message) = @_;
|
my ($parent, $message) = @_;
|
||||||
Wx::MessageDialog->new($parent, $message, 'Error', wxOK | wxICON_ERROR)->ShowModal;
|
Slic3r::GUI::show_error_id($parent ? $parent->GetId() : 0, $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
# static method accepting a wxWindow object as first parameter
|
# static method accepting a wxWindow object as first parameter
|
||||||
|
|
|
@ -222,6 +222,8 @@ add_library(libslic3r_gui STATIC
|
||||||
${LIBDIR}/slic3r/Utils/ASCIIFolding.hpp
|
${LIBDIR}/slic3r/Utils/ASCIIFolding.hpp
|
||||||
${LIBDIR}/slic3r/GUI/ConfigWizard.cpp
|
${LIBDIR}/slic3r/GUI/ConfigWizard.cpp
|
||||||
${LIBDIR}/slic3r/GUI/ConfigWizard.hpp
|
${LIBDIR}/slic3r/GUI/ConfigWizard.hpp
|
||||||
|
${LIBDIR}/slic3r/GUI/MsgDialog.cpp
|
||||||
|
${LIBDIR}/slic3r/GUI/MsgDialog.hpp
|
||||||
${LIBDIR}/slic3r/GUI/UpdateDialogs.cpp
|
${LIBDIR}/slic3r/GUI/UpdateDialogs.cpp
|
||||||
${LIBDIR}/slic3r/GUI/UpdateDialogs.hpp
|
${LIBDIR}/slic3r/GUI/UpdateDialogs.hpp
|
||||||
${LIBDIR}/slic3r/Utils/Http.cpp
|
${LIBDIR}/slic3r/Utils/Http.cpp
|
||||||
|
@ -638,6 +640,7 @@ add_custom_command(
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:XS>" "${PERL_LOCAL_LIB_DIR}/auto/Slic3r/XS/"
|
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:XS>" "${PERL_LOCAL_LIB_DIR}/auto/Slic3r/XS/"
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${PERL_LOCAL_LIB_DIR}/Slic3r/"
|
COMMAND ${CMAKE_COMMAND} -E make_directory "${PERL_LOCAL_LIB_DIR}/Slic3r/"
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/xs/lib/Slic3r/XS.pm" "${PERL_LOCAL_LIB_DIR}/Slic3r/"
|
COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/xs/lib/Slic3r/XS.pm" "${PERL_LOCAL_LIB_DIR}/Slic3r/"
|
||||||
|
COMMENT "Installing XS.pm and XS.{so,dll,bundle} into the local-lib directory ..."
|
||||||
)
|
)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include "AppConfig.hpp"
|
#include "AppConfig.hpp"
|
||||||
#include "ConfigSnapshotDialog.hpp"
|
#include "ConfigSnapshotDialog.hpp"
|
||||||
#include "Utils.hpp"
|
#include "Utils.hpp"
|
||||||
|
#include "MsgDialog.hpp"
|
||||||
#include "ConfigWizard.hpp"
|
#include "ConfigWizard.hpp"
|
||||||
#include "Preferences.hpp"
|
#include "Preferences.hpp"
|
||||||
#include "PresetBundle.hpp"
|
#include "PresetBundle.hpp"
|
||||||
|
@ -652,21 +653,26 @@ void add_created_tab(Tab* panel)
|
||||||
g_wxTabPanel->AddPage(panel, panel->title());
|
g_wxTabPanel->AddPage(panel, panel->title());
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_error(wxWindow* parent, const wxString& message){
|
void show_error(wxWindow* parent, const wxString& message) {
|
||||||
auto msg_wingow = new wxMessageDialog(parent, message, _(L("Error")), wxOK | wxICON_ERROR);
|
ErrorDialog msg(parent, message);
|
||||||
msg_wingow->ShowModal();
|
msg.ShowModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
void show_error_id(int id, const std::string& message) {
|
||||||
|
auto *parent = id != 0 ? wxWindow::FindWindowById(id) : nullptr;
|
||||||
|
show_error(parent, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_info(wxWindow* parent, const wxString& message, const wxString& title){
|
void show_info(wxWindow* parent, const wxString& message, const wxString& title){
|
||||||
auto msg_wingow = new wxMessageDialog(parent, message, title.empty() ? _(L("Notice")) : title, wxOK | wxICON_INFORMATION);
|
wxMessageDialog msg_wingow(parent, message, title.empty() ? _(L("Notice")) : title, wxOK | wxICON_INFORMATION);
|
||||||
msg_wingow->ShowModal();
|
msg_wingow.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void warning_catcher(wxWindow* parent, const wxString& message){
|
void warning_catcher(wxWindow* parent, const wxString& message){
|
||||||
if (message == _(L("GLUquadricObjPtr | Attempt to free unreferenced scalar")) )
|
if (message == _(L("GLUquadricObjPtr | Attempt to free unreferenced scalar")) )
|
||||||
return;
|
return;
|
||||||
auto msg = new wxMessageDialog(parent, message, _(L("Warning")), wxOK | wxICON_WARNING);
|
wxMessageDialog msg(parent, message, _(L("Warning")), wxOK | wxICON_WARNING);
|
||||||
msg->ShowModal();
|
msg.ShowModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxApp* get_app(){
|
wxApp* get_app(){
|
||||||
|
|
|
@ -116,6 +116,7 @@ void add_created_tab(Tab* panel);
|
||||||
void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt_key, const boost::any& value, int opt_index = 0);
|
void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt_key, const boost::any& value, int opt_index = 0);
|
||||||
|
|
||||||
void show_error(wxWindow* parent, const wxString& message);
|
void show_error(wxWindow* parent, const wxString& message);
|
||||||
|
void show_error_id(int id, const std::string& message); // For Perl
|
||||||
void show_info(wxWindow* parent, const wxString& message, const wxString& title);
|
void show_info(wxWindow* parent, const wxString& message, const wxString& title);
|
||||||
void warning_catcher(wxWindow* parent, const wxString& message);
|
void warning_catcher(wxWindow* parent, const wxString& message);
|
||||||
|
|
||||||
|
|
87
xs/src/slic3r/GUI/MsgDialog.cpp
Normal file
87
xs/src/slic3r/GUI/MsgDialog.cpp
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
#include "MsgDialog.hpp"
|
||||||
|
|
||||||
|
#include <wx/settings.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/button.h>
|
||||||
|
#include <wx/statbmp.h>
|
||||||
|
#include <wx/scrolwin.h>
|
||||||
|
|
||||||
|
#include "libslic3r/libslic3r.h"
|
||||||
|
#include "libslic3r/Utils.hpp"
|
||||||
|
#include "GUI.hpp"
|
||||||
|
#include "ConfigWizard.hpp"
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
|
||||||
|
MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id) :
|
||||||
|
MsgDialog(parent, title, headline, wxBitmap(from_u8(Slic3r::var("Slic3r_192px.png")), wxBITMAP_TYPE_PNG), button_id)
|
||||||
|
{}
|
||||||
|
|
||||||
|
MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxBitmap bitmap, wxWindowID button_id) :
|
||||||
|
wxDialog(parent, wxID_ANY, title),
|
||||||
|
boldfont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)),
|
||||||
|
content_sizer(new wxBoxSizer(wxVERTICAL)),
|
||||||
|
btn_sizer(new wxBoxSizer(wxHORIZONTAL))
|
||||||
|
{
|
||||||
|
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
|
||||||
|
|
||||||
|
auto *topsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
auto *rightsizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
auto *headtext = new wxStaticText(this, wxID_ANY, headline);
|
||||||
|
headtext->SetFont(boldfont);
|
||||||
|
headtext->Wrap(CONTENT_WIDTH);
|
||||||
|
rightsizer->Add(headtext);
|
||||||
|
rightsizer->AddSpacer(VERT_SPACING);
|
||||||
|
|
||||||
|
rightsizer->Add(content_sizer, 1, wxEXPAND);
|
||||||
|
|
||||||
|
if (button_id != wxID_NONE) {
|
||||||
|
auto *button = new wxButton(this, button_id);
|
||||||
|
button->SetFocus();
|
||||||
|
btn_sizer->Add(button);
|
||||||
|
}
|
||||||
|
|
||||||
|
rightsizer->Add(btn_sizer, 0, wxALIGN_CENTRE_HORIZONTAL);
|
||||||
|
|
||||||
|
auto *logo = new wxStaticBitmap(this, wxID_ANY, std::move(bitmap));
|
||||||
|
|
||||||
|
topsizer->Add(logo, 0, wxALL, BORDER);
|
||||||
|
topsizer->Add(rightsizer, 1, wxALL | wxEXPAND, BORDER);
|
||||||
|
|
||||||
|
SetSizerAndFit(topsizer);
|
||||||
|
}
|
||||||
|
|
||||||
|
MsgDialog::~MsgDialog() {}
|
||||||
|
|
||||||
|
|
||||||
|
// ErrorDialog
|
||||||
|
|
||||||
|
ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg) :
|
||||||
|
MsgDialog(parent, _(L("Slic3r error")), _(L("Slic3r has encountered an error")), wxBitmap(from_u8(Slic3r::var("Slic3r_192px_grayscale.png"))))
|
||||||
|
{
|
||||||
|
auto *panel = new wxScrolledWindow(this);
|
||||||
|
auto *p_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
panel->SetSizer(p_sizer);
|
||||||
|
|
||||||
|
auto *text = new wxStaticText(panel, wxID_ANY, msg);
|
||||||
|
text->Wrap(CONTENT_WIDTH);
|
||||||
|
p_sizer->Add(text, 1, wxEXPAND);
|
||||||
|
|
||||||
|
panel->SetMinSize(wxSize(CONTENT_WIDTH, CONTENT_HEIGHT));
|
||||||
|
panel->SetScrollRate(0, 5);
|
||||||
|
|
||||||
|
content_sizer->Add(panel, 1, wxEXPAND);
|
||||||
|
|
||||||
|
Fit();
|
||||||
|
}
|
||||||
|
|
||||||
|
ErrorDialog::~ErrorDialog() {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
65
xs/src/slic3r/GUI/MsgDialog.hpp
Normal file
65
xs/src/slic3r/GUI/MsgDialog.hpp
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef slic3r_MsgDialog_hpp_
|
||||||
|
#define slic3r_MsgDialog_hpp_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
#include <wx/dialog.h>
|
||||||
|
#include <wx/font.h>
|
||||||
|
#include <wx/bitmap.h>
|
||||||
|
|
||||||
|
#include "slic3r/Utils/Semver.hpp"
|
||||||
|
|
||||||
|
class wxBoxSizer;
|
||||||
|
class wxCheckBox;
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
|
||||||
|
// A message / query dialog with a bitmap on the left and any content on the right
|
||||||
|
// with buttons underneath.
|
||||||
|
struct MsgDialog : wxDialog
|
||||||
|
{
|
||||||
|
MsgDialog(MsgDialog &&) = delete;
|
||||||
|
MsgDialog(const MsgDialog &) = delete;
|
||||||
|
MsgDialog &operator=(MsgDialog &&) = delete;
|
||||||
|
MsgDialog &operator=(const MsgDialog &) = delete;
|
||||||
|
virtual ~MsgDialog();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
enum {
|
||||||
|
CONTENT_WIDTH = 500,
|
||||||
|
CONTENT_HEIGHT = 300,
|
||||||
|
BORDER = 30,
|
||||||
|
VERT_SPACING = 15,
|
||||||
|
HORIZ_SPACING = 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
// button_id is an id of a button that can be added by default, use wxID_NONE to disable
|
||||||
|
MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id = wxID_OK);
|
||||||
|
MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxBitmap bitmap, wxWindowID button_id = wxID_OK);
|
||||||
|
|
||||||
|
wxFont boldfont;
|
||||||
|
wxBoxSizer *content_sizer;
|
||||||
|
wxBoxSizer *btn_sizer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Generic error dialog, used for displaying exceptions
|
||||||
|
struct ErrorDialog : MsgDialog
|
||||||
|
{
|
||||||
|
ErrorDialog(wxWindow *parent, const wxString &msg);
|
||||||
|
ErrorDialog(ErrorDialog &&) = delete;
|
||||||
|
ErrorDialog(const ErrorDialog &) = delete;
|
||||||
|
ErrorDialog &operator=(ErrorDialog &&) = delete;
|
||||||
|
ErrorDialog &operator=(const ErrorDialog &) = delete;
|
||||||
|
virtual ~ErrorDialog();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -20,60 +20,11 @@ namespace GUI {
|
||||||
|
|
||||||
static const std::string CONFIG_UPDATE_WIKI_URL("https://github.com/prusa3d/Slic3r/wiki/Slic3r-PE-1.40-configuration-update");
|
static const std::string CONFIG_UPDATE_WIKI_URL("https://github.com/prusa3d/Slic3r/wiki/Slic3r-PE-1.40-configuration-update");
|
||||||
|
|
||||||
enum {
|
|
||||||
CONTENT_WIDTH = 400,
|
|
||||||
BORDER = 30,
|
|
||||||
VERT_SPACING = 15,
|
|
||||||
HORIZ_SPACING = 5,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
MsgDialog::MsgDialog(const wxString &title, const wxString &headline, wxWindowID button_id) :
|
|
||||||
MsgDialog(title, headline, wxBitmap(from_u8(Slic3r::var("Slic3r_192px.png")), wxBITMAP_TYPE_PNG), button_id)
|
|
||||||
{}
|
|
||||||
|
|
||||||
MsgDialog::MsgDialog(const wxString &title, const wxString &headline, wxBitmap bitmap, wxWindowID button_id) :
|
|
||||||
wxDialog(nullptr, wxID_ANY, title),
|
|
||||||
boldfont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)),
|
|
||||||
content_sizer(new wxBoxSizer(wxVERTICAL)),
|
|
||||||
btn_sizer(new wxBoxSizer(wxHORIZONTAL))
|
|
||||||
{
|
|
||||||
boldfont.SetWeight(wxFONTWEIGHT_BOLD);
|
|
||||||
|
|
||||||
auto *topsizer = new wxBoxSizer(wxHORIZONTAL);
|
|
||||||
auto *rightsizer = new wxBoxSizer(wxVERTICAL);
|
|
||||||
|
|
||||||
auto *headtext = new wxStaticText(this, wxID_ANY, headline);
|
|
||||||
headtext->SetFont(boldfont);
|
|
||||||
headtext->Wrap(CONTENT_WIDTH);
|
|
||||||
rightsizer->Add(headtext);
|
|
||||||
rightsizer->AddSpacer(VERT_SPACING);
|
|
||||||
|
|
||||||
rightsizer->Add(content_sizer);
|
|
||||||
|
|
||||||
if (button_id != wxID_NONE) {
|
|
||||||
auto *button = new wxButton(this, button_id);
|
|
||||||
button->SetFocus();
|
|
||||||
btn_sizer->Add(button);
|
|
||||||
}
|
|
||||||
|
|
||||||
rightsizer->Add(btn_sizer, 0, wxALIGN_CENTRE_HORIZONTAL);
|
|
||||||
|
|
||||||
auto *logo = new wxStaticBitmap(this, wxID_ANY, std::move(bitmap));
|
|
||||||
|
|
||||||
topsizer->Add(logo, 0, wxALL, BORDER);
|
|
||||||
topsizer->Add(rightsizer, 0, wxALL, BORDER);
|
|
||||||
|
|
||||||
SetSizerAndFit(topsizer);
|
|
||||||
}
|
|
||||||
|
|
||||||
MsgDialog::~MsgDialog() {}
|
|
||||||
|
|
||||||
|
|
||||||
// MsgUpdateSlic3r
|
// MsgUpdateSlic3r
|
||||||
|
|
||||||
MsgUpdateSlic3r::MsgUpdateSlic3r(const Semver &ver_current, const Semver &ver_online) :
|
MsgUpdateSlic3r::MsgUpdateSlic3r(const Semver &ver_current, const Semver &ver_online) :
|
||||||
MsgDialog(_(L("Update available")), _(L("New version of Slic3r PE is available"))),
|
MsgDialog(nullptr, _(L("Update available")), _(L("New version of Slic3r PE is available"))),
|
||||||
ver_current(ver_current),
|
ver_current(ver_current),
|
||||||
ver_online(ver_online)
|
ver_online(ver_online)
|
||||||
{
|
{
|
||||||
|
@ -115,7 +66,7 @@ bool MsgUpdateSlic3r::disable_version_check() const
|
||||||
// MsgUpdateConfig
|
// MsgUpdateConfig
|
||||||
|
|
||||||
MsgUpdateConfig::MsgUpdateConfig(const std::unordered_map<std::string, std::string> &updates) :
|
MsgUpdateConfig::MsgUpdateConfig(const std::unordered_map<std::string, std::string> &updates) :
|
||||||
MsgDialog(_(L("Configuration update")), _(L("Configuration update is available")), wxID_NONE)
|
MsgDialog(nullptr, _(L("Configuration update")), _(L("Configuration update is available")), wxID_NONE)
|
||||||
{
|
{
|
||||||
auto *text = new wxStaticText(this, wxID_ANY, _(L(
|
auto *text = new wxStaticText(this, wxID_ANY, _(L(
|
||||||
"Would you like to install it?\n\n"
|
"Would you like to install it?\n\n"
|
||||||
|
@ -154,7 +105,7 @@ MsgUpdateConfig::~MsgUpdateConfig() {}
|
||||||
// MsgDataIncompatible
|
// MsgDataIncompatible
|
||||||
|
|
||||||
MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
|
MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
|
||||||
MsgDialog(_(L("Slic3r incompatibility")), _(L("Slic3r configuration is incompatible")), wxBitmap(from_u8(Slic3r::var("Slic3r_192px_grayscale.png"))), wxID_NONE)
|
MsgDialog(nullptr, _(L("Slic3r incompatibility")), _(L("Slic3r configuration is incompatible")), wxBitmap(from_u8(Slic3r::var("Slic3r_192px_grayscale.png"))), wxID_NONE)
|
||||||
{
|
{
|
||||||
auto *text = new wxStaticText(this, wxID_ANY, _(L(
|
auto *text = new wxStaticText(this, wxID_ANY, _(L(
|
||||||
"This version of Slic3r PE is not compatible with currently installed configuration bundles.\n"
|
"This version of Slic3r PE is not compatible with currently installed configuration bundles.\n"
|
||||||
|
@ -207,7 +158,7 @@ MsgDataIncompatible::~MsgDataIncompatible() {}
|
||||||
// MsgDataLegacy
|
// MsgDataLegacy
|
||||||
|
|
||||||
MsgDataLegacy::MsgDataLegacy() :
|
MsgDataLegacy::MsgDataLegacy() :
|
||||||
MsgDialog(_(L("Configuration update")), _(L("Configuration update")))
|
MsgDialog(nullptr, _(L("Configuration update")), _(L("Configuration update")))
|
||||||
{
|
{
|
||||||
auto *text = new wxStaticText(this, wxID_ANY, wxString::Format(
|
auto *text = new wxStaticText(this, wxID_ANY, wxString::Format(
|
||||||
_(L(
|
_(L(
|
||||||
|
|
|
@ -4,11 +4,8 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
#include <wx/dialog.h>
|
|
||||||
#include <wx/font.h>
|
|
||||||
#include <wx/bitmap.h>
|
|
||||||
|
|
||||||
#include "slic3r/Utils/Semver.hpp"
|
#include "slic3r/Utils/Semver.hpp"
|
||||||
|
#include "MsgDialog.hpp"
|
||||||
|
|
||||||
class wxBoxSizer;
|
class wxBoxSizer;
|
||||||
class wxCheckBox;
|
class wxCheckBox;
|
||||||
|
@ -18,26 +15,6 @@ namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
|
|
||||||
// A message / query dialog with a bitmap on the left and any content on the right
|
|
||||||
// with buttons underneath.
|
|
||||||
struct MsgDialog : wxDialog
|
|
||||||
{
|
|
||||||
MsgDialog(MsgDialog &&) = delete;
|
|
||||||
MsgDialog(const MsgDialog &) = delete;
|
|
||||||
MsgDialog &operator=(MsgDialog &&) = delete;
|
|
||||||
MsgDialog &operator=(const MsgDialog &) = delete;
|
|
||||||
virtual ~MsgDialog();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// button_id is an id of a button that can be added by default, use wxID_NONE to disable
|
|
||||||
MsgDialog(const wxString &title, const wxString &headline, wxWindowID button_id = wxID_OK);
|
|
||||||
MsgDialog(const wxString &title, const wxString &headline, wxBitmap bitmap, wxWindowID button_id = wxID_OK);
|
|
||||||
|
|
||||||
wxFont boldfont;
|
|
||||||
wxBoxSizer *content_sizer;
|
|
||||||
wxBoxSizer *btn_sizer;
|
|
||||||
};
|
|
||||||
|
|
||||||
// A confirmation dialog listing configuration updates
|
// A confirmation dialog listing configuration updates
|
||||||
class MsgUpdateSlic3r : public MsgDialog
|
class MsgUpdateSlic3r : public MsgDialog
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,9 @@ void add_config_menu(SV *ui, int event_preferences_changed, int event_language_c
|
||||||
void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed)
|
void create_preset_tabs(bool no_controller, int event_value_change, int event_presets_changed)
|
||||||
%code%{ Slic3r::GUI::create_preset_tabs(no_controller, event_value_change, event_presets_changed); %};
|
%code%{ Slic3r::GUI::create_preset_tabs(no_controller, event_value_change, event_presets_changed); %};
|
||||||
|
|
||||||
|
void show_error_id(int id, std::string msg)
|
||||||
|
%code%{ Slic3r::GUI::show_error_id(id, msg); %};
|
||||||
|
|
||||||
TabIface* get_preset_tab(char *name)
|
TabIface* get_preset_tab(char *name)
|
||||||
%code%{ RETVAL=Slic3r::GUI::get_preset_tab_iface(name); %};
|
%code%{ RETVAL=Slic3r::GUI::get_preset_tab_iface(name); %};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue