Added settings for update notification suppression.

This commit is contained in:
blitzmann
2014-02-15 21:58:48 -05:00
parent 7ced595cca
commit 024637432c
5 changed files with 136 additions and 25 deletions

View File

@@ -1 +1 @@
__all__ = ["pyfaGlobalPreferences","pyfaHTMLExportPreferences"]
__all__ = ["pyfaGlobalPreferences","pyfaHTMLExportPreferences","pyfaUpdatePreferences"]

View File

@@ -0,0 +1,61 @@
import wx
import service
import os
from gui.preferenceView import PreferenceView
from gui import bitmapLoader
import service
import gui.globalEvents as GE
class PFUpdatePref (PreferenceView):
title = "Pyfa Update Options"
desc = """
Pyfa can automatically check and notify you of new releases.
These options will allow you to choose what kind of updates, if any, you wish
to receive notifications for
"""
def populatePanel( self, panel ):
self.UpdateSettings = service.settings.UpdateSettings.getInstance()
self.dirtySettings = False
mainSizer = wx.BoxSizer( wx.VERTICAL )
self.stTitle = wx.StaticText( panel, wx.ID_ANY, self.title, wx.DefaultPosition, wx.DefaultSize, 0 )
self.stTitle.Wrap( -1 )
self.stTitle.SetFont( wx.Font( 12, 70, 90, 90, False, wx.EmptyString ) )
mainSizer.Add( self.stTitle, 0, wx.ALL, 5 )
self.stDesc = wx.StaticText( panel, wx.ID_ANY, self.desc, wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.stDesc, 0, wx.ALL, 5 )
self.suppressAll = wx.CheckBox( panel, wx.ID_ANY, u"Suppress all update notifications", wx.DefaultPosition, wx.DefaultSize, 0 )
self.suppressPrerelease = wx.CheckBox( panel, wx.ID_ANY, u"Suppress only pre-release notifications", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.suppressAll, 0, wx.ALL|wx.EXPAND, 5 )
mainSizer.Add( self.suppressPrerelease, 0, wx.ALL|wx.EXPAND, 5 )
self.suppressAll.Bind(wx.EVT_CHECKBOX, self.OnSuppressAllStateChange)
self.ToggleSuppressAll(self.suppressAll.IsChecked())
panel.SetSizer( mainSizer )
panel.Layout()
def ToggleSuppressAll(self, bool):
''' Toggles other inputs on/off depending on value of SuppressAll '''
if bool:
self.suppressPrerelease.Disable()
else:
self.suppressPrerelease.Enable()
def OnSuppressAllStateChange(self, event):
self.UpdateSettings.set('all', self.suppressAll.IsChecked())
self.ToggleSuppressAll(self.suppressAll.IsChecked())
def getImage(self):
return bitmapLoader.getBitmap("pyfa64", "icons")
PFUpdatePref.register()

View File

