/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/application.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/application.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1501 by jonathan, Tue Jul 29 13:50:35 2003 UTC revision 1566 by bh, Fri Aug 8 13:01:30 2003 UTC
# Line 38  import mainwindow Line 38  import mainwindow
38  from messages import SESSION_REPLACED  from messages import SESSION_REPLACED
39    
40    
   
41  class ThubanApplication(wxApp, Publisher):  class ThubanApplication(wxApp, Publisher):
42    
43      """      """
# Line 50  class ThubanApplication(wxApp, Publisher Line 49  class ThubanApplication(wxApp, Publisher
49      """      """
50    
51      def OnInit(self):      def OnInit(self):
52            sys.excepthook = self.ShowExceptionDialog
53          self.splash = self.splash_screen()          self.splash = self.splash_screen()
54          if self.splash is not None:          if self.splash is not None:
55              self.splash.Show()              self.splash.Show()
# Line 204  class ThubanApplication(wxApp, Publisher Line 204  class ThubanApplication(wxApp, Publisher
204              for layer in map.Layers():              for layer in map.Layers():
205                  if isinstance(layer, RasterLayer) \                  if isinstance(layer, RasterLayer) \
206                      and not Thuban.Model.resource.has_gdal_support():                      and not Thuban.Model.resource.has_gdal_support():
207                      msg = _("The current session contains Image layers,\n" +                      msg = _("The current session contains Image layers,\n"
208                              "but the GDAL library is not available to " +                              "but the GDAL library is not available to "
209                              "draw them.")                              "draw them.")
210                      dlg = wx.wxMessageDialog(None,                      dlg = wx.wxMessageDialog(None,
211                                               msg,                                               msg,
212                                               _("Library not available"),                                               _("Library not available"),
213                                               wx.wxOK | wx.wxICON_INFORMATION)                                               wx.wxOK | wx.wxICON_INFORMATION)
214                      print msg                      print msg
# Line 225  class ThubanApplication(wxApp, Publisher Line 225  class ThubanApplication(wxApp, Publisher
225          else:          else:
226              self.top.SetMap(None)              self.top.SetMap(None)
227    
228  in_exception_dialog = 0 # flag: are we already inside the exception dialog?      in_exception_dialog = 0 # flag: are we already inside the exception dialog?
   
 def show_exception_dialog(exc_type, exc_value, exc_traceback):  
     """Show a message box with information about an exception.  
   
     The parameters are the usual values describing an exception in  
     Python, the exception type, the value and the traceback.  
   
     This method can be used as a value for the sys.excepthook.  
     """  
     global in_exception_dialog  
229    
230      if in_exception_dialog:      def ShowExceptionDialog(self, exc_type, exc_value, exc_traceback):
231          return          """Show a message box with information about an exception.
232      in_exception_dialog = 1      
233      while wxIsBusy():          The parameters are the usual values describing an exception in
234          wxEndBusyCursor() # reset the mouse cursor          Python, the exception type, the value and the traceback.
235        
236      try:          This method can be used as a value for the sys.excepthook.
237          lines = traceback.format_exception(exc_type, exc_value,          """
238                                             exc_traceback)  
239          message = "An unhandled exception occurred:\n%s\n" % exc_value+\          if self.in_exception_dialog:
240                    "(please report to " \              return
241                    "http://thuban.intevation.org/bugtracker.html)"\          self.in_exception_dialog = 1
242                    "\n\n\n"+\          while wxIsBusy():
243                    "".join(lines)              wxEndBusyCursor() # reset the mouse cursor
244          print message  
245            try:
246          # We don't use an explicit parent here because this method might              lines = traceback.format_exception(exc_type, exc_value,
247          # be called in circumstances where the main window doesn't exist                                              exc_traceback)
248          # anymore.              message = "An unhandled exception occurred:\n%s\n" % exc_value+\
249          dlg = wxScrolledMessageDialog(None, message,                      "(please report to " \
250                                        "Thuban: Internal Error")                      "http://thuban.intevation.org/bugtracker.html)"\
251          dlg.ShowModal()                      "\n\n\n"+\
252          dlg.Destroy()                      "".join(lines)
253                print message
254      finally:  
255          in_exception_dialog = 0              # We don't use an explicit parent here because this method might
256          # delete the last exception info that python keeps in              # be called in circumstances where the main window doesn't exist
257          # sys.last_* because especially last_traceback keeps              # anymore.
258          # indirect references to all objects bound to local              dlg = wxScrolledMessageDialog(None, message,
259          # variables and this might prevent some object from being                                          "Thuban: Internal Error")
260          # collected early enough.              dlg.ShowModal()
261          sys.last_type = sys.last_value = sys.last_traceback = None              dlg.Destroy()
262    
263            finally:
264                self.in_exception_dialog = 0
265                # delete the last exception info that python keeps in
266                # sys.last_* because especially last_traceback keeps
267                # indirect references to all objects bound to local
268                # variables and this might prevent some object from being
269                # collected early enough.
270                sys.last_type = sys.last_value = sys.last_traceback = None
271    

Legend:
Removed from v.1501  
changed lines
  Added in v.1566

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26