Mercurial > dwindows
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 /* |