mirror of
https://github.com/codex-storage/deluge.git
synced 2025-01-11 20:14:13 +00:00
[Console] Fix cmdline output and tests
This commit is contained in:
parent
ae4449642c
commit
8d90ae5ffb
@ -20,7 +20,7 @@ from twisted.internet import defer
|
||||
import deluge
|
||||
import deluge.component as component
|
||||
import deluge.ui.web.server
|
||||
from deluge.common import get_localhost_auth, utf8_encode_structure, windows_check
|
||||
from deluge.common import get_localhost_auth, utf8_encode_structure, windows_check, PY2
|
||||
from deluge.ui import ui_entry
|
||||
from deluge.ui.web.server import DelugeWeb
|
||||
|
||||
@ -53,7 +53,10 @@ class StringFileDescriptor(object):
|
||||
|
||||
def write(self, *data, **kwargs):
|
||||
# io.StringIO requires unicode strings.
|
||||
print(unicode(*data), file=self.out, end='')
|
||||
data_string = str(*data)
|
||||
if PY2:
|
||||
data_string = data_string.decode()
|
||||
print(data_string, file=self.out, end='')
|
||||
|
||||
def flush(self):
|
||||
self.out.flush()
|
||||
|
@ -438,7 +438,7 @@ Please use commands from the command line, e.g.:\n
|
||||
component.get('CmdLine').add_line(s, False)
|
||||
self.events.append(s)
|
||||
else:
|
||||
print(colors.strip_colors(s.encode('utf8')))
|
||||
print(colors.strip_colors(s))
|
||||
|
||||
def write_event(self, s):
|
||||
if self.interactive:
|
||||
@ -449,7 +449,7 @@ Please use commands from the command line, e.g.:\n
|
||||
component.get('CmdLine').add_line(s, False)
|
||||
self.events.append(s)
|
||||
else:
|
||||
print(colors.strip_colors(s.encode('utf8')))
|
||||
print(colors.strip_colors(s))
|
||||
|
||||
def _migrate_config_1_to_2(self, config):
|
||||
"""Create better structure by moving most settings out of dict root
|
||||
|
@ -73,6 +73,10 @@ type_color = {
|
||||
dict: '{!white,black,bold!}',
|
||||
}
|
||||
|
||||
tab_char = '\t'
|
||||
color_tag_start = '{!'
|
||||
color_tag_end = '!}'
|
||||
|
||||
|
||||
def get_color_pair(fg, bg):
|
||||
return color_pairs[(fg, bg)]
|
||||
@ -108,14 +112,20 @@ class BadColorString(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def check_tag_count(string):
|
||||
"""Raise BadColorString if color tag open/close not equal."""
|
||||
if string.count(color_tag_start) != string.count(color_tag_end):
|
||||
raise BadColorString('Number of {! is not equal to number of !}')
|
||||
|
||||
|
||||
def replace_tabs(line):
|
||||
"""
|
||||
Returns a string with tabs replaced with spaces.
|
||||
|
||||
"""
|
||||
for i in range(line.count('\t')):
|
||||
tab_length = 8 - (len(line[:line.find('\t')]) % 8)
|
||||
line = line.replace('\t', ' ' * tab_length, 1)
|
||||
for i in range(line.count(tab_char)):
|
||||
tab_length = 8 - (len(line[:line.find(tab_char)]) % 8)
|
||||
line = line.replace(tab_char, b' ' * tab_length, 1)
|
||||
return line
|
||||
|
||||
|
||||
@ -124,9 +134,13 @@ def strip_colors(line):
|
||||
Returns a string with the color formatting removed.
|
||||
|
||||
"""
|
||||
check_tag_count(line)
|
||||
|
||||
# Remove all the color tags
|
||||
while line.find('{!') != -1:
|
||||
line = line[:line.find('{!')] + line[line.find('!}') + 2:]
|
||||
while line.find(color_tag_start) != -1:
|
||||
tag_start = line.find(color_tag_start)
|
||||
tag_end = line.find(color_tag_end) + 2
|
||||
line = line[:tag_start] + line[tag_end:]
|
||||
|
||||
return line
|
||||
|
||||
@ -136,9 +150,6 @@ def get_line_length(line):
|
||||
Returns the string length without the color formatting.
|
||||
|
||||
"""
|
||||
if line.count('{!') != line.count('!}'):
|
||||
raise BadColorString('Number of {! is not equal to number of !}')
|
||||
|
||||
# Remove all the color tags
|
||||
line = strip_colors(line)
|
||||
|
||||
@ -152,9 +163,6 @@ def get_line_width(line):
|
||||
Get width of string considering double width characters
|
||||
|
||||
"""
|
||||
if line.count('{!') != line.count('!}'):
|
||||
raise BadColorString('Number of {! is not equal to number of !}')
|
||||
|
||||
# Remove all the color tags
|
||||
line = strip_colors(line)
|
||||
|
||||
@ -171,18 +179,17 @@ def parse_color_string(s, encoding='UTF-8'):
|
||||
:param encoding: the encoding to use on output
|
||||
|
||||
"""
|
||||
if s.count('{!') != s.count('!}'):
|
||||
raise BadColorString('Number of {! is not equal to number of !}')
|
||||
check_tag_count(s)
|
||||
|
||||
ret = []
|
||||
last_color_attr = None
|
||||
# Keep track of where the strings
|
||||
while s.find('{!') != -1:
|
||||
begin = s.find('{!')
|
||||
while s.find(color_tag_start) != -1:
|
||||
begin = s.find(color_tag_start)
|
||||
if begin > 0:
|
||||
ret.append((curses.color_pair(color_pairs[(schemes['input'][0], schemes['input'][1])]), s[:begin]))
|
||||
|
||||
end = s.find('!}')
|
||||
end = s.find(color_tag_end)
|
||||
if end == -1:
|
||||
raise BadColorString('Missing closing "!}"')
|
||||
|
||||
@ -258,7 +265,7 @@ def parse_color_string(s, encoding='UTF-8'):
|
||||
last_color_attr = color_pair
|
||||
# We need to find the text now, so lets try to find another {! and if
|
||||
# there isn't one, then it's the rest of the string
|
||||
next_begin = s.find('{!', end)
|
||||
next_begin = s.find(color_tag_start, end)
|
||||
|
||||
if next_begin == -1:
|
||||
ret.append((color_pair, replace_tabs(s[end + 2:])))
|
||||
|
Loading…
x
Reference in New Issue
Block a user