mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Notice dialog when opening any link outside PrusaSlicer
This commit is contained in:
		
							parent
							
								
									ca098d5763
								
							
						
					
					
						commit
						e6bae06557
					
				
					 6 changed files with 27 additions and 10 deletions
				
			
		|  | @ -195,7 +195,7 @@ void CopyrightsDialog::on_dpi_changed(const wxRect &suggested_rect) | |||
| 
 | ||||
| void CopyrightsDialog::onLinkClicked(wxHtmlLinkEvent &event) | ||||
| { | ||||
|     wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref()); | ||||
|     wxGetApp().open_browser_with_warning_dialog(event.GetLinkInfo().GetHref()); | ||||
|     event.Skip(false); | ||||
| } | ||||
| 
 | ||||
|  | @ -344,7 +344,7 @@ void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) | |||
| 
 | ||||
| void AboutDialog::onLinkClicked(wxHtmlLinkEvent &event) | ||||
| { | ||||
|     wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref()); | ||||
|     wxGetApp().open_browser_with_warning_dialog(event.GetLinkInfo().GetHref()); | ||||
|     event.Skip(false); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -2327,7 +2327,7 @@ wxString GUI_App::current_language_code_safe() const | |||
| 
 | ||||
| void GUI_App::open_web_page_localized(const std::string &http_address) | ||||
| { | ||||
|     wxLaunchDefaultBrowser(http_address + "&lng=" + this->current_language_code_safe()); | ||||
|     open_browser_with_warning_dialog(http_address + "&lng=" + this->current_language_code_safe()); | ||||
| } | ||||
| 
 | ||||
| bool GUI_App::run_wizard(ConfigWizard::RunReason reason, ConfigWizard::StartPage start_page) | ||||
|  | @ -2525,6 +2525,23 @@ void GUI_App::check_updates(const bool verbose) | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| bool GUI_App::open_browser_with_warning_dialog(const wxString& url, int flags/* = 0*/) | ||||
| { | ||||
|     bool launch = true; | ||||
| 
 | ||||
|     if (get_app_config()->get("suppress_hyperlinks").empty()) { | ||||
|         wxRichMessageDialog dialog(nullptr, _L("Should we open this hyperlink in your default browser?"), _L("PrusaSlicer: Open hyperlink"), wxICON_QUESTION | wxYES_NO); | ||||
|         dialog.ShowCheckBox(_L("Remember my choice")); | ||||
|         int answer = dialog.ShowModal(); | ||||
|         launch = answer == wxID_YES; | ||||
|         get_app_config()->set("suppress_hyperlinks", dialog.IsCheckBoxChecked() ? (answer == wxID_NO ? "1" : "0") : ""); | ||||
|     } | ||||
|     if (launch) | ||||
|         launch = get_app_config()->get("suppress_hyperlinks") != "1"; | ||||
| 
 | ||||
|     return  launch && wxLaunchDefaultBrowser(url, flags); | ||||
| } | ||||
| 
 | ||||
| // static method accepting a wxWindow object as first parameter
 | ||||
| // void warning_catcher{
 | ||||
| //     my($self, $message_dialog) = @_;
 | ||||
|  |  | |||
|  | @ -261,7 +261,8 @@ public: | |||
|     void            open_preferences(size_t open_on_tab = 0); | ||||
| 
 | ||||
|     virtual bool OnExceptionInMainLoop() override; | ||||
| 
 | ||||
|     // Calls wxLaunchDefaultBrowser if user confirms in dialog.
 | ||||
|     bool            open_browser_with_warning_dialog(const wxString& url, int flags = 0); | ||||
| #ifdef __APPLE__ | ||||
|     void            OSXStoreOpenFiles(const wxArrayString &files) override; | ||||
|     // wxWidgets override to get an event on open files.
 | ||||
|  |  | |||
|  | @ -236,8 +236,7 @@ bool tags_check(const std::string& disabled_tags, const std::string& enabled_tag | |||
| } | ||||
| void launch_browser_if_allowed(const std::string& url) | ||||
| { | ||||
| 	if (wxGetApp().app_config->get("suppress_hyperlinks") != "1") | ||||
| 		wxLaunchDefaultBrowser(url); | ||||
| 	wxGetApp().open_browser_with_warning_dialog(url); | ||||
| } | ||||
| } //namespace
 | ||||
