2022-07-15 15:37:19 +00:00
# include "AboutDialog.hpp"
# include "I18N.hpp"
# include "libslic3r/Utils.hpp"
# include "GUI.hpp"
# include "GUI_App.hpp"
# include "MainFrame.hpp"
# include "format.hpp"
# include "Widgets/Button.hpp"
# include <wx/clipbrd.h>
namespace Slic3r {
namespace GUI {
AboutDialogLogo : : AboutDialogLogo ( wxWindow * parent )
: wxPanel ( parent , wxID_ANY , wxDefaultPosition , wxDefaultSize )
{
this - > SetBackgroundColour ( * wxWHITE ) ;
2022-07-27 09:40:07 +00:00
this - > logo = ScalableBitmap ( this , Slic3r : : var ( " BambuStudio_192px.png " ) , wxBITMAP_TYPE_PNG ) ;
this - > SetMinSize ( this - > logo . GetBmpSize ( ) ) ;
2022-07-15 15:37:19 +00:00
this - > Bind ( wxEVT_PAINT , & AboutDialogLogo : : onRepaint , this ) ;
}
void AboutDialogLogo : : onRepaint ( wxEvent & event )
{
wxPaintDC dc ( this ) ;
dc . SetBackgroundMode ( wxTRANSPARENT ) ;
wxSize size = this - > GetSize ( ) ;
2022-07-27 09:40:07 +00:00
int logo_w = this - > logo . GetBmpWidth ( ) ;
int logo_h = this - > logo . GetBmpHeight ( ) ;
dc . DrawBitmap ( this - > logo . bmp ( ) , ( size . GetWidth ( ) - logo_w ) / 2 , ( size . GetHeight ( ) - logo_h ) / 2 , true ) ;
2022-07-15 15:37:19 +00:00
event . Skip ( ) ;
}
// -----------------------------------------
// CopyrightsDialog
// -----------------------------------------
CopyrightsDialog : : CopyrightsDialog ( )
: DPIDialog ( static_cast < wxWindow * > ( wxGetApp ( ) . mainframe ) , wxID_ANY , from_u8 ( ( boost : : format ( " %1% - %2% " )
% ( wxGetApp ( ) . is_editor ( ) ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME )
% _utf8 ( L ( " Portions copyright " ) ) ) . str ( ) ) ,
wxDefaultPosition , wxDefaultSize , wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )
{
this - > SetFont ( wxGetApp ( ) . normal_font ( ) ) ;
# ifdef _WIN32
wxGetApp ( ) . UpdateDarkUI ( this ) ;
# else
this - > SetBackgroundColour ( wxSystemSettings : : GetColour ( wxSYS_COLOUR_WINDOW ) ) ;
# endif
std : : string icon_path = ( boost : : format ( " %1%/images/BambuStudioTitle.ico " ) % resources_dir ( ) ) . str ( ) ;
SetIcon ( wxIcon ( encode_path ( icon_path . c_str ( ) ) , wxBITMAP_TYPE_ICO ) ) ;
wxStaticLine * staticline1 = new wxStaticLine ( this , wxID_ANY , wxDefaultPosition , wxDefaultSize , wxLI_HORIZONTAL ) ;
auto sizer = new wxBoxSizer ( wxVERTICAL ) ;
sizer - > Add ( staticline1 , 0 , wxEXPAND | wxALL , 5 ) ;
fill_entries ( ) ;
m_html = new wxHtmlWindow ( this , wxID_ANY , wxDefaultPosition ,
wxSize ( 40 * em_unit ( ) , 20 * em_unit ( ) ) , wxHW_SCROLLBAR_AUTO ) ;
m_html - > SetMinSize ( wxSize ( FromDIP ( 870 ) , FromDIP ( 520 ) ) ) ;
wxFont font = get_default_font ( this ) ;
const int fs = font . GetPointSize ( ) ;
const int fs2 = static_cast < int > ( 1.2f * fs ) ;
int size [ ] = { fs , fs , fs , fs , fs2 , fs2 , fs2 } ;
m_html - > SetFonts ( font . GetFaceName ( ) , font . GetFaceName ( ) , size ) ;
m_html - > SetBorders ( 2 ) ;
m_html - > SetPage ( get_html_text ( ) ) ;
sizer - > Add ( m_html , 1 , wxEXPAND | wxALL , 15 ) ;
m_html - > Bind ( wxEVT_HTML_LINK_CLICKED , & CopyrightsDialog : : onLinkClicked , this ) ;
SetSizer ( sizer ) ;
sizer - > SetSizeHints ( this ) ;
2022-07-22 09:46:10 +00:00
CenterOnParent ( ) ;
2022-07-15 15:37:19 +00:00
}
void CopyrightsDialog : : fill_entries ( )
{
m_entries = {
{ " Admesh " , " " , " https://admesh.readthedocs.io/ " } ,
{ " Anti-Grain Geometry " , " " , " http://antigrain.com " } ,
2022-07-22 09:46:10 +00:00
{ " ArcWelderLib " , " " , " https://plugins.octoprint.org/plugins/arc_welder " } ,
2022-07-15 15:37:19 +00:00
{ " Boost " , " " , " http://www.boost.org " } ,
{ " Cereal " , " " , " http://uscilab.github.io/cereal " } ,
{ " CGAL " , " " , " https://www.cgal.org " } ,
{ " Clipper " , " " , " http://www.angusj.co " } ,
{ " libcurl " , " " , " https://curl.se/libcurl " } ,
{ " Eigen3 " , " " , " http://eigen.tuxfamily.org " } ,
{ " Expat " , " " , " http://www.libexpat.org " } ,
{ " fast_float " , " " , " https://github.com/fastfloat/fast_float " } ,
{ " GLEW (The OpenGL Extension Wrangler Library) " , " " , " http://glew.sourceforge.net " } ,
{ " GLFW " , " " , " https://www.glfw.org " } ,
{ " GNU gettext " , " " , " https://www.gnu.org/software/gettext " } ,
{ " ImGUI " , " " , " https://github.com/ocornut/imgui " } ,
{ " Libigl " , " " , " https://libigl.github.io " } ,
{ " libnest2d " , " " , " https://github.com/tamasmeszaros/libnest2d " } ,
{ " lib_fts " , " " , " https://www.forrestthewoods.com " } ,
{ " Mesa 3D " , " " , " https://mesa3d.org " } ,
{ " Miniz " , " " , " https://github.com/richgel999/miniz " } ,
{ " Nanosvg " , " " , " https://github.com/memononen/nanosvg " } ,
{ " nlohmann/json " , " " , " https://json.nlohmann.me " } ,
{ " Qhull " , " " , " http://qhull.org " } ,
{ " Open Cascade " , " " , " https://www.opencascade.com " } ,
{ " OpenGL " , " " , " https://www.opengl.org " } ,
{ " PoEdit " , " " , " https://poedit.net " } ,
{ " PrusaSlicer " , " " , " https://www.prusa3d.com " } ,
{ " Real-Time DXT1/DXT5 C compression library " , " " , " https://github.com/Cyan4973/RygsDXTc " } ,
{ " SemVer " , " " , " https://semver.org " } ,
{ " Shinyprofiler " , " " , " https://code.google.com/p/shinyprofiler " } ,
2022-07-22 09:46:10 +00:00
{ " SuperSlicer " , " " , " https://github.com/supermerill/SuperSlicer " } ,
2022-07-15 15:37:19 +00:00
{ " TBB " , " " , " https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/onetbb.html " } ,
{ " wxWidgets " , " " , " https://www.wxwidgets.org " } ,
{ " zlib " , " " , " http://zlib.net " } ,
} ;
}
wxString CopyrightsDialog : : get_html_text ( )
{
wxColour bgr_clr = wxGetApp ( ) . get_window_default_clr ( ) ; //wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
const auto text_clr = wxGetApp ( ) . get_label_clr_default ( ) ; // wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
const auto text_clr_str = wxString : : Format ( wxT ( " #%02X%02X%02X " ) , text_clr . Red ( ) , text_clr . Green ( ) , text_clr . Blue ( ) ) ;
const auto bgr_clr_str = wxString : : Format ( wxT ( " #%02X%02X%02X " ) , bgr_clr . Red ( ) , bgr_clr . Green ( ) , bgr_clr . Blue ( ) ) ;
const wxString copyright_str = _ ( L ( " Copyright " ) ) + " © " ;
wxString text = wxString : : Format (
" <html> "
" <body bgcolor= %s link= %s> "
" <font color=%s> "
" <font size= \" 5 \" >%s</font><br/> "
" <font size= \" 5 \" >%s</font> "
" <a href= \" %s \" >%s.</a><br/> "
" <font size= \" 5 \" >%s.</font><br/> "
" <br /><br /> "
" <font size= \" 5 \" >%s</font><br/> "
" <font size= \" 5 \" >%s:</font><br/> "
" <br /> "
" <font size= \" 3 \" > " ,
bgr_clr_str , text_clr_str , text_clr_str ,
_L ( " License " ) ,
_L ( " Bambu Studio is licensed under " ) ,
" https://www.gnu.org/licenses/agpl-3.0.html " , _L ( " GNU Affero General Public License, version 3 " ) ,
_L ( " Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community " ) ,
_L ( " Libraries " ) ,
_L ( " This software uses open source components whose copyright and other proprietary rights belong to their respective owners " ) ) ;
for ( auto & entry : m_entries ) {
text + = format_wxstr (
" %s<br/> "
, entry . lib_name ) ;
text + = wxString : : Format (
" <a href= \" %s \" >%s</a><br/><br/> "
, entry . link , entry . link ) ;
}
text + = wxString (
" </font> "
" </font> "
" </body> "
" </html> " ) ;
return text ;
}
void CopyrightsDialog : : on_dpi_changed ( const wxRect & suggested_rect )
{
const wxFont & font = GetFont ( ) ;
const int fs = font . GetPointSize ( ) ;
const int fs2 = static_cast < int > ( 1.2f * fs ) ;
int font_size [ ] = { fs , fs , fs , fs , fs2 , fs2 , fs2 } ;
m_html - > SetFonts ( font . GetFaceName ( ) , font . GetFaceName ( ) , font_size ) ;
const int & em = em_unit ( ) ;
msw_buttons_rescale ( this , em , { wxID_CLOSE } ) ;
const wxSize & size = wxSize ( 40 * em , 20 * em ) ;
m_html - > SetMinSize ( size ) ;
m_html - > Refresh ( ) ;
SetMinSize ( size ) ;
Fit ( ) ;
Refresh ( ) ;
}
void CopyrightsDialog : : onLinkClicked ( wxHtmlLinkEvent & event )
{
wxGetApp ( ) . open_browser_with_warning_dialog ( event . GetLinkInfo ( ) . GetHref ( ) ) ;
event . Skip ( false ) ;
}
void CopyrightsDialog : : onCloseDialog ( wxEvent & )
{
this - > EndModal ( wxID_CLOSE ) ;
}
AboutDialog : : AboutDialog ( )
: DPIDialog ( static_cast < wxWindow * > ( wxGetApp ( ) . mainframe ) , wxID_ANY , from_u8 ( ( boost : : format ( _utf8 ( L ( " About %s " ) ) ) % ( wxGetApp ( ) . is_editor ( ) ? SLIC3R_APP_FULL_NAME : GCODEVIEWER_APP_NAME ) ) . str ( ) ) , wxDefaultPosition ,
wxDefaultSize , /*wxCAPTION*/ wxDEFAULT_DIALOG_STYLE )
{
SetFont ( wxGetApp ( ) . normal_font ( ) ) ;
wxColour bgr_clr = wxGetApp ( ) . get_window_default_clr ( ) ; //wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
SetBackgroundColour ( bgr_clr ) ;
std : : string icon_path = ( boost : : format ( " %1%/images/BambuStudioTitle.ico " ) % resources_dir ( ) ) . str ( ) ;
SetIcon ( wxIcon ( encode_path ( icon_path . c_str ( ) ) , wxBITMAP_TYPE_ICO ) ) ;
2022-07-22 09:46:10 +00:00
wxPanel * m_panel = new wxPanel ( this , wxID_ANY , wxDefaultPosition , wxSize ( FromDIP ( 560 ) , FromDIP ( 237 ) ) , wxTAB_TRAVERSAL ) ;
2022-07-15 15:37:19 +00:00
wxBoxSizer * panel_versizer = new wxBoxSizer ( wxVERTICAL ) ;
wxBoxSizer * vesizer = new wxBoxSizer ( wxVERTICAL ) ;
m_panel - > SetSizer ( panel_versizer ) ;
wxBoxSizer * ver_sizer = new wxBoxSizer ( wxVERTICAL ) ;
auto main_sizer = new wxBoxSizer ( wxVERTICAL ) ;
main_sizer - > Add ( m_panel , 1 , wxEXPAND | wxALL , 0 ) ;
main_sizer - > Add ( ver_sizer , 0 , wxEXPAND | wxALL , 0 ) ;
// logo
2022-07-22 09:46:10 +00:00
m_logo_bitmap = ScalableBitmap ( this , " BambuStudio_about " , 250 ) ;
2022-07-15 15:37:19 +00:00
m_logo = new wxStaticBitmap ( this , wxID_ANY , m_logo_bitmap . bmp ( ) , wxDefaultPosition , wxDefaultSize , 0 ) ;
m_logo - > SetSizer ( vesizer ) ;
panel_versizer - > Add ( m_logo , 1 , wxALL | wxEXPAND , 0 ) ;
// version
{
vesizer - > Add ( 0 , FromDIP ( 165 ) , 1 , wxEXPAND , FromDIP ( 5 ) ) ;
2022-10-25 08:27:02 +00:00
auto version_text = GUI_App : : format_display_version ( ) ;
2022-09-13 09:44:11 +00:00
# if BBL_INTERNAL_TESTING
2022-10-25 08:27:02 +00:00
auto version_string = _L ( " Internal Version " ) + " " + std : : string ( version_text ) ;
2022-09-13 09:44:11 +00:00
# else
2022-10-25 08:27:02 +00:00
auto version_string = _L ( " Version " ) + " " + std : : string ( version_text ) ;
2022-09-13 09:44:11 +00:00
# endif
2022-07-15 15:37:19 +00:00
wxStaticText * version = new wxStaticText ( this , wxID_ANY , version_string . c_str ( ) , wxDefaultPosition , wxDefaultSize ) ;
wxFont version_font = GetFont ( ) ;
# ifdef __WXMSW__
version_font . SetPointSize ( version_font . GetPointSize ( ) - 1 ) ;
# else
version_font . SetPointSize ( 11 ) ;
# endif
2022-07-22 09:46:10 +00:00
version_font . SetPointSize ( FromDIP ( 16 ) ) ;
2022-07-15 15:37:19 +00:00
version - > SetFont ( version_font ) ;
2022-07-22 09:46:10 +00:00
version - > SetForegroundColour ( wxColour ( 255 , 255 , 255 ) ) ;
2022-07-15 15:37:19 +00:00
version - > SetBackgroundColour ( wxColour ( 0 , 174 , 66 ) ) ;
vesizer - > Add ( version , 0 , wxALL | wxALIGN_CENTER_HORIZONTAL , FromDIP ( 5 ) ) ;
vesizer - > Add ( 0 , 0 , 1 , wxEXPAND , FromDIP ( 5 ) ) ;
}
2022-07-22 09:46:10 +00:00
wxBoxSizer * text_sizer_horiz = new wxBoxSizer ( wxHORIZONTAL ) ;
wxBoxSizer * text_sizer = new wxBoxSizer ( wxVERTICAL ) ;
text_sizer_horiz - > Add ( 0 , 0 , 0 , wxLEFT , FromDIP ( 23 ) ) ;
std : : vector < wxString > text_list ;
text_list . push_back ( _L ( " Bambu Studio is based on PrusaSlicer by PrusaResearch and SuperSlicer by Merill(supermerill). " ) ) ;
text_list . push_back ( _L ( " PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci. " ) ) ;
text_list . push_back ( _L ( " Slic3r was created by Alessandro Ranellucci with the help of many other contributors. " ) ) ;
text_list . push_back ( _L ( " Bambu Studio also referenced some ideas from Cura by Ultimaker. " ) ) ;
text_list . push_back ( _L ( " There many parts of the software that come from community contributions, so we're unable to list them one-by-one, and instead, they'll be attributed in the corresponding code comments. " ) ) ;
text_sizer - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 33 ) ) ;
bool is_zh = wxGetApp ( ) . app_config - > get ( " language " ) = = " zh_CN " ;
for ( int i = 0 ; i < text_list . size ( ) ; i + + )
{
auto staticText = new wxStaticText ( this , wxID_ANY , wxEmptyString , wxDefaultPosition , wxSize ( FromDIP ( 520 ) , - 1 ) , wxALIGN_LEFT ) ;
staticText - > SetForegroundColour ( wxColour ( 107 , 107 , 107 ) ) ;
staticText - > SetMinSize ( wxSize ( FromDIP ( 520 ) , - 1 ) ) ;
staticText - > SetFont ( Label : : Body_12 ) ;
if ( is_zh ) {
wxString find_txt = " " ;
wxString count_txt = " " ;
for ( auto o = 0 ; o < text_list [ i ] . length ( ) ; o + + ) {
auto size = staticText - > GetTextExtent ( count_txt ) ;
if ( size . x < FromDIP ( 506 ) ) {
find_txt + = text_list [ i ] [ o ] ;
count_txt + = text_list [ i ] [ o ] ;
} else {
find_txt + = std : : string ( " \n " ) + text_list [ i ] [ o ] ;
count_txt = text_list [ i ] [ o ] ;
}
}
staticText - > SetLabel ( find_txt ) ;
} else {
staticText - > SetLabel ( text_list [ i ] ) ;
staticText - > Wrap ( FromDIP ( 520 ) ) ;
}
text_sizer - > Add ( staticText , 0 , wxUP | wxDOWN , FromDIP ( 3 ) ) ;
}
text_sizer_horiz - > Add ( text_sizer , 1 , wxALL , 0 ) ;
ver_sizer - > Add ( text_sizer_horiz , 0 , wxALL , 0 ) ;
ver_sizer - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 43 ) ) ;
wxBoxSizer * copyright_ver_sizer = new wxBoxSizer ( wxVERTICAL ) ;
wxBoxSizer * copyright_hor_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
copyright_hor_sizer - > Add ( copyright_ver_sizer , 0 , wxALL , 5 ) ;
copyright_hor_sizer - > Add ( 0 , 0 , 0 , wxLEFT , FromDIP ( 120 ) ) ;
2022-07-15 15:37:19 +00:00
wxStaticText * html_text = new wxStaticText ( this , wxID_ANY , " Copyright(C) 2021-2022 Bambu Lab " , wxDefaultPosition , wxDefaultSize ) ;
html_text - > SetForegroundColour ( wxColour ( 107 , 107 , 107 ) ) ;
2022-07-22 09:46:10 +00:00
copyright_ver_sizer - > Add ( html_text , 0 , wxALL , 0 ) ;
2022-07-15 15:37:19 +00:00
m_html = new wxHtmlWindow ( this , wxID_ANY , wxDefaultPosition , wxDefaultSize , wxHW_SCROLLBAR_NEVER /*NEVER*/ ) ;
{
wxFont font = get_default_font ( this ) ;
const int fs = font . GetPointSize ( ) - 1 ;
int size [ ] = { fs , fs , fs , fs , fs , fs , fs } ;
m_html - > SetFonts ( font . GetFaceName ( ) , font . GetFaceName ( ) , size ) ;
m_html - > SetMinSize ( wxSize ( FromDIP ( - 1 ) , FromDIP ( 16 ) ) ) ;
m_html - > SetBorders ( 2 ) ;
const auto text = from_u8 (
( boost : : format (
" <html> "
" <body> "
2022-07-22 09:46:10 +00:00
" <p style= \" text-align:left \" ><a href= \" www.bambulab.com \" >www.bambulab.com</ a></p> "
2022-07-15 15:37:19 +00:00
" </body> "
" </html> " )
) . str ( ) ) ;
m_html - > SetPage ( text ) ;
2022-07-22 09:46:10 +00:00
copyright_ver_sizer - > Add ( m_html , 0 , wxEXPAND , 0 ) ;
2022-07-15 15:37:19 +00:00
m_html - > Bind ( wxEVT_HTML_LINK_CLICKED , & AboutDialog : : onLinkClicked , this ) ;
}
//Add "Portions copyright" button
Button * button_portions = new Button ( this , _L ( " Portions copyright " ) ) ;
StateColor report_bg ( std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 255 ) , StateColor : : Disabled ) , std : : pair < wxColour , int > ( wxColour ( 206 , 206 , 206 ) , StateColor : : Pressed ) ,
std : : pair < wxColour , int > ( wxColour ( 238 , 238 , 238 ) , StateColor : : Hovered ) , std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 255 ) , StateColor : : Enabled ) ,
std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 255 ) , StateColor : : Normal ) ) ;
button_portions - > SetBackgroundColor ( report_bg ) ;
StateColor report_bd ( std : : pair < wxColour , int > ( wxColour ( 144 , 144 , 144 ) , StateColor : : Disabled ) , std : : pair < wxColour , int > ( wxColour ( 38 , 46 , 48 ) , StateColor : : Enabled ) ) ;
button_portions - > SetBorderColor ( report_bd ) ;
StateColor report_text ( std : : pair < wxColour , int > ( wxColour ( 144 , 144 , 144 ) , StateColor : : Disabled ) , std : : pair < wxColour , int > ( wxColour ( 38 , 46 , 48 ) , StateColor : : Enabled ) ) ;
button_portions - > SetTextColor ( report_text ) ;
button_portions - > SetFont ( Label : : Body_12 ) ;
button_portions - > SetCornerRadius ( FromDIP ( 12 ) ) ;
button_portions - > SetMinSize ( wxSize ( FromDIP ( 120 ) , FromDIP ( 24 ) ) ) ;
2022-07-22 09:46:10 +00:00
wxBoxSizer * copyright_button_ver = new wxBoxSizer ( wxVERTICAL ) ;
copyright_button_ver - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 10 ) ) ;
copyright_button_ver - > Add ( button_portions , 0 , wxALL , 0 ) ;
copyright_hor_sizer - > Add ( copyright_button_ver , 0 , wxALL , 0 ) ;
copyright_hor_sizer - > Add ( 0 , 0 , 0 , wxRIGHT , FromDIP ( 13 ) ) ;
ver_sizer - > Add ( copyright_hor_sizer , 0 , wxALIGN_CENTER_HORIZONTAL | wxALL , 0 ) ;
ver_sizer - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 30 ) ) ;
2022-07-15 15:37:19 +00:00
button_portions - > Bind ( wxEVT_BUTTON , & AboutDialog : : onCopyrightBtn , this ) ;
SetSizer ( main_sizer ) ;
2022-07-22 09:46:10 +00:00
Layout ( ) ;
Fit ( ) ;
CenterOnParent ( ) ;
2022-07-15 15:37:19 +00:00
}
void AboutDialog : : on_dpi_changed ( const wxRect & suggested_rect )
{
m_logo_bitmap . msw_rescale ( ) ;
m_logo - > SetBitmap ( m_logo_bitmap . bmp ( ) ) ;
const wxFont & font = GetFont ( ) ;
const int fs = font . GetPointSize ( ) - 1 ;
int font_size [ ] = { fs , fs , fs , fs , fs , fs , fs } ;
m_html - > SetFonts ( font . GetFaceName ( ) , font . GetFaceName ( ) , font_size ) ;
const int & em = em_unit ( ) ;
msw_buttons_rescale ( this , em , { wxID_CLOSE , m_copy_rights_btn_id } ) ;
m_html - > SetMinSize ( wxSize ( - 1 , 16 * em ) ) ;
m_html - > Refresh ( ) ;
const wxSize & size = wxSize ( 65 * em , 30 * em ) ;
SetMinSize ( size ) ;
Fit ( ) ;
Refresh ( ) ;
}
void AboutDialog : : onLinkClicked ( wxHtmlLinkEvent & event )
{
wxGetApp ( ) . open_browser_with_warning_dialog ( event . GetLinkInfo ( ) . GetHref ( ) ) ;
event . Skip ( false ) ;
}
void AboutDialog : : onCloseDialog ( wxEvent & )
{
this - > EndModal ( wxID_CLOSE ) ;
}
void AboutDialog : : onCopyrightBtn ( wxEvent & )
{
CopyrightsDialog dlg ;
dlg . ShowModal ( ) ;
}
void AboutDialog : : onCopyToClipboard ( wxEvent & )
{
wxTheClipboard - > Open ( ) ;
2022-10-25 08:27:02 +00:00
wxTheClipboard - > SetData ( new wxTextDataObject ( _L ( " Version " ) + " " + GUI_App : : format_display_version ( ) ) ) ;
2022-07-15 15:37:19 +00:00
wxTheClipboard - > Close ( ) ;
}
} // namespace GUI
} // namespace Slic3r