Skip to content
Snippets Groups Projects
FX4Splitter.rb 5.23 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
    
      #
      # The four-way splitter is a layout manager which manages
      # four children like four panes in a window.
      # You can use a four-way splitter for example in a CAD program
      # where you may want to maintain three orthographic views, and
      # one oblique view of a model.
      # The four-way splitter allows interactive repartitioning of the
      # panes by means of moving the central splitter bars.
      # When the four-way splitter is itself resized, each child is
      # proportionally resized, maintaining the same split-percentage.
      #
      # === Events
      #
      # The following messages are sent by FX4Splitter to its target:
      #
      # +SEL_LEFTBUTTONPRESS+::	sent when the left mouse button goes down; the message data is an FXEvent instance.
      # +SEL_LEFTBUTTONRELEASE+::	sent when the left mouse button goes up; the message data is an FXEvent instance.
      # +SEL_COMMAND+::		sent at the end of a resize operation, to signal that the resize is complete
      # +SEL_CHANGED+::		sent continuously while a resize operation is occurring
      #
      # === Splitter options
      #
      # +FOURSPLITTER_TRACKING+::   Track continuously during split
      # +FOURSPLITTER_NORMAL+::     Normal mode (no continuous tracking)
      #
      # === Expansion options
      #
      # +ExpandNone+::		None expanded
      # +ExpandTopLeft+::		Expand top left child
      # +ExpandTopRight+::		Expand top right child
      # +ExpandBottomLeft+::	Expand bottom left child
      # +ExpandBottomRight+::	Expand bottom right child
      # +ExpandTop+::		Expand top children
      # +ExpandBottom+::		Expand bottom children
      # +ExpandLeft+::		Expand left children
      # +ExpandRight+::		Expand right children
      # +ExpandAll+::		Expand all children
      #
      # === Message identifiers
      #
      # +ID_EXPAND_NONE+::		None expanded
      # +ID_EXPAND_TOP+::		Expand top left and top right panes
      # +ID_EXPAND_BOTTOM+::	Expand bottom left and bottom right panes
      # +ID_EXPAND_LEFT+::		Expand leftmost panes
      # +ID_EXPAND_RIGHT+::		Expand rightmost panes
      # +ID_EXPAND_TOPLEFT+::	Expand top left pane
      # +ID_EXPAND_TOPRIGHT+::	Expand top right pane
      # +ID_EXPAND_BOTTOMLEFT+::	Expand bottom left pane
      # +ID_EXPAND_BOTTOMRIGHT+::	Expand bottom right pane
      # +ID_EXPAND_ALL+::		Expand all panes
      #
      class FX4Splitter < FXComposite
    
        # Horizontal split fraction [Integer]
        attr_accessor :hSplit
        
        # Vertical split fraction [Integer]
        attr_accessor :vSplit
        
        # Current splitter style, either +FOURSPLITTER_TRACKING+ or +FOURSPLITTER_NORMAL+
        attr_accessor :splitterStyle
        
        # Splitter bar width, in pixels [Integer]
        attr_accessor :barSize
        
        # Currently expanded child (some combination of the expansion flags, or zero if no panes are expanded)
        attr_accessor :expanded
        
        # Top left child window, if any [FXWindow]
        attr_reader :topLeft
        
        # Top right child window, if any [FXWindow]
        attr_reader :topRight
        
        # Bottom left child window, if any [FXWindow]
        attr_reader :bottomLeft
        
        # Bottom right child window, if any [FXWindow]
        attr_reader :bottomRight
    
        #
        # Return an initialized FX4Splitter instance, initially shown as four unexpanded panes
        #
        # ==== Parameters:
        #
        # +p+::	the parent widget for this splitter [FXComposite]
        # +opts+::	the options [Integer]
        # +x+::	initial x-position [Integer]
        # +y+::	initial y-position [Integer]
        # +width+::	initial width [Integer]
        # +height+::	initial height [Integer]
        #
        def initialize(p, opts=FOURSPLITTER_NORMAL, x=0, y=0, width=0, height=0) # :yields: theSplitter
        end
        
        #
        # Return an initialized FX4Splitter instance, initially shown as four unexpanded panes;
        # notifies _tgt_ about size changes.
        #
        # ==== Parameters:
        #
        # +p+::	the parent widget for this splitter [FXComposite]
        # +target+::	message target [FXObject]
        # +selector+::	message identifier [Integer]
        # +opts+::	the options [Integer]
        # +x+::	initial x-position [Integer]
        # +y+::	initial y-position [Integer]
        # +width+::	initial width [Integer]
        # +height+::	initial height [Integer]
        #
        def initialize(p, tgt, sel, opts=FOURSPLITTER_NORMAL, x=0, y=0, width=0, height=0) # :yields: theSplitter
        end
    
        #
        # Change horizontal split fraction. The split fraction _s_ is
        # an integer value between 0 and 10000 (inclusive), indicating
        # how much space to allocate to the leftmost panes. For example,
        # to split the panes at 35 percent, use:
        #
        #   fourSplitter.setHSplit(3500)
        #
        # or just:
        #
        #   fourSplitter.hSplit = 3500
        #
        def setHSplit(s); end
    
        #
        # Return the horizontal split fraction, an integer between 0 and
        # 10000 inclusive. See FX4Splitter#setHSplit for more information.
        #
        def getHSplit(); end
    
        #
        # Change vertical split fraction. The split fraction _s_ is
        # an integer value between 0 and 10000 (inclusive), indicating
        # how much space to allocate to the topmost panes. For example,
        # to split the panes at 35 percent, use:
        #
        #   fourSplitter.setVSplit(3500)
        #
        # or just:
        #
        #   fourSplitter.vSplit = 3500
        #
        def setVSplit(s); end
    
        #
        # Return the vertical split fraction, an integer between 0 and
        # 10000 inclusive. See FX4Splitter#setVSplit for more information.
        #
        def getVSplit(); end
      end
    end