Skip to content
Snippets Groups Projects
FXIconList.rb 17.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # Icon list item
      #
      class FXIconItem < FXObject
    
        # Item text [String]
        attr_accessor :text
    
    
        # Big icon {FXIcon}
    
        attr_accessor :bigIcon
    
    
        # Mini icon {FXIcon}
    
        attr_accessor :miniIcon
    
        # Item user data [Object]
        attr_accessor :data
    
        # Indicates whether this item is selected or not [Boolean]
    
    
        # Indicates whether this item is enabled or not [Boolean]
    
    
        # Indicates whether this item is draggable or not [Boolean]
    
        # Constructor
        def initialize(text, bigIcon=nil, miniIcon=nil, data=nil) # :yields: theIconItem
        end
    
        # Return the icon item's text
        def to_s; text; end
    
    
        # Set the focused state for this item (where _focus_ is either +true+ or +false+)
        def setFocus(focus); end
    
        # Returns +true+ if this item has the focus
        def hasFocus? ; end
    
        # Return +true+ if this item is selected
        def selected? ; end
    
        # Return +true+ if this item is enabled
        def enabled? ; end
    
        # Return +true+ if this item is draggable
        def draggable? ; end
    
        # Return the width of this item
        def getWidth(iconList); end
    
        # Return the height of this item
        def getHeight(iconList); end
    
        # Create this item
        def create; end
    
        # Detach this item
        def detach; end
    
        # Destroy this item
        def destroy; end
      end
    
      #
      # A Icon List Widget displays a list of items, each with a text and
      # optional icon.  Icon List can display its items in essentially three
      # different ways; in big-icon mode, the bigger of the two icons is used
      # for each item, and the text is placed underneath the icon. In mini-
      # icon mode, the icons are listed in rows and columns, with the smaller
      # icon preceding the text.  Finally, in detail mode the icons are listed
      # in a single column, and all fields of the text are shown under a
      # header control with one button for each subfield.
      # When an item's selected state changes, the icon list sends
      # a +SEL_SELECTED+ or +SEL_DESELECTED+ message.  A change of the current
      # item is signified by the +SEL_CHANGED+ message.
      # The icon list sends +SEL_COMMAND+ messages when the user clicks on an item,
      # and +SEL_CLICKED+, +SEL_DOUBLECLICKED+, and +SEL_TRIPLECLICKED+ when the user
      # clicks once, twice, or thrice, respectively.
      # When items are added, replaced, or removed, the icon list sends messages
      # of the type +SEL_INSERTED+, +SEL_REPLACED+, or +SEL_DELETED+.
      # In each of these cases, the index to the item, if any, is passed in the
      # 3rd argument of the message.
      #
      # === Events
      #
      # The following messages are sent by FXIconList to its target:
      #
    
      # +SEL_CHANGED+::  sent when the current list item changes; the message data is an Integer indicating the index of the current item.
      # +SEL_COMMAND+::  sent when the current list item changes; the message data is an Integer indicating the index of the current item.
      # +SEL_KEYPRESS+::  sent when a key goes down; the message data is an FXEvent instance.
      # +SEL_KEYRELEASE+::  sent when a key goes up; the message data is an FXEvent instance.
      # +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_RIGHTBUTTONPRESS+:: sent when the right mouse button goes down; the message data is an FXEvent instance.
      # +SEL_RIGHTBUTTONRELEASE+:: sent when the right mouse button goes up; the message data is an FXEvent instance.
      # +SEL_CLICKED+::  sent when a list item is single-clicked; the message data is an Integer indicating the index of the current item.
      # +SEL_DOUBLECLICKED+:: sent when a list item is double-clicked; the message data is an Integer indicating the index of the current item.
      # +SEL_TRIPLECLICKED+:: sent when a list item is triple-clicked; the message data is an Integer indicating the index of the current item.
      # +SEL_SELECTED+::  sent when a list item is selected; the message data is an Integer indicating the index of the selected item.
      # +SEL_DESELECTED+::  sent when a list item is deselected; the message data is an Integer indicating the index of the deselected item.
      # +SEL_REPLACED+::  sent when a list item is about to be replaced; the message data is an Integer indicating the index of the item to be replaced.
      # +SEL_INSERTED+::  sent after a list item is inserted; the message data is an Integer indicating the index of the item that was inserted.
      # +SEL_DELETED+::  sent when a list item is about to be removed; the message data is an Integer indicating the index of the item to be removed.
    
      #
      # === Icon list styles
      #
    
      # +ICONLIST_EXTENDEDSELECT+::  Extended selection mode
      # +ICONLIST_SINGLESELECT+::  At most one selected item
      # +ICONLIST_BROWSESELECT+::  Always exactly one selected item
      # +ICONLIST_MULTIPLESELECT+::  Multiple selection mode
      # +ICONLIST_AUTOSIZE+::  Automatically size item spacing
      # +ICONLIST_DETAILED+::  List mode
      # +ICONLIST_MINI_ICONS+::  Mini Icon mode
      # +ICONLIST_BIG_ICONS+::  Big Icon mode
      # +ICONLIST_ROWS+::   Row-wise mode
      # +ICONLIST_COLUMNS+::  Column-wise mode
      # +ICONLIST_NORMAL+::   same as +ICONLIST_EXTENDEDSELECT+
    
      #
      # === Message identifiers
      #
    
      # +ID_SHOW_DETAILS+::  x
      # +ID_SHOW_MINI_ICONS+:: x
      # +ID_SHOW_BIG_ICONS+:: x
      # +ID_ARRANGE_BY_ROWS+:: x
      # +ID_ARRANGE_BY_COLUMNS+:: x
      # +ID_HEADER_CHANGE+:: x
      # +ID_TIPTIMER+::  x
      # +ID_LOOKUPTIMER+::  x
      # +ID_SELECT_ALL+::  x
      # +ID_DESELECT_ALL+::  x
      # +ID_SELECT_INVERSE+:: x
    
      class FXIconList < FXScrollArea
    
        # Number of items [Integer]
    
        # Number of rows [Integer]
    
        # Number of columns [Integer]
    
        # The header control {FXHeader}
    
        # The number of header items in the header control [Integer]
    
        # Item width [Integer]
    
        # Item height [Integer]
    
        # Index of current item, or -1 if none [Integer]
        attr_accessor :currentItem
    
        # Index of anchor item, or -1 if none [Integer]
        attr_accessor :anchorItem
    
        # Index of item under the cursor, or -1 if none [Integer]
    
        # Text font {FXFont}
    
        attr_accessor :font
    
        # Normal text color {FXColor}
    
        attr_accessor :textColor
    
        # Background color for selected item(s) {FXColor}
    
        attr_accessor :selBackColor
    
        # Text color for selected item(s) {FXColor}
    
        attr_accessor :selTextColor
    
        # Maximum item space (in pixels) for each item [Integer]
        attr_accessor :itemSpace
    
        # Icon list style [Integer]
        attr_accessor :listStyle
    
        # Status line help text [String]
        attr_accessor :helpText
    
        # Construct icon list with no items in it initially
        def initialize(p, target=nil, selector=0, opts=ICONLIST_NORMAL, x=0, y=0, width=0, height=0) # :yields: theIconList
        end
    
        # Set headers from an array of strings.
        def setHeaders(strings, size=1); end
    
        # Append header with given _text_ and optional _icon_.
        def appendHeader(text, icon=nil, size=1); end
    
        # Remove header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def removeHeader(headerIndex); end
    
        # Change text of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def setHeaderText(headerIndex, text); end
    
        # Return text of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def getHeaderText(headerIndex); end
    
        # Change icon of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def setHeaderIcon(headerIndex, icon); end
    
        # Return icon of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def getHeaderIcon(headerIndex); end
    
        # Change size of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def setHeaderSize(headerIndex, size); end
    
        # Return size of header at _headerIndex_.
        # Raises IndexError if _headerIndex_ is out of bounds.
        def getHeaderSize(headerIndex); end
    
        # Return the item at the given _index_.
        # Raises IndexError if _index_ is out of bounds.
        def getItem(itemIndex); end
    
        # Replace the item at _index_ with a (possibly subclassed) _item_.
        # If _notify_ is +true+, a +SEL_REPLACED+ message is sent to the list's message target
        # before the item is replaced.
        # Raises IndexError if _index_ is out of bounds.
        def setItem(index, item, notify=false); end
    
        # Replace item _text_, _bigIcon_, _miniIcon_ and user _data_ for the item at _index_.
        # If _notify_ is +true+, a +SEL_REPLACED+ message is sent to the list's message target
        # before the item is replaced.
        # Raises IndexError if _index_ is out of bounds.
        def setItem(index, text, bigIcon=nil, miniIcon=nil, data=nil, notify=false); end
    
        #
        # Fill list by appending items from array of strings, and return the number
        # of items appended.
        #
        def fillItems(strings, big=nil, mini=nil, data=nil, notify=false); end
    
        # Insert a new (possibly subclassed) _item_ at the given _index_.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is inserted.
        # Raises IndexError if _index_ is out of bounds.
        def insertItem(index, item, notify=false); end
    
        # Insert item at _index_ with given _text_, _bigIcon_, _miniIcon_ and user _data_.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is inserted.
        # Raises IndexError if _index_ is out of bounds.
        def insertItem(index, text, bigIcon=nil, miniIcon=nil, data=nil, notify=false); end
    
        # Append a new (possibly subclassed) _item_ to the end of the list.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is appended.
        def appendItem(item, notify=false); end
    
        # Append a new item with given _text_ and optional _bigIcon_, _miniIcon_ and user _data_.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is appended.
        def appendItem(text, bigIcon=nil, miniIcon=nil, data=nil, notify=false); end
    
        # Prepend a new (possibly subclassed) _item_ to the beginning of the list.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is prepended.
        def prependItem(item, notify=false); end
    
        # Prepend a new item with given _text_ and optional _bigIcon_, _miniIcon_ and user _data_.
        # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's message target
        # after the item is prepended.
        def prependItem(text, bigIcon=nil, miniIcon=nil, data=nil, notify=false); end
    
        #
        # Move item from _oldIndex_ to _newIndex_ and return the new index of the
        # item..
        # If _notify_ is +true+ and this move causes the current item to change, a
        # +SEL_CHANGED+ message is sent to the list's message target to indicate this
        # change in the current item.
        # Raises IndexError if either _oldIndex_ or _newIndex_ is out of bounds.
        #
        def moveItem(newIndex, oldIndex, notify=false); end
    
        #
        # Extract item from list and return a reference to the item.
        # If _notify_ is  +true+, a +SEL_DELETED+ message is sent to the list's
        # message target before the item is extracted from the list.
        # Raises IndexError if _index_ is out of bounds.
        #
        def extractItem(index, notify=false); end
    
        # Remove item at _index_ from the list.
        # If _notify_ is  +true+, a +SEL_DELETED+ message is sent to the list's message target
        # before the item is removed.
        # Raises IndexError if _index_ is out of bounds.
        def removeItem(index, notify=false); end
    
        # Remove all items from list.
        # If _notify_ is +true+, a +SEL_DELETED+ message is sent to the list's message target
        # before each item is removed.
        def clearItems(notify=false); end
    
        # Return index of item at (_x_, _y_), or -1 if none
        def getItemAt(x, y); end
    
        #
        # Search items by _text_, beginning from item _start_.  If the start
        # item is -1 the search will start at the first item in the list.
        # Flags may be SEARCH_FORWARD or SEARCH_BACKWARD to control the
        # search direction; this can be combined with SEARCH_NOWRAP or SEARCH_WRAP
        # to control whether the search wraps at the start or end of the list.
        # The option SEARCH_IGNORECASE causes a case-insensitive match.  Finally,
        # passing SEARCH_PREFIX causes searching for a prefix of the item name.
        # Return -1 if no matching item is found.
        #
        def findItem(text, start=-1, flags=SEARCH_FORWARD|SEARCH_WRAP); end
    
        #
        # Search items by associated user _data_, beginning from item _start_. If the
        # start item is -1 the search will start at the first item in the list.
        # Flags may be SEARCH_FORWARD or SEARCH_BACKWARD to control the
        # search direction; this can be combined with SEARCH_NOWRAP or SEARCH_WRAP
        # to control whether the search wraps at the start or end of the list.
        #
        def findItemByData(data, start=-1, flags=SEARCH_FORWARD|SEARCH_WRAP); end
    
        #
        # Scroll to bring item into view. The argument is either a reference to
        # an FXIconItem instance, or the integer index of an item in the list.
    
        # For the latter case, {#makeItemVisible} raises IndexError if the index
    
        # is out of bounds.
        #
        def makeItemVisible(itemOrIndex); end
    
        # Change text for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def setItemText(index, text); end
    
        # Return text for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def getItemText(index); end
    
        # Change big icon for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def setItemBigIcon(index, bigIcon, owned=false); end
    
        # Return big icon for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def getItemBigIcon(index); end
    
        # Change mini icon for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def setItemMiniIcon(index, miniIcon, owned=false); end
    
        # Return mini icon for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def getItemMiniIcon(index); end
    
        # Change user _data_ for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
    
        # Return user data for item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def getItemData(index); end
    
        # Return +true+ if item at _index_ is selected.
        # Raises IndexError if _index_ is out of bounds.
        def itemSelected?(index); end
    
        # Return +true+ if item at _index_ is the current item.
        # Raises IndexError if _index_ is out of bounds.
        def itemCurrent?(index); end
    
        # Return +true+ if item at _index_ is visible.
        # Raises IndexError if _index_ is out of bounds.
        def itemVisible?(index); end
    
        # Return +true+ if item at _index_ is enabled.
        # Raises IndexError if _index_ is out of bounds.
        def itemEnabled?(index); end
    
        # Return item hit code: 0 outside, 1 icon, 2 text.
        # Raises IndexError if _index_ is out of bounds.
        def hitItem(index, x, y, ww=1, hh=1); end
    
        # Repaint item at _index_.
        # Raises IndexError if _index_ is out of bounds.
        def updateItem(index); end
    
        # Select items in rectangle.
        # If _notify_ is +true+, a +SEL_SELECTED+ message is sent to the list's
        # message target after each previously unselected item is selected.
        def selectInRectangle(x, y, w, h, notify=false); end
    
        # Enable item at _index_.
        # Raises IndexError if _index_ is out of bounds.
    
        # Disable item at _index_.
        # Raises IndexError if _index_ is out of bounds.
    
        # Select item at _index_.
        # If _notify_ is +true+, a +SEL_SELECTED+ message is sent to the list's
        # message target after the item is selected.
        # Raises IndexError if _index_ is out of bounds.
        def selectItem(index, notify=false); end
    
        # Deselect item at _index_.
        # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the list's
        # message target after the item is deselected.
        # Raises IndexError if _index_ is out of bounds.
        def deselectItem(index, notify=false); end
    
        # Toggle item at _index_.
        # If _notify_ is  +true+, either a +SEL_SELECTED+ or +SEL_DESELECTED+
        # message is sent to the list's message target to indicate the item's
        # new state.
        # Raises IndexError if _index_ is out of bounds.
        def toggleItem(index, notify=false); end
    
        # Change current item index.
        # If _notify_ is  +true+, a +SEL_CHANGED+ message is sent to the list's message target
        # after the current item changes.
        # Raises IndexError if _index_ is out of bounds.
        def setCurrentItem(index, notify=false); end
    
        # Extend selection from anchor index to _index_.
        # If _notify_ is  +true+, a series of +SEL_SELECTED+ and +SEL_DESELECTED+ messages
        # are sent to the list's message target as the selected-state of different items changes.
        # Raises IndexError if _index_ is out of bounds.
        def extendSelection(index, notify=false); end
    
        # Deselect all items.
        # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the list's message
        # target for all the items that were selected before killSelection was called.
        def killSelection(notify=false); end
    
        # Sort items
        def sortItems(); end
      end
    end