parameters: (self)
docstring: This method is called after any number of changes are made to any of the
          managed panes. :meth:`Update` must be invoked after :meth:`AddPane`
          or :meth:`InsertPane` are called in order to "realize" or "commit" the changes.
  
          In addition, any number of changes may be made to :class:`AuiManager` structures
          (retrieved with :meth:`GetPane`), but to realize the changes, :meth:`Update`
          must be called. This construction allows pane flicker to be avoided by updating
          the whole layout at one time.
docstring_summary: This method is called after any number of changes are made to any of the
          managed panes. :meth:`Update` must be invoked after :meth:`AddPane`
          or :meth:`InsertPane` are called in order to "realize" or "commit" the changes.
docstring_tokens: This method is called after any number of changes are made to any of the managed panes . : meth : Update must be invoked after : meth : AddPane or : meth : InsertPane are called in order to realize or commit the changes .
function: def Update(self):
          """
          This method is called after any number of changes are made to any of the
          managed panes. :meth:`Update` must be invoked after :meth:`AddPane`
          or :meth:`InsertPane` are called in order to "realize" or "commit" the changes.
  
          In addition, any number of changes may be made to :class:`AuiManager` structures
          (retrieved with :meth:`GetPane`), but to realize the changes, :meth:`Update`
          must be called. This construction allows pane flicker to be avoided by updating
          the whole layout at one time.
          """
  
          self._hover_button = None
          self._action_part = None
  
          # destroy floating panes which have been
          # redocked or are becoming non-floating
          for p in self._panes:
              if p.IsFloating() or not p.frame:
                  continue
  
              # because the pane is no longer in a floating, we need to
              # reparent it to self._frame and destroy the floating frame
              # reduce flicker
              p.window.SetSize((1, 1))
  
              # the following block is a workaround for bug #1531361
              # (see wxWidgets sourceforge page).  On wxGTK (only), when
              # a frame is shown/hidden, a move event unfortunately
              # also gets fired.  Because we may be dragging around
              # a pane, we need to cancel that action here to prevent
              # a spurious crash.
              if self._action_window == p.frame:
                  if self._frame.HasCapture():
                      self._frame.ReleaseMouse()
                  self._action = actionNone
                  self._action_window = None
  
              # hide the frame
              if p.frame.IsShown():
                  p.frame.Show(False)
  
              if self._action_window == p.frame:
                  self._action_window = None
  
              # reparent to self._frame and destroy the pane
              p.window.Reparent(self._frame)
              if isinstance(p.window, auibar.AuiToolBar):
                  p.window.SetAuiManager(self)
  
              if p.frame:
                  p.frame.SetSizer(None)
                  p.frame.Destroy()
              p.frame = None
  
          # Only the master manager should create/destroy notebooks...
          if not self._masterManager:
              self.UpdateNotebook()
  
          # delete old sizer first
          self._frame.SetSizer(None)
  
          # create a layout for all of the panes
          sizer = self.LayoutAll(self._panes, self._docks, self._uiparts, False)
  
          # hide or show panes as necessary,
          # and float panes as necessary
  
          pane_count = len(self._panes)
  
          for ii in xrange(pane_count):
              p = self._panes[ii]
              pFrame = p.frame
  
              if p.IsFloating():
                  if pFrame is None:
                      # we need to create a frame for this
                      # pane, which has recently been floated
                      frame = self.CreateFloatingFrame(self._frame, p)
  
                      # on MSW and Mac, if the owner desires transparent dragging, and
                      # the dragging is happening right now, then the floating
                      # window should have this style by default
                      if self._action in [actionDragFloatingPane, actionDragToolbarPane] and \
                         self._agwFlags & AUI_MGR_TRANSPARENT_DRAG:
                          frame.SetTransparent(150)
  
                      if p.IsToolbar():
                          bar = p.window
                          if isinstance(bar, auibar.AuiToolBar):
                              bar.SetGripperVisible(False)
                              agwStyle = bar.GetAGWWindowStyleFlag()
                              bar.SetAGWWindowStyleFlag(agwStyle & ~AUI_TB_VERTICAL)
                              bar.Realize()
  
                          s = p.window.GetMinSize()
                          p.BestSize(s)
                          p.FloatingSize(wx.DefaultSize)
  
                      frame.SetPaneWindow(p)
                      p.needsTransparency = True
                      p.frame = pFrame = frame
                      if p.IsShown() and not frame.IsShown():
                          frame.Show()
                          frame.Update()
                  else:
  
                      # frame already exists, make sure it's position
                      # and size reflect the information in AuiPaneInfo
                      if pFrame.GetPosition() != p.floating_pos or pFrame.GetSize() != p.floating_size:
                          pFrame.SetDimensions(p.floating_pos.x, p.floating_pos.y,
                                               p.floating_size.x, p.floating_size.y, wx.SIZE_USE_EXISTING)
  
                      # update whether the pane is resizable or not
                      style = p.frame.GetWindowStyleFlag()
                      if p.IsFixed():
                          style &= ~wx.RESIZE_BORDER
                      else:
                          style |= wx.RESIZE_BORDER
  
                      p.frame.SetWindowStyleFlag(style)
  
                      if pFrame.IsShown() != p.IsShown():
                          p.needsTransparency = True
                          pFrame.Show(p.IsShown())
  
                  if pFrame.GetTitle() != p.caption:
                      pFrame.SetTitle(p.caption)
                  if p.icon.IsOk():
                      pFrame.SetIcon(wx.IconFromBitmap(p.icon))
  
              else:
  
                  if p.IsToolbar():
  #                    self.SwitchToolBarOrientation(p)
                      p.best_size = p.window.GetBestSize()
  
                  if p.window and not p.IsNotebookPage() and p.window.IsShown() != p.IsShown():
                      p.window.Show(p.IsShown())
  
              if pFrame and p.needsTransparency:
                  if pFrame.IsShown() and pFrame._transparent != p.transparent:
                      pFrame.SetTransparent(p.transparent)
                      pFrame._transparent = p.transparent
  
                  p.needsTransparency = False
  
              # if "active panes" are no longer allowed, clear
              # any optionActive values from the pane states
              if self._agwFlags & AUI_MGR_ALLOW_ACTIVE_PANE == 0:
                  p.state &= ~AuiPaneInfo.optionActive
  
              self._panes[ii] = p
  
          old_pane_rects = []
          pane_count = len(self._panes)
  
          for p in self._panes:
              r = wx.Rect()
              if p.window and p.IsShown() and p.IsDocked():
                  r = p.rect
  
              old_pane_rects.append(r)
  
          # apply the new sizer
          self._frame.SetSizer(sizer)
          self._frame.SetAutoLayout(False)
          self.DoFrameLayout()
  
          # now that the frame layout is done, we need to check
          # the new pane rectangles against the old rectangles that
          # we saved a few lines above here.  If the rectangles have
          # changed, the corresponding panes must also be updated
          for ii in xrange(pane_count):
              p = self._panes[ii]
              if p.window and p.IsShown() and p.IsDocked():
                  if p.rect != old_pane_rects[ii]:
                      p.window.Refresh()
                      p.window.Update()
  
          if wx.Platform == "__WXMAC__":
              self._frame.Refresh()
          else:
              self.Repaint()
  
          if not self._masterManager:
              e = self.FireEvent(wxEVT_AUI_PERSPECTIVE_CHANGED, None, canVeto=False)
