Class: Fox::FXFoldingList

Inherits:
FXScrollArea show all
Includes:
Enumerable
Defined in:
rdoc-sources/FXFoldingList.rb,
lib/fox16/iterators.rb

Overview

An FXFoldingList widget resembles an FXTreeList, but it supports a header control to provide each item with multiple columns of text. Subtrees can be collapsed or expanded by double-clicking on an item or by clicking on the optional plus button in front of the item. Each item may have a text and optional open-icon as well as a closed-icon. The items may be connected by optional lines to show the hierarchical relationship. When an item's selected state changes, the folding list emits a SEL_SELECTED or SEL_DESELECTED message. If an item is opened or closed, a message of type SEL_OPENED or SEL_CLOSED is sent. When the subtree under an item is expanded, a SEL_EXPANDED or SEL_COLLAPSED message is issued. A change of the current item is signified by the SEL_CHANGED message. In addition, the folding 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 or removed, the folding list sends messages of the type SEL_INSERTED or SEL_DELETED. In each of these cases, a pointer to the item, if any, is passed in the 3rd argument of the message.

Events

The following messages are sent by FXFoldingList to its target:

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_COMMAND

sent when a list item is clicked on; the message data is a reference to the item (an FXFoldingItem instance).

SEL_CLICKED

sent when the left mouse button is single-clicked in the list; the message data is a reference to the item clicked (an FXFoldingItem instance) or nil if no item was clicked.

SEL_DOUBLECLICKED

sent when the left mouse button is double-clicked in the list; the message data is a reference to the item clicked (an FXFoldingItem instance) or nil if no item was clicked.

SEL_TRIPLECLICKED

sent when the left mouse button is triple-clicked in the list; the message data is a reference to the item clicked (an FXFoldingItem instance) or nil if no item was clicked.

SEL_OPENED

sent when an item is opened; the message data is a reference to the item (an FXFoldingItem instance).

SEL_CLOSED

sent when an item is closed; the message data is a reference to the item (an FXFoldingItem instance).

SEL_EXPANDED

sent when a sub-tree is expanded; the message data is a reference to the root item for the sub-tree (an FXFoldingItem instance).

SEL_COLLAPSED

sent when a sub-tree is collapsed; the message data is a reference to the root item for the sub-tree (an FXFoldingItem instance).

SEL_SELECTED

sent when an item is selected; the message data is a reference to the item (an FXFoldingItem instance).

SEL_DESELECTED

sent when an item is deselected; the message data is a reference to the item (an FXFoldingItem instance).

SEL_CHANGED

sent when the current item changes; the message data is a reference to the current item (an FXFoldingItem instance).

SEL_INSERTED

sent after an item is added to the list; the message data is a reference to the item (an FXFoldingItem instance).

SEL_DELETED

sent before an item is removed from the list; the message data is a reference to the item (an FXFoldingItem instance).

Folding list styles

FOLDINGLIST_EXTENDEDSELECT

Extended selection mode allows for drag-selection of ranges of items

FOLDINGLIST_SINGLESELECT

Single selection mode allows up to one item to be selected

FOLDINGLIST_BROWSESELECT

Browse selection mode enforces one single item to be selected at all times

FOLDINGLIST_MULTIPLESELECT

Multiple selection mode is used for selection of individual items

FOLDINGLIST_AUTOSELECT

Automatically select under cursor

FOLDINGLIST_SHOWS_LINES

Lines shown

FOLDINGLIST_SHOWS_BOXES

Boxes to expand shown

FOLDINGLIST_ROOT_BOXES

Display root boxes also

FOLDINGLIST_NORMAL

same as FOLDINGLIST_EXTENDEDSELECT

Instance Attribute Summary collapse

Attributes inherited from FXScrollArea

#contentHeight, #contentWidth, #horizontalScrollBar, #scrollStyle, #verticalScrollBar, #viewportHeight, #viewportWidth, #xPosition, #yPosition

Attributes inherited from FXWindow