| HintDatabase::~HintDatabase() | ||||
|  |  | |||
|  | @ -1057,7 +1057,7 @@ static wxMenu* generate_help_menu() | |||
|     append_menu_item(helpMenu, wxID_ANY, _L("Prusa 3D &Drivers"), _L("Open the Prusa3D drivers download page in your browser"), | ||||
|         [](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/downloads"); }); | ||||
|     append_menu_item(helpMenu, wxID_ANY, _L("Software &Releases"), _L("Open the software releases page in your browser"), | ||||
|         [](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); }); | ||||
|         [](wxCommandEvent&) { wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/PrusaSlicer/releases"); }); | ||||
| //#        my $versioncheck = $self->_append_menu_item($helpMenu, "Check for &Updates...", "Check for new Slic3r versions", sub{
 | ||||
| //#            wxTheApp->check_version(1);
 | ||||
| //#        });
 | ||||
|  | @ -1067,14 +1067,14 @@ static wxMenu* generate_help_menu() | |||
|         [](wxCommandEvent&) { wxGetApp().open_web_page_localized("https://www.prusa3d.com/slicerweb"); }); | ||||
| //        append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("%s &Manual"), SLIC3R_APP_NAME),
 | ||||
| //                                             wxString::Format(_L("Open the %s manual in your browser"), SLIC3R_APP_NAME),
 | ||||
| //            [this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://manual.slic3r.org/"); });
 | ||||
| //            [this](wxCommandEvent&) { wxGetApp().open_browser_with_warning_dialog("http://manual.slic3r.org/"); });
 | ||||
|     helpMenu->AppendSeparator(); | ||||
|     append_menu_item(helpMenu, wxID_ANY, _L("System &Info"), _L("Show system information"), | ||||
|         [](wxCommandEvent&) { wxGetApp().system_info(); }); | ||||
|     append_menu_item(helpMenu, wxID_ANY, _L("Show &Configuration Folder"), _L("Show user configuration folder (datadir)"), | ||||
|         [](wxCommandEvent&) { Slic3r::GUI::desktop_open_datadir_folder(); }); | ||||
|     append_menu_item(helpMenu, wxID_ANY, _L("Report an I&ssue"), wxString::Format(_L("Report an issue on %s"), SLIC3R_APP_NAME), | ||||
|         [](wxCommandEvent&) { wxLaunchDefaultBrowser("https://github.com/prusa3d/slic3r/issues/new"); }); | ||||
|         [](wxCommandEvent&) { wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/slic3r/issues/new"); }); | ||||
|     if (wxGetApp().is_editor()) | ||||
|         append_menu_item(helpMenu, wxID_ANY, wxString::Format(_L("&About %s"), SLIC3R_APP_NAME), _L("Show about dialog"), | ||||
|             [](wxCommandEvent&) { Slic3r::GUI::about(); }); | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ const NotificationManager::NotificationData NotificationManager::basic_notificat | |||
| 		} | ||||
| 	}, | ||||
| 	{NotificationType::NewAppAvailable, NotificationLevel::ImportantNotification, 20,  _u8L("New version is available."),  _u8L("See Releases page."), [](wxEvtHandler* evnthndlr) { | ||||
| 		wxLaunchDefaultBrowser("https://github.com/prusa3d/PrusaSlicer/releases"); return true; }}, | ||||
| 		wxGetApp().open_browser_with_warning_dialog("https://github.com/prusa3d/PrusaSlicer/releases"); return true; }}, | ||||
| 	{NotificationType::EmptyColorChangeCode, NotificationLevel::RegularNotification, 10, | ||||
| 		_u8L("You have just added a G-code for color change, but its value is empty.\n" | ||||
| 			 "To export the G-code correctly, check the \"Color Change G-code\" in \"Printer Settings > Custom G-code\"") }, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 David Kocik
						David Kocik