ui/gtk/list.h

changeset 431
bb7da585debc
parent 411
3e91b7aff6a1
child 436
222205801430
equal deleted inserted replaced
169:fe49cff3c571 431:bb7da585debc
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

mercurial