Commit 577a698fe3864aa59ab2427546a468faf760f221
1 parent
a26fd3c8
Exists in
master
and in
54 other branches
Using thread instead of a new process to verify invesalius new versions
Showing
3 changed files
with
85 additions
and
26 deletions
Show diff stats
invesalius/gui/dialogs.py
... | ... | @@ -373,6 +373,67 @@ class MessageDialog(wx.Dialog): |
373 | 373 | |
374 | 374 | self.Centre() |
375 | 375 | |
376 | + | |
377 | +class UpdateMessageDialog(wx.Dialog): | |
378 | + def __init__(self, url): | |
379 | + msg=_("A new version of InVesalius is available. Do you want to open the download website now?") | |
380 | + title=_("Invesalius Update") | |
381 | + self.url = url | |
382 | + | |
383 | + pre = wx.PreDialog() | |
384 | + pre.Create(None, -1, title, size=(360, 370), pos=wx.DefaultPosition, | |
385 | + style=wx.DEFAULT_DIALOG_STYLE|wx.ICON_INFORMATION) | |
386 | + self.PostCreate(pre) | |
387 | + | |
388 | + # Static text which contains message to user | |
389 | + label = wx.StaticText(self, -1, msg) | |
390 | + | |
391 | + # Buttons | |
392 | + btn_yes = wx.Button(self, wx.ID_YES) | |
393 | + btn_yes.SetHelpText("") | |
394 | + btn_yes.SetDefault() | |
395 | + | |
396 | + btn_no = wx.Button(self, wx.ID_NO) | |
397 | + btn_no.SetHelpText("") | |
398 | + | |
399 | + btnsizer = wx.StdDialogButtonSizer() | |
400 | + btnsizer.AddButton(btn_yes) | |
401 | + btnsizer.AddButton(btn_no) | |
402 | + btnsizer.Realize() | |
403 | + | |
404 | + sizer = wx.BoxSizer(wx.VERTICAL) | |
405 | + sizer.Add(label, 0, wx.ALIGN_CENTRE|wx.ALL, 5) | |
406 | + sizer.Add(btnsizer, 0, wx.ALIGN_CENTER_VERTICAL| | |
407 | + wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5) | |
408 | + self.SetSizer(sizer) | |
409 | + sizer.Fit(self) | |
410 | + self.Centre() | |
411 | + | |
412 | + btn_yes.Bind(wx.EVT_BUTTON, self._OnYes) | |
413 | + btn_no.Bind(wx.EVT_BUTTON, self._OnNo) | |
414 | + | |
415 | + # Subscribing to the pubsub event which happens when InVesalius is | |
416 | + # closed. | |
417 | + Publisher.subscribe(self._OnCloseInV, 'Exit') | |
418 | + | |
419 | + def _OnYes(self, evt): | |
420 | + # Launches the default browser with the url to download the new | |
421 | + # InVesalius version. | |
422 | + wx.LaunchDefaultBrowser(self.url) | |
423 | + self.Close() | |
424 | + self.Destroy() | |
425 | + | |
426 | + def _OnNo(self, evt): | |
427 | + # Closes and destroy this dialog. | |
428 | + self.Close() | |
429 | + self.Destroy() | |
430 | + | |
431 | + def _OnCloseInV(self, pubsub_evt): | |
432 | + # Closes and destroy this dialog. | |
433 | + self.Close() | |
434 | + self.Destroy() | |
435 | + | |
436 | + | |
376 | 437 | def SaveChangesDialog__Old(filename): |
377 | 438 | message = _("The project %s has been modified.\nSave changes?")%filename |
378 | 439 | dlg = MessageDialog(message) | ... | ... |
invesalius/invesalius.py
... | ... | @@ -68,6 +68,7 @@ class InVesalius(wx.App): |
68 | 68 | self.splash = SplashScreen() |
69 | 69 | self.splash.Show() |
70 | 70 | wx.CallLater(1000,self.Startup2) |
71 | + | |
71 | 72 | return True |
72 | 73 | |
73 | 74 | def MacOpenFile(self, filename): |
... | ... | @@ -180,6 +181,11 @@ class SplashScreen(wx.SplashScreen): |
180 | 181 | self.fc = wx.FutureCall(1, self.ShowMain) |
181 | 182 | wx.FutureCall(1, parse_comand_line) |
182 | 183 | |
184 | + # Check for updates | |
185 | + from threading import Thread | |
186 | + p = Thread(target=utils.UpdateCheck, args=()) | |
187 | + p.start() | |
188 | + | |
183 | 189 | def OnClose(self, evt): |
184 | 190 | # Make sure the default handler runs too so this window gets |
185 | 191 | # destroyed |
... | ... | @@ -300,11 +306,6 @@ if __name__ == '__main__': |
300 | 306 | # import modules as they were on root invesalius folder |
301 | 307 | sys.path.append(".") |
302 | 308 | |
303 | - # Check for updates | |
304 | - from multiprocessing import Process | |
305 | - p = Process(target=utils.UpdateCheck, args=()) | |
306 | - p.daemon=True | |
307 | - p.start() | |
308 | 309 | |
309 | 310 | # Init application |
310 | 311 | main() | ... | ... |
invesalius/utils.py
... | ... | @@ -369,20 +369,31 @@ def get_system_encoding(): |
369 | 369 | def UpdateCheck(): |
370 | 370 | import urllib |
371 | 371 | import urllib2 |
372 | + import wx | |
373 | + def _show_update_info(): | |
374 | + from gui import dialogs | |
375 | + msg=_("A new version of InVesalius is available. Do you want to open the download website now?") | |
376 | + title=_("Invesalius Update") | |
377 | + msgdlg = dialogs.UpdateMessageDialog(url) | |
378 | + #if (msgdlg.Show()==wx.ID_YES): | |
379 | + #wx.LaunchDefaultBrowser(url) | |
380 | + msgdlg.Show() | |
381 | + #msgdlg.Destroy() | |
382 | + | |
372 | 383 | print "Checking updates..." |
373 | 384 | |
374 | 385 | # Check if there is a language set |
375 | - import i18n | |
386 | + #import i18n | |
376 | 387 | import session as ses |
377 | 388 | session = ses.Session() |
378 | 389 | install_lang = 0 |
379 | 390 | if session.ReadLanguage(): |
380 | 391 | lang = session.GetLanguage() |
381 | - if (lang != "False"): | |
382 | - _ = i18n.InstallLanguage(lang) | |
383 | - install_lang = 1 | |
384 | - if (install_lang==0): | |
385 | - return | |
392 | + #if (lang != "False"): | |
393 | + #_ = i18n.InstallLanguage(lang) | |
394 | + #install_lang = 1 | |
395 | + #if (install_lang==0): | |
396 | + #return | |
386 | 397 | if session.ReadRandomId(): |
387 | 398 | random_id = session.GetRandomId() |
388 | 399 | |
... | ... | @@ -406,18 +417,4 @@ def UpdateCheck(): |
406 | 417 | url = response.readline().rstrip() |
407 | 418 | if (last!=const.INVESALIUS_VERSION): |
408 | 419 | print " ...New update found!!! -> version:", last #, ", url=",url |
409 | - from time import sleep | |
410 | - sleep(2) | |
411 | - import wx | |
412 | - app=wx.App() | |
413 | - import i18n | |
414 | - _ = i18n.InstallLanguage(lang) | |
415 | - msg=_("A new version of InVesalius is available. Do you want to open the download website now?") | |
416 | - title=_("Invesalius Update") | |
417 | - msgdlg = wx.MessageDialog(None,msg,title, wx.YES_NO | wx.ICON_INFORMATION) | |
418 | - if (msgdlg.ShowModal()==wx.ID_YES): | |
419 | - wx.LaunchDefaultBrowser(url) | |
420 | - msgdlg.Destroy() | |
421 | - app.MainLoop() | |
422 | - | |
423 | - | |
420 | + wx.CallAfter(wx.CallLater, 1000, _show_update_info) | ... | ... |