1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
'''
Task Coach - Your friendly task manager
Copyright (C) 2004-2014 Task Coach developers <developers@taskcoach.org>
Task Coach is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Task Coach is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
'''
import wx
from wx.lib import hyperlink
from taskcoachlib import meta
from taskcoachlib.i18n import _
from wx.lib import sized_controls
class VersionDialog(sized_controls.SizedDialog): # pylint: disable=R0904,R0901
''' Base class for dialogs that announce a new version (and variants
thereof). '''
title = ''
def __init__(self, *args, **kwargs):
self.settings = kwargs.pop('settings')
self.message = kwargs.pop('message')
version = kwargs.pop('version')
super(VersionDialog, self).__init__(title=self.title, *args, **kwargs)
pane = self.GetContentsPane()
pane.SetSizerType("vertical")
self.messageInfo = dict(version=version, name=meta.data.name,
currentVersion=meta.data.version)
self.createInterior(pane)
self.check = wx.CheckBox(pane, label=_('Notify me of new versions.'))
self.check.SetValue(self.settings.getboolean('version', 'notify'))
buttonSizer = self.CreateStdDialogButtonSizer(wx.OK)
self.SetButtonSizer(buttonSizer)
self.Fit()
buttonSizer.GetAffirmativeButton().Bind(wx.EVT_BUTTON, self.onClose)
self.Bind(wx.EVT_CLOSE, self.onClose)
def createInterior(self, pane):
''' Create the interior parts of the dialog, i.e. the message for the
user. '''
raise NotImplementedError
def onClose(self, event):
''' When the user closes the dialog, remember whether (s)he wants to be
notified of new versions. '''
event.Skip()
self.settings.set('version', 'notify', str(self.check.GetValue()))
class NewVersionDialog(VersionDialog):
title = _('New version of %(name)s available') % dict(name=meta.data.name)
def createInterior(self, panel):
wx.StaticText(panel,
label=_('You are using %(name)s version %(currentVersion)s.') % \
self.messageInfo)
urlPanel = sized_controls.SizedPanel(panel)
urlPanel.SetSizerType('horizontal')
wx.StaticText(urlPanel,
label=_('Version %(version)s of %(name)s is available from') % \
self.messageInfo)
hyperlink.HyperLinkCtrl(urlPanel, label=meta.data.url)
class VersionUpToDateDialog(VersionDialog):
title = _('%(name)s is up to date') % dict(name=meta.data.name)
def createInterior(self, panel):
wx.StaticText(panel,
label=_('%(name)s is up to date at version %(version)s.') % \
self.messageInfo)
class NoVersionDialog(VersionDialog):
title = _("Couldn't find out latest version")
def createInterior(self, panel):
wx.StaticText(panel, label=_("Couldn't find out what the latest "
"version of %(name)s is.") % self.messageInfo)
wx.StaticText(panel, label=self.message)
class PrereleaseVersionDialog(VersionDialog):
title = _("Prerelease version")
def createInterior(self, panel):
wx.StaticText(panel, label=_('You are using %(name)s prerelease '
'version %(currentVersion)s.') % self.messageInfo)
wx.StaticText(panel, label=_('The latest released version of '
'%(name)s is %(version)s.') % self.messageInfo)
|