Don't kill options menu when problem occurs saving settings. Log exception to error log

This commit is contained in:
Kiooeht 2011-08-30 06:26:34 -07:00
parent 2799a66acb
commit b0e9a1aaac

View file

@ -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