mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	Ported System Info Dialog
This commit is contained in:
		
							parent
							
								
									e72a058600
								
							
						
					
					
						commit
						3009439838
					
				
					 5 changed files with 181 additions and 17 deletions
				
			
		|  | @ -41,7 +41,7 @@ AboutDialog::AboutDialog() | |||
|     // logo
 | ||||
| 	wxBitmap logo_bmp = wxBitmap(from_u8(Slic3r::var("Slic3r_192px.png")), wxBITMAP_TYPE_PNG); | ||||
| 	auto *logo = new wxStaticBitmap(this, wxID_ANY, std::move(logo_bmp)); | ||||
| 	hsizer->Add(logo, 1, wxALIGN_CENTRE_VERTICAL | wxEXPAND | wxTOP | wxBOTTOM, 35); | ||||
| 	hsizer->Add(logo, 1, wxEXPAND | wxTOP | wxBOTTOM, 35); | ||||
|      | ||||
|     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); | ||||
| #ifdef __WXMSW__ | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ | |||
| #include "Tab.hpp" | ||||
| #include <I18N.hpp> | ||||
| #include <wx/wupdlock.h> | ||||
| #include "SysInfoDialog.hpp" | ||||
| 
 | ||||
| namespace Slic3r { | ||||
| namespace GUI { | ||||
|  | @ -258,20 +259,9 @@ void GUI_App::recreate_GUI() | |||
| 
 | ||||
| void GUI_App::system_info() | ||||
| { | ||||
| //     auto slic3r_info = Slic3r::slic3r_info(format = > 'html');
 | ||||
| //     auto copyright_info = Slic3r::copyright_info(format = > 'html');
 | ||||
| //     auto system_info = Slic3r::system_info(format = > 'html');
 | ||||
|     std::string opengl_info = ""; | ||||
|     std::string opengl_info_txt = ""; | ||||
|     if (mainframe && mainframe->m_plater /*&& mainframe->m_plater->canvas3D*/) { | ||||
|         opengl_info = _3DScene::get_gl_info(true, true); | ||||
|         opengl_info_txt = _3DScene::get_gl_info(false, true); | ||||
|     } | ||||
| //     auto about = new SystemInfo(nullptr, slic3r_info, /*copyright_info,*/system_info, opengl_info,
 | ||||
| //         text_info = > Slic3r::slic3r_info.Slic3r::system_info.$opengl_info_txt,
 | ||||
| //         );
 | ||||
| //     about->ShowModal();
 | ||||
| //     about->Destroy();
 | ||||
|     SysInfoDialog dlg; | ||||
|     dlg.ShowModal(); | ||||
|     dlg.Destroy(); | ||||
| } | ||||
| 
 | ||||
| // static method accepting a wxWindow object as first parameter
 | ||||
|  | @ -525,7 +515,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu) | |||
|     local_menu->AppendSeparator(); | ||||
|     auto mode_menu = new wxMenu(); | ||||
|     mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _(L("&Simple")), _(L("Simple View Mode"))); | ||||
|     mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeMiddle, _(L("&Middle")), _(L("Middle View Mode"))); | ||||
|     mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeMiddle, _(L("&Advanced")), _(L("Advanced View Mode"))); | ||||
|     mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeExpert, _(L("&Expert")), _(L("Expert View Mode"))); | ||||
|     mode_menu->Check(config_id_base + get_view_mode(), true); | ||||
|     local_menu->AppendSubMenu(mode_menu, _(L("&Mode")), _(L("Slic3r View Mode"))); | ||||
|  | @ -598,7 +588,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu) | |||
|     mode_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent& event) { | ||||
|         int id_mode = event.GetId() - config_id_base; | ||||
|         std::string mode = id_mode == ConfigMenuModeExpert ? "expert" : | ||||
|                            id_mode == ConfigMenuModeSimple ? "simple" : "middle"; | ||||
|                            id_mode == ConfigMenuModeSimple ? "simple" : "advanced"; | ||||
|         app_config->set("view_mode", mode); | ||||
|         app_config->save(); | ||||
|         update_mode(); | ||||
|  |  | |||
							
								
								
									
										148
									
								
								src/slic3r/GUI/SysInfoDialog.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								src/slic3r/GUI/SysInfoDialog.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,148 @@ | |||
| #include "SysInfoDialog.hpp" | ||||
| // #include "AboutDialog.hpp"
 | ||||
| 
 | ||||
| #include <wx/clipbrd.h> | ||||
| #include <wx/platinfo.h> | ||||
| 
 | ||||
| // #include "../../libslic3r/Utils.hpp"
 | ||||
| #include "3DScene.hpp" | ||||
| #include "GUI.hpp" | ||||
| 
 | ||||
| namespace Slic3r {  | ||||
| namespace GUI { | ||||
| 
 | ||||
| std::string get_main_info(bool format_as_html) | ||||
| { | ||||
|     std::stringstream out; | ||||
| 
 | ||||
|     std::string b_start  = format_as_html ? "<b>"  : ""; | ||||
|     std::string b_end    = format_as_html ? "</b>" : ""; | ||||
|     std::string line_end = format_as_html ? "<br>" : "\n"; | ||||
| 
 | ||||
|     if (!format_as_html) | ||||
|         out << b_start << SLIC3R_FORK_NAME << b_end << line_end; | ||||
|     out << b_start << "Version:   "             << b_end << SLIC3R_VERSION << line_end; | ||||
|     out << b_start << "Build:     "             << b_end << SLIC3R_BUILD << line_end; | ||||
|     out << line_end; | ||||
|     out << b_start << "Operating System:    "   << b_end << wxPlatformInfo::Get().GetOperatingSystemFamilyName() << line_end; | ||||
|     out << b_start << "System Architecture: "   << b_end << wxPlatformInfo::Get().GetArchName() << line_end; | ||||
|     out << b_start <<  | ||||
| #if defined _WIN32 | ||||
|         "Windows Version:     " | ||||
| #else | ||||
|         // Hopefully some kind of unix / linux.
 | ||||
|         "System Version:      " | ||||
| #endif | ||||
|         << b_end << wxPlatformInfo::Get().GetOperatingSystemDescription() << line_end; | ||||
| 
 | ||||
|     return out.str(); | ||||
| } | ||||
| 
 | ||||
| SysInfoDialog::SysInfoDialog() | ||||
|     : wxDialog(NULL, wxID_ANY, _(L("Slic3r Prusa Edition - System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) | ||||
| { | ||||
| 	wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); | ||||
| 	SetBackgroundColour(bgr_clr); | ||||
|     wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL); | ||||
|     hsizer->SetMinSize(wxSize(600, -1)); | ||||
| 
 | ||||
| 	auto main_sizer = new wxBoxSizer(wxVERTICAL); | ||||
| 	main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 10); | ||||
| 
 | ||||
|     // logo
 | ||||
| 	wxBitmap logo_bmp = wxBitmap(from_u8(Slic3r::var("Slic3r_128px.png")), wxBITMAP_TYPE_PNG); | ||||
| 	auto *logo = new wxStaticBitmap(this, wxID_ANY, std::move(logo_bmp)); | ||||
| 	hsizer->Add(logo, 0, wxEXPAND | wxTOP | wxBOTTOM, 15); | ||||
|      | ||||
|     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); | ||||
|     hsizer->Add(vsizer, 1, wxEXPAND|wxLEFT, 20); | ||||
| 
 | ||||
|     // title
 | ||||
|     { | ||||
|         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_FORK_NAME, wxDefaultPosition, wxDefaultSize); | ||||
|         wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); | ||||
|         title_font.SetWeight(wxFONTWEIGHT_BOLD); | ||||
|         title_font.SetFamily(wxFONTFAMILY_ROMAN); | ||||
|         title_font.SetPointSize(14); | ||||
|         title->SetFont(title_font); | ||||
|         vsizer->Add(title, 0, wxALIGN_LEFT | wxTOP, 10); | ||||
|     } | ||||
| 
 | ||||
|     // main_info_text
 | ||||
|     wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); | ||||
|     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*1.5, fs*1.4, fs*1.3, fs, fs, fs, fs }; | ||||
| 
 | ||||