#accelTable, #backColor, #defaultCursor, #dragCursor, #first, #focus, #key, #last, #layoutHints, #next, #numChildren, #owner, #parent, #prev, #root, #selector, #shell, #target, #x, #y

Attributes inherited from FXDrawable

#height, #visual, #width

Attributes inherited from FXId

#app, #userData, #xid

Instance Method Summary collapse

Methods inherited from FXScrollArea

#horizontalScrollable?, #position, #scrollCorner, #setPosition, #verticalScrollable?

Methods inherited from FXComposite

#maxChildHeight, #maxChildWidth

Methods inherited from FXWindow

#acceptDrop, #acquireClipboard, #acquireSelection, #active?, #addHotKey, after?, #after?, before?, #before?, #beginDrag, #canFocus?, #changeFocus, #childAtIndex, #childOf?, #children, #clearDragRectangle, #clearShape, colorType, colorTypeName, commonAncestor, #composeContext, #composite?, #contains?, #containsChild?, #create, #createComposeContext, #cursorPosition, #default?, #defaultHeight, #defaultWidth, deleteType, deleteTypeName, #destroy, #destroyComposeContext, #detach, #didAccept, #disable, #doesSaveUnder?, #dragging?, #dropDisable, #dropEnable, #dropEnabled?, #dropFinished, #dropTarget?, #each_child, #each_child_recursive, #enable, #enabled?, #endDrag, #forceRefresh, #getChildAt, #getDNDData, #getHeightForWidth, #getWidthForHeight, #grab, #grabKeyboard, #grabbed?, #grabbedKeyboard?, #handleDrag, #hasClipboard?, #hasFocus?, #hasSelection?, #height, #height=, #hide, imageType, #inFocusChain?, #indexOfChild, #initial?, #inquireDNDAction, #inquireDNDTypes, #killFocus, #layout, #linkAfter, #linkBefore, #lower, #move, octetType, octetTypeName, #offeredDNDType?, #position, #raiseWindow, #recalc, #releaseClipboard, #releaseSelection, #remHotKey, #removeChild, #repaint, #reparent, #resize, #scroll, #setCursorPosition, #setDNDData, #setDefault, #setDragRectangle, #setFocus, #setInitial, #setShape, #shell?, #show, #shown?, stringType, textType, textTypeName, #tr, #translateCoordinatesFrom, #translateCoordinatesTo, #underCursor?, #ungrab, #ungrabKeyboard, #update, urilistType, urilistTypeName, utf16Type, utf16TypeName, utf8Type, utf8TypeName, #visible=, #width, #width=

Methods included from Responder2

#connect

Methods inherited from FXDrawable

#resize

Methods inherited from FXId

#create, #created?, #destroy, #detach, #runOnUiThread

Methods inherited from FXObject

#bind, #handle, #load, #save, subclasses

Constructor Details

#initialize(p, target = nil, selector = 0, opts = TREELIST_NORMAL, x = 0, y = 0, width = 0, height = 0) ⇒ FXFoldingList

Return an initialized FXFoldingList instance; the folding list is initially empty.

Parameters:

p

the parent window for this folding list Fox::FXComposite

target

the message target, if any, for this folding list Fox::FXObject

selector

the message identifier for this folding list [Integer]

opts

folding list options [Integer]

x

initial x-position [Integer]

y

initial y-position [Integer]

width

initial width [Integer]

height

initial height [Integer]


256
257
# File 'rdoc-sources/FXFoldingList.rb', line 256

def initialize(p, target=nil, selector=0, opts=TREELIST_NORMAL, x=0, y=0, width=0, height=0) # :yields: theFoldingList
end

Instance Attribute Details

#anchorItemObject

Anchor item, if any Fox::FXFoldingItem


213
214
215
# File 'rdoc-sources/FXFoldingList.rb', line 213

def anchorItem
  @anchorItem
end

#currentItemObject

Current item, if any Fox::FXFoldingItem


210
211
212
# File 'rdoc-sources/FXFoldingList.rb', line 210

def currentItem
  @currentItem
end

#cursorItemObject (readonly)

Item under the cursor, if any Fox::FXFoldingItem


