require 'fox12' module Fox class FXComboBox include Enumerable # # Calls block once for each item in the list, passing the item's text and # user data as parameters. # def each # :yields: itemText, itemData 0.upto(numItems - 1) do |i| yield getItemText(i), getItemData(i) end self end end class FXHeader include Enumerable # # Calls block once for each item in the list, passing a reference to that # item as a parameter. # def each # :yields: aHeaderItem 0.upto(numItems - 1) do |i| yield retrieveItem(i) end self end end class FXIconList include Enumerable # # Calls block once for each item in the list, passing a reference to that # item as a parameter. # def each # :yields: anIconItem 0.upto(numItems - 1) do |i| yield retrieveItem(i) end self end end class FXList include Enumerable # # Calls block once for each item in the list, passing a reference to that # item as a parameter. # def each # :yields: aListItem 0.upto(numItems - 1) do |i| yield retrieveItem(i) end self end end class FXListBox include Enumerable # # Calls block once for each item in the list, passing the item's text, # icon and user data as parameters. # def each 0.upto(numItems - 1) do |i| yield getItemText(i), getItemIcon(i), getItemData(i) end self end end class FXTable include Enumerable # # Calls block once for each row in the table, passing an array of # references (one element per column) as a parameter. # def each_row # :yields: itemArray 0.upto(getNumRows - 1) do |i| tableRow = [] 0.upto(getNumCols - 1) do |j| tableRow << getItem(i, j) end yield tableRow end self end # # Calls block once for each column in the table, passing an array of # references (one element per row) as a parameter. # def each_column # :yields: itemArray 0.upto(getNumCols - 1) do |j| tableCol = [] 0.upto(getNumRows - 1) do |i| tableCol << getItem(i, j) end yield tableCol end self end alias each each_row end class FXTreeItem include Enumerable # # Calls block once for each child of this tree item, passing a # reference to that child item as a parameter. # def each # :yields: aTreeItem current = first while current != nil yield current current = current.next end self end end class FXTreeList include Enumerable # # Calls block once for each root-level tree item, passing a # reference to that item as a parameter. # def each # :yields: aTreeItem current = firstItem while current != nil yield current current = current.next end self end end class FXTreeListBox include Enumerable # # Calls block once for each root-level tree item, passing a # reference to that item as a parameter. # def each # :yields: aTreeItem current = firstItem while current != nil yield current current = current.next end self end end class FXStream end class FXFileStream # # Construct a new FXFileStream object with the specified data flow # direction (save_or_load) and _container_ object. # If an optional code block is given, it will be passed this file # stream as an argument, and the file stream will automatically be # closed when the block terminates. # If no code block is provided, this method just returns the # new file stream in an opened state. # # Raises FXStreamNoWriteError if save_or_load is +FXStreamSave+ # but the file cannot be opened for writing. Raises FXStreamNoReadError # if save_or_load is +FXStreamLoad+ but the file cannot be opened # for reading. # def FXFileStream.open(filename, save_or_load, size=8192, container=nil) # :yields: theFileStream fstream = FXFileStream.new(container) if fstream.open(filename, save_or_load, size) if block_given? begin yield fstream ensure fstream.close end else fstream end else # FXFileStream#open returned false, so report error raise FXStreamError.makeStreamError(fstream.status) end end end class FXMemoryStream # # Construct a new FXMemoryStream object with the specified data flow # direction, data and container object. # If an optional code block is given, it will be passed this memory # stream as an argument, and the memory stream will automatically be # closed when the block terminates. # If no code block is provided, this method just returns the # new memory stream in an opened state. # # Raises FXStreamAllocError if some kind of memory allocation failed # while initializing the stream. # # ==== Parameters: # # +save_or_load+:: access mode, either +FXStreamSave+ or +FXStreamLoad+ [Integer] # +data+:: memory buffer used for the stream, or +nil+ if the buffer is to be initially empty [String]. # +cont+:: the container object, or +nil+ if there is none [FXObject] # def FXMemoryStream.open(save_or_load, data, cont=nil) # :yields: theMemoryStream stream = FXMemoryStream.new(cont) if stream.open(save_or_load, data) if block_given? begin yield stream ensure stream.close end else stream end else # FXFileStream#open returned false, so report error raise FXStreamError.makeStreamError(stream.status) end end end class FXApp alias beginWaitCursor0 beginWaitCursor # :nodoc: # # Changes the default application cursor to an hourglass shape, # to provide a visual cue to the user that it's time to wait. # To revert the default application cursor to its normal shape, # call the #endWaitCursor method. For example, # # getApp().beginWaitCursor() # ... time-consuming operation ... # getApp().endWaitCursor() # # Invocations of #beginWaitCursor may be nested, and if so, the # call to #endWaitCursor is matched with the most recent call to # #beginWaitCursor. # # If an optional code block is provided, #endWaitCursor is # automatically called after the block terminates, e.g. # # getApp().beginWaitCursor() { # ... time-consuming operation ... # ... endWaitCursor() is called automatically ... # } # def beginWaitCursor beginWaitCursor0 if block_given? begin yield ensure endWaitCursor end end end end class FXDCPrint alias beginPrint0 beginPrint # :nodoc: # # Begin print session described by _job_ (an FXPrinter instance). # If an optional code block is provided, #endPrint is automatically # called after the block terminates. # def beginPrint(job) # :yields: theDC result = beginPrint0(job) if block_given? begin yield self ensure endPrint end else result end end alias beginPage0 beginPage # :nodoc: # # Generate beginning of _page_ (the page number). # If an optional code block is provided, #endPage is automatically # called after the block terminates. # def beginPage(page=1) # :yields: theDC result = beginPage0(page) if block_given? begin yield self ensure endPage end else result end end end end