UNIXworkcode

1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright 2017 Olaf Wintermann. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef TREE_H 30 #define TREE_H 31 32 #include "../ui/tree.h" 33 #include "toolkit.h" 34 35 #include <cx/array_list.h> 36 37 #ifdef __cplusplus 38 extern "C" { 39 #endif 40 41 typedef struct UiListView { 42 UiObject *obj; 43 GtkWidget *widget; 44 UiVar *var; 45 UiModel *model; 46 ui_callback ondragstart; 47 void *ondragstartdata; 48 ui_callback ondragcomplete; 49 void *ondragcompletedata; 50 ui_callback ondrop; 51 void *ondropdata; 52 53 } UiListView; 54 55 typedef struct UiTreeEventData { 56 UiObject *obj; 57 ui_callback activate; 58 ui_callback selection; 59 void *activatedata; 60 void *selectiondata; 61 } UiTreeEventData; 62 63 typedef struct UiListBox UiListBox; 64 65 typedef struct UiListBoxSubList { 66 UiVar *var; 67 size_t numitems; 68 char *header; 69 UiBool separator; 70 CxList *widgets; 71 UiListBox *listbox; 72 void *userdata; 73 size_t index; 74 } UiListBoxSubList; 75 76 struct UiListBox { 77 UiObject *obj; 78 GtkListBox *listbox; 79 CxList *sublists; // contains UiListBoxSubList elements 80 ui_sublist_getvalue_func getvalue; 81 ui_callback onactivate; 82 void *onactivatedata; 83 ui_callback onbuttonclick; 84 void *onbuttonclickdata; 85 86 GtkListBoxRow *first_row; 87 }; 88 89 void* ui_strmodel_getvalue(void *elm, int column); 90 91 UIWIDGET ui_listview_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata); 92 UIWIDGET ui_table_var(UiObject *obj, UiVar *var, UiModel *model, UiListCallbacks cb); 93 94 GtkWidget* ui_get_tree_widget(UIWIDGET widget); 95 96 void ui_listview_update(UiList *list, int i); 97 UiListSelection ui_listview_getselection(UiList *list); 98 void ui_listview_setselection(UiList *list, UiListSelection selection); 99 100 void ui_combobox_destroy(GtkWidget *w, UiListView *v); 101 void ui_listview_destroy(GtkWidget *w, UiListView *v); 102 103 void ui_listview_activate_event( 104 GtkTreeView *tree_view, 105 GtkTreePath *path, 106 GtkTreeViewColumn *column, 107 UiTreeEventData *event); 108 void ui_listview_selection_event( 109 GtkTreeSelection *treeselection, 110 UiTreeEventData *event); 111 UiListSelection ui_listview_selection( 112 GtkTreeSelection *selection, 113 UiTreeEventData *event); 114 int ui_tree_path_list_index(GtkTreePath *path); 115 116 void ui_listview_add_dnd(UiListView *listview, UiListArgs *args); 117 void ui_listview_enable_drop(UiListView *listview, UiListArgs *args); 118 119 UIWIDGET ui_combobox_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata); 120 GtkWidget* ui_create_combobox(UiObject *obj, UiModel *model, UiVar *var, ui_callback f, void *udata); 121 void ui_combobox_change_event(GtkComboBox *widget, UiEventData *e); 122 void ui_combobox_modelupdate(UiList *list, int i); 123 UiListSelection ui_combobox_getselection(UiList *list); 124 void ui_combobox_setselection(UiList *list, UiListSelection selection); 125 126 void ui_listbox_update(UiListBox *listbox, int from, int to); 127 void ui_listbox_update_sublist(UiListBox *listbox, UiListBoxSubList *sublist, size_t listbox_insert_index); 128 void ui_listbox_list_update(UiList *list, int i); 129 130 void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data); 131 132 #ifdef __cplusplus 133 } 134 #endif 135 136 #endif /* TREE_H */ 137 138