mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

(originally merged into a PR branch) * Make URL schemes dialog more ergonomic * add name to contributors list * Title Case * Tweak build instructions so Cursor picks them up * Use a warning icon for the URL scheme pop-up * Default to cancelling
71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
# Copyright: Ankitects Pty Ltd and contributors
|
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
from __future__ import annotations
|
|
|
|
from markdown import markdown
|
|
|
|
from aqt.qt import QMessageBox, Qt, QUrl
|
|
from aqt.utils import MessageBox, getText, openLink, tr
|
|
|
|
|
|
def show_url_schemes_dialog() -> None:
|
|
from aqt import mw
|
|
|
|
default = " ".join(mw.pm.allowed_url_schemes())
|
|
schemes, ok = getText(
|
|
prompt=tr.preferences_url_scheme_prompt(),
|
|
title=tr.preferences_url_schemes(),
|
|
default=default,
|
|
)
|
|
if ok:
|
|
mw.pm.set_allowed_url_schemes(schemes.split(" "))
|
|
mw.pm.save()
|
|
|
|
|
|
def is_supported_scheme(url: QUrl) -> bool:
|
|
from aqt import mw
|
|
|
|
scheme = url.scheme().lower()
|
|
allowed_schemes = mw.pm.allowed_url_schemes()
|
|
|
|
return scheme in allowed_schemes or scheme in ["http", "https"]
|
|
|
|
|
|
def always_allow_scheme(url: QUrl) -> None:
|
|
from aqt import mw
|
|
|
|
scheme = url.scheme().lower()
|
|
mw.pm.always_allow_scheme(scheme)
|
|
|
|
|
|
def open_url_if_supported_scheme(url: QUrl) -> None:
|
|
from aqt import mw
|
|
|
|
if is_supported_scheme(url):
|
|
openLink(url)
|
|
else:
|
|
|
|
def on_button(idx: int) -> None:
|
|
if idx == 0:
|
|
openLink(url)
|
|
elif idx == 1:
|
|
always_allow_scheme(url)
|
|
openLink(url)
|
|
|
|
msg = markdown(
|
|
tr.preferences_url_scheme_warning(link=url.toString(), scheme=url.scheme())
|
|
)
|
|
MessageBox(
|
|
msg,
|
|
buttons=[
|
|
tr.preferences_url_scheme_allow_once(),
|
|
tr.preferences_url_scheme_always_allow(),
|
|
(tr.actions_cancel(), QMessageBox.ButtonRole.RejectRole),
|
|
],
|
|
parent=mw,
|
|
callback=on_button,
|
|
textFormat=Qt.TextFormat.RichText,
|
|
default_button=2,
|
|
icon=QMessageBox.Icon.Warning,
|
|
)
|