Skip to content
Snippets Groups Projects
FXMDIClient.rb 2.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # The MDI client window manages a number of MDI child windows in a multiple-document
      # interface (MDI) application. MDI child windows usually receive messages from the GUI controls
      # by delegation via the MDI client.  This is accomplished by making the MDI client window
      # the target for most GUI controls.  The MDI client filters out messages intented for itself,
      # and delegates the remaining messages to its currently active MDI child, if any.
      # If you use the auto-gray or auto-hide feature available in some GUI controls, these
      # controls can be automatically grayed out or hidden when there is no active MDI child.
      # When delegating messages via MDI client to MDI child windows of different types, care
      # should be taken that message ID's do not overlap, so that all message ID's only map to
      # the intented handlers no matter which MDI child window type is active.
      # The MDI client sends a SEL_CHANGED message to its target when the active MDI child is
      # switched, with the void  # pointer refering to the new MDI child.
      # A MDI Window selection dialog can be brought up through the ID_MDI_OVER_X messages;
      # a menu button connected to the MDI client with the ID_MDI_OVER_X message will be
      # automatically grayed out if there are less than X MDI child windows.
      #
      # === Events
      #
      # The following messages are sent by FXMDIClient to its target:
      #
      # +SEL_CHANGED+::
      #   sent when the active child changes; the message data is a reference to the new active child window (or +nil+ if there is none)
      #
      class FXMDIClient < FXComposite
    
        # Active MDI child window, or +nil+ if none {FXMDIChild}.
    
        attr_accessor :activeChild
    
        # Cascade offset X [Integer]
        attr_accessor :cascadeX
    
        # Cascade offset Y [Integer]
        attr_accessor :cascadeY
    
        # Construct MDI Client window
        def initialize(p, opts=0, x=0, y=0, width=0, height=0) # :yields: theMDIClient
        end
    
        #
        # Pass message to all MDI windows, stopping when one of
        # the MDI windows fails to handle the message.
        #
        def forallWindows(sender, sel, ptr); end
    
        #
        # Pass message once to all MDI windows with the same document,
        # stopping when one of the MDI windows fails to handle the message.
        #
        def forallDocuments(sender, sel, ptr); end
    
        #
        # Pass message to all MDI Child windows whose target is _document_,
        # stopping when one of the MDI windows fails to handle the message.
        #
        def forallDocWindows(document, sender, sel, ptr); end
    
        #
        # Set active MDI child window for this MDI client to _child_.
        #
        def setActiveChild(child=nil, notify=true); end
      end
    end