clickable links on chatlogs
This commit is contained in:
parent
9eeb7897f1
commit
92085020b8
36
gameview.py
36
gameview.py
@ -1,4 +1,4 @@
|
||||
import thread, time, os, buttons, urllib, charselect, ini, random
|
||||
import thread, time, os, buttons, urllib, charselect, ini, random, re
|
||||
from os.path import exists, basename
|
||||
from ConfigParserEdit import ConfigParser
|
||||
from constants import *
|
||||
@ -68,6 +68,8 @@ SCALING_SMOOTH = 2
|
||||
|
||||
DOWNLOAD_BLACKLIST = []
|
||||
|
||||
URL_REGEX = r"https?://(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)"
|
||||
|
||||
VIEWPORT_W = 256*2
|
||||
VIEWPORT_H = 192*2
|
||||
|
||||
@ -173,6 +175,9 @@ class ChatLogs(QtGui.QTextEdit):
|
||||
self.type = logtype
|
||||
self.savelog = ini.read_ini_bool("AO2XP.ini", "General", "save logs")
|
||||
self.combinelog = ini.read_ini_bool("AO2XP.ini", "General", "combined logs")
|
||||
self.setMouseTracking(True)
|
||||
self.anchor = None
|
||||
|
||||
if not exists("chatlogs"):
|
||||
os.mkdir("chatlogs")
|
||||
|
||||
@ -189,14 +194,27 @@ class ChatLogs(QtGui.QTextEdit):
|
||||
else:
|
||||
self.logfile = open("chatlogs/OOC_%d%.2d%.2d_on_%.2d.%.2d.%.2d.txt" % (currtime[0], currtime[1], currtime[2], currtime[3], currtime[4], currtime[5]), "w")
|
||||
else:
|
||||
self.logfile = None
|
||||
self.logfile = None
|
||||
|
||||
def mouseMoveEvent(self, e):
|
||||
super(ChatLogs, self).mouseMoveEvent(e)
|
||||
self.anchor = self.anchorAt(e.pos())
|
||||
if self.anchor:
|
||||
QtGui.QApplication.setOverrideCursor(QtCore.Qt.PointingHandCursor)
|
||||
else:
|
||||
QtGui.QApplication.setOverrideCursor(QtCore.Qt.ArrowCursor)
|
||||
|
||||
def mouseReleaseEvent(self, e):
|
||||
if self.anchor:
|
||||
QtGui.QDesktopServices.openUrl(QtCore.QUrl(self.anchor))
|
||||
QtGui.QApplication.setOverrideCursor(QtCore.Qt.ArrowCursor)
|
||||
self.anchor = None
|
||||
|
||||
def __del__(self):
|
||||
if self.savelog:
|
||||
self.logfile.close()
|
||||
|
||||
def append(self, text):
|
||||
super(ChatLogs, self).append(text)
|
||||
if self.savelog:
|
||||
if isinstance(text, str) or isinstance(text, unicode):
|
||||
if self.combinelog and not "Log started" in text:
|
||||
@ -215,6 +233,12 @@ class ChatLogs(QtGui.QTextEdit):
|
||||
else:
|
||||
self.logfile.write(text.toUtf8()+"\n")
|
||||
|
||||
if "http" in text:
|
||||
text = unicode(text) # Get rid of QStrings
|
||||
text = re.sub(URL_REGEX, r'<a href="\g<0>">\g<0></a>', text)
|
||||
|
||||
super(ChatLogs, self).append(text)
|
||||
|
||||
class AOCharMovie(QtGui.QLabel):
|
||||
done = QtCore.pyqtSignal()
|
||||
use_pillow = 0
|
||||
@ -2174,6 +2198,7 @@ class gui(QtGui.QWidget):
|
||||
if f_char.lower() != self.charlist[f_char_id][0].lower():
|
||||
logcharname = self.charlist[f_char_id][0] + ' (' + f_char.decode("utf-8") + ')'
|
||||
|
||||
chatmsg = self.m_chatmessage[CHATMSG]
|
||||
|
||||
if self.m_chatmessage[SHOWNAME] and self.m_chatmessage[SHOWNAME].lower() != f_char.lower():
|
||||
try:
|
||||
@ -2182,7 +2207,7 @@ class gui(QtGui.QWidget):
|
||||
logcharname += " (???)"
|
||||
|
||||
if evidence == -1:
|
||||
self.icLog.append('[%d:%.2d] %s: %s' % (t[3], t[4], logcharname, self.m_chatmessage[CHATMSG]))
|
||||
self.icLog.append('[%d:%.2d] %s: %s' % (t[3], t[4], logcharname, chatmsg))
|
||||
else:
|
||||
eviname = '(NULL) %d' % evidence
|
||||
try:
|
||||
@ -2190,7 +2215,7 @@ class gui(QtGui.QWidget):
|
||||
except:
|
||||
pass
|
||||
|
||||
self.icLog.append('[%d:%.2d] %s: %s\n%s presented an evidence: %s' % (t[3], t[4], logcharname, self.m_chatmessage[CHATMSG], f_char, eviname))
|
||||
self.icLog.append('[%d:%.2d] %s: %s\n%s presented an evidence: %s' % (t[3], t[4], logcharname, chatmsg, f_char, eviname))
|
||||
|
||||
self.is_additive = (self.m_chatmessage[ADDITIVE] == "1")
|
||||
|
||||
@ -3489,7 +3514,6 @@ class TCP_Thread(QtCore.QThread):
|
||||
elif header == 'CT':
|
||||
name = decode_ao_str(network[1].decode('utf-8'))
|
||||
chatmsg = decode_ao_str(network[2].decode('utf-8').replace("\n", "<br />"))
|
||||
#self.parent.ooclog.append('<b>%s:</b> %s' % (name, chatmsg))
|
||||
self.OOC_Log.emit("<b>%s:</b> %s" % (name, chatmsg))
|
||||
|
||||
elif header == 'PV':
|
||||
|
Loading…
Reference in New Issue
Block a user