function_tokens: def Update ( self ) : self . _hover_button = None self . _action_part = None # destroy floating panes which have been # redocked or are becoming non-floating for p in self . _panes : if p . IsFloating ( ) or not p . frame : continue # because the pane is no longer in a floating, we need to # reparent it to self._frame and destroy the floating frame # reduce flicker p . window . SetSize ( ( 1 , 1 ) ) # the following block is a workaround for bug #1531361 # (see wxWidgets sourceforge page).  On wxGTK (only), when # a frame is shown/hidden, a move event unfortunately # also gets fired.  Because we may be dragging around # a pane, we need to cancel that action here to prevent # a spurious crash. if self . _action_window == p . frame : if self . _frame . HasCapture ( ) : self . _frame . ReleaseMouse ( ) self . _action = actionNone self . _action_window = None # hide the frame if p . frame . IsShown ( ) : p . frame . Show ( False ) if self . _action_window == p . frame : self . _action_window = None # reparent to self._frame and destroy the pane p . window . Reparent ( self . _frame ) if isinstance ( p . window , auibar . AuiToolBar ) : p . window . SetAuiManager ( self ) if p . frame : p . frame . SetSizer ( None ) p . frame . Destroy ( ) p . frame = None # Only the master manager should create/destroy notebooks... if not self . _masterManager : self . UpdateNotebook ( ) # delete old sizer first self . _frame . SetSizer ( None ) # create a layout for all of the panes sizer = self . LayoutAll ( self . _panes , self . _docks , self . _uiparts , False ) # hide or show panes as necessary, # and float panes as necessary pane_count = len ( self . _panes ) for ii in xrange ( pane_count ) : p = self . _panes [ ii ] pFrame = p . frame if p . IsFloating ( ) : if pFrame is None : # we need to create a frame for this # pane, which has recently been floated frame = self . CreateFloatingFrame ( self . _frame , p ) # on MSW and Mac, if the owner desires transparent dragging, and # the dragging is happening right now, then the floating # window should have this style by default if self . _action in [ actionDragFloatingPane , actionDragToolbarPane ] and self . _agwFlags & AUI_MGR_TRANSPARENT_DRAG : frame . SetTransparent ( 150 ) if p . IsToolbar ( ) : bar = p . window if isinstance ( bar , auibar . AuiToolBar ) : bar . SetGripperVisible ( False ) agwStyle = bar . GetAGWWindowStyleFlag ( ) bar . SetAGWWindowStyleFlag ( agwStyle & ~ AUI_TB_VERTICAL ) bar . Realize ( ) s = p . window . GetMinSize ( ) p . BestSize ( s ) p . FloatingSize ( wx . DefaultSize ) frame . SetPaneWindow ( p ) p . needsTransparency = True p . frame = pFrame = frame if p . IsShown ( ) and not frame . IsShown ( ) : frame . Show ( ) frame . Update ( ) else : # frame already exists, make sure it's position # and size reflect the information in AuiPaneInfo if pFrame . GetPosition ( ) != p . floating_pos or pFrame . GetSize ( ) != p . floating_size : pFrame . SetDimensions ( p . floating_pos . x , p . floating_pos . y , p . floating_size . x , p . floating_size . y , wx . SIZE_USE_EXISTING ) # update whether the pane is resizable or not style = p . frame . GetWindowStyleFlag ( ) if p . IsFixed ( ) : style &= ~ wx . RESIZE_BORDER else : style |= wx . RESIZE_BORDER p . frame . SetWindowStyleFlag ( style ) if pFrame . IsShown ( ) != p . IsShown ( ) : p . needsTransparency = True pFrame . Show ( p . IsShown ( ) ) if pFrame . GetTitle ( ) != p . caption : pFrame . SetTitle ( p . caption ) if p . icon . IsOk ( ) : pFrame . SetIcon ( wx . IconFromBitmap ( p . icon ) ) else : if p . IsToolbar ( ) : #                    self.SwitchToolBarOrientation(p) p . best_size = p . window . GetBestSize ( ) if p . window and not p . IsNotebookPage ( ) and p . window . IsShown ( ) != p . IsShown ( ) : p . window . Show ( p . IsShown ( ) ) if pFrame and p . needsTransparency : if pFrame . IsShown ( ) and pFrame . _transparent != p . transparent : pFrame . SetTransparent ( p . transparent ) pFrame . _transparent = p . transparent p . needsTransparency = False # if "active panes" are no longer allowed, clear # any optionActive values from the pane states if self . _agwFlags & AUI_MGR_ALLOW_ACTIVE_PANE == 0 : p . state &= ~ AuiPaneInfo . optionActive self . _panes [ ii ] = p old_pane_rects = [ ] pane_count = len ( self . _panes ) for p in self . _panes : r = wx . Rect ( ) if p . window and p . IsShown ( ) and p . IsDocked ( ) : r = p . rect old_pane_rects . append ( r ) # apply the new sizer self . _frame . SetSizer ( sizer ) self . _frame . SetAutoLayout ( False ) self . DoFrameLayout ( ) # now that the frame layout is done, we need to check # the new pane rectangles against the old rectangles that # we saved a few lines above here.  If the rectangles have # changed, the corresponding panes must also be updated for ii in xrange ( pane_count ) : p = self . _panes [ ii ] if p . window and p . IsShown ( ) and p . IsDocked ( ) : if p . rect != old_pane_rects [ ii ] : p . window . Refresh ( ) p . window . Update ( ) if wx . Platform == "__WXMAC__" : self . _frame . Refresh ( ) else : self . Repaint ( ) if not self . _masterManager : e = self . FireEvent ( wxEVT_AUI_PERSPECTIVE_CHANGED , None , canVeto = False )