• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/tcl-105/tk/tk/generic/ttk/

Lines Matching refs:tv

521     Tcl_Interp *interp, Treeview *tv, Tcl_Obj *columnIDObj)
529 &tv->tree.columnNames, Tcl_GetString(columnIDObj));
537 if (columnIndex < 0 || columnIndex >= tv->tree.nColumns) {
547 return tv->tree.columns + columnIndex;
560 Tcl_Interp *interp, Treeview *tv, Tcl_Obj *columnIDObj)
566 if (colno >= 0 && colno < tv->tree.nDisplayColumns) {
567 return tv->tree.displayColumns[colno];
577 return GetColumn(interp, tv, columnIDObj);
585 Tcl_Interp *interp, Treeview *tv, Tcl_Obj *itemNameObj)
588 Tcl_HashEntry *entryPtr = Tcl_FindHashEntry(&tv->tree.items, itemName);
606 Tcl_Interp *interp, Treeview *tv, Tcl_Obj *objPtr)
618 items[i] = FindItem(interp, tv, elements[i]);
631 static const char *ItemName(Treeview *tv, TreeItem *item)
633 return Tcl_GetHashKey(&tv->tree.items, item->entryPtr);
640 static Tcl_Obj *ItemID(Treeview *tv, TreeItem *item)
642 return Tcl_NewStringObj(ItemName(tv, item), -1);
652 static void TreeviewFreeColumns(Treeview *tv)
656 Tcl_DeleteHashTable(&tv->tree.columnNames);
657 Tcl_InitHashTable(&tv->tree.columnNames, TCL_STRING_KEYS);
659 if (tv->tree.columns) {
660 for (i = 0; i < tv->tree.nColumns; ++i)
661 FreeColumn(tv->tree.columns + i);
662 ckfree((ClientData)tv->tree.columns);
663 tv->tree.columns = 0;
671 static int TreeviewInitColumns(Tcl_Interp *interp, Treeview *tv)
677 interp, tv->tree.columnsObj, &ncols, &columns) != TCL_OK)
685 TreeviewFreeColumns(tv);
690 tv->tree.nColumns = ncols;
691 tv->tree.columns =
692 (TreeColumn*)ckalloc(tv->tree.nColumns * sizeof(TreeColumn));
699 &tv->tree.columnNames, Tcl_GetString(columnName), &isNew);
700 Tcl_SetHashValue(entryPtr, tv->tree.columns + i);
702 InitColumn(tv->tree.columns + i);
704 interp, (ClientData)(tv->tree.columns + i),
705 tv->tree.columnOptionTable, tv->core.tkwin);
707 interp, (ClientData)(tv->tree.columns + i),
708 tv->tree.headingOptionTable, tv->core.tkwin);
710 tv->tree.columns[i].idObj = columnName;
724 static int TreeviewInitDisplayColumns(Tcl_Interp *interp, Treeview *tv)
731 tv->tree.displayColumnsObj, &ndcols, &dcolumns) != TCL_OK) {
735 if (!strcmp(Tcl_GetString(tv->tree.displayColumnsObj), "#all")) {
736 ndcols = tv->tree.nColumns;
739 displayColumns[index+1] = tv->tree.columns + index;
744 displayColumns[index+1] = GetColumn(interp, tv, dcolumns[index]);
751 displayColumns[0] = &tv->tree.column0;
753 if (tv->tree.displayColumns)
754 ckfree((ClientData)tv->tree.displayColumns);
755 tv->tree.displayColumns = displayColumns;
756 tv->tree.nDisplayColumns = ndcols + 1;
766 #define FirstColumn(tv) ((tv->tree.showFlags&SHOW_TREE) ? 0 : 1)
771 static int TreeWidth(Treeview *tv)
773 int i = FirstColumn(tv);
776 while (i < tv->tree.nDisplayColumns) {
777 width += tv->tree.displayColumns[i++]->width;
784 static void RecomputeSlack(Treeview *tv)
786 tv->tree.slack = tv->tree.treeArea.width - TreeWidth(tv);
795 static int PickupSlack(Treeview *tv, int extra)
797 int newSlack = tv->tree.slack + extra;
799 if ( (newSlack < 0 && 0 <= tv->tree.slack)
800 || (newSlack > 0 && 0 >= tv->tree.slack))
802 tv->tree.slack = 0;
805 tv->tree.slack = newSlack;
810 static void DepositSlack(Treeview *tv, int extra)
812 tv->tree.slack += extra;
835 static int ShoveLeft(Treeview *tv, int i, int n)
837 int first = FirstColumn(tv);
839 TreeColumn *c = tv->tree.displayColumns[i];
852 static int ShoveRight(Treeview *tv, int i, int n)
854 while (n != 0 && i < tv->tree.nDisplayColumns) {
855 TreeColumn *c = tv->tree.displayColumns[i];
871 static int DistributeWidth(Treeview *tv, int n)
873 int w = TreeWidth(tv);
877 for (i = FirstColumn(tv); i < tv->tree.nDisplayColumns; ++i) {
878 if (tv->tree.displayColumns[i]->stretch) {
890 for (i = FirstColumn(tv); i < tv->tree.nDisplayColumns; ++i) {
891 TreeColumn *c = tv->tree.displayColumns[i];
905 static void ResizeColumns(Treeview *tv, int newWidth)
907 int delta = newWidth - (TreeWidth(tv) + tv->tree.slack);
908 DepositSlack(tv,
909 ShoveLeft(tv, tv->tree.nDisplayColumns - 1,
910 DistributeWidth(tv, PickupSlack(tv, delta))));
917 static void DragColumn(Treeview *tv, int i, int delta)
919 TreeColumn *c = tv->tree.displayColumns[i];
920 int dl = delta - ShoveLeft(tv, i-1, delta - Stretch(c, delta));
921 int dr = ShoveRight(tv, i+1, PickupSlack(tv, -dl));
922 DepositSlack(tv, dr);
929 static TreeItem *IdentifyItem(Treeview *tv, int y); /*forward*/
940 Treeview *tv = clientData;
952 item = tv->tree.focus;
956 item = IdentifyItem(tv, event->xbutton.y);
959 item = IdentifyItem(tv, event->xmotion.y);
973 tagset = Ttk_GetTagSetFromObj(NULL, tv->tree.tagTable, item->tagsObj);
979 Tk_BindEvent(tv->tree.bindingTable, event, tv->core.tkwin,
992 Treeview *tv = recordPtr;
995 tv->tree.itemOptionTable =
997 tv->tree.columnOptionTable =
999 tv->tree.headingOptionTable =
1001 tv->tree.tagOptionTable =
1004 tv->tree.tagTable = Ttk_CreateTagTable(
1005 interp, tv->core.tkwin, TagOptionSpecs, sizeof(DisplayItem));
1006 tv->tree.bindingTable = Tk_CreateBindingTable(interp);
1007 Tk_CreateEventHandler(tv->core.tkwin,
1008 TreeviewBindEventMask, TreeviewBindEventProc, tv);
1010 tv->tree.itemLayout
1011 = tv->tree.cellLayout
1012 = tv->tree.headingLayout
1013 = tv->tree.rowLayout
1015 tv->tree.headingHeight = tv->tree.rowHeight = DEFAULT_ROWHEIGHT;
1016 tv->tree.indent = DEFAULT_INDENT;
1018 Tcl_InitHashTable(&tv->tree.columnNames, TCL_STRING_KEYS);
1019 tv->tree.nColumns = tv->tree.nDisplayColumns = 0;
1020 tv->tree.columns = NULL;
1021 tv->tree.displayColumns = NULL;
1022 tv->tree.showFlags = ~0;
1024 InitColumn(&tv->tree.column0);
1026 interp, (ClientData)(&tv->tree.column0),
1027 tv->tree.columnOptionTable, tv->core.tkwin);
1029 interp, (ClientData)(&tv->tree.column0),
1030 tv->tree.headingOptionTable, tv->core.tkwin);
1032 Tcl_InitHashTable(&tv->tree.items, TCL_STRING_KEYS);
1033 tv->tree.serial = 0;
1035 tv->tree.focus = tv->tree.endPtr = 0;
1039 tv->tree.root = NewItem();
1040 Tk_InitOptions(interp, (ClientData)tv->tree.root,
1041 tv->tree.itemOptionTable, tv->core.tkwin);
1042 tv->tree.root->tagset = Ttk_GetTagSetFromObj(NULL, tv->tree.tagTable, NULL);
1043 tv->tree.root->entryPtr = Tcl_CreateHashEntry(&tv->tree.items, "", &unused);
1044 Tcl_SetHashValue(tv->tree.root->entryPtr, tv->tree.root);
1048 tv->tree.xscrollHandle = TtkCreateScrollHandle(&tv->core,&tv->tree.xscroll);
1049 tv->tree.yscrollHandle = TtkCreateScrollHandle(&tv->core,&tv->tree.yscroll);
1053 tv->tree.treeArea = tv->tree.headingArea = Ttk_MakeBox(0,0,0,0);
1054 tv->tree.slack = 0;
1059 Treeview *tv = recordPtr;
1061 Tk_DeleteEventHandler(tv->core.tkwin,
1062 TreeviewBindEventMask, TreeviewBindEventProc, tv);
1063 Tk_DeleteBindingTable(tv->tree.bindingTable);
1064 Ttk_DeleteTagTable(tv->tree.tagTable);
1066 if (tv->tree.itemLayout) Ttk_FreeLayout(tv->tree.itemLayout);
1067 if (tv->tree.cellLayout) Ttk_FreeLayout(tv->tree.cellLayout);
1068 if (tv->tree.headingLayout) Ttk_FreeLayout(tv->tree.headingLayout);
1069 if (tv->tree.rowLayout) Ttk_FreeLayout(tv->tree.rowLayout);
1071 TreeviewFreeColumns(tv);
1073 if (tv->tree.displayColumns)
1074 Tcl_Free((ClientData)tv->tree.displayColumns);
1076 foreachHashEntry(&tv->tree.items, FreeItemCB);
1077 Tcl_DeleteHashTable(&tv->tree.items);
1079 TtkFreeScrollHandle(tv->tree.xscrollHandle);
1080 TtkFreeScrollHandle(tv->tree.yscrollHandle);
1092 Treeview *tv = recordPtr;
1093 unsigned showFlags = tv->tree.showFlags;
1096 if (TreeviewInitColumns(interp, tv) != TCL_OK)
1101 if (TreeviewInitDisplayColumns(interp, tv) != TCL_OK)
1105 TtkScrollbarUpdateRequired(tv->tree.xscrollHandle);
1106 TtkScrollbarUpdateRequired(tv->tree.yscrollHandle);
1110 interp,tv->tree.showObj,showStrings,&showFlags) != TCL_OK)
1119 tv->tree.showFlags = showFlags;
1122 RecomputeSlack(tv);
1131 Tcl_Interp *interp, Treeview *tv, TreeItem *item,
1139 if (Tk_SetOptions(interp, (ClientData)item, tv->tree.itemOptionTable,
1140 objc, objv, tv->core.tkwin, &savedOptions, &mask)
1157 newImageSpec = TtkGetImageSpec(interp, tv->core.tkwin, item->imageObj);
1168 interp, tv->tree.tagTable, item->tagsObj);
1199 TtkRedisplayWidget(&tv->core);
1213 Tcl_Interp *interp, Treeview *tv, TreeColumn *column,
1220 tv->tree.columnOptionTable, objc, objv, tv->core.tkwin,
1237 if (!Tk_IsMapped(tv->core.tkwin)) {
1238 TtkResizeWidget(&tv->core);
1240 RecomputeSlack(tv);
1242 TtkRedisplayWidget(&tv->core);
1258 Tcl_Interp *interp, Treeview *tv, TreeColumn *column,
1265 tv->tree.headingOptionTable, objc, objv, tv->core.tkwin,
1285 TtkRedisplayWidget(&tv->core);
1320 Treeview *tv, /* Widget record */
1326 int next_ypos = *ypos + tv->tree.rowHeight;
1332 TreeItem *subitem = IdentifyRow(tv, item->children, ypos, y);
1345 static TreeItem *IdentifyItem(Treeview *tv, int y)
1347 int rowHeight = tv->tree.rowHeight;
1348 int ypos = tv->tree.treeArea.y - rowHeight * tv->tree.yscroll.first;
1349 return IdentifyRow(tv, tv->tree.root->children, &ypos, y);
1356 static int IdentifyDisplayColumn(Treeview *tv, int x, int *x1)
1358 int colno = FirstColumn(tv);
1359 int xpos = tv->tree.treeArea.x - tv->tree.xscroll.first;
1361 while (colno < tv->tree.nDisplayColumns) {
1362 TreeColumn *column = tv->tree.displayColumns[colno];
1380 static int RowNumber(Treeview *tv, TreeItem *item)
1382 TreeItem *p = tv->tree.root->children;
1424 static int ItemRow(Treeview *tv, TreeItem *p)
1426 TreeItem *root = tv->tree.root;
1453 Treeview *tv, /* treeview widget */
1458 int row = ItemRow(tv, item);
1459 Ttk_Box bbox = tv->tree.treeArea;
1461 if (row < tv->tree.yscroll.first || row > tv->tree.yscroll.last) {
1466 bbox.y += (row - tv->tree.yscroll.first) * tv->tree.rowHeight;
1467 bbox.height = tv->tree.rowHeight;
1469 bbox.x -= tv->tree.xscroll.first;
1470 bbox.width = TreeWidth(tv);
1473 int xpos = 0, i = FirstColumn(tv);
1474 while (i < tv->tree.nDisplayColumns) {
1475 if (tv->tree.displayColumns[i] == column) {
1478 xpos += tv->tree.displayColumns[i]->width;
1481 if (i == tv->tree.nDisplayColumns) { /* specified column unviewable */
1489 if (column == &tv->tree.column0) {
1490 int indent = tv->tree.indent * ItemDepth(item);
1514 static TreeRegion IdentifyRegion(Treeview *tv, int x, int y)
1518 colno = IdentifyDisplayColumn(tv, x, &x1);
1519 if (Ttk_BoxContains(tv->tree.headingArea, x, y)) {
1527 } else if (Ttk_BoxContains(tv->tree.treeArea, x, y)) {
1528 TreeItem *item = IdentifyItem(tv, y);
1570 Treeview *tv = recordPtr;
1578 tv->tree.tagOptionTable, &tv->tree.itemLayout)
1580 tv->tree.tagOptionTable, &tv->tree.cellLayout)
1582 tv->tree.headingOptionTable, &tv->tree.headingLayout)
1584 tv->tree.tagOptionTable, &tv->tree.rowLayout)
1591 Ttk_RebindSublayout(tv->tree.headingLayout, &tv->tree.column0);
1592 Ttk_LayoutSize(tv->tree.headingLayout, 0, &unused, &tv->tree.headingHeight);
1597 tv->tree.rowHeight = DEFAULT_ROWHEIGHT;
1598 tv->tree.indent = DEFAULT_INDENT;
1600 (void)Tcl_GetIntFromObj(NULL, objPtr, &tv->tree.rowHeight);
1603 (void)Tcl_GetIntFromObj(NULL, objPtr, &tv->tree.indent);
1619 Treeview *tv = clientData;
1624 Ttk_PlaceLayout(tv->core.layout,tv->core.state,Ttk_WinBox(tv->core.tkwin));
1625 tv->tree.treeArea = Ttk_ClientRegion(tv->core.layout, "treearea");
1627 ResizeColumns(tv, tv->tree.treeArea.width);
1630 TtkScrolled(tv->tree.xscrollHandle,
1631 tv->tree.xscroll.first,
1632 tv->tree.xscroll.first + tv->tree.treeArea.width,
1633 TreeWidth(tv));
1635 if (tv->tree.showFlags & SHOW_HEADINGS) {
1636 tv->tree.headingArea = Ttk_PackBox(
1637 &tv->tree.treeArea, 1, tv->tree.headingHeight, TTK_SIDE_TOP);
1639 tv->tree.headingArea = Ttk_MakeBox(0,0,0,0);
1642 visibleRows = tv->tree.treeArea.height / tv->tree.rowHeight;
1643 tv->tree.root->state |= TTK_STATE_OPEN;
1644 TtkScrolled(tv->tree.yscrollHandle,
1645 tv->tree.yscroll.first,
1646 tv->tree.yscroll.first + visibleRows,
1647 CountRows(tv->tree.root) - 1);
1656 Treeview *tv = clientData;
1659 Ttk_LayoutSize(tv->core.layout, tv->core.state, &padWidth, &padHeight);
1660 Tcl_GetIntFromObj(NULL, tv->tree.heightObj, &nRows);
1662 *widthPtr = padWidth + TreeWidth(tv);
1663 *heightPtr = padHeight + tv->tree.rowHeight * nRows;
1665 if (tv->tree.showFlags & SHOW_HEADINGS) {
1666 *heightPtr += tv->tree.headingHeight;
1676 static Ttk_State ItemState(Treeview *tv, TreeItem *item)
1678 Ttk_State state = tv->core.state | item->state;
1681 if (item != tv->tree.focus)
1689 static void DrawHeadings(Treeview *tv, Drawable d)
1691 const int x0 = tv->tree.headingArea.x - tv->tree.xscroll.first;
1692 const int y0 = tv->tree.headingArea.y;
1693 const int h0 = tv->tree.headingArea.height;
1694 int i = FirstColumn(tv);
1697 while (i < tv->tree.nDisplayColumns) {
1698 TreeColumn *column = tv->tree.displayColumns[i];
1700 DisplayLayout(tv->tree.headingLayout,
1711 Treeview *tv, TreeItem *item, DisplayItem *displayItem)
1713 Ttk_Style style = Ttk_LayoutStyle(tv->core.layout);
1714 Ttk_State state = ItemState(tv, item);
1716 Ttk_TagSetValues(tv->tree.tagTable, item->tagset, displayItem);
1717 Ttk_TagSetApplyStyle(tv->tree.tagTable, style, state, displayItem);
1724 Treeview *tv, TreeItem *item, DisplayItem *displayItem,
1727 Ttk_Layout layout = tv->tree.cellLayout;
1728 Ttk_State state = ItemState(tv, item);
1730 int rowHeight = tv->tree.rowHeight;
1740 for (i = 0; i < tv->tree.nColumns; ++i) {
1741 tv->tree.columns[i].data = (i < nValues) ? values[i] : 0;
1744 for (i = 1; i < tv->tree.nDisplayColumns; ++i) {
1745 TreeColumn *column = tv->tree.displayColumns[i];
1761 Treeview *tv, TreeItem *item, Drawable d, int depth, int row)
1763 Ttk_State state = ItemState(tv, item);
1765 int rowHeight = tv->tree.rowHeight;
1766 int x = tv->tree.treeArea.x - tv->tree.xscroll.first;
1767 int y = tv->tree.treeArea.y + rowHeight * (row - tv->tree.yscroll.first);
1771 PrepareItem(tv, item, &displayItem);
1776 Ttk_Box rowBox = Ttk_MakeBox(x, y, TreeWidth(tv), rowHeight);
1777 DisplayLayout(tv->tree.rowLayout, &displayItem, state, rowBox, d);
1782 if (tv->tree.showFlags & SHOW_TREE) {
1783 int indent = depth * tv->tree.indent;
1784 int colwidth = tv->tree.column0.width;
1790 DisplayLayout(tv->tree.itemLayout, &displayItem, state, parcel, d);
1796 DrawCells(tv, item, &displayItem, d, x, y);
1807 Treeview *tv, TreeItem *item, Drawable d, int depth, int row);
1810 Treeview *tv, TreeItem *item, Drawable d, int depth, int row)
1812 if (row >= tv->tree.yscroll.first) {
1813 DrawItem(tv, item, d, depth, row);
1817 return DrawForest(tv, item->children, d, depth + 1, row + 1);
1830 Treeview *tv, TreeItem *item, Drawable d, int depth, int row)
1832 while (item && row <= tv->tree.yscroll.last) {
1833 row = DrawSubtree(tv, item, d, depth, row);
1844 Treeview *tv = clientData;
1846 Ttk_DrawLayout(tv->core.layout, tv->core.state, d);
1847 if (tv->tree.showFlags & SHOW_HEADINGS) {
1848 DrawHeadings(tv, d);
1850 DrawForest(tv, tv->tree.root->children, d, 0,0);
1881 * depth-first order using [$tv insert $parent end ...],
1886 static TreeItem *EndPosition(Treeview *tv, TreeItem *parent)
1888 TreeItem *endPtr = tv->tree.endPtr;
1901 tv->tree.endPtr = endPtr;
1912 Tcl_Interp *interp, Treeview *tv, TreeItem *item, TreeItem *parent)
1919 "Cannot insert ", ItemName(tv, item),
1920 " as a descendant of ", ItemName(tv, parent),
1953 /* + $tv children $item ?newchildren? --
1959 Treeview *tv = recordPtr;
1967 item = FindItem(interp, tv, objv[2]);
1975 Tcl_ListObjAppendElement(interp, result, ItemID(tv, item));
1979 TreeItem **newChildren = GetItemListFromObj(interp, tv, objv[3]);
1989 if (!AncestryCheck(interp, tv, newChildren[i], item)) {
2027 TtkRedisplayWidget(&tv->core);
2033 /* + $tv parent $item --
2039 Treeview *tv = recordPtr;
2046 item = FindItem(interp, tv, objv[2]);
2052 Tcl_SetObjResult(interp, ItemID(tv, item->parent));
2061 /* + $tv next $item
2067 Treeview *tv = recordPtr;
2074 item = FindItem(interp, tv, objv[2]);
2080 Tcl_SetObjResult(interp, ItemID(tv, item->next));
2086 /* + $tv prev $item
2092 Treeview *tv = recordPtr;
2099 item = FindItem(interp, tv, objv[2]);
2105 Tcl_SetObjResult(interp, ItemID(tv, item->prev));
2111 /* + $tv index $item --
2117 Treeview *tv = recordPtr;
2125 item = FindItem(interp, tv, objv[2]);
2139 /* + $tv exists $itemid --
2145 Treeview *tv = recordPtr;
2153 entryPtr = Tcl_FindHashEntry(&tv->tree.items, Tcl_GetString(objv[2]));
2158 /* + $tv bbox $itemid ?$column? --
2164 Treeview *tv = recordPtr;
2174 item = FindItem(interp, tv, objv[2]);
2178 if (objc >=4 && (column = FindColumn(interp,tv,objv[3])) == NULL) {
2182 if (BoundingBox(tv, item, column, &bbox)) {
2189 /* + $tv identify $x $y -- (obsolescent)
2190 * Implements the old, horrible, 2-argument form of [$tv identify].
2199 Tcl_Interp *interp, int objc, Tcl_Obj *const objv[], Treeview *tv)
2216 dColumnNumber = IdentifyDisplayColumn(tv, x, &x1);
2222 if (Ttk_BoxContains(tv->tree.headingArea,x,y)) {
2229 } else if (Ttk_BoxContains(tv->tree.treeArea,x,y)) {
2230 item = IdentifyItem(tv, y);
2235 Ttk_Layout layout = tv->tree.itemLayout;
2240 BoundingBox(tv, item, NULL, &itemBox);
2241 PrepareItem(tv, item, &displayItem); /*@@@ FIX: -text, etc*/
2243 Ttk_PlaceLayout(layout, ItemState(tv,item), itemBox);
2259 Tcl_ListObjAppendElement(NULL, result, ItemID(tv, item));
2267 /* + $tv identify $component $x $y --
2278 Treeview *tv = recordPtr;
2289 return TreeviewHorribleIdentify(interp, objc, objv, tv);
2303 region = IdentifyRegion(tv, x, y);
2304 item = IdentifyItem(tv, y);
2305 colno = IdentifyDisplayColumn(tv, x, &x1);
2306 column = (colno >= 0) ? tv->tree.displayColumns[colno] : NULL;
2317 Tcl_SetObjResult(interp, ItemID(tv, item));
2337 layout = tv->core.layout;
2341 layout = tv->tree.headingLayout;
2344 layout = tv->tree.itemLayout;
2347 layout = tv->tree.cellLayout;
2351 if (!BoundingBox(tv, item, column, &bbox)) {
2355 PrepareItem(tv, item, &displayItem); /*@@@ FIX: fill in -text,etc */
2357 Ttk_PlaceLayout(layout, ItemState(tv,item), bbox);
2374 /* + $tv item $item ?options ....?
2380 Treeview *tv = recordPtr;
2387 if (!(item = FindItem(interp, tv, objv[2]))) {
2393 tv->tree.itemOptionTable, tv->core.tkwin);
2396 tv->tree.itemOptionTable, tv->core.tkwin);
2398 return ConfigureItem(interp, tv, item, objc-3, objv+3);
2402 /* + $tv column column ?options ....?
2408 Treeview *tv = recordPtr;
2415 if (!(column = FindColumn(interp, tv, objv[2]))) {
2421 tv->tree.columnOptionTable, tv->core.tkwin);
2424 tv->tree.columnOptionTable, tv->core.tkwin);
2426 return ConfigureColumn(interp, tv, column, objc-3, objv+3);
2430 /* + $tv heading column ?options ....?
2436 Treeview *tv = recordPtr;
2437 Tk_OptionTable optionTable = tv->tree.headingOptionTable;
2438 Tk_Window tkwin = tv->core.tkwin;
2445 if (!(column = FindColumn(interp, tv, objv[2]))) {
2456 return ConfigureHeading(interp, tv, column, objc-3,objv+3);
2460 /* + $tv set $item ?$column ?value??
2466 Treeview *tv = recordPtr;
2475 if (!(item = FindItem(interp, tv, objv[2])))
2490 for (columnNumber=0; columnNumber<tv->tree.nColumns; ++columnNumber) {
2494 tv->tree.columns[columnNumber].idObj);
2504 if (!(column = FindColumn(interp, tv, objv[3])))
2507 if (column == &tv->tree.column0) {
2516 columnNumber = column - tv->tree.columns;
2534 while (length < tv->tree.nColumns) {
2543 TtkRedisplayWidget(&tv->core);
2552 /* + $tv insert $parent $index ?-id id? ?-option value ...?
2558 Treeview *tv = recordPtr;
2570 if ((parent = FindItem(interp, tv, objv[2])) == NULL) {
2577 sibling = EndPosition(tv, parent);
2592 entryPtr = Tcl_CreateHashEntry(&tv->tree.items, itemName, &isNew);
2601 ++tv->tree.serial;
2602 sprintf(idbuf, "I%03X", tv->tree.serial);
2603 entryPtr = Tcl_CreateHashEntry(&tv->tree.items, idbuf, &isNew);
2611 interp, (ClientData)newItem, tv->tree.itemOptionTable, tv->core.tkwin);
2612 newItem->tagset = Ttk_GetTagSetFromObj(NULL, tv->tree.tagTable, NULL);
2613 if (ConfigureItem(interp, tv, newItem, objc, objv) != TCL_OK) {
2624 TtkRedisplayWidget(&tv->core);
2626 Tcl_SetObjResult(interp, ItemID(tv, newItem));
2630 /* + $tv detach $item --
2636 Treeview *tv = recordPtr;
2644 if (!(items = GetItemListFromObj(interp, tv, objv[2]))) {
2650 if (items[i] == tv->tree.root) {
2661 TtkRedisplayWidget(&tv->core);
2666 /* + $tv delete $items --
2681 Treeview *tv = recordPtr;
2690 if (!(items = GetItemListFromObj(interp, tv, objv[2]))) {
2697 if (items[i] == tv->tree.root) {
2715 if (tv->tree.focus == delq)
2716 tv->tree.focus = 0;
2717 if (tv->tree.endPtr == delq)
2718 tv->tree.endPtr = 0;
2724 TtkRedisplayWidget(&tv->core);
2728 /* + $tv move $item $parent $index
2734 Treeview *tv = recordPtr;
2742 if ( (item = FindItem(interp, tv, objv[2])) == 0
2743 || (parent = FindItem(interp, tv, objv[3])) == 0)
2751 sibling = EndPosition(tv, parent);
2771 if (!AncestryCheck(interp, tv, item, parent)) {
2786 TtkRedisplayWidget(&tv->core);
2797 Treeview *tv = recordPtr;
2798 return TtkScrollviewCommand(interp, objc, objv, tv->tree.xscrollHandle);
2804 Treeview *tv = recordPtr;
2805 return TtkScrollviewCommand(interp, objc, objv, tv->tree.yscrollHandle);
2814 Treeview *tv = recordPtr;
2822 if (!(item = FindItem(interp, tv, objv[2]))) {
2833 TtkRedisplayWidget(&tv->core);
2840 rowNumber = RowNumber(tv, item);
2841 if (rowNumber < tv->tree.yscroll.first) {
2842 TtkScrollTo(tv->tree.yscrollHandle, rowNumber);
2843 } else if (rowNumber >= tv->tree.yscroll.last) {
2844 TtkScrollTo(tv->tree.yscrollHandle,
2845 tv->tree.yscroll.first + (1+rowNumber - tv->tree.yscroll.last));
2861 Treeview *tv = recordPtr;
2862 int left = tv->tree.treeArea.x - tv->tree.xscroll.first;
2863 int i = FirstColumn(tv);
2872 if ( (column = FindColumn(interp, tv, objv[2])) == 0
2878 for (;i < tv->tree.nDisplayColumns; ++i) {
2879 TreeColumn *c = tv->tree.displayColumns[i];
2882 DragColumn(tv, i, newx - right);
2884 TtkRedisplayWidget(&tv->core);
2906 Treeview *tv = recordPtr;
2909 if (tv->tree.focus) {
2910 Tcl_SetObjResult(interp, ItemID(tv, tv->tree.focus));
2914 TreeItem *newFocus = FindItem(interp, tv, objv[2]);
2917 tv->tree.focus = newFocus;
2918 TtkRedisplayWidget(&tv->core);
2938 Treeview *tv = recordPtr;
2944 for (item = tv->tree.root->children; item; item=NextPreorder(item)) {
2946 Tcl_ListObjAppendElement(NULL, result, ItemID(tv, item));
2963 items = GetItemListFromObj(interp, tv, objv[3]);
2971 for (item=tv->tree.root; item; item=NextPreorder(item)) {
2993 TtkSendVirtualEvent(tv->core.tkwin, "TreeviewSelect");
2994 TtkRedisplayWidget(&tv->core);
3003 /* + $tv tag bind $tag ?$sequence ?$script??
3008 Treeview *tv = recordPtr;
3009 Ttk_TagTable tagTable = tv->tree.tagTable;
3010 Tk_BindingTable bindingTable = tv->tree.bindingTable;
3021 if (objc == 4) { /* $tv tag bind $tag */
3023 } else if (objc == 5) { /* $tv tag bind $tag $sequence */
3031 } else if (objc == 6) { /* $tv tag bind $tag $sequence $script */
3056 /* + $tv tag configure $tag ?-option ?value -option value...??
3061 Treeview *tv = recordPtr;
3062 Ttk_TagTable tagTable = tv->tree.tagTable;
3083 TtkRedisplayWidget(&tv->core);
3087 /* + $tv tag has $tag ?$item?
3092 Treeview *tv = recordPtr;
3095 Ttk_Tag tag = Ttk_GetTagFromObj(tv->tree.tagTable, objv[3]);
3096 TreeItem *item = tv->tree.root;
3101 Tcl_ListObjAppendElement(NULL, result, ItemID(tv, item));
3109 Ttk_Tag tag = Ttk_GetTagFromObj(tv->tree.tagTable, objv[3]);
3110 TreeItem *item = FindItem(interp, tv, objv[4]);
3123 /* + $tv tag names $tag
3128 Treeview *tv = recordPtr;
3135 return Ttk_EnumerateTags(interp, tv->tree.tagTable);
3138 /* + $tv tag add $tag $items
3152 Treeview *tv = recordPtr;
3162 tag = Ttk_GetTagFromObj(tv->tree.tagTable, objv[3]);
3163 items = GetItemListFromObj(interp, tv, objv[4]);
3176 /* + $tv tag remove $tag $items
3190 Treeview *tv = recordPtr;
3198 tag = Ttk_GetTagFromObj(tv->tree.tagTable, objv[3]);
3201 TreeItem **items = GetItemListFromObj(interp, tv, objv[4]);
3211 TreeItem *item = tv->tree.root;