Sun, 07 Dec 2025 15:50:20 +0100
rename tree.h to list.h
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
|
140
c03c338a7dcf
refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
116
diff
changeset
|
4 | * Copyright 2017 Olaf Wintermann. All rights reserved. |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
|
971
0224108bd8c2
rename tree.h to list.h
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
969
diff
changeset
|
29 | #ifndef LIST_H |
|
0224108bd8c2
rename tree.h to list.h
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
969
diff
changeset
|
30 | #define LIST_H |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
|
971
0224108bd8c2
rename tree.h to list.h
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
969
diff
changeset
|
32 | #include "../ui/list.h" |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include "toolkit.h" |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
34 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
35 | #include <cx/array_list.h> |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
36 | |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
37 | #ifdef __cplusplus |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
38 | extern "C" { |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | #endif |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
40 | |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
41 | typedef struct UiListView UiListView; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
42 | typedef struct UiColData UiColData; |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | |
|
749
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
44 | #if GTK_CHECK_VERSION(4, 10, 0) |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
45 | typedef struct UiRowItems { |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
46 | int bound; |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
47 | GtkListItem *items[]; |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
48 | } UiRowItems; |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
49 | #endif |
|
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
50 | |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
51 | struct UiColData { |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
52 | UiListView *listview; |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
53 | int column; |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
54 | }; |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
55 | |
|
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
56 | struct UiListView { |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
57 | UiObject *obj; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
58 | GtkWidget *widget; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
59 | UiVar *var; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
60 | UiModel *model; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
61 | UiBool multiselection; |
|
722
6466b4f16e5e
remove getvalue func from UiModel
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
696
diff
changeset
|
62 | ui_getvaluefunc2 getvalue; |
|
6466b4f16e5e
remove getvalue func from UiModel
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
696
diff
changeset
|
63 | void *getvaluedata; |
|
749
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
64 | ui_getstylefunc getstyle; |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
722
diff
changeset
|
65 | void *getstyledata; |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
466
diff
changeset
|
66 | char **elements; |
|
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
466
diff
changeset
|
67 | size_t nelm; |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
722
diff
changeset
|
68 | int current_row; |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
722
diff
changeset
|
69 | UiTextStyle row_style; |
|
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
722
diff
changeset
|
70 | UiBool apply_row_style; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
71 | #if GTK_CHECK_VERSION(4, 10, 0) |
|
749
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
72 | CxMap *bound_rows; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
73 | GListStore *liststore; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
74 | GtkSelectionModel *selectionmodel; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
75 | int *columns; |
|
749
0f052f6f532c
improve gtk4 listview/table single row updates
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
745
diff
changeset
|
76 | int numcolumns; |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
77 | UiColData coldata; |
|
738
0dbf92544d4f
add stylefunc for table/listview for row and cell styling options (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
722
diff
changeset
|
78 | PangoAttrList *current_row_attributes; |
|
745
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
739
diff
changeset
|
79 | #else |
|
a4ee36ff7147
implement table styling for gtk3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
739
diff
changeset
|
80 | int style_offset; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
81 | #endif |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
82 | ui_callback onactivate; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
83 | void *onactivatedata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
84 | ui_callback onselection; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
85 | void *onselectiondata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
86 | ui_callback ondragstart; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
87 | void *ondragstartdata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
88 | ui_callback ondragcomplete; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
89 | void *ondragcompletedata; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
90 | ui_callback ondrop; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
91 | void *ondropdata; |
|
778
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
772
diff
changeset
|
92 | ui_list_savefunc onsave; |
|
85b6cef7fcba
implement listview onsave handler (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
772
diff
changeset
|
93 | void *onsavedata; |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
94 | UiListSelection selection; |
|
394
bedd499b640d
implement table dnd (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
360
diff
changeset
|
95 | |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
96 | }; |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
97 | |
|
42
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
98 | typedef struct UiTreeEventData { |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
99 | UiObject *obj; |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
100 | ui_callback activate; |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
101 | ui_callback selection; |
|
268
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
152
diff
changeset
|
102 | void *activatedata; |
|
1b321a0c624f
port table to new API, replace custom tree model with GtkListStore
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
152
diff
changeset
|
103 | void *selectiondata; |
|
42
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
104 | } UiTreeEventData; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
105 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
106 | typedef struct UiListBox UiListBox; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
107 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
108 | typedef struct UiListBoxSubList { |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
109 | UiVar *var; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
110 | size_t numitems; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
111 | char *header; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
112 | UiBool separator; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
113 | CxList *widgets; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
114 | UiListBox *listbox; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
115 | void *userdata; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
116 | size_t index; |
|
696
68f513430e5a
implement ui_listbox_list_update (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
653
diff
changeset
|
117 | size_t startpos; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
118 | } UiListBoxSubList; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
119 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
120 | struct UiListBox { |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
121 | UiObject *obj; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
122 | GtkListBox *listbox; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
123 | CxList *sublists; // contains UiListBoxSubList elements |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
124 | ui_sublist_getvalue_func getvalue; |
|
653
dc0eb8151254
add additional userdata parameter to sourcelist getvalue func
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
125 | void *getvaluedata; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
126 | ui_callback onactivate; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
127 | void *onactivatedata; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
128 | ui_callback onbuttonclick; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
129 | void *onbuttonclickdata; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
130 | GtkListBoxRow *first_row; |
|
853
380ec881faa2
add support for selectable source list header rows (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
778
diff
changeset
|
131 | UiBool header_is_item; |
|
890
8d30cbd1c465
sourcelist contextmenu item events also get sublist eventdata (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
853
diff
changeset
|
132 | UiSubListEventData current_eventdata; |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
133 | }; |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
134 | |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
135 | |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
136 | #if GTK_CHECK_VERSION(4, 10, 0) |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
137 | |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
138 | void ui_update_liststore(GListStore *liststore, UiList *list); |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
466
diff
changeset
|
139 | void ui_update_liststore_static(GListStore *liststore, char **elm, size_t nelm); |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
140 | |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
141 | void ui_listview_update_model(UiModel *model, void *userdata, int insert_index, int delete_index); |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
142 | void ui_listview_update2(UiList *list, int i); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
143 | UiListSelection ui_listview_getselection2(UiList *list); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
144 | void ui_listview_setselection2(UiList *list, UiListSelection selection); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
145 | |
|
489
073a5e893050
add option for static listview/dropdown (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
466
diff
changeset
|
146 | void ui_dropdown_notify(GtkWidget *dropdown, GObject *pspec, gpointer userdata); |
|
438
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
147 | void ui_columnview_activate(void *ignore, guint position, gpointer userdata); |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
148 | void ui_listview_selection_changed(GtkSelectionModel* self, guint position, guint n_items, gpointer user_data); |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
149 | |
|
438
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
150 | void ui_dropdown_activate(GtkDropDown* self, gpointer userdata); |
|
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
151 | |
|
436
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
152 | #endif |
|
222205801430
add new gtk4 tableview implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
411
diff
changeset
|
153 | |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
154 | void* ui_strmodel_getvalue(void *elm, int column); |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
155 | |
|
142
46448d38885c
new checkbox and radionbutton features and more refactoring
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
140
diff
changeset
|
156 | UIWIDGET ui_listview_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata); |
|
46448d38885c
new checkbox and radionbutton features and more refactoring
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
140
diff
changeset
|
157 | UIWIDGET ui_table_var(UiObject *obj, UiVar *var, UiModel *model, UiListCallbacks cb); |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
158 | |
|
147
2e384acc89a6
adds simple drag and drop support (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
142
diff
changeset
|
159 | GtkWidget* ui_get_tree_widget(UIWIDGET widget); |
|
2e384acc89a6
adds simple drag and drop support (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
142
diff
changeset
|
160 | |
|
965
5d4419042d9b
implement dynamic table models (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
937
diff
changeset
|
161 | void ui_listview_update_model(UiModel *model, void *userdata, int insert_index, int delete_index); |
|
140
c03c338a7dcf
refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
116
diff
changeset
|
162 | void ui_listview_update(UiList *list, int i); |
|
291
302a150ff5e4
implement ui_list_getselection (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
163 | UiListSelection ui_listview_getselection(UiList *list); |
|
360
681b930abe84
implement combobox get/set selection (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
321
diff
changeset
|
164 | void ui_listview_setselection(UiList *list, UiListSelection selection); |
|
291
302a150ff5e4
implement ui_list_getselection (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
165 | |
|
152
62921b370c60
fixes use after free when a GtkTreeView was destroyed
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
150
diff
changeset
|
166 | void ui_combobox_destroy(GtkWidget *w, UiListView *v); |
|
140
c03c338a7dcf
refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
116
diff
changeset
|
167 | void ui_listview_destroy(GtkWidget *w, UiListView *v); |
|
c03c338a7dcf
refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
116
diff
changeset
|
168 | |
|
438
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
169 | #if GTK_CHECK_VERSION(4, 10, 0) |
|
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
170 | |
|
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
171 | #else |
|
42
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
172 | void ui_listview_activate_event( |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
173 | GtkTreeView *tree_view, |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
174 | GtkTreePath *path, |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
175 | GtkTreeViewColumn *column, |
|
42
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
176 | UiTreeEventData *event); |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
177 | void ui_listview_selection_event( |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
178 | GtkTreeSelection *treeselection, |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
179 | UiTreeEventData *event); |
|
291
302a150ff5e4
implement ui_list_getselection (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
270
diff
changeset
|
180 | UiListSelection ui_listview_selection( |
|
42
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
181 | GtkTreeSelection *selection, |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
182 | UiTreeEventData *event); |
|
29b2821d1262
added table view events (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
40
diff
changeset
|
183 | int ui_tree_path_list_index(GtkTreePath *path); |
|
438
7b1d715e5c11
add new gtk4 listview/combobox implementation
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
436
diff
changeset
|
184 | #endif |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
185 | |
|
394
bedd499b640d
implement table dnd (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
360
diff
changeset
|
186 | void ui_listview_add_dnd(UiListView *listview, UiListArgs *args); |
|
bedd499b640d
implement table dnd (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
360
diff
changeset
|
187 | void ui_listview_enable_drop(UiListView *listview, UiListArgs *args); |
|
bedd499b640d
implement table dnd (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
360
diff
changeset
|
188 | |
|
142
46448d38885c
new checkbox and radionbutton features and more refactoring
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
140
diff
changeset
|
189 | UIWIDGET ui_combobox_var(UiObject *obj, UiVar *var, ui_getvaluefunc getvalue, ui_callback f, void *udata); |
|
490
0206161e92d5
fix gtk3 build and implement new combobox
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
489
diff
changeset
|
190 | GtkWidget* ui_create_combobox(UiObject *obj, UiModel *model, UiVar *var, char **elm, size_t nelm, ui_callback f, void *udata); |
|
116
480354705c2f
added combobox (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
42
diff
changeset
|
191 | void ui_combobox_change_event(GtkComboBox *widget, UiEventData *e); |
|
140
c03c338a7dcf
refactors value binding system
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
116
diff
changeset
|
192 | void ui_combobox_modelupdate(UiList *list, int i); |
|
969
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
965
diff
changeset
|
193 | UiListSelection ui_dropdown_getselection(UiList *list); |
|
7385c26d998d
rename combobox to dropdown
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
965
diff
changeset
|
194 | void ui_dropdown_setselection(UiList *list, UiListSelection selection); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
195 | |
|
466
7c78b0b8b77d
add support for dynamic sublists (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
438
diff
changeset
|
196 | void ui_listbox_dynamic_update(UiList *list, int i); |
|
937
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
890
diff
changeset
|
197 | void ui_listbox_dynamic_setselection(UiList *list, UiListSelection sel); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
890
diff
changeset
|
198 | UiListSelection ui_listbox_dynamic_getselection(UiList *list); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
890
diff
changeset
|
199 | |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
200 | void ui_listbox_update(UiListBox *listbox, int from, int to); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
201 | void ui_listbox_update_sublist(UiListBox *listbox, UiListBoxSubList *sublist, size_t listbox_insert_index); |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
202 | void ui_listbox_list_update(UiList *list, int i); |
|
937
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
890
diff
changeset
|
203 | void ui_listbox_list_setselection(UiList *list, UiListSelection sel); |
|
06e03c7e39db
implement sourcelist get/set selection list methods (gtk)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
890
diff
changeset
|
204 | UiListSelection ui_listbox_list_getselection(UiList *list); |
|
411
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
205 | |
|
3e91b7aff6a1
add sourcelist widget (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
394
diff
changeset
|
206 | void ui_listbox_row_activate(GtkListBox *self, GtkListBoxRow *row, gpointer user_data); |
|
116
480354705c2f
added combobox (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
42
diff
changeset
|
207 | |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
208 | #ifdef __cplusplus |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
209 | } |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
210 | #endif |
|
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
211 | |
|
971
0224108bd8c2
rename tree.h to list.h
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
969
diff
changeset
|
212 | #endif /* LIST_H */ |
|
33
458831c574f4
added listview, sidebar and toolbar image button (GTK)
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
213 |