216
217
218
# File 'rdoc-sources/FXFoldingList.rb', line 216

def cursorItem
  @cursorItem
end

#firstItemObject (readonly)

First root-level item Fox::FXFoldingItem


204
205
206
# File 'rdoc-sources/FXFoldingList.rb', line 204

def firstItem
  @firstItem
end

#fontObject

Text font Fox::FXFont


219
220
221
# File 'rdoc-sources/FXFoldingList.rb', line 219

def font
  @font
end

#headerObject (readonly)

Header control Fox::FXHeader


192
193
194
# File 'rdoc-sources/FXFoldingList.rb', line 192

def header
  @header
end

#helpTextObject

Status line help text for this list [String]


240
241
242
# File 'rdoc-sources/FXFoldingList.rb', line 240

def helpText
  @helpText
end

#indentObject

Parent-child indent amount, in pixels [Integer]


222
223
224
# File 'rdoc-sources/FXFoldingList.rb', line 222

def indent
  @indent
end

#lastItemObject (readonly)

Last root-level item Fox::FXFoldingItem


207
208
209
# File 'rdoc-sources/FXFoldingList.rb', line 207

def lastItem
  @lastItem
end

#lineColorObject

Line color Fox::FXColor


234
235
236
# File 'rdoc-sources/FXFoldingList.rb', line 234

def lineColor
  @lineColor
end

#listStyleObject

List style [Integer]


237
238
239
# File 'rdoc-sources/FXFoldingList.rb', line 237

def listStyle
  @listStyle
end

#numHeadersObject (readonly)

Number of header items [Integer]


195
196
197
# File 'rdoc-sources/FXFoldingList.rb', line 195

def numHeaders
  @numHeaders
end

#numItemsObject (readonly)

Number of items [Integer]


198
199
200
# File 'rdoc-sources/FXFoldingList.rb', line 198

def numItems
  @numItems
end

#numVisibleObject

Number of visible items [Integer]


201
202
203
# File 'rdoc-sources/FXFoldingList.rb', line 201

def numVisible
  @numVisible
end

#selBackColorObject

Selected text background color Fox::FXColor


228
229
230
# File 'rdoc-sources/FXFoldingList.rb', line 228

def selBackColor
  @selBackColor
end

#selTextColorObject

Selected text color Fox::FXColor


231
232
233
# File 'rdoc-sources/FXFoldingList.rb', line 231

def selTextColor
  @selTextColor
end

#textColorObject

Normal text color Fox::FXColor


225
226
227
# File 'rdoc-sources/FXFoldingList.rb', line 225

def textColor
  @textColor
end

Instance Method Details

#appendHeader(text, icon = nil, size = 1) ⇒ Object

Append header with given text and optional icon


263
# File 'rdoc-sources/FXFoldingList.rb', line 263

def appendHeader(text, icon=nil, size=1); end

#appendItem(father, text, oi = nil, ci = nil, ptr = nil, notify = false) ⇒ Object

Append a new item with given text and optional openIcon, closedIcon and user data as last child of father. Returns a reference to the newly added item (an FXFoldingItem instance). If notify is true, a SEL_INSERTED message is sent to the list's message target after the item is added.


308
# File 'rdoc-sources/FXFoldingList.rb', line 308

def appendItem(father, item, notify=false); end

#clearItems(notify = false) ⇒ Object

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.


356
# File 'rdoc-sources/FXFoldingList.rb', line 356

def clearItems(notify=false); end

#closeItem(item, notify = false) ⇒ Object

Close item. If notify is true, a SEL_CLOSED message is sent to the list's message target after the item is closed.


467
# File 'rdoc-sources/FXFoldingList.rb', line 467

def closeItem(item, notify=false); end

#collapseTree(tree, notify = false) ⇒ Object

Collapse sub-tree rooted at tree. If notify is true, a SEL_COLLAPSED message is sent to the list's message target after the sub-tree is collapsed.


472
# File 'rdoc-sources/FXFoldingList.rb', line 472

def collapseTree(tree, notify=false); end

