mirror of
https://github.com/ammaraskar/pyCraft.git
synced 2025-01-22 15:41:29 +01:00
CLI chat output now uses ANSI escape codes to show colours and styles in chat msgs
This commit is contained in:
parent
ea570d8eef
commit
9a715a72b8
@ -7,6 +7,7 @@ import hashlib
|
|||||||
import string
|
import string
|
||||||
import Utils
|
import Utils
|
||||||
import sys
|
import sys
|
||||||
|
import re
|
||||||
from networking import PacketSenderManager
|
from networking import PacketSenderManager
|
||||||
from Crypto.Random import _UserFriendlyRNG
|
from Crypto.Random import _UserFriendlyRNG
|
||||||
from Crypto.Util import asn1
|
from Crypto.Util import asn1
|
||||||
@ -22,6 +23,37 @@ except ImportError:
|
|||||||
|
|
||||||
EntityID = 0
|
EntityID = 0
|
||||||
|
|
||||||
|
def translate_escape(m):
|
||||||
|
c = m.group(1).lower()
|
||||||
|
|
||||||
|
if c == "0": return "\x1b[30m\x1b[21m" # black
|
||||||
|
elif c == "1": return "\x1b[34m\x1b[21m" # dark blue
|
||||||
|
elif c == "2": return "\x1b[32m\x1b[21m" # dark green
|
||||||
|
elif c == "3": return "\x1b[36m\x1b[21m" # dark cyan
|
||||||
|
elif c == "4": return "\x1b[31m\x1b[21m" # dark red
|
||||||
|
elif c == "5": return "\x1b[35m\x1b[21m" # purple
|
||||||
|
elif c == "6": return "\x1b[33m\x1b[21m" # gold
|
||||||
|
elif c == "7": return "\x1b[37m\x1b[21m" # gray
|
||||||
|
elif c == "8": return "\x1b[30m\x1b[1m" # dark gray
|
||||||
|
elif c == "9": return "\x1b[34m\x1b[1m" # blue
|
||||||
|
elif c == "a": return "\x1b[32m\x1b[1m" # bright green
|
||||||
|
elif c == "b": return "\x1b[36m\x1b[1m" # cyan
|
||||||
|
elif c == "c": return "\x1b[31m\x1b[1m" # red
|
||||||
|
elif c == "d": return "\x1b[35m\x1b[1m" # pink
|
||||||
|
elif c == "e": return "\x1b[33m\x1b[1m" # yellow
|
||||||
|
elif c == "f": return "\x1b[37m\x1b[1m" # white
|
||||||
|
elif c == "k": return "\x1b[5m" # random
|
||||||
|
elif c == "l": return "\x1b[1m" # bold
|
||||||
|
elif c == "m": return "\x1b[9m" # strikethrough (escape code not widely supported)
|
||||||
|
elif c == "n": return "\x1b[4m" # underline
|
||||||
|
elif c == "o": return "\x1b[3m" # italic (escape code not widely supported)
|
||||||
|
elif c == "r": return "\x1b[0m" # reset
|
||||||
|
|
||||||
|
return ""
|
||||||
|
|
||||||
|
def translate_escapes(s):
|
||||||
|
return re.sub(ur"\xa7([0-9a-zA-Z])", translate_escape, s) + "\x1b[0m"
|
||||||
|
|
||||||
class ServerConnection(threading.Thread):
|
class ServerConnection(threading.Thread):
|
||||||
|
|
||||||
def __init__(self, window, username, password, sessionID, server, port):
|
def __init__(self, window, username, password, sessionID, server, port):
|
||||||
@ -221,7 +253,8 @@ class PacketListener(threading.Thread):
|
|||||||
elif(response == "\x03"):
|
elif(response == "\x03"):
|
||||||
message = PacketListenerManager.handle03(self.FileObject)
|
message = PacketListenerManager.handle03(self.FileObject)
|
||||||
if(self.connection.NoGUI):
|
if(self.connection.NoGUI):
|
||||||
filtered_string = filter(lambda x: x in string.printable, message)
|
# Add "\x1b" because it is essential for ANSI escapes emitted by translate_escapes
|
||||||
|
filtered_string = filter(lambda x: x in string.printable + "\x1b", translate_escapes(message))
|
||||||
#print message.replace(u'\xa7', '&')
|
#print message.replace(u'\xa7', '&')
|
||||||
print filtered_string
|
print filtered_string
|
||||||
elif(self.window):
|
elif(self.window):
|
||||||
|
Loading…
Reference in New Issue
Block a user