comparison win/dw.c @ 328:e00aff2b899e

Tree item handles are now of the type HTREEITEM instead of HWND since they were rarely actually window handles.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 08 Apr 2003 17:47:31 +0000
parents be76b984620a
children 7b0f00729a32
comparison
equal deleted inserted replaced
327:3204b978e077 328:e00aff2b899e
1529 { 1529 {
1530 tvi.mask = TVIF_HANDLE; 1530 tvi.mask = TVIF_HANDLE;
1531 tvi.hItem = hti; 1531 tvi.hItem = hti;
1532 1532
1533 TreeView_GetItem(tmp->window, &tvi); 1533 TreeView_GetItem(tmp->window, &tvi);
1534 dw_tree_item_select(tmp->window, (HWND)hti); 1534 dw_tree_item_select(tmp->window, hti);
1535 1535
1536 ptrs = (void **)tvi.lParam; 1536 ptrs = (void **)tvi.lParam;
1537 1537
1538 } 1538 }
1539 containercontextfunc(tmp->window, ptrs ? (char *)ptrs[0] : NULL, x, y, tmp->data, ptrs ? ptrs[1] : NULL); 1539 containercontextfunc(tmp->window, ptrs ? (char *)ptrs[0] : NULL, x, y, tmp->data, ptrs ? ptrs[1] : NULL);
5723 * title: The text title of the entry. 5723 * title: The text title of the entry.
5724 * icon: Handle to coresponding icon. 5724 * icon: Handle to coresponding icon.
5725 * parent: Parent handle or 0 if root. 5725 * parent: Parent handle or 0 if root.
5726 * itemdata: Item specific data. 5726 * itemdata: Item specific data.
5727 */ 5727 */
5728 HWND API dw_tree_insert_after(HWND handle, HWND item, char *title, unsigned long icon, HWND parent, void *itemdata) 5728 HTREEITEM API dw_tree_insert_after(HWND handle, HTREEITEM item, char *title, unsigned long icon, HTREEITEM parent, void *itemdata)
5729 { 5729 {
5730 TVITEM tvi; 5730 TVITEM tvi;
5731 TVINSERTSTRUCT tvins; 5731 TVINSERTSTRUCT tvins;
5732 HTREEITEM hti; 5732 HTREEITEM hti;
5733 void **ptrs= malloc(sizeof(void *) * 2); 5733 void **ptrs= malloc(sizeof(void *) * 2);
5740 tvi.lParam = (LONG)ptrs; 5740 tvi.lParam = (LONG)ptrs;
5741 tvi.cchTextMax = strlen(title); 5741 tvi.cchTextMax = strlen(title);
5742 tvi.iSelectedImage = tvi.iImage = _lookup_icon(handle, (HICON)icon, 1); 5742 tvi.iSelectedImage = tvi.iImage = _lookup_icon(handle, (HICON)icon, 1);
5743 5743
5744 tvins.item = tvi; 5744 tvins.item = tvi;
5745 tvins.hParent = (HTREEITEM)parent; 5745 tvins.hParent = parent;
5746 tvins.hInsertAfter = item ? (HTREEITEM)item : TVI_FIRST; 5746 tvins.hInsertAfter = item ? item : TVI_FIRST;
5747 5747
5748 hti = TreeView_InsertItem(handle, &tvins); 5748 hti = TreeView_InsertItem(handle, &tvins);
5749 5749
5750 return (HWND)hti; 5750 return hti;
5751 } 5751 }
5752 5752
5753 /* 5753 /*
5754 * Inserts an item into a tree window (widget). 5754 * Inserts an item into a tree window (widget).
5755 * Parameters: 5755 * Parameters:
5757 * title: The text title of the entry. 5757 * title: The text title of the entry.
5758 * icon: Handle to coresponding icon. 5758 * icon: Handle to coresponding icon.
5759 * parent: Parent handle or 0 if root. 5759 * parent: Parent handle or 0 if root.
5760 * itemdata: Item specific data. 5760 * itemdata: Item specific data.
5761 */ 5761 */
5762 HWND API dw_tree_insert(HWND handle, char *title, unsigned long icon, HWND parent, void *itemdata) 5762 HTREEITEM API dw_tree_insert(HWND handle, char *title, unsigned long icon, HTREEITEM parent, void *itemdata)
5763 { 5763 {
5764 TVITEM tvi; 5764 TVITEM tvi;
5765 TVINSERTSTRUCT tvins; 5765 TVINSERTSTRUCT tvins;
5766 HTREEITEM hti; 5766 HTREEITEM hti;
5767 void **ptrs= malloc(sizeof(void *) * 2); 5767 void **ptrs= malloc(sizeof(void *) * 2);
5774 tvi.lParam = (LONG)ptrs; 5774 tvi.lParam = (LONG)ptrs;
5775 tvi.cchTextMax = strlen(title); 5775 tvi.cchTextMax = strlen(title);
5776 tvi.iSelectedImage = tvi.iImage = _lookup_icon(handle, (HICON)icon, 1); 5776 tvi.iSelectedImage = tvi.iImage = _lookup_icon(handle, (HICON)icon, 1);
5777 5777
5778 tvins.item = tvi; 5778 tvins.item = tvi;
5779 tvins.hParent = (HTREEITEM)parent; 5779 tvins.hParent = parent;
5780 tvins.hInsertAfter = TVI_LAST; 5780 tvins.hInsertAfter = TVI_LAST;
5781 5781
5782 hti = TreeView_InsertItem(handle, &tvins); 5782 hti = TreeView_InsertItem(handle, &tvins);
5783 5783
5784 return (HWND)hti; 5784 return hti;
5785 } 5785 }
5786 5786
5787 /* 5787 /*
5788 * Sets the text and icon of an item in a tree window (widget). 5788 * Sets the text and icon of an item in a tree window (widget).
5789 * Parameters: 5789 * Parameters:
5790 * handle: Handle to the tree containing the item. 5790 * handle: Handle to the tree containing the item.
5791 * item: Handle of the item to be modified. 5791 * item: Handle of the item to be modified.
5792 * title: The text title of the entry. 5792 * title: The text title of the entry.
5793 * icon: Handle to coresponding icon. 5793 * icon: Handle to coresponding icon.
5794 */ 5794 */
5795 void API dw_tree_set(HWND handle, HWND item, char *title, unsigned long icon) 5795 void API dw_tree_set(HWND handle, HTREEITEM item, char *title, unsigned long icon)
5796 { 5796 {
5797 TVITEM tvi; 5797 TVITEM tvi;
5798 void **ptrs; 5798 void **ptrs;
5799 5799
5800 tvi.mask = TVIF_HANDLE; 5800 tvi.mask = TVIF_HANDLE;
5801 tvi.hItem = (HTREEITEM)item; 5801 tvi.hItem = item;
5802 5802
5803 if(TreeView_GetItem(handle, &tvi)) 5803 if(TreeView_GetItem(handle, &tvi))
5804 { 5804 {
5805 5805
5806 ptrs = (void **)tvi.lParam; 5806 ptrs = (void **)tvi.lParam;
5821 * Parameters: 5821 * Parameters:
5822 * handle: Handle to the tree containing the item. 5822 * handle: Handle to the tree containing the item.
5823 * item: Handle of the item to be modified. 5823 * item: Handle of the item to be modified.
5824 * itemdata: User defined data to be associated with item. 5824 * itemdata: User defined data to be associated with item.
5825 */ 5825 */
5826 void API dw_tree_set_data(HWND handle, HWND item, void *itemdata) 5826 void API dw_tree_set_data(HWND handle, HTREEITEM item, void *itemdata)
5827 { 5827 {
5828 TVITEM tvi; 5828 TVITEM tvi;
5829 void **ptrs; 5829 void **ptrs;
5830 5830
5831 tvi.mask = TVIF_HANDLE; 5831 tvi.mask = TVIF_HANDLE;
5832 tvi.hItem = (HTREEITEM)item; 5832 tvi.hItem = item;
5833 5833
5834 if(TreeView_GetItem(handle, &tvi)) 5834 if(TreeView_GetItem(handle, &tvi))
5835 { 5835 {
5836 ptrs = (void **)tvi.lParam; 5836 ptrs = (void **)tvi.lParam;
5837 ptrs[1] = itemdata; 5837 ptrs[1] = itemdata;
5842 * Gets the item data of a tree item. 5842 * Gets the item data of a tree item.
5843 * Parameters: 5843 * Parameters:
5844 * handle: Handle to the tree containing the item. 5844 * handle: Handle to the tree containing the item.
5845 * item: Handle of the item to be modified. 5845 * item: Handle of the item to be modified.
5846 */ 5846 */
5847 void * API dw_tree_get_data(HWND handle, HWND item) 5847 void * API dw_tree_get_data(HWND handle, HTREEITEM item)
5848 { 5848 {
5849 TVITEM tvi; 5849 TVITEM tvi;
5850 void **ptrs; 5850 void **ptrs;
5851 5851
5852 tvi.mask = TVIF_HANDLE; 5852 tvi.mask = TVIF_HANDLE;
5853 tvi.hItem = (HTREEITEM)item; 5853 tvi.hItem = item;
5854 5854
5855 if(TreeView_GetItem(handle, &tvi)) 5855 if(TreeView_GetItem(handle, &tvi))
5856 { 5856 {
5857 ptrs = (void **)tvi.lParam; 5857 ptrs = (void **)tvi.lParam;
5858 return ptrs[1]; 5858 return ptrs[1];
5864 * Sets this item as the active selection. 5864 * Sets this item as the active selection.
5865 * Parameters: 5865 * Parameters:
5866 * handle: Handle to the tree window (widget) to be selected. 5866 * handle: Handle to the tree window (widget) to be selected.
5867 * item: Handle to the item to be selected. 5867 * item: Handle to the item to be selected.
5868 */ 5868 */
5869 void API dw_tree_item_select(HWND handle, HWND item) 5869 void API dw_tree_item_select(HWND handle, HTREEITEM item)
5870 { 5870 {
5871 dw_window_set_data(handle, "_dw_select_item", (void *)1); 5871 dw_window_set_data(handle, "_dw_select_item", (void *)1);
5872 TreeView_SelectItem(handle, (HTREEITEM)item); 5872 TreeView_SelectItem(handle, item);
5873 dw_window_set_data(handle, "_dw_select_item", (void *)0); 5873 dw_window_set_data(handle, "_dw_select_item", (void *)0);
5874 } 5874 }
5875 5875
5876 /* Delete all tree subitems */ 5876 /* Delete all tree subitems */
5877 void _dw_tree_delete_recursive(HWND handle, HTREEITEM node) 5877 void _dw_tree_delete_recursive(HWND handle, HTREEITEM node)
5883 while(hti) 5883 while(hti)
5884 { 5884 {
5885 HTREEITEM lastitem = hti; 5885 HTREEITEM lastitem = hti;
5886 5886
5887 hti = TreeView_GetNextSibling(handle, hti); 5887 hti = TreeView_GetNextSibling(handle, hti);
5888 dw_tree_delete(handle, (HWND)lastitem); 5888 dw_tree_delete(handle, lastitem);
5889 } 5889 }
5890 } 5890 }
5891 5891
5892 /* 5892 /*
5893 * Removes all nodes from a tree. 5893 * Removes all nodes from a tree.
5902 { 5902 {
5903 HTREEITEM lastitem = hti; 5903 HTREEITEM lastitem = hti;
5904 5904
5905 _dw_tree_delete_recursive(handle, hti); 5905 _dw_tree_delete_recursive(handle, hti);
5906 hti = TreeView_GetNextSibling(handle, hti); 5906 hti = TreeView_GetNextSibling(handle, hti);
5907 dw_tree_delete(handle, (HWND)lastitem); 5907 dw_tree_delete(handle, lastitem);
5908 } 5908 }
5909 } 5909 }
5910 5910
5911 /* 5911 /*
5912 * Expands a node on a tree. 5912 * Expands a node on a tree.
5913 * Parameters: 5913 * Parameters:
5914 * handle: Handle to the tree window (widget). 5914 * handle: Handle to the tree window (widget).
5915 * item: Handle to node to be expanded. 5915 * item: Handle to node to be expanded.
5916 */ 5916 */
5917 void API dw_tree_expand(HWND handle, HWND item) 5917 void API dw_tree_expand(HWND handle, HTREEITEM item)
5918 { 5918 {
5919 TreeView_Expand(handle, (HTREEITEM)item, TVE_EXPAND); 5919 TreeView_Expand(handle, item, TVE_EXPAND);
5920 } 5920 }
5921 5921
5922 /* 5922 /*
5923 * Collapses a node on a tree. 5923 * Collapses a node on a tree.
5924 * Parameters: 5924 * Parameters:
5925 * handle: Handle to the tree window (widget). 5925 * handle: Handle to the tree window (widget).
5926 * item: Handle to node to be collapsed. 5926 * item: Handle to node to be collapsed.
5927 */ 5927 */
5928 void API dw_tree_collapse(HWND handle, HWND item) 5928 void API dw_tree_collapse(HWND handle, HTREEITEM item)
5929 { 5929 {
5930 TreeView_Expand(handle, (HTREEITEM)item, TVE_COLLAPSE); 5930 TreeView_Expand(handle, item, TVE_COLLAPSE);
5931 } 5931 }
5932 5932
5933 /* 5933 /*
5934 * Removes a node from a tree. 5934 * Removes a node from a tree.
5935 * Parameters: 5935 * Parameters:
5936 * handle: Handle to the window (widget) to be cleared. 5936 * handle: Handle to the window (widget) to be cleared.
5937 * item: Handle to node to be deleted. 5937 * item: Handle to node to be deleted.
5938 */ 5938 */
5939 void API dw_tree_delete(HWND handle, HWND item) 5939 void API dw_tree_delete(HWND handle, HTREEITEM item)
5940 { 5940 {
5941 TVITEM tvi; 5941 TVITEM tvi;
5942 void **ptrs; 5942 void **ptrs;
5943 5943
5944 if((HTREEITEM)item == TVI_ROOT || !item) 5944 if(item == TVI_ROOT || !item)
5945 return; 5945 return;
5946 5946
5947 tvi.mask = TVIF_HANDLE; 5947 tvi.mask = TVIF_HANDLE;
5948 tvi.hItem = (HTREEITEM)item; 5948 tvi.hItem = item;
5949 5949
5950 if(TreeView_GetItem(handle, &tvi)) 5950 if(TreeView_GetItem(handle, &tvi))
5951 ptrs = (void **)tvi.lParam; 5951 ptrs = (void **)tvi.lParam;
5952 5952
5953 _dw_tree_delete_recursive(handle, (HTREEITEM)item); 5953 _dw_tree_delete_recursive(handle, item);
5954 TreeView_DeleteItem(handle, (HTREEITEM)item); 5954 TreeView_DeleteItem(handle, item);
5955 if(ptrs) 5955 if(ptrs)
5956 free(ptrs); 5956 free(ptrs);
5957 } 5957 }
5958 5958
5959 /* 5959 /*