|     wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER); | ||||
|     { | ||||
|         html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); | ||||
|         html->SetBorders(2); | ||||
| 		const auto text = wxString::Format( | ||||
|             "<html>" | ||||
|             "<body bgcolor= %s link= %s>" | ||||
|             "<font color=%s>" | ||||
|             "%s" | ||||
|             "</font>" | ||||
|             "</body>" | ||||
|             "</html>", bgr_clr_str, text_clr_str, text_clr_str, | ||||
|             get_main_info(true)); | ||||
|         html->SetPage(text); | ||||
|         vsizer->Add(html, 1, wxEXPAND); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     // opengl_info
 | ||||
|     wxHtmlWindow* opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO); | ||||
|     { | ||||
|         opengl_info_html->SetMinSize(wxSize(-1, 200)); | ||||
|         opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size); | ||||
|         opengl_info_html->SetBorders(10); | ||||
|         const auto text = wxString::Format( | ||||
|             "<html>" | ||||
|             "<body bgcolor= %s link= %s>" | ||||
|             "<font color=%s>" | ||||
|             "%s" | ||||
|             "</font>" | ||||
|             "</body>" | ||||
|             "</html>", bgr_clr_str, text_clr_str, text_clr_str, | ||||
|             _3DScene::get_gl_info(true, true)); | ||||
|         opengl_info_html->SetPage(text); | ||||
|         main_sizer->Add(opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15); | ||||
|     } | ||||
|      | ||||
|     wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK); | ||||
|     auto btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize); | ||||
|     buttons->Insert(0, btn_copy_to_clipboard, 0, wxLEFT, 5); | ||||
|     btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this); | ||||
| 
 | ||||