@@ -20,12 +20,15 @@
import wx
import bitmapLoader
import config
import service
class UpdateDialog(wx.Dialog):
def __init__(self, parent, release):
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = "Pyfa Update", pos = wx.DefaultPosition, size = wx.Size( 400,300 ), style = wx.DEFAULT_DIALOG_STYLE )
self.UpdateSettings = service.settings.UpdateSettings.getInstance()
self.releaseInfo = release
self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )
mainSizer = wx.BoxSizer( wx.VERTICAL )
@@ -41,40 +44,39 @@ class UpdateDialog(wx.Dialog):
mainSizer.Add( wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND |wx.ALL, 5 )
versionSizer = wx.BoxSizer( wx.HORIZONTAL )
if(self.releaseInfo['prerelease']):
self.releaseText = wx.StaticText( self, wx.ID_ANY, "Pre-release", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
self.releaseText.SetFont( wx.Font( 12, 74, 90, 92, False) )
self.releaseText.SetForegroundColour( wx.Colour( 230, 0, 0 ) )
else:
self.releaseText = wx.StaticText( self, wx.ID_ANY, "Stable", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
self.releaseText.SetFont( wx.Font( 12, 74, 90, 90, False) )
self.releaseText.Wrap( -1 )
versionSizer.Add( self.releaseText, 1, wx.ALL, 5 )
self.versionText = wx.StaticText( self, wx.ID_ANY, release['tag_name'], wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_RIGHT )
self.versionText = wx.StaticText( self, wx.ID_ANY, self.releaseInfo['tag_name'], wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_LEFT )
self.versionText.Wrap( -1 )
self.versionText.SetFont( wx.Font( 12, 74, 90, 90, False) )
versionSizer.Add( self.versionText, 1, wx.ALL, 5 )
versionSizer.AddSpacer( ( 15, 5), 0, wx.EXPAND, 5 )
if(release['prerelease']):
pass
self.releaseText = wx.StaticText( self, wx.ID_ANY, "Pre-release", wx.DefaultPosition, wx.DefaultSize, 0 )
self.releaseText.SetFont( wx.Font( 12, 74, 90, 92, False, "Tahoma" ) )
self.releaseText.SetForegroundColour( wx.Colour( 230, 0, 0 ) )
else:
self.releaseText = wx.StaticText( self, wx.ID_ANY, "Stable", wx.DefaultPosition, wx.DefaultSize, 0 )
self.releaseText.SetFont( wx.Font( 12, 74, 90, 90, False) )
self.releaseText.Wrap( -1 )
versionSizer.Add( self.releaseText, 1, wx.ALL, 5 )
mainSizer.Add( versionSizer, 0, wx.EXPAND, 5 )
mainSizer.AddSpacer( ( 0, 5), 0, wx.EXPAND, 5 )
notesSizer = wx.BoxSizer( wx.HORIZONTAL )
self.notesTextCtrl = wx.TextCtrl( self, wx.ID_ANY, release['body'], wx.DefaultPosition, wx.DefaultSize, wx.TE_AUTO_URL|wx.TE_MULTILINE|wx.TE_NO_VSCROLL|wx.TE_READONLY|wx.DOUBLE_BORDER|wx.TRANSPARENT_WINDOW )
self.notesTextCtrl = wx.TextCtrl( self, wx.ID_ANY, self.releaseInfo['body'], wx.DefaultPosition, wx.DefaultSize, wx.TE_AUTO_URL|wx.TE_MULTILINE|wx.TE_NO_VSCROLL|wx.TE_READONLY|wx.DOUBLE_BORDER|wx.TRANSPARENT_WINDOW )
notesSizer.Add( self.notesTextCtrl, 1, wx.EXPAND|wx.LEFT|wx.RIGHT, 5 )
mainSizer.Add( notesSizer, 1, wx.EXPAND, 5 )
self.supressCheckbox = wx.CheckBox( self, wx.ID_ANY, "Don't show me again", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.supressCheckbox, 0, wx.ALL, 5 )
self.supressPreCheckbox = wx.CheckBox( self, wx.ID_ANY, "Don't show me (pre-releases) again", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.supressPreCheckbox, 0, wx.ALL, 5 )
self.supressCheckbox = wx.CheckBox( self, wx.ID_ANY, "Don't remind me again for this release", wx.DefaultPosition, wx.DefaultSize, 0 )
self.supressCheckbox.Bind(wx.EVT_CHECKBOX, self.SuppressChange)
mainSizer.Add( self.supressCheckbox, 0, wx.ALL, 5 )
mainSizer.Add( wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL ), 0, wx.EXPAND |wx.ALL, 5 )
actionSizer = wx.BoxSizer( wx.HORIZONTAL )
@@ -83,16 +85,29 @@ class UpdateDialog(wx.Dialog):
self.goButton = wx.Button( self, wx.ID_ANY, "Download", wx.DefaultPosition, wx.DefaultSize, 0 )
goSizer.Add( self.goButton, 0, wx.ALL, 5 )
actionSizer.Add( goSizer, 1, wx.EXPAND, 5 )
self.closeButton = wx.Button( self, wx.ID_ANY, "Close", wx.DefaultPosition, wx.DefaultSize, 0 )
self.closeButton = wx.Button(self, wx.ID_CLOSE)
self.closeButton.Bind(wx.EVT_BUTTON, self.OnClose)
actionSizer.Add( self.closeButton, 0, wx.ALL, 5 )
mainSizer.Add( actionSizer, 0, wx.EXPAND, 5 )
self.SetSizer( mainSizer )
self.Layout()
'''
TODO: If release suppression is not ticked, make sure it's set correctly in settings.
Otherwise, a release will be suppressed, and a new release will come around. However,
if user does not suppress that one, the old release will continue to see the suppressed
release in prefs
'''
self.Centre( wx.BOTH )
def OnClose(self, e):
self.Destroy()
self.Destroy()
def SuppressChange(self, e):
if (self.supressCheckbox.IsChecked()):
self.UpdateSettings.set('version', self.releaseInfo['tag_name'])
else:
self.UpdateSettings.set('version', None)