Don't kill options menu when problem occurs saving settings. Log exception to error log
This commit is contained in:
parent
2799a66acb
commit
b0e9a1aaac
1 changed files with 208 additions and 204 deletions
412
pesterchum.py
412
pesterchum.py
|
@ -2728,211 +2728,215 @@ class PesterWindow(MovingWindow):
|
||||||
self.optionmenu = None
|
self.optionmenu = None
|
||||||
@QtCore.pyqtSlot()
|
@QtCore.pyqtSlot()
|
||||||
def updateOptions(self):
|
def updateOptions(self):
|
||||||
# tabs
|
try:
|
||||||
curtab = self.config.tabs()
|
# tabs
|
||||||
tabsetting = self.optionmenu.tabcheck.isChecked()
|
curtab = self.config.tabs()
|
||||||
if curtab and not tabsetting:
|
tabsetting = self.optionmenu.tabcheck.isChecked()
|
||||||
# split tabs into windows
|
if curtab and not tabsetting:
|
||||||
windows = []
|
# split tabs into windows
|
||||||
if self.tabconvo:
|
windows = []
|
||||||
windows = list(self.tabconvo.convos.values())
|
if self.tabconvo:
|
||||||
if self.tabmemo:
|
windows = list(self.tabconvo.convos.values())
|
||||||
windows += list(self.tabmemo.convos.values())
|
if self.tabmemo:
|
||||||
|
windows += list(self.tabmemo.convos.values())
|
||||||
|
|
||||||
for w in windows:
|
for w in windows:
|
||||||
w.setParent(None)
|
w.setParent(None)
|
||||||
w.show()
|
w.show()
|
||||||
w.raiseChat()
|
w.raiseChat()
|
||||||
if self.tabconvo:
|
if self.tabconvo:
|
||||||
self.tabconvo.closeSoft()
|
self.tabconvo.closeSoft()
|
||||||
if self.tabmemo:
|
if self.tabmemo:
|
||||||
self.tabmemo.closeSoft()
|
self.tabmemo.closeSoft()
|
||||||
# save options
|
# save options
|
||||||
self.config.set("tabs", tabsetting)
|
self.config.set("tabs", tabsetting)
|
||||||
elif tabsetting and not curtab:
|
elif tabsetting and not curtab:
|
||||||
# combine
|
# combine
|
||||||
self.createTabWindow()
|
self.createTabWindow()
|
||||||
newconvos = {}
|
newconvos = {}
|
||||||
for (h,c) in self.convos.iteritems():
|
for (h,c) in self.convos.iteritems():
|
||||||
c.setParent(self.tabconvo)
|
c.setParent(self.tabconvo)
|
||||||
self.tabconvo.addChat(c)
|
self.tabconvo.addChat(c)
|
||||||
self.tabconvo.show()
|
self.tabconvo.show()
|
||||||
newconvos[h] = c
|
newconvos[h] = c
|
||||||
self.convos = newconvos
|
self.convos = newconvos
|
||||||
newmemos = {}
|
newmemos = {}
|
||||||
self.createMemoTabWindow()
|
self.createMemoTabWindow()
|
||||||
for (h,m) in self.memos.iteritems():
|
for (h,m) in self.memos.iteritems():
|
||||||
m.setParent(self.tabmemo)
|
m.setParent(self.tabmemo)
|
||||||
self.tabmemo.addChat(m)
|
self.tabmemo.addChat(m)
|
||||||
self.tabmemo.show()
|
self.tabmemo.show()
|
||||||
newmemos[h] = m
|
newmemos[h] = m
|
||||||
self.memos = newmemos
|
self.memos = newmemos
|
||||||
# save options
|
# save options
|
||||||
self.config.set("tabs", tabsetting)
|
self.config.set("tabs", tabsetting)
|
||||||
# hidden chums
|
# hidden chums
|
||||||
chumsetting = self.optionmenu.hideOffline.isChecked()
|
chumsetting = self.optionmenu.hideOffline.isChecked()
|
||||||
curchum = self.config.hideOfflineChums()
|
curchum = self.config.hideOfflineChums()
|
||||||
if curchum and not chumsetting:
|
if curchum and not chumsetting:
|
||||||
self.chumList.showAllChums()
|
self.chumList.showAllChums()
|
||||||
elif chumsetting and not curchum:
|
elif chumsetting and not curchum:
|
||||||
self.chumList.hideOfflineChums()
|
self.chumList.hideOfflineChums()
|
||||||
self.config.set("hideOfflineChums", chumsetting)
|
self.config.set("hideOfflineChums", chumsetting)
|
||||||
# sorting method
|
# sorting method
|
||||||
sortsetting = self.optionmenu.sortBox.currentIndex()
|
sortsetting = self.optionmenu.sortBox.currentIndex()
|
||||||
cursort = self.config.sortMethod()
|
cursort = self.config.sortMethod()
|
||||||
self.config.set("sortMethod", sortsetting)
|
self.config.set("sortMethod", sortsetting)
|
||||||
if sortsetting != cursort:
|
if sortsetting != cursort:
|
||||||
self.chumList.sort()
|
self.chumList.sort()
|
||||||
# sound
|
# sound
|
||||||
soundsetting = self.optionmenu.soundcheck.isChecked()
|
soundsetting = self.optionmenu.soundcheck.isChecked()
|
||||||
self.config.set("soundon", soundsetting)
|
self.config.set("soundon", soundsetting)
|
||||||
chatsoundsetting = self.optionmenu.chatsoundcheck.isChecked()
|
chatsoundsetting = self.optionmenu.chatsoundcheck.isChecked()
|
||||||
curchatsound = self.config.chatSound()
|
curchatsound = self.config.chatSound()
|
||||||
if chatsoundsetting != curchatsound:
|
if chatsoundsetting != curchatsound:
|
||||||
self.config.set('chatSound', chatsoundsetting)
|
self.config.set('chatSound', chatsoundsetting)
|
||||||
memosoundsetting = self.optionmenu.memosoundcheck.isChecked()
|
memosoundsetting = self.optionmenu.memosoundcheck.isChecked()
|
||||||
curmemosound = self.config.memoSound()
|
curmemosound = self.config.memoSound()
|
||||||
if memosoundsetting != curmemosound:
|
if memosoundsetting != curmemosound:
|
||||||
self.config.set('memoSound', memosoundsetting)
|
self.config.set('memoSound', memosoundsetting)
|
||||||
memopingsetting = self.optionmenu.memopingcheck.isChecked()
|
memopingsetting = self.optionmenu.memopingcheck.isChecked()
|
||||||
curmemoping = self.config.memoPing()
|
curmemoping = self.config.memoPing()
|
||||||
if memopingsetting != curmemoping:
|
if memopingsetting != curmemoping:
|
||||||
self.config.set('pingSound', memopingsetting)
|
self.config.set('pingSound', memopingsetting)
|
||||||
namesoundsetting = self.optionmenu.namesoundcheck.isChecked()
|
namesoundsetting = self.optionmenu.namesoundcheck.isChecked()
|
||||||
curnamesound = self.config.nameSound()
|
curnamesound = self.config.nameSound()
|
||||||
if namesoundsetting != curnamesound:
|
if namesoundsetting != curnamesound:
|
||||||
self.config.set('nameSound', namesoundsetting)
|
self.config.set('nameSound', namesoundsetting)
|
||||||
volumesetting = self.optionmenu.volume.value()
|
volumesetting = self.optionmenu.volume.value()
|
||||||
curvolume = self.config.volume()
|
curvolume = self.config.volume()
|
||||||
if volumesetting != curvolume:
|
if volumesetting != curvolume:
|
||||||
self.config.set('volume', volumesetting)
|
self.config.set('volume', volumesetting)
|
||||||
self.setVolume(volumesetting)
|
self.setVolume(volumesetting)
|
||||||
# timestamps
|
# timestamps
|
||||||
timestampsetting = self.optionmenu.timestampcheck.isChecked()
|
timestampsetting = self.optionmenu.timestampcheck.isChecked()
|
||||||
self.config.set("showTimeStamps", timestampsetting)
|
self.config.set("showTimeStamps", timestampsetting)
|
||||||
timeformatsetting = unicode(self.optionmenu.timestampBox.currentText())
|
timeformatsetting = unicode(self.optionmenu.timestampBox.currentText())
|
||||||
if timeformatsetting == "12 hour":
|
if timeformatsetting == "12 hour":
|
||||||
self.config.set("time12Format", True)
|
self.config.set("time12Format", True)
|
||||||
else:
|
else:
|
||||||
self.config.set("time12Format", False)
|
self.config.set("time12Format", False)
|
||||||
secondssetting = self.optionmenu.secondscheck.isChecked()
|
secondssetting = self.optionmenu.secondscheck.isChecked()
|
||||||
self.config.set("showSeconds", secondssetting)
|
self.config.set("showSeconds", secondssetting)
|
||||||
# groups
|
# groups
|
||||||
#groupssetting = self.optionmenu.groupscheck.isChecked()
|
#groupssetting = self.optionmenu.groupscheck.isChecked()
|
||||||
#self.config.set("useGroups", groupssetting)
|
#self.config.set("useGroups", groupssetting)
|
||||||
emptygroupssetting = self.optionmenu.showemptycheck.isChecked()
|
emptygroupssetting = self.optionmenu.showemptycheck.isChecked()
|
||||||
curemptygroup = self.config.showEmptyGroups()
|
curemptygroup = self.config.showEmptyGroups()
|
||||||
if curemptygroup and not emptygroupssetting:
|
if curemptygroup and not emptygroupssetting:
|
||||||
self.chumList.hideEmptyGroups()
|
self.chumList.hideEmptyGroups()
|
||||||
elif emptygroupssetting and not curemptygroup:
|
elif emptygroupssetting and not curemptygroup:
|
||||||
self.chumList.showAllGroups()
|
self.chumList.showAllGroups()
|
||||||
self.config.set("emptyGroups", emptygroupssetting)
|
self.config.set("emptyGroups", emptygroupssetting)
|
||||||
# online numbers
|
# online numbers
|
||||||
onlinenumsetting = self.optionmenu.showonlinenumbers.isChecked()
|
onlinenumsetting = self.optionmenu.showonlinenumbers.isChecked()
|
||||||
curonlinenum = self.config.showOnlineNumbers()
|
curonlinenum = self.config.showOnlineNumbers()
|
||||||
if onlinenumsetting and not curonlinenum:
|
if onlinenumsetting and not curonlinenum:
|
||||||
self.chumList.showOnlineNumbers()
|
self.chumList.showOnlineNumbers()
|
||||||
elif curonlinenum and not onlinenumsetting:
|
elif curonlinenum and not onlinenumsetting:
|
||||||
self.chumList.hideOnlineNumbers()
|
self.chumList.hideOnlineNumbers()
|
||||||
self.config.set("onlineNumbers", onlinenumsetting)
|
self.config.set("onlineNumbers", onlinenumsetting)
|
||||||
# logging
|
# logging
|
||||||
logpesterssetting = 0
|
logpesterssetting = 0
|
||||||
if self.optionmenu.logpesterscheck.isChecked():
|
if self.optionmenu.logpesterscheck.isChecked():
|
||||||
logpesterssetting = logpesterssetting | self.config.LOG
|
logpesterssetting = logpesterssetting | self.config.LOG
|
||||||
if self.optionmenu.stamppestercheck.isChecked():
|
if self.optionmenu.stamppestercheck.isChecked():
|
||||||
logpesterssetting = logpesterssetting | self.config.STAMP
|
logpesterssetting = logpesterssetting | self.config.STAMP
|
||||||
curlogpesters = self.config.logPesters()
|
curlogpesters = self.config.logPesters()
|
||||||
if logpesterssetting != curlogpesters:
|
if logpesterssetting != curlogpesters:
|
||||||
self.config.set('logPesters', logpesterssetting)
|
self.config.set('logPesters', logpesterssetting)
|
||||||
logmemossetting = 0
|
logmemossetting = 0
|
||||||
if self.optionmenu.logmemoscheck.isChecked():
|
if self.optionmenu.logmemoscheck.isChecked():
|
||||||
logmemossetting = logmemossetting | self.config.LOG
|
logmemossetting = logmemossetting | self.config.LOG
|
||||||
if self.optionmenu.stampmemocheck.isChecked():
|
if self.optionmenu.stampmemocheck.isChecked():
|
||||||
logmemossetting = logmemossetting | self.config.STAMP
|
logmemossetting = logmemossetting | self.config.STAMP
|
||||||
curlogmemos = self.config.logMemos()
|
curlogmemos = self.config.logMemos()
|
||||||
if logmemossetting != curlogmemos:
|
if logmemossetting != curlogmemos:
|
||||||
self.config.set('logMemos', logmemossetting)
|
self.config.set('logMemos', logmemossetting)
|
||||||
# memo and user links
|
# memo and user links
|
||||||
linkssetting = self.optionmenu.userlinkscheck.isChecked()
|
linkssetting = self.optionmenu.userlinkscheck.isChecked()
|
||||||
curlinks = self.config.disableUserLinks()
|
curlinks = self.config.disableUserLinks()
|
||||||
if linkssetting != curlinks:
|
if linkssetting != curlinks:
|
||||||
self.config.set('userLinks', not linkssetting)
|
self.config.set('userLinks', not linkssetting)
|
||||||
# idle time
|
# idle time
|
||||||
idlesetting = self.optionmenu.idleBox.value()
|
idlesetting = self.optionmenu.idleBox.value()
|
||||||
curidle = self.config.idleTime()
|
curidle = self.config.idleTime()
|
||||||
if idlesetting != curidle:
|
if idlesetting != curidle:
|
||||||
self.config.set('idleTime', idlesetting)
|
self.config.set('idleTime', idlesetting)
|
||||||
self.idlethreshold = 60*idlesetting
|
self.idlethreshold = 60*idlesetting
|
||||||
# theme
|
# theme
|
||||||
self.themeSelected()
|
self.themeSelected()
|
||||||
# randoms
|
# randoms
|
||||||
if self.randhandler.running:
|
if self.randhandler.running:
|
||||||
self.randhandler.setRandomer(self.optionmenu.randomscheck.isChecked())
|
self.randhandler.setRandomer(self.optionmenu.randomscheck.isChecked())
|
||||||
# button actions
|
# button actions
|
||||||
minisetting = self.optionmenu.miniBox.currentIndex()
|
minisetting = self.optionmenu.miniBox.currentIndex()
|
||||||
curmini = self.config.minimizeAction()
|
curmini = self.config.minimizeAction()
|
||||||
if minisetting != curmini:
|
if minisetting != curmini:
|
||||||
self.config.set('miniAction', minisetting)
|
self.config.set('miniAction', minisetting)
|
||||||
self.setButtonAction(self.miniButton, minisetting, curmini)
|
self.setButtonAction(self.miniButton, minisetting, curmini)
|
||||||
closesetting = self.optionmenu.closeBox.currentIndex()
|
closesetting = self.optionmenu.closeBox.currentIndex()
|
||||||
curclose = self.config.closeAction()
|
curclose = self.config.closeAction()
|
||||||
if closesetting != curclose:
|
if closesetting != curclose:
|
||||||
self.config.set('closeAction', closesetting)
|
self.config.set('closeAction', closesetting)
|
||||||
self.setButtonAction(self.closeButton, closesetting, curclose)
|
self.setButtonAction(self.closeButton, closesetting, curclose)
|
||||||
# op and voice messages
|
# op and voice messages
|
||||||
opvmesssetting = self.optionmenu.memomessagecheck.isChecked()
|
opvmesssetting = self.optionmenu.memomessagecheck.isChecked()
|
||||||
curopvmess = self.config.opvoiceMessages()
|
curopvmess = self.config.opvoiceMessages()
|
||||||
if opvmesssetting != curopvmess:
|
if opvmesssetting != curopvmess:
|
||||||
self.config.set('opvMessages', opvmesssetting)
|
self.config.set('opvMessages', opvmesssetting)
|
||||||
# animated smiles
|
# animated smiles
|
||||||
animatesetting = self.optionmenu.animationscheck.isChecked()
|
animatesetting = self.optionmenu.animationscheck.isChecked()
|
||||||
curanimate = self.config.animations()
|
curanimate = self.config.animations()
|
||||||
if animatesetting != curanimate:
|
if animatesetting != curanimate:
|
||||||
self.config.set('animations', animatesetting)
|
self.config.set('animations', animatesetting)
|
||||||
self.animationSetting.emit(animatesetting)
|
self.animationSetting.emit(animatesetting)
|
||||||
# update checked
|
# update checked
|
||||||
updatechecksetting = self.optionmenu.updateBox.currentIndex()
|
updatechecksetting = self.optionmenu.updateBox.currentIndex()
|
||||||
curupdatecheck = self.config.checkForUpdates()
|
curupdatecheck = self.config.checkForUpdates()
|
||||||
if updatechecksetting != curupdatecheck:
|
if updatechecksetting != curupdatecheck:
|
||||||
self.config.set('checkUpdates', updatechecksetting)
|
self.config.set('checkUpdates', updatechecksetting)
|
||||||
# mspa update check
|
# mspa update check
|
||||||
mspachecksetting = self.optionmenu.mspaCheck.isChecked()
|
mspachecksetting = self.optionmenu.mspaCheck.isChecked()
|
||||||
curmspacheck = self.config.checkMSPA()
|
curmspacheck = self.config.checkMSPA()
|
||||||
if mspachecksetting != curmspacheck:
|
if mspachecksetting != curmspacheck:
|
||||||
self.config.set('mspa', mspachecksetting)
|
self.config.set('mspa', mspachecksetting)
|
||||||
# Taskbar blink
|
# Taskbar blink
|
||||||
blinksetting = 0
|
blinksetting = 0
|
||||||
if self.optionmenu.pesterBlink.isChecked():
|
if self.optionmenu.pesterBlink.isChecked():
|
||||||
blinksetting |= self.config.PBLINK
|
blinksetting |= self.config.PBLINK
|
||||||
if self.optionmenu.memoBlink.isChecked():
|
if self.optionmenu.memoBlink.isChecked():
|
||||||
blinksetting |= self.config.MBLINK
|
blinksetting |= self.config.MBLINK
|
||||||
curblink = self.config.blink()
|
curblink = self.config.blink()
|
||||||
if blinksetting != curblink:
|
if blinksetting != curblink:
|
||||||
self.config.set('blink', blinksetting)
|
self.config.set('blink', blinksetting)
|
||||||
# toast notifications
|
# toast notifications
|
||||||
self.tm.setEnabled(self.optionmenu.notifycheck.isChecked())
|
self.tm.setEnabled(self.optionmenu.notifycheck.isChecked())
|
||||||
self.tm.setCurrentType(str(self.optionmenu.notifyOptions.currentText()))
|
self.tm.setCurrentType(str(self.optionmenu.notifyOptions.currentText()))
|
||||||
notifysetting = 0
|
notifysetting = 0
|
||||||
if self.optionmenu.notifySigninCheck.isChecked():
|
if self.optionmenu.notifySigninCheck.isChecked():
|
||||||
notifysetting |= self.config.SIGNIN
|
notifysetting |= self.config.SIGNIN
|
||||||
if self.optionmenu.notifySignoutCheck.isChecked():
|
if self.optionmenu.notifySignoutCheck.isChecked():
|
||||||
notifysetting |= self.config.SIGNOUT
|
notifysetting |= self.config.SIGNOUT
|
||||||
if self.optionmenu.notifyNewMsgCheck.isChecked():
|
if self.optionmenu.notifyNewMsgCheck.isChecked():
|
||||||
notifysetting |= self.config.NEWMSG
|
notifysetting |= self.config.NEWMSG
|
||||||
if self.optionmenu.notifyNewConvoCheck.isChecked():
|
if self.optionmenu.notifyNewConvoCheck.isChecked():
|
||||||
notifysetting |= self.config.NEWCONVO
|
notifysetting |= self.config.NEWCONVO
|
||||||
if self.optionmenu.notifyMentionsCheck.isChecked():
|
if self.optionmenu.notifyMentionsCheck.isChecked():
|
||||||
notifysetting |= self.config.INITIALS
|
notifysetting |= self.config.INITIALS
|
||||||
curnotify = self.config.notifyOptions()
|
curnotify = self.config.notifyOptions()
|
||||||
if notifysetting != curnotify:
|
if notifysetting != curnotify:
|
||||||
self.config.set('notifyOptions', notifysetting)
|
self.config.set('notifyOptions', notifysetting)
|
||||||
# advanced
|
# advanced
|
||||||
## user mode
|
## user mode
|
||||||
if self.advanced:
|
if self.advanced:
|
||||||
newmodes = self.optionmenu.modechange.text()
|
newmodes = self.optionmenu.modechange.text()
|
||||||
if newmodes:
|
if newmodes:
|
||||||
self.setChannelMode.emit(self.profile().handle, newmodes, "")
|
self.setChannelMode.emit(self.profile().handle, newmodes, "")
|
||||||
self.optionmenu = None
|
except Exception, e:
|
||||||
|
logging.error(e)
|
||||||
|
finally:
|
||||||
|
self.optionmenu = None
|
||||||
|
|
||||||
def setButtonAction(self, button, setting, old):
|
def setButtonAction(self, button, setting, old):
|
||||||
if old == 0: # minimize to taskbar
|
if old == 0: # minimize to taskbar
|
||||||
|
|
Loading…
Reference in a new issue