#deselectItem(item, notify = false) ⇒ Object

Deselect item. If notify is true, a SEL_DESELECTED message is sent to the list's message target after the item is deselected.


452
# File 'rdoc-sources/FXFoldingList.rb', line 452

def deselectItem(item, notify=false); end

#disableItem(item) ⇒ Object

Disable item


442
# File 'rdoc-sources/FXFoldingList.rb', line 442

def disableItem(item); end

#eachObject

Calls block once for each root-level folding list item, passing a reference to that item as a parameter.


34
35
36
37
38
39
40
41
42
# File 'lib/fox16/iterators.rb', line 34

def each # :yields: aFoldingItem
  current = firstItem
  while current != nil
    next_current = current.next
    yield current
    current = next_current
  end
  self
end

#enableItem(item) ⇒ Object

Enable item


439
# File 'rdoc-sources/FXFoldingList.rb', line 439

def enableItem(item); end

#expandTree(tree, notify = false) ⇒ Object

Expand sub-tree rooted at tree. If notify is true, a SEL_EXPANDED message is sent to the list's message target after the sub-tree is expanded.


477
# File 'rdoc-sources/FXFoldingList.rb', line 477

def expandTree(tree, notify=false); end

#extendSelection(item, notify = false) ⇒ Object

Extend selection from anchor item to item. If notify is true, a series of SEL_SELECTED and SEL_DESELECTED messages may be sent to the list's message target, indicating the changes.


487
# File 'rdoc-sources/FXFoldingList.rb', line 487

def extendSelection(item, notify=false); end

#extractItem(item, notify = false) ⇒ Object

Extract item and return a reference to it (without destroying it). If notify is true, a SEL_CHANGED message may be sent to the folding list's message target if the current item changes. If the selection changes, SEL_SELECTED and SEL_DESELECTED messages may also be sent to the message target.


339
# File 'rdoc-sources/FXFoldingList.rb', line 339

def extractItem(item, notify=false); end

#fillItems(father, strings, oi = nil, ci = nil, ptr = nil, notify = false) ⇒ Object

Fill list by appending items from array of strings and return the number of items created. If notify is true, a SEL_INSERTED message is sent to the list's message target after each item is added.


290
# File 'rdoc-sources/FXFoldingList.rb', line 290

def fillItems(father, strings, oi=nil, ci=nil, ptr=nil, notify=false); end

#findItem(text, start = nil, flags = SEARCH_FORWARD|SEARCH_WRAP) ⇒ Object

Search items by name, beginning from item start. If the start item is nil the search will start at the first, top-most 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. Returns nil if no matching item is found.


372
# File 'rdoc-sources/FXFoldingList.rb', line 372

def findItem(text, start=nil, flags=SEARCH_FORWARD|SEARCH_WRAP); end

#findItemByData(ptr, start = nil, flags = SEARCH_FORWARD|SEARCH_WRAP) ⇒ Object

Search items by associated user data, beginning from item start. If the start item is nil the search will start at the first, top-most 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. Returns nil if no matching item is found.


380
# File 'rdoc-sources/FXFoldingList.rb', line 380

def findItemByData(ptr, start=nil, flags=SEARCH_FORWARD|SEARCH_WRAP); end

#getHeaderIcon(index) ⇒ Object

Return icon of header at index


278
# File 'rdoc-sources/FXFoldingList.rb', line 278

def getHeaderIcon(index); end

#getHeaderSize(index) ⇒ Object

Return width of header at index


284
# File 'rdoc-sources/FXFoldingList.rb', line 284

def getHeaderSize(index); end

#getHeaderText(index) ⇒ Object

Return text of header at index


272
# File 'rdoc-sources/FXFoldingList.rb', line 272

def getHeaderText(index); end

#getItemClosedIcon(item) ⇒ Object

Return item's closed icon


403
# File 'rdoc-sources/FXFoldingList.rb', line 403

def getItemClosedIcon(item); end

#getItemData(item) ⇒ Object

Return item's user data


409
# File 'rdoc-sources/FXFoldingList.rb', line 409

