mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-16 00:42:44 +00:00
### FIXES • 3mf file version check dialog opens bambu releases page instead Orca ### CODE COMPARISON <img width="112" height="36" alt="Screenshot-20251128125737" src="https://github.com/user-attachments/assets/73718a18-8159-43d5-bb80-0eb90d59a8f6" /> **wxHyperlinkCtrl** • System decides what colors to use. so blue color is visible even with colors set • No need to use SetCursor() ``` auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables"; wxHyperlinkCtrl* wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("Wiki Guide"), wiki_url); wiki->SetToolTip(wiki_url); // required to showing navigation point to user wiki->SetFont(Label::Body_14); // not works properly wiki->SetVisitedColour(wxColour("#009687")); // not works properly wiki->SetHoverColour( wxColour("#26A69A")); // not works properly wiki->SetNormalColour( wxColour("#009687")); // not works properly ``` <img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" /> **wxStaticText** • Works reliably on colors and fonts • All event has to defined manually ``` wxStaticText* wiki = new wxStaticText(this, wxID_ANY, _L("Wiki Guide")); auto wiki_url = "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables"; wiki->SetToolTip(wiki_url); // required to showing navigation point to user wiki->SetForegroundColour(wxColour("#009687")); wiki->SetCursor(wxCURSOR_HAND); wxFont font = Label::Body_14; font.SetUnderlined(true); wiki->SetFont(font); wiki->Bind(wxEVT_LEFT_DOWN ,[this, wiki_url](wxMouseEvent e) {wxLaunchDefaultBrowser(wiki_url);}); wiki->Bind(wxEVT_ENTER_WINDOW,[this, wiki ](wxMouseEvent e) {SetForegroundColour(wxColour("#26A69A"));}); wiki->Bind(wxEVT_LEAVE_WINDOW,[this, wiki ](wxMouseEvent e) {SetForegroundColour(wxColour("#009687"));}); ``` <img width="132" height="39" alt="Screenshot-20251128125847" src="https://github.com/user-attachments/assets/f6818dc0-5078-498a-bf09-1fd36e81ebe5" /> **HyperLink** • Fully automated and single line solution • Colors can be controllable from one place • Works reliably on colors and fonts • Reduces duplicate code ``` HyperLink* wiki = new HyperLink(this, _L("Wiki Guide"), "https://github.com/OrcaSlicer/OrcaSlicer/wiki/Built-in-placeholders-variables"); wiki->SetFont(Label::Body_14) // OPTIONAL default is Label::Body_14; ``` ### CHANGES • Unifies all hyperlinks with same style and makes them controllable from one place • Replaces all wxHyperlink with simple custom class. Problem with wxHyperlink it mostly rendered as blue even color set • Reduces duplicate code • Adds wiki links for calibration dialogs • Probably will add "Wiki Guide" to more dialogs overtime <img width="349" height="238" alt="Screenshot-20251127212007" src="https://github.com/user-attachments/assets/69da2732-ea35-44de-8ebc-97a01f86328f" /> <img width="355" height="459" alt="Screenshot-20251127212021" src="https://github.com/user-attachments/assets/c0df40f8-c15d-47fa-b31a-cf8d8b337472" /> <img width="442" height="382" alt="Screenshot-20251127212046" src="https://github.com/user-attachments/assets/5d94242b-6364-4b0a-8b2f-a1f482199bd1" /> <img width="225" height="241" alt="Screenshot-20250824171339" src="https://github.com/user-attachments/assets/39ca6af3-6f8a-42ee-bf1d-c13d0f54bb63" /> <img width="442" height="639" alt="Screenshot-20251127212403" src="https://github.com/user-attachments/assets/c1c580f8-3e1b-42f0-aa8e-bac41c2ff76b" /> <img width="476" height="286" alt="Screenshot-20251127212515" src="https://github.com/user-attachments/assets/28b130ce-c7c0-4ada-9842-ff7154c00c21" /> <img width="1460" height="245" alt="Screenshot-20251127212541" src="https://github.com/user-attachments/assets/3fca2649-9cd3-4aea-9153-b2f508fdfefe" /> <img width="401" height="291" alt="Screenshot-20251127213243" src="https://github.com/user-attachments/assets/82b4ec1f-6074-4018-9efa-a1b6b819ae28" />
175 lines
5.4 KiB
C++
175 lines
5.4 KiB
C++
#ifndef slic3r_BindDialog_hpp_
|
|
#define slic3r_BindDialog_hpp_
|
|
|
|
#include "I18N.hpp"
|
|
|
|
#include <wx/font.h>
|
|
#include <wx/colour.h>
|
|
#include <wx/settings.h>
|
|
#include <wx/string.h>
|
|
#include <wx/sizer.h>
|
|
#include <wx/stattext.h>
|
|
#include <wx/gauge.h>
|
|
#include <wx/button.h>
|
|
#include <wx/bitmap.h>
|
|
#include <wx/image.h>
|
|
#include <wx/icon.h>
|
|
#include <wx/dialog.h>
|
|
#include <curl/curl.h>
|
|
#include <wx/webrequest.h>
|
|
#include "wxExtensions.hpp"
|
|
#include "Widgets/StepCtrl.hpp"
|
|
#include "Widgets/ProgressDialog.hpp"
|
|
#include "Widgets/Button.hpp"
|
|
#include "Widgets/ProgressBar.hpp"
|
|
#include "Widgets/RoundedRectangle.hpp"
|
|
#include "Widgets/HyperLink.hpp"
|
|
#include "Jobs/BindJob.hpp"
|
|
#include "BBLStatusBar.hpp"
|
|
#include "BBLStatusBarBind.hpp"
|
|
#include "Jobs/Worker.hpp"
|
|
#include "GUI_Utils.hpp"
|
|
#include "Widgets/TextInput.hpp"
|
|
#include "Jobs/PrintJob.hpp"
|
|
#include "Jobs/SendJob.hpp"
|
|
#include "DeviceManager.hpp"
|
|
|
|
#define BIND_DIALOG_GREY200 wxColour(248, 248, 248)
|
|
#define BIND_DIALOG_GREY800 wxColour(50, 58, 61)
|
|
#define BIND_DIALOG_GREY900 wxColour(38, 46, 48)
|
|
#define BIND_DIALOG_BUTTON_SIZE wxSize(FromDIP(68), FromDIP(24))
|
|
#define BIND_DIALOG_BUTTON_PANEL_SIZE wxSize(FromDIP(450), FromDIP(30))
|
|
#define PING_CODE_LENGTH 6
|
|
|
|
namespace Slic3r { namespace GUI {
|
|
class Plater;
|
|
struct MemoryStruct
|
|
{
|
|
char * memory;
|
|
size_t read_pos;
|
|
size_t size;
|
|
};
|
|
|
|
class PingCodeBindDialog : public DPIDialog
|
|
{
|
|
private:
|
|
|
|
Label* m_status_text;
|
|
wxStaticText* m_text_input_title;
|
|
HyperLink* m_link_show_ping_code_wiki; // ORCA
|
|
TextInput* m_text_input_single_code[PING_CODE_LENGTH];
|
|
Button* m_button_bind;
|
|
Button* m_button_cancel;
|
|
Button* m_button_close;
|
|
wxSimplebook* m_simplebook;
|
|
wxPanel* request_bind_panel;
|
|
wxPanel* binding_panel;
|
|
|
|
wxScrolledWindow* m_sw_bind_failed_info;
|
|
Label* m_bind_failed_info;
|
|
Label* m_st_txt_error_code{ nullptr };
|
|
Label* m_st_txt_error_desc{ nullptr };
|
|
Label* m_st_txt_extra_info{ nullptr };
|
|
HyperLink* m_link_network_state{ nullptr };
|
|
wxString m_result_info;
|
|
wxString m_result_extra;
|
|
wxString m_ping_code_wiki;
|
|
bool m_show_error_info_state = true;
|
|
|
|
int m_result_code;
|
|
std::shared_ptr<BBLStatusBarBind> m_status_bar;
|
|
|
|
public:
|
|
PingCodeBindDialog(Plater* plater = nullptr);
|
|
~PingCodeBindDialog();
|
|
|
|
void on_key_input(wxKeyEvent& evt);
|
|
void on_text_changed(wxCommandEvent& event);
|
|
void on_key_backspace(wxKeyEvent& event);
|
|
void on_cancel(wxCommandEvent& event);
|
|
void on_bind_printer(wxCommandEvent& event);
|
|
void on_dpi_changed(const wxRect& suggested_rect) override;
|
|
};
|
|
|
|
class BindMachineDialog : public DPIDialog
|
|
{
|
|
private:
|
|
wxWindow* m_panel_agreement;
|
|
wxStaticText * m_printer_name;
|
|
wxStaticText * m_user_name;
|
|
StaticBox * m_panel_left;
|
|
StaticBox * m_panel_right;
|
|
wxStaticText *m_status_text;
|
|
wxStaticText* m_link_show_error;
|
|
Button * m_button_bind;
|
|
Button * m_button_cancel;
|
|
wxSimplebook *m_simplebook;
|
|
wxStaticBitmap *m_avatar;
|
|
wxStaticBitmap *m_printer_img;
|
|
wxStaticBitmap *m_static_bitmap_show_error;
|
|
wxBitmap m_bitmap_show_error_close;
|
|
wxBitmap m_bitmap_show_error_open;
|
|
wxScrolledWindow* m_sw_bind_failed_info;
|
|
Label* m_bind_failed_info;
|
|
Label* m_st_txt_error_code{ nullptr };
|
|
Label* m_st_txt_error_desc{ nullptr };
|
|
Label* m_st_txt_extra_info{ nullptr };
|
|
HyperLink* m_link_network_state{ nullptr };
|
|
wxString m_result_info;
|
|
wxString m_result_extra;
|
|
bool m_show_error_info_state = true;
|
|
bool m_allow_privacy{false};
|
|
bool m_allow_notice{false};
|
|
int m_result_code;
|
|
std::shared_ptr<int> m_tocken;
|
|
|
|
MachineObject * m_machine_info{nullptr};
|
|
std::shared_ptr<BBLStatusBarBind> m_status_bar;
|
|
std::unique_ptr<Worker> m_worker;
|
|
|
|
public:
|
|
BindMachineDialog(Plater *plater = nullptr);
|
|
~BindMachineDialog();
|
|
|
|
void show_bind_failed_info(bool show, int code = 0, wxString description = wxEmptyString, wxString extra = wxEmptyString);
|
|
void on_cancel(wxCommandEvent& event);
|
|
void on_bind_fail(wxCommandEvent &event);
|
|
void on_update_message(wxCommandEvent &event);
|
|
void on_bind_success(wxCommandEvent &event);
|
|
void on_bind_printer(wxCommandEvent &event);
|
|
void on_dpi_changed(const wxRect &suggested_rect) override;
|
|
void update_machine_info(MachineObject *info);
|
|
void on_show(wxShowEvent &event);
|
|
void on_close(wxCloseEvent& event);
|
|
void on_destroy();
|
|
wxString get_print_error(wxString str);
|
|
};
|
|
|
|
class UnBindMachineDialog : public DPIDialog
|
|
{
|
|
protected:
|
|
wxStaticText * m_printer_name;
|
|
wxStaticText * m_user_name;
|
|
wxStaticText *m_status_text;
|
|
Button * m_button_unbind;
|
|
Button * m_button_cancel;
|
|
MachineObject *m_machine_info{nullptr};
|
|
wxStaticBitmap *m_avatar;
|
|
wxStaticBitmap *m_printer_img;
|
|
std::shared_ptr<int> m_tocken;
|
|
|
|
public:
|
|
UnBindMachineDialog(Plater *plater = nullptr);
|
|
~UnBindMachineDialog();
|
|
|
|
void on_cancel(wxCommandEvent &event);
|
|
void on_unbind_printer(wxCommandEvent &event);
|
|
void on_dpi_changed(const wxRect &suggested_rect) override;
|
|
void update_machine_info(MachineObject *info) { m_machine_info = info; };
|
|
void on_show(wxShowEvent &event);
|
|
};
|
|
|
|
}} // namespace Slic3r::GUI
|
|
|
|
#endif /* slic3r_BindDialog_hpp_ */
|