Custom control : Bug fixing
* OG_CustomCtrl is inherited from the wxPanel instead of the wxControl now. As a result, Tab-key is working now for the fields inside the custom control * Open localized web-page if any exist for labels + Fixed update of icons inside the PresetComboBoxes after switching between Dark/Light modes
This commit is contained in:
parent
32b8be600c
commit
b2700a8ac6
@ -2,6 +2,7 @@
|
|||||||
#include "OptionsGroup.hpp"
|
#include "OptionsGroup.hpp"
|
||||||
#include "Plater.hpp"
|
#include "Plater.hpp"
|
||||||
#include "GUI_App.hpp"
|
#include "GUI_App.hpp"
|
||||||
|
#include "libslic3r/AppConfig.hpp"
|
||||||
|
|
||||||
#include <wx/utils.h>
|
#include <wx/utils.h>
|
||||||
#include <boost/algorithm/string/split.hpp>
|
#include <boost/algorithm/string/split.hpp>
|
||||||
@ -25,11 +26,16 @@ static wxSize get_bitmap_size(const wxBitmap& bmp)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static wxString get_url(const wxString& path_end)
|
static wxString get_url(const wxString& path_end, bool get_default = false)
|
||||||
{
|
{
|
||||||
if (path_end.IsEmpty())
|
if (path_end.IsEmpty())
|
||||||
return wxEmptyString;
|
return wxEmptyString;
|
||||||
return wxString("https://help.prusa3d.com/") + "en" + "/article/" + path_end;
|
|
||||||
|
wxString language = wxGetApp().app_config->get("translation_language");
|
||||||
|
if (language.IsEmpty())
|
||||||
|
return wxEmptyString;
|
||||||
|
|
||||||
|
return wxString("https://help.prusa3d.com/") + language.BeforeFirst('_') + "/article/" + path_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent,
|
OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent,
|
||||||
@ -38,7 +44,7 @@ OG_CustomCtrl::OG_CustomCtrl( wxWindow* parent,
|
|||||||
const wxSize& size/* = wxDefaultSize*/,
|
const wxSize& size/* = wxDefaultSize*/,
|
||||||
const wxValidator& val /* = wxDefaultValidator*/,
|
const wxValidator& val /* = wxDefaultValidator*/,
|
||||||
const wxString& name/* = wxEmptyString*/) :
|
const wxString& name/* = wxEmptyString*/) :
|
||||||
wxControl(parent, wxID_ANY, pos, size, wxWANTS_CHARS | wxBORDER_NONE),
|
wxPanel(parent, wxID_ANY, pos, size, /*wxWANTS_CHARS |*/ wxBORDER_NONE | wxTAB_TRAVERSAL),
|
||||||
opt_group(og)
|
opt_group(og)
|
||||||
{
|
{
|
||||||
if (!wxOSX)
|
if (!wxOSX)
|
||||||
@ -210,6 +216,8 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event)
|
|||||||
const wxPoint pos = event.GetLogicalPosition(wxClientDC(this));
|
const wxPoint pos = event.GetLogicalPosition(wxClientDC(this));
|
||||||
wxString tooltip;
|
wxString tooltip;
|
||||||
|
|
||||||
|
wxString language = wxGetApp().app_config->get("translation_language");
|
||||||
|
|
||||||
for (CtrlLine& line : ctrl_lines) {
|
for (CtrlLine& line : ctrl_lines) {
|
||||||
line.is_focused = is_point_in_rect(pos, line.rect_label);
|
line.is_focused = is_point_in_rect(pos, line.rect_label);
|
||||||
if (line.is_focused) {
|
if (line.is_focused) {
|
||||||
@ -631,11 +639,7 @@ wxCoord OG_CustomCtrl::CtrlLine::draw_act_bmps(wxDC& dc, wxPoint pos, const wxBi
|
|||||||
|
|
||||||
bool OG_CustomCtrl::CtrlLine::launch_browser() const
|
bool OG_CustomCtrl::CtrlLine::launch_browser() const
|
||||||
{
|
{
|
||||||
if (is_focused && !og_line.label_path.IsEmpty()) {
|
return is_focused && !og_line.label_path.IsEmpty() && wxLaunchDefaultBrowser(get_url(og_line.label_path));
|
||||||
wxLaunchDefaultBrowser(get_url(og_line.label_path));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
// Static text shown among the options.
|
// Static text shown among the options.
|
||||||
class OG_CustomCtrl :public wxControl
|
class OG_CustomCtrl :public wxPanel
|
||||||
{
|
{
|
||||||
wxFont m_font;
|
wxFont m_font;
|
||||||
int m_v_gap;
|
int m_v_gap;
|
||||||
|
@ -349,6 +349,8 @@ wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, bool wide_icons, con
|
|||||||
|
|
||||||
bitmap_key += is_system ? ",syst" : ",nsyst";
|
bitmap_key += is_system ? ",syst" : ",nsyst";
|
||||||
bitmap_key += ",h" + std::to_string(icon_height);
|
bitmap_key += ",h" + std::to_string(icon_height);
|
||||||
|
if (wxGetApp().dark_mode())
|
||||||
|
bitmap_key += ",dark";
|
||||||
|
|
||||||
wxBitmap* bmp = bitmap_cache().find(bitmap_key);
|
wxBitmap* bmp = bitmap_cache().find(bitmap_key);
|
||||||
if (bmp == nullptr) {
|
if (bmp == nullptr) {
|
||||||
@ -393,6 +395,8 @@ wxBitmap* PresetComboBox::get_bmp( std::string bitmap_key, const std::string& m
|
|||||||
bitmap_key += is_compatible ? ",cmpt" : ",ncmpt";
|
bitmap_key += is_compatible ? ",cmpt" : ",ncmpt";
|
||||||
bitmap_key += is_system ? ",syst" : ",nsyst";
|
bitmap_key += is_system ? ",syst" : ",nsyst";
|
||||||
bitmap_key += ",h" + std::to_string(icon_height);
|
bitmap_key += ",h" + std::to_string(icon_height);
|
||||||
|
if (wxGetApp().dark_mode())
|
||||||
|
bitmap_key += ",dark";
|
||||||
|
|
||||||
wxBitmap* bmp = bitmap_cache().find(bitmap_key);
|
wxBitmap* bmp = bitmap_cache().find(bitmap_key);
|
||||||
if (bmp == nullptr) {
|
if (bmp == nullptr) {
|
||||||
|
@ -1010,6 +1010,7 @@ void Tab::msw_rescale()
|
|||||||
void Tab::sys_color_changed()
|
void Tab::sys_color_changed()
|
||||||
{
|
{
|
||||||
update_tab_ui();
|
update_tab_ui();
|
||||||
|
m_presets_choice->msw_rescale();
|
||||||
|
|
||||||
// update buttons and cached bitmaps
|
// update buttons and cached bitmaps
|
||||||
for (const auto btn : m_scaled_buttons)
|
for (const auto btn : m_scaled_buttons)
|
||||||
|
Loading…
Reference in New Issue
Block a user