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