def getItemData(item); end

#getItemHeight(item) ⇒ Object

Return item height


362
# File 'rdoc-sources/FXFoldingList.rb', line 362

def getItemHeight(item); end

#getItemOpenIcon(item) ⇒ Object

Return item's open icon


396
# File 'rdoc-sources/FXFoldingList.rb', line 396

def getItemOpenIcon(item); end

#getItemText(item) ⇒ Object

Return item's text


389
# File 'rdoc-sources/FXFoldingList.rb', line 389

def getItemText(item); end

#getItemWidth(item) ⇒ Object

Return item width


359
# File 'rdoc-sources/FXFoldingList.rb', line 359

def getItemWidth(item); end

#hitItem(item, x, y) ⇒ Object

Return item hit code: 0 outside, 1 icon, 2 text, 3 box


433
# File 'rdoc-sources/FXFoldingList.rb', line 433

def hitItem(item, x, y); end

#insertItem(other, father, text, oi = nil, ci = nil, ptr = nil, notify = false) ⇒ Object

Insert item with given text and optional icons, and user-data pointer under father before other item.. Returns a reference to the newly added item (an FXFoldingItem instance). If notify is true, a SEL_INSERTED message is sent to the list's message target after the item is added.


296
# File 'rdoc-sources/FXFoldingList.rb', line 296

def insertItem(other, father, item, notify=false); end

#itemCurrent?(item) ⇒ Boolean

Return true if item is current

Returns:

  • (Boolean)

415
# File 'rdoc-sources/FXFoldingList.rb', line 415

def itemCurrent?(item); end

#itemEnabled?(item) ⇒ Boolean

Return true if item is enabled

Returns:

  • (Boolean)

430
# File 'rdoc-sources/FXFoldingList.rb', line 430

def itemEnabled?(item); end

#itemExpanded?(item) ⇒ Boolean

Return true if item expanded

Returns:

  • (Boolean)

424
# File 'rdoc-sources/FXFoldingList.rb', line 424

def itemExpanded?(item); end

#itemLeaf?(item) ⇒ Boolean

Return true if item is a leaf-item, i.e. has no children

Returns:

  • (Boolean)

427
# File 'rdoc-sources/FXFoldingList.rb', line 427

def itemLeaf?(item); end

#itemOpened?(item) ⇒ Boolean

Return true if item opened

Returns:

  • (Boolean)

421
# File 'rdoc-sources/FXFoldingList.rb', line 421

def itemOpened?(item); end

#itemSelected?(item) ⇒ Boolean

Return true if item is selected

Returns:

  • (Boolean)

412
# File 'rdoc-sources/FXFoldingList.rb', line 412

def itemSelected?(item); end

#itemVisible?(item) ⇒ Boolean

Return true if item is visible

Returns:

  • (Boolean)

418
# File 'rdoc-sources/FXFoldingList.rb', line 418

def itemVisible?(item); end

#killSelection(notify = false) ⇒ Object

Deselect all items. If notify is true, SEL_DESELECTED messages will be sent to the list's message target indicating the affected items.


492
# File 'rdoc-sources/FXFoldingList.rb', line 492

def killSelection(notify=false); end

#makeItemVisible(item) ⇒ Object

Scroll the list to make item visible


383
# File 'rdoc-sources/FXFoldingList.rb', line 383

def makeItemVisible(item); end

#moveItem(other, father, item) ⇒ Object

Move item under father before other item.


330
# File 'rdoc-sources/FXFoldingList.rb', line 330

def moveItem(other, father, item); end

#openItem(item, notify = false) ⇒ Object

Open item. If notify is true, a SEL_OPENED message is sent to the list's message target after the item is opened.


462
# File 'rdoc-sources/FXFoldingList.rb', line 462

def openItem(item, notify=false); end

#prependItem(father, text, oi = nil, ci = nil, ptr = nil, notify = false) ⇒ Object

Prepend a new item with given text and optional icons and user data as first child of father. Returns a reference to the newly added item (an FXFoldingItem instance). If notify is true, a SEL_INSERTED message is sent to the list's message target after the item is added.


