mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-16 11:17:51 -06:00
Ported System Info Dialog
This commit is contained in:
parent
e72a058600
commit
3009439838
5 changed files with 181 additions and 17 deletions
|
@ -1,6 +1,8 @@
|
||||||
add_library(libslic3r_gui STATIC
|
add_library(libslic3r_gui STATIC
|
||||||
${LIBDIR}/slic3r/GUI/AboutDialog.cpp
|
${LIBDIR}/slic3r/GUI/AboutDialog.cpp
|
||||||
${LIBDIR}/slic3r/GUI/AboutDialog.hpp
|
${LIBDIR}/slic3r/GUI/AboutDialog.hpp
|
||||||
|
${LIBDIR}/slic3r/GUI/SysInfoDialog.cpp
|
||||||
|
${LIBDIR}/slic3r/GUI/SysInfoDialog.hpp
|
||||||
${LIBDIR}/slic3r/GUI/AppConfig.cpp
|
${LIBDIR}/slic3r/GUI/AppConfig.cpp
|
||||||
${LIBDIR}/slic3r/GUI/AppConfig.hpp
|
${LIBDIR}/slic3r/GUI/AppConfig.hpp
|
||||||
${LIBDIR}/slic3r/GUI/BackgroundSlicingProcess.cpp
|
${LIBDIR}/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||||
|
|
|
@ -41,7 +41,7 @@ AboutDialog::AboutDialog()
|
||||||
// logo
|
// logo
|
||||||
wxBitmap logo_bmp = wxBitmap(from_u8(Slic3r::var("Slic3r_192px.png")), wxBITMAP_TYPE_PNG);
|
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));
|
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);
|
wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "Tab.hpp"
|
#include "Tab.hpp"
|
||||||
#include <I18N.hpp>
|
#include <I18N.hpp>
|
||||||
#include <wx/wupdlock.h>
|
#include <wx/wupdlock.h>
|
||||||
|
#include "SysInfoDialog.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
@ -258,20 +259,9 @@ void GUI_App::recreate_GUI()
|
||||||
|
|
||||||
void GUI_App::system_info()
|
void GUI_App::system_info()
|
||||||
{
|
{
|
||||||
// auto slic3r_info = Slic3r::slic3r_info(format = > 'html');
|
SysInfoDialog dlg;
|
||||||
// auto copyright_info = Slic3r::copyright_info(format = > 'html');
|
dlg.ShowModal();
|
||||||
// auto system_info = Slic3r::system_info(format = > 'html');
|
dlg.Destroy();
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static method accepting a wxWindow object as first parameter
|
// static method accepting a wxWindow object as first parameter
|
||||||
|
@ -525,7 +515,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
|
||||||
local_menu->AppendSeparator();
|
local_menu->AppendSeparator();
|
||||||
auto mode_menu = new wxMenu();
|
auto mode_menu = new wxMenu();
|
||||||
mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _(L("&Simple")), _(L("Simple View Mode")));
|
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->AppendRadioItem(config_id_base + ConfigMenuModeExpert, _(L("&Expert")), _(L("Expert View Mode")));
|
||||||
mode_menu->Check(config_id_base + get_view_mode(), true);
|
mode_menu->Check(config_id_base + get_view_mode(), true);
|
||||||
local_menu->AppendSubMenu(mode_menu, _(L("&Mode")), _(L("Slic3r View Mode")));
|
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) {
|
mode_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent& event) {
|
||||||
int id_mode = event.GetId() - config_id_base;
|
int id_mode = event.GetId() - config_id_base;
|
||||||
std::string mode = id_mode == ConfigMenuModeExpert ? "expert" :
|
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->set("view_mode", mode);
|
||||||
app_config->save();
|
app_config->save();
|
||||||
update_mode();
|
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