Commit af73b413 authored by Link Mauve's avatar Link Mauve

Check whether curses.A_ITALIC exists, fixes a traceback on <em/> on Python < 3.7.

parent 9844f288
......@@ -445,7 +445,7 @@ def to_curses_attr(color_tuple):
curses_pair = curses_pair | curses.A_BOLD
if 'u' in additional_val:
curses_pair = curses_pair | curses.A_UNDERLINE
if 'i' in additional_val:
if 'i' in additional_val and hasattr(curses, 'A_ITALIC'):
curses_pair = curses_pair | curses.A_ITALIC
if 'a' in additional_val:
curses_pair = curses_pair | curses.A_BLINK
......
......@@ -100,6 +100,7 @@ class Win(object):
if y is not None and x is not None:
self.move(y, x)
next_attr_char = text.find(FORMAT_CHAR)
has_italic = hasattr(curses, 'A_ITALIC')
while next_attr_char != -1 and text:
if next_attr_char + 1 < len(text):
attr_char = text[next_attr_char+1].lower()
......@@ -113,7 +114,7 @@ class Win(object):
self._win.attron(curses.A_UNDERLINE)
elif attr_char == 'b':
self._win.attron(curses.A_BOLD)
elif attr_char == 'i':
elif attr_char == 'i' and has_italic:
self._win.attron(curses.A_ITALIC)
if (attr_char in string.digits or attr_char == '-') and attr_char != '':
color_str = text[next_attr_char+1:text.find('}', next_attr_char)]
......@@ -127,7 +128,7 @@ class Win(object):
self._win.attron(curses.A_UNDERLINE)
elif char == 'b':
self._win.attron(curses.A_BOLD)
elif char == 'i':
elif char == 'i' and has_italic:
self._win.attron(curses.A_ITALIC)
else:
# this will reset previous bold/uderline sequences if any was used
......
......@@ -467,6 +467,7 @@ class Input(Win):
if y is not None and x is not None:
self.move(y, x)
format_char = find_first_format_char(text, chars)
has_italic = hasattr(curses, 'A_ITALIC')
while format_char != -1:
if text[format_char] == '\n':
attr_char = '|'
......@@ -482,7 +483,7 @@ class Input(Win):
self._win.attron(curses.A_UNDERLINE)
elif attr_char == 'b':
self._win.attron(curses.A_BOLD)
elif attr_char == 'i':
elif attr_char == 'i' and has_italic:
self._win.attron(curses.A_ITALIC)
elif attr_char in string.digits and attr_char != '':
self._win.attron(to_curses_attr((int(attr_char), -1)))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment