2018-04-09 15:03:37 +00:00
# include "AboutDialog.hpp"
2018-11-26 13:41:58 +00:00
# include "I18N.hpp"
2018-04-09 15:03:37 +00:00
2018-11-26 13:41:58 +00:00
# include "libslic3r/Utils.hpp"
2019-02-06 08:49:32 +00:00
# include "GUI_App.hpp"
2019-02-11 13:14:35 +00:00
# include "wxExtensions.hpp"
2018-04-09 15:03:37 +00:00
namespace Slic3r {
namespace GUI {
AboutDialogLogo : : AboutDialogLogo ( wxWindow * parent )
: wxPanel ( parent , wxID_ANY , wxDefaultPosition , wxDefaultSize )
{
this - > SetBackgroundColour ( * wxWHITE ) ;
2019-05-13 10:13:28 +00:00
this - > logo = wxBitmap ( from_u8 ( Slic3r : : var ( " PrusaSlicer_192px.png " ) ) , wxBITMAP_TYPE_PNG ) ;
2018-04-09 15:03:37 +00:00
this - > SetMinSize ( this - > logo . GetSize ( ) ) ;
this - > Bind ( wxEVT_PAINT , & AboutDialogLogo : : onRepaint , this ) ;
}
void AboutDialogLogo : : onRepaint ( wxEvent & event )
{
wxPaintDC dc ( this ) ;
dc . SetBackgroundMode ( wxTRANSPARENT ) ;
wxSize size = this - > GetSize ( ) ;
int logo_w = this - > logo . GetWidth ( ) ;
int logo_h = this - > logo . GetHeight ( ) ;
dc . DrawBitmap ( this - > logo , ( size . GetWidth ( ) - logo_w ) / 2 , ( size . GetHeight ( ) - logo_h ) / 2 , true ) ;
event . Skip ( ) ;
}
AboutDialog : : AboutDialog ( )
2019-04-18 13:22:10 +00:00
: DPIDialog ( NULL , wxID_ANY , wxString : : Format ( _ ( L ( " About %s " ) ) , SLIC3R_APP_NAME ) , wxDefaultPosition ,
2019-04-18 13:05:17 +00:00
wxDefaultSize , /*wxCAPTION*/ wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER )
2018-04-09 15:03:37 +00:00
{
2019-04-18 13:05:17 +00:00
SetFont ( wxGetApp ( ) . normal_font ( ) ) ;
2018-05-16 11:56:03 +00:00
wxColour bgr_clr = wxSystemSettings : : GetColour ( wxSYS_COLOUR_WINDOW ) ;
SetBackgroundColour ( bgr_clr ) ;
2018-04-09 15:03:37 +00:00
wxBoxSizer * hsizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2018-05-16 11:56:03 +00:00
auto main_sizer = new wxBoxSizer ( wxVERTICAL ) ;
main_sizer - > Add ( hsizer , 0 , wxEXPAND | wxALL , 20 ) ;
2018-04-09 15:03:37 +00:00
// logo
2019-05-13 10:13:28 +00:00
m_logo_bitmap = ScalableBitmap ( this , " PrusaSlicer_192px.png " , 192 ) ;
2019-04-18 13:05:17 +00:00
m_logo = new wxStaticBitmap ( this , wxID_ANY , m_logo_bitmap . bmp ( ) ) ;
hsizer - > Add ( m_logo , 1 , wxALIGN_CENTER_VERTICAL ) ;
2018-04-09 15:03:37 +00:00
2019-02-11 13:14:35 +00:00
wxBoxSizer * vsizer = new wxBoxSizer ( wxVERTICAL ) ;
hsizer - > Add ( vsizer , 2 , wxEXPAND | wxLEFT , 20 ) ;
2018-04-09 15:03:37 +00:00
// title
{
2019-04-15 14:14:19 +00:00
wxStaticText * title = new wxStaticText ( this , wxID_ANY , SLIC3R_APP_NAME , wxDefaultPosition , wxDefaultSize ) ;
2019-04-24 23:45:00 +00:00
wxFont title_font = GUI : : wxGetApp ( ) . bold_font ( ) ;
2018-04-09 15:03:37 +00:00
title_font . SetFamily ( wxFONTFAMILY_ROMAN ) ;
title_font . SetPointSize ( 24 ) ;
title - > SetFont ( title_font ) ;
2018-05-16 11:56:03 +00:00
vsizer - > Add ( title , 0 , wxALIGN_LEFT | wxTOP , 10 ) ;
2018-04-09 15:03:37 +00:00
}
// version
{
2018-05-02 11:20:36 +00:00
auto version_string = _ ( L ( " Version " ) ) + " " + std : : string ( SLIC3R_VERSION ) ;
2018-04-09 15:03:37 +00:00
wxStaticText * version = new wxStaticText ( this , wxID_ANY , version_string . c_str ( ) , wxDefaultPosition , wxDefaultSize ) ;
2019-04-24 23:45:00 +00:00
wxFont version_font = GetFont ( ) ;
2018-04-09 15:03:37 +00:00
# ifdef __WXMSW__
2019-04-24 23:45:00 +00:00
version_font . SetPointSize ( version_font . GetPointSize ( ) - 1 ) ;
2018-04-09 15:03:37 +00:00
# else
version_font . SetPointSize ( 11 ) ;
# endif
version - > SetFont ( version_font ) ;
vsizer - > Add ( version , 0 , wxALIGN_LEFT | wxBOTTOM , 10 ) ;
}
// text
2019-04-18 13:05:17 +00:00
m_html = new wxHtmlWindow ( this , wxID_ANY , wxDefaultPosition , wxDefaultSize , wxHW_SCROLLBAR_AUTO /*NEVER*/ ) ;
2018-04-09 15:03:37 +00:00
{
2019-04-18 13:05:17 +00:00
m_html - > SetMinSize ( wxSize ( - 1 , 16 * wxGetApp ( ) . em_unit ( ) ) ) ;
2019-04-24 23:45:00 +00:00
wxFont font = GetFont ( ) ;
2018-05-16 11:56:03 +00:00
const auto text_clr = wxSystemSettings : : GetColour ( wxSYS_COLOUR_WINDOWTEXT ) ;
auto text_clr_str = wxString : : Format ( wxT ( " #%02X%02X%02X " ) , text_clr . Red ( ) , text_clr . Green ( ) , text_clr . Blue ( ) ) ;
auto bgr_clr_str = wxString : : Format ( wxT ( " #%02X%02X%02X " ) , bgr_clr . Red ( ) , bgr_clr . Green ( ) , bgr_clr . Blue ( ) ) ;
const int fs = font . GetPointSize ( ) - 1 ;
int size [ ] = { fs , fs , fs , fs , fs , fs , fs } ;
2019-04-18 13:05:17 +00:00
m_html - > SetFonts ( font . GetFaceName ( ) , font . GetFaceName ( ) , size ) ;
m_html - > SetBorders ( 2 ) ;
2019-05-09 14:38:44 +00:00
const wxString copyright_str = _ ( L ( " Copyright " ) ) ;
// TRN "Slic3r _is licensed under the_ License"
const wxString is_lecensed_str = _ ( L ( " is licensed under the " ) ) ;
const wxString license_str = _ ( L ( " GNU Affero General Public License, version 3 " ) ) ;
2019-05-14 16:10:20 +00:00
const wxString based_on_str = _ ( L ( " PrusaSlicer is based on Slic3r by Alessandro Ranellucci and the RepRap community. " ) ) ;
2019-05-09 14:38:44 +00:00
const wxString contributors_str = _ ( L ( " Contributions by Henrik Brix Andersen, Nicolas Dandrimont, Mark Hindess, Petr Ledvina, Joseph Lenox, Y. Sapir, Mike Sheldrake, Vojtech Bubnik and numerous others. " ) ) ;
2018-05-16 11:56:03 +00:00
const auto text = wxString : : Format (
2018-04-09 15:03:37 +00:00
" <html> "
2018-05-16 11:56:03 +00:00
" <body bgcolor= %s link= %s> "
" <font color=%s> "
2019-05-09 14:38:44 +00:00
" %s © 2016-2019 Prusa Research. <br /> "
" %s © 2011-2018 Alessandro Ranellucci. <br /> "
" <a href= \" http://slic3r.org/ \" >Slic3r</a> %s "
" <a href= \" http://www.gnu.org/licenses/agpl-3.0.html \" >%s</a>. "
2018-05-16 11:56:03 +00:00
" <br /><br /> "
2019-05-09 14:38:44 +00:00
" %s "
2019-05-14 16:10:20 +00:00
" <br /><br /> "
" %s "
2018-04-09 15:03:37 +00:00
" </font> "
" </body> "
2019-05-09 14:38:44 +00:00
" </html> " , bgr_clr_str , text_clr_str , text_clr_str ,
copyright_str , copyright_str ,
is_lecensed_str ,
license_str ,
2019-05-14 16:10:20 +00:00
based_on_str ,
2019-05-09 14:38:44 +00:00
contributors_str ) ;
2019-04-18 13:05:17 +00:00
m_html - > SetPage ( text ) ;
vsizer - > Add ( m_html , 1 , wxEXPAND | wxBOTTOM , 10 ) ;
m_html - > Bind ( wxEVT_HTML_LINK_CLICKED , & AboutDialog : : onLinkClicked , this ) ;
2018-04-09 15:03:37 +00:00
}
wxStdDialogButtonSizer * buttons = this - > CreateStdDialogButtonSizer ( wxCLOSE ) ;
this - > SetEscapeId ( wxID_CLOSE ) ;
this - > Bind ( wxEVT_BUTTON , & AboutDialog : : onCloseDialog , this , wxID_CLOSE ) ;
vsizer - > Add ( buttons , 0 , wxEXPAND | wxRIGHT | wxBOTTOM , 3 ) ;
2018-05-16 11:56:03 +00:00
SetSizer ( main_sizer ) ;
main_sizer - > SetSizeHints ( this ) ;
2018-04-09 15:03:37 +00:00
}
2019-04-18 13:05:17 +00:00
void AboutDialog : : on_dpi_changed ( const wxRect & suggested_rect )
{
2019-04-24 23:45:00 +00:00
m_logo_bitmap . msw_rescale ( ) ;
2019-04-18 13:05:17 +00:00
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 ( ) ;
2019-04-25 13:06:44 +00:00
msw_buttons_rescale ( this , em , { wxID_CLOSE } ) ;
2019-04-18 13:05:17 +00:00
m_html - > SetMinSize ( wxSize ( - 1 , 16 * em ) ) ;
m_html - > Refresh ( ) ;
const wxSize & size = wxSize ( 65 * em , 30 * em ) ;
SetMinSize ( size ) ;
2019-04-25 13:06:44 +00:00
Fit ( ) ;
2019-04-18 13:05:17 +00:00
Refresh ( ) ;
}
2018-04-09 15:03:37 +00:00
void AboutDialog : : onLinkClicked ( wxHtmlLinkEvent & event )
{
wxLaunchDefaultBrowser ( event . GetLinkInfo ( ) . GetHref ( ) ) ;
event . Skip ( false ) ;
}
void AboutDialog : : onCloseDialog ( wxEvent & )
{
this - > EndModal ( wxID_CLOSE ) ;
this - > Close ( ) ;
}
} // namespace GUI
} // namespace Slic3r