321
# File 'rdoc-sources/FXFoldingList.rb', line 321

def prependItem(father, item, notify=false); end

#removeHeader(index) ⇒ Object

Remove header at index


266
# File 'rdoc-sources/FXFoldingList.rb', line 266

def removeHeader(index); end

#removeItem(item, notify = false) ⇒ Object

Remove item. If notify is true, a SEL_DELETED message is sent to the list's message target before the item is removed.


346
# File 'rdoc-sources/FXFoldingList.rb', line 346

def removeItem(item, notify=false); end

#removeItems(fromItem, toItem, notify = false) ⇒ Object

Remove items in range [fromItem, toItem] inclusively. If notify is true, a SEL_DELETED message is sent to the list's message target before each item is removed.


351
# File 'rdoc-sources/FXFoldingList.rb', line 351

def removeItems(fromItem, toItem, notify=false); end

#selectItem(item, notify = false) ⇒ Object

Select item. If notify is true, a SEL_SELECTED message is sent to the list's message target after the item is selected.


447
# File 'rdoc-sources/FXFoldingList.rb', line 447

def selectItem(item, notify=false); end

#setCurrentItem(item, notify = false) ⇒ Object

Change current item. If notify is true, a SEL_CHANGED message is sent to the list's message target after the current item changes.


482
# File 'rdoc-sources/FXFoldingList.rb', line 482

def setCurrentItem(item, notify=false); end

#setHeaderIcon(index, icon) ⇒ Object

Change icon of header at index


275
# File 'rdoc-sources/FXFoldingList.rb', line 275

def setHeaderIcon(index, icon); end

#setHeaders(headers, size = 1) ⇒ Object

Set headers from an array of strings.


260
# File 'rdoc-sources/FXFoldingList.rb', line 260

def setHeaders(headers, size=1); end

#setHeaderSize(index, size) ⇒ Object

Change size of header at index


281
# File 'rdoc-sources/FXFoldingList.rb', line 281

def setHeaderSize(index, size); end

#setHeaderText(index, text) ⇒ Object

Change text of header at index


269
# File 'rdoc-sources/FXFoldingList.rb', line 269

def setHeaderText(index, text); end

#setItemClosedIcon(item, icn, owned = false) ⇒ Object

Change item's closed icon, deleting old icon if it was owned. If owned is true, mark icn as owned by this folding item.


400
# File 'rdoc-sources/FXFoldingList.rb', line 400

def setItemClosedIcon(item, icn, owned=false); end

#setItemData(item, data) ⇒ Object

Change item's user data


406
# File 'rdoc-sources/FXFoldingList.rb', line 406

def setItemData(item, data); end

#setItemOpenIcon(item, icn, owned = false) ⇒ Object

Change item's open icon, deleting old icon if it was owned. If owned is true, mark icn as owned by this folding item.


393
# File 'rdoc-sources/FXFoldingList.rb', line 393

def setItemOpenIcon(item, icn, owned=false); end

#setItemText(item, text) ⇒ Object

Change item's text


386
# File 'rdoc-sources/FXFoldingList.rb', line 386

def setItemText(item, text); end

#sortChildItems(item) ⇒ Object

Sort children of item


501
# File 'rdoc-sources/FXFoldingList.rb', line 501

def sortChildItems(item); end

#sortItemsObject

Sort all items recursively


495
# File 'rdoc-sources/FXFoldingList.rb', line 495

def sortItems(); end

#sortRootItemsObject

Sort root items


498
# File 'rdoc-sources/FXFoldingList.rb', line 498

def sortRootItems(); end

#toggleItem(item, notify = false) ⇒ Object

Toggle item selection. If notify is true, a SEL_SELECTED or SEL_DESELECTED message is sent to the list's message target to indicate the change.


457
# File 'rdoc-sources/FXFoldingList.rb', line 457

def toggleItem(item, notify=false); end

#updateItem(item) ⇒ Object

Repaint item


436
# File 'rdoc-sources/FXFoldingList.rb', line 436

def updateItem(item); end