Make links clickable in installer messages

This commit is contained in:
Mathieu Comandon 2014-01-24 19:59:40 +01:00
parent 3da3d1ac1f
commit 817fb2eaaa
3 changed files with 32 additions and 2 deletions

View file

@ -16,7 +16,7 @@ from lutris import pga
from lutris.util import extract
from lutris.util.jobs import async_call
from lutris.util.log import logger
from lutris.util.strings import slugify
from lutris.util.strings import slugify, add_url_tags
from lutris.util.system import calculate_md5, substitute, merge_folders
from lutris.runners import winesteam, steam
@ -697,7 +697,7 @@ class InstallerDialog(Gtk.Window):
def set_message(self, message):
label = Gtk.Label()
label.set_markup('<b>%s</b>' % message)
label.set_markup('<b>%s</b>' % add_url_tags(message))
label.set_alignment(0, 0)
label.show()
self.widget_box.pack_start(label, False, False, 10)

View file

@ -12,3 +12,13 @@ def slugify(value):
'ignore')
value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
return re.sub('[-\s]+', '-', value)
def add_url_tags(text):
""" Surrounds URL with <a> tags """
return re.sub(
r'(http[s]?://('
r'?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)',
r'<a href="\1">\1</a>',
text
)

View file

@ -1,6 +1,7 @@
from unittest import TestCase
from lutris.util import system
from lutris.util import steam
from lutris.util import strings
class TestFileUtils(TestCase):
@ -55,3 +56,22 @@ class TestSteamUtils(TestCase):
}"""
vdf_data = steam.to_vdf(dict_data)
self.assertEqual(vdf_data.strip(), expected_vdf.strip())
class TestStringUtils(TestCase):
def test_add_url_tags(self):
self.assertEqual(strings.add_url_tags("foo bar"), "foo bar")
self.assertEqual(
strings.add_url_tags("foo http://lutris.net bar"),
"foo <a href=\"http://lutris.net\">http://lutris.net</a> bar"
)
self.assertEqual(
strings.add_url_tags("http://lutris.net"),
"<a href=\"http://lutris.net\">http://lutris.net</a>"
)
text = "foo http://lutris.net bar http://strycore.com"
expected = (
'foo <a href="http://lutris.net">http://lutris.net</a> '
'bar <a href="http://strycore.com">http://strycore.com</a>'
)
self.assertEqual(strings.add_url_tags(text), expected)