Codebase list ruby-fxruby / master rdoc-sources / FXList.rb
master

Tree @master (Download .tar.gz)

FXList.rb @masterraw · history · blame

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
module Fox
  #
  # List item
  #
  class FXListItem < FXObject

    # Text for this item [String]
    attr_accessor :text

    # Icon for this item {FXIcon}
    attr_accessor :icon

    # User data for this item [Object]
    attr_accessor :data

    # Indicates whether this item has the focus [Boolean]
    attr_writer :focus

    # Indicates whether this item is selected [Boolean]
    attr_writer :selected

    # Indicates whether this item is enabled [Boolean]
    attr_writer :enabled

    # Indicates whether this item is draggable [Boolean]
    attr_writer :draggable

    # Initialize
    def initialize(text, icon=nil, data=nil) # :yields: theListItem
    end

    # Return the list item's text
    def to_s; text; 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 for a specified list
    def getWidth(list) ; end

    # Return the height of this item for a specified list
    def getHeight(list) ; end

    # Create the item
    def create() ; end

    # Detach the item
    def detach() ; end

    # Destroy the item
    def destroy( ); end
  end

  #
  # A List Widget displays a list of items, each with a text and
  # optional icon.  When an item's selected state changes, the list sends
  # a +SEL_SELECTED+ or +SEL_DESELECTED+ message.  A change of the current
  # item is signified by the +SEL_CHANGED+ message.
  # The 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 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 FXList 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.
  #
  # === List styles
  #
  # +LIST_EXTENDEDSELECT+:: Extended selection mode allows for drag-selection of ranges of items
  # +LIST_SINGLESELECT+:: Single selection mode allows up to one item to be selected
  # +LIST_BROWSESELECT+:: Browse selection mode enforces one single item to be selected at all times
  # +LIST_MULTIPLESELECT+:: Multiple selection mode is used for selection of individual items
  # +LIST_AUTOSELECT+::  Automatically select under cursor
  # +LIST_NORMAL+::  same as +LIST_EXTENDEDSELECT+
  #
  # === Message identifiers
  #
  # +ID_TIPTIMER+::
  # +ID_LOOKUPTIMER+::
  #
  class FXList < FXScrollArea

    # Number of items in the list [Integer]
    attr_reader :numItems

    # Number of visible items [Integer]
    attr_accessor :numVisible

    # Index of current item, or -1 if no current item [Integer]
    attr_accessor :currentItem

    # Index of anchor item, or -1 if no anchor item [Integer]
    attr_reader :anchorItem

    # Index of item under the cursor, or -1 if none [Integer]
    attr_reader :cursorItem

    # Text font {FXFont}
    attr_accessor :font

    # Normal text color {FXColor}
    attr_accessor :textColor

    # Selected text background color {FXColor}
    attr_accessor :selBackColor

    # Selected text color {FXColor}
    attr_accessor :selTextColor

    # List style [Integer]
    attr_accessor :listStyle

    # Status line help text [String]
    attr_accessor :helpText

    # Construct a list with initially no items in it.
    def initialize(p, target=nil, selector=0, opts=LIST_NORMAL, x=0, y=0, width=0, height=0) # :yields: theList
    end

    # Return the item at the given _index_; returns a reference to an FXListItem instance.
    # Raises IndexError if _index_ is out of bounds.
    def getItem(index) ; end

    # Replace the item at _index_ with a (possibly subclassed) _item_, e.g.
    #
    #   list.setItem(0, FXListItem.new("inky"))
    #
    # 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.
    # Returns the integer index of the replaced item.
    def setItem(index, item, notify=false) ; end

    # Replace the _text_, _icon_, and user _data_ for the item at _index_, e.g.
    #
    #   list.setItem(0, "inky")
    #
    # 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.
    # Returns the integer index of the replaced item.
    def setItem(index, text, icon=nil, data=nil, notify=false) ; end

    #
    # Fill list by appending items from array of strings, and return the number
    # items added.
    # If _notify_ is +true+, a +SEL_INSERTED+ message is sent to the list's
    # message target after the item is added.
    #
    def fillItems(strings, icon=nil, ptr=nil, notify=false); end

    # Insert a new (possibly subclassed) _item_ at the given _index_, e.g.
    #
    #   list.insertItem(1, FXListItem.new("blinky"))
    #
    # 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.
    # Returns the integer index of the inserted item.
    def insertItem(index, item, notify=false) ; end

    # Insert item at _index_ with given _text_, _icon_, and user _data_, e.g.
    #
    #   list.insertItem(1, "blinky")
    #
    # 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.
    # Returns the integer index of the inserted item.
    def insertItem(index, text, icon=nil, data=nil, notify=false) ; end

    # Append a (possibly subclassed) _item_ to the list, e.g.
    #
    #   list.appendItem(FXListItem.new("pinky"))
    #
    # If _notify_ is  +true+, a +SEL_INSERTED+ message is sent to the list's message target
    # after the item is appended.
    # Returns the integer index of the newly appended item.
    def appendItem(item, notify=false) ; end

    # Append a new item with given _text_ and optional _icon_ and user _data_, e.g.
    #
    #   list.appendItem("pinky")
    #
    # If _notify_ is  +true+, a +SEL_INSERTED+ message is sent to the list's message target
    # after the item is appended.
    # Returns the integer index of the newly appended item.
    def appendItem(text, icon=nil, data=nil, notify=false) ; end

    # Prepend a (possibly subclassed) _item_ to the list, e.g.
    #
    #   list.prependItem(FXListItem.new("clyde"))
    #
    # If _notify_ is  +true+, a +SEL_INSERTED+ message is sent to the list's message target
    # after the item is prepended.
    # Returns the integer index of the newly prepended item (which should
    # always be zero, by definition).
    def prependItem(item, notify=false) ; end

    # Prepend a new item with given _text_ and optional _icon_ and user _data_, e.g.
    #
    #   list.prependItem("clyde")
    #
    # If _notify_ is  +true+, a +SEL_INSERTED+ message is sent to the list's message target
    # after the item is prepended.
    # Returns the integer index of the newly prepended item (which should
    # always be zero, by definition).
    def prependItem(text, icon=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 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 the 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 width of item at _index_. Raises IndexError if _index_ is out of bounds.
    def getItemWidth(index) ; end

    # Return height of item at _index_. Raises IndexError if _index_ is out of bounds.
    def getItemHeight(index) ; end

    # Return index of item at (_x_, _y_), if any
    def getItemAt(x, y) ; end

    # Return item hit code: 0 no hit; 1 hit the icon; 2 hit the text
    def hitItem(index, 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_.
    # Returns the integer index of the matching item, or -1 if no match is
    # found. 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 FXListItem 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 item text and mark the list's layout as dirty; this is
    # equivalent to:
    #
    #   getItem(index).text = text
    #   recalc
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def setItemText(index, text) ; end

    #
    # Return item text; this is equivalent to:
    #
    #   getItem(index).text
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def getItemText(index) ; end

    #
    # Change item icon and mark the list's layout as dirty; this is equivalent to:
    #
    #   getItem(index).icon = icon
    #   recalc
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def setItemIcon(index, icon, owned=false) ; end

    #
    # Return item icon, if any. This is equivalent to:
    #
    #   getItem(index).icon
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def getItemIcon(index) ; end

    #
    # Change item user data; this is equivalent to:
    #
    #   getItem(index).data = data
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def setItemData(index, data) ; end

    #
    # Return item user data; this is equivalent to:
    #
    #   getItem(index).data
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def getItemData(index) ; end

    #
    # Return +true+ if item is selected; this is equivalent to:
    #
    #   getItem(index).selected?
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def itemSelected?(index) ; end

    # Return +true+ if item is current. Raises IndexError if _index_ is out of bounds.
    def itemCurrent?(index) ; end

    # Return +true+ if item is visible. Raises IndexError if _index_ is out of bounds.
    def itemVisible?(index) ; end

    #
    # Return +true+ if item is enabled; this is equivalent to:
    #
    #   getItem(index).enabled?
    #
    # Raises IndexError if _index_ is out of bounds.
    #
    def itemEnabled?(index) ; end

    # Repaint item. Raises IndexError if _index_ is out of bounds.
    def updateItem(index) ; end

    #
    # Enable item. Raises IndexError if _index_ is out of bounds.
    #
    def enableItem(index) ; end

    #
    # Disable item. Raises IndexError if _index_ is out of bounds.
    #
    def disableItem(index) ; end

    # Select item.
    # 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.
    # 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 selection state.
    # 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.
    # 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 item 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 using current sort function
    def sortItems() ; end
  end
end