This commit is contained in:
Stephen Dranger 2011-02-18 20:02:54 -06:00
parent e0bfd64184
commit fececa45ba
19 changed files with 44 additions and 34 deletions

BIN
convo.pyc

Binary file not shown.

Binary file not shown.

Binary file not shown.

10
irc.py
View file

@ -24,13 +24,15 @@ class PesterIRC(QtCore.QObject):
self.cli.command_handler.mainwindow = self.mainwindow self.cli.command_handler.mainwindow = self.mainwindow
self.conn = self.cli.connect() self.conn = self.cli.connect()
self.brokenConnection = False self.brokenConnection = False
self.connectedIRC = False self.registeredIRC = False
def closeConnection(self): def closeConnection(self):
self.cli.close() if self.cli:
self.cli.close()
self.cli = None
def setConnectionBroken(self, broken=True): def setConnectionBroken(self, broken=True):
self.brokenConnection = True self.brokenConnection = True
def setConnected(self): def setConnected(self):
self.connectedIRC = True self.registeredIRC = True
self.connected.emit() self.connected.emit()
@QtCore.pyqtSlot(PesterProfile) @QtCore.pyqtSlot(PesterProfile)
def getMood(self, *chums): def getMood(self, *chums):
@ -166,7 +168,7 @@ class PesterIRC(QtCore.QObject):
self.setConnectionBroken() self.setConnectionBroken()
def updateIRC(self): def updateIRC(self):
self.conn.next() return self.conn.next()
moodUpdated = QtCore.pyqtSignal(QtCore.QString, Mood) moodUpdated = QtCore.pyqtSignal(QtCore.QString, Mood)
colorUpdated = QtCore.pyqtSignal(QtCore.QString, QtGui.QColor) colorUpdated = QtCore.pyqtSignal(QtCore.QString, QtGui.QColor)

BIN
irc.pyc

Binary file not shown.

BIN
memos.pyc

Binary file not shown.

BIN
menus.pyc

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -168,8 +168,7 @@ class IRCClient:
try: try:
buffer += self.socket.recv(1024) buffer += self.socket.recv(1024)
except socket.timeout, e: except socket.timeout, e:
yield True raise e
continue
except socket.error, e: except socket.error, e:
try: # a little dance of compatibility to get the errno try: # a little dance of compatibility to get the errno
errno = e.errno errno = e.errno
@ -195,6 +194,8 @@ class IRCClient:
pass pass
yield True yield True
except socket.timeout, se:
raise se
except socket.error, se: except socket.error, se:
if self.socket: if self.socket:
logging.info('closing socket') logging.info('closing socket')
@ -206,7 +207,9 @@ class IRCClient:
logging.info('closing socket') logging.info('closing socket')
self.socket.close() self.socket.close()
def close(self): def close(self):
self.socket.close() if self.socket:
logging.info('closing socket')
self.socket.close()
class IRCApp: class IRCApp:
""" This class manages several IRCClient instances without the use of threads. """ This class manages several IRCClient instances without the use of threads.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -168,7 +168,7 @@ class pesterTheme(dict):
v = dict.__getitem__(self, keys.pop(0)) v = dict.__getitem__(self, keys.pop(0))
for k in keys: for k in keys:
v = v[k] v = v[k]
return v return default if v is None else v
except KeyError: except KeyError:
if hasattr(self, 'inheritedTheme'): if hasattr(self, 'inheritedTheme'):
return self.inheritedTheme.get(key, default) return self.inheritedTheme.get(key, default)
@ -181,7 +181,7 @@ class pesterTheme(dict):
v = dict.__getitem__(self, keys.pop(0)) v = dict.__getitem__(self, keys.pop(0))
for k in keys: for k in keys:
v = v[k] v = v[k]
return True return False if v is None else True
except KeyError: except KeyError:
if hasattr(self, 'inheritedTheme'): if hasattr(self, 'inheritedTheme'):
return self.inheritedTheme.has_key(key) return self.inheritedTheme.has_key(key)
@ -1667,22 +1667,33 @@ class IRCThread(QtCore.QThread):
def run(self): def run(self):
irc = self.irc irc = self.irc
irc.IRCConnect() irc.IRCConnect()
while 1: timer = QtCore.QTimer(self)
if irc.brokenConnection: self.connect(timer, QtCore.SIGNAL('timeout()'),
irc.brokenConnection = False self, QtCore.SLOT('updateIRC()'))
self.restartIRC.emit() timer.start()
self.exec_()
@QtCore.pyqtSlot()
def updateIRC(self):
irc = self.irc
if irc.brokenConnection:
irc.brokenConnection = False
self.restartIRC.emit()
irc.closeConnection()
irc.IRCConnect()
try:
res = irc.updateIRC()
except socket.timeout, se:
if not irc.registeredIRC:
irc.closeConnection() irc.closeConnection()
irc.IRCConnect() self.failedIRC.emit("Connection timed out")
try: except socket.error, se:
irc.updateIRC() if irc.registeredIRC:
except socket.error, se: irc.setConnectionBroken()
if irc.connectedIRC: else:
irc.setConnectionBroken() irc.closeConnection()
else: self.failedIRC.emit(str(se))
irc.closeConnection() except StopIteration:
self.failedIRC.emit(str(se)) pass
except StopIteration:
pass
restartIRC = QtCore.pyqtSignal() restartIRC = QtCore.pyqtSignal()
failedIRC = QtCore.pyqtSignal(QtCore.QString) failedIRC = QtCore.pyqtSignal(QtCore.QString)
@ -1868,14 +1879,8 @@ class MainProgram(QtCore.QObject):
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def tryAgain(self): def tryAgain(self):
self.ircapp.irc.closeConnection() self.ircapp.quit()
self.ircapp.irc.IRCConnect() print "Quit?"
labeltxt = self.widget.loadingscreen.loadinglabel.text()
if labeltxt != "R3CONN3CT1NG":
self.widget.loadingscreen.loadinglabel.setText("R3CONN3CTING")
elif labeltxt[0:12] == "R3CONN3CT1NG":
i = int(labeltxt[13:])
self.widget.loadingscreen.loadinglabel.setText("R3CONN3CTING %d" (i+1))
@QtCore.pyqtSlot() @QtCore.pyqtSlot()
def restartIRC(self): def restartIRC(self):

View file

@ -1 +1 @@
{"color": "#ff00ff", "theme": "pesterchum", "quirks": [], "handle": "ghostDunk"} {"color": "#ff00ff", "theme": "pesterchum2.5", "quirks": [], "handle": "ghostDunk"}

View file

@ -47,7 +47,7 @@
}, },
"moodlabel": { "style": "font:bold;font-family:'Courier';color:black;", "moodlabel": { "style": "font:bold;font-family:'Courier';color:black;",
"loc": [12, 466], "loc": [12, 466],
"text": "MOODS:" "text": "MOOD:"
}, },
"moods": [ "moods": [
{ "style": "text-align:left; background:#ffff00;border:2px solid #c48a00;color: black; font-family:'Courier'; font:bold; padding-left:3px;", { "style": "text-align:left; background:#ffff00;border:2px solid #c48a00;color: black; font-family:'Courier'; font:bold; padding-left:3px;",