|     this->SetEscapeId(wxID_CLOSE); | ||||
|     this->Bind(wxEVT_BUTTON, &SysInfoDialog::onCloseDialog, this, wxID_OK); | ||||
|     main_sizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3); | ||||
|      | ||||
|     this->Bind(wxEVT_LEFT_DOWN, &SysInfoDialog::onCloseDialog, this); | ||||
|     logo->Bind(wxEVT_LEFT_DOWN, &SysInfoDialog::onCloseDialog, this); | ||||
| 
 | ||||
| 	SetSizer(main_sizer); | ||||
| 	main_sizer->SetSizeHints(this); | ||||
| } | ||||
| 
 | ||||
| void SysInfoDialog::onCopyToClipboard(wxEvent &) | ||||
| { | ||||
|     wxTheClipboard->Open(); | ||||
|     const auto text = get_main_info(false)+"\n"+_3DScene::get_gl_info(false, true); | ||||
|     wxTheClipboard->SetData(new wxTextDataObject(text)); | ||||
|     wxTheClipboard->Close(); | ||||
| } | ||||
| 
 | ||||
| void SysInfoDialog::onCloseDialog(wxEvent &) | ||||
| { | ||||
|     this->EndModal(wxID_CLOSE); | ||||
|     this->Close(); | ||||
| } | ||||
| 
 | ||||
| } // namespace GUI
 | ||||
| } // namespace Slic3r
 | ||||
							
								
								
									
										24
									
								
								src/slic3r/GUI/SysInfoDialog.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/slic3r/GUI/SysInfoDialog.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| #ifndef slic3r_GUI_SysInfoDialog_hpp_ | ||||
| #define slic3r_GUI_SysInfoDialog_hpp_ | ||||
| 
 | ||||
| #include <wx/wx.h> | ||||
| #include <wx/html/htmlwin.h> | ||||
| 
 | ||||
| namespace Slic3r {  | ||||
| namespace GUI { | ||||
| 
 | ||||
| class SysInfoDialog : public wxDialog | ||||
| { | ||||
|     wxString text_info {wxEmptyString}; | ||||
| public: | ||||
|     SysInfoDialog(); | ||||
|      | ||||
| private: | ||||
|     void onCopyToClipboard(wxEvent &); | ||||
|     void onCloseDialog(wxEvent &); | ||||
| }; | ||||
| 
 | ||||
| } // namespace GUI
 | ||||
| } // namespace Slic3r
 | ||||
| 
 | ||||
| #endif | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka