code: def OnFontDialog(self, event):
          
  
          # Get current font data from current cell
          cursor = self.main_window.grid.actions.cursor
          attr = self.main_window.grid.code_array.cell_attributes[cursor]
  
          size, style, weight, font = \
              [attr[name] for name in ["pointsize", "fontstyle", "fontweight",
                                       "textfont"]]
          current_font = wx.Font(int(size), -1, style, weight, 0, font)
  
          # Get Font from dialog
  
          fontdata = wx.FontData()
          fontdata.EnableEffects(True)
          fontdata.SetInitialFont(current_font)
  
          dlg = wx.FontDialog(self.main_window, fontdata)
  
          if dlg.ShowModal() == wx.ID_OK:
              fontdata = dlg.GetFontData()
              font = fontdata.GetChosenFont()
  
              post_command_event(self.main_window, self.main_window.FontMsg,
                                 font=font.FaceName)
              post_command_event(self.main_window, self.main_window.FontSizeMsg,
                                 size=font.GetPointSize())
  
              post_command_event(self.main_window, self.main_window.FontBoldMsg,
                                 weight=font.GetWeightString())
              post_command_event(self.main_window,
                                 self.main_window.FontItalicsMsg,
                                 style=font.GetStyleString())
  
              if is_gtk():
                  try:
                      wx.Yield()
                  except:
                      pass
  
              self.main_window.grid.update_attribute_toolbar()
docs: Event handler for launching font dialog