ui/gtk/container.h

changeset 0
804d8803eade
equal deleted inserted replaced
-1:000000000000 0:804d8803eade
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 CONTAINER_H
30 #define CONTAINER_H
31
32 #include "../ui/toolkit.h"
33 #include "../ui/container.h"
34 #include <string.h>
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 #define ui_reset_layout(layout) memset(&(layout), 0, sizeof(UiLayout))
41 #define ui_lb2bool(b) ((b) == UI_LAYOUT_TRUE ? TRUE : FALSE)
42 #define ui_bool2lb(b) ((b) ? UI_LAYOUT_TRUE : UI_LAYOUT_FALSE)
43
44 typedef void (*ui_container_add_f)(UiContainer*, GtkWidget*, UiBool);
45
46 typedef struct UiDocumentView UiDocumentView;
47
48 typedef struct UiLayout UiLayout;
49 typedef enum UiLayoutBool UiLayoutBool;
50
51 enum UiLayoutBool {
52 UI_LAYOUT_UNDEFINED = 0,
53 UI_LAYOUT_TRUE,
54 UI_LAYOUT_FALSE,
55 };
56
57 struct UiLayout {
58 UiLayoutBool fill;
59 UiBool newline;
60 char *label;
61 UiBool hexpand;
62 UiBool vexpand;
63 int width;
64 int gridwidth;
65 };
66
67 struct UiContainer {
68 GtkWidget *widget;
69 GtkMenu *menu;
70 GtkWidget *current;
71
72 void (*add)(UiContainer*, GtkWidget*, UiBool);
73 UiLayout layout;
74
75 int close;
76 };
77
78 typedef struct UiBoxContainer {
79 UiContainer container;
80 UiBool has_fill;
81 } UiBoxContainer;
82
83 typedef struct UiGridContainer {
84 UiContainer container;
85 int x;
86 int y;
87 #ifdef UI_GTK2
88 int width;
89 int height;
90 #endif
91 } UiGridContainer;
92
93 typedef struct UiPanedContainer {
94 UiContainer container;
95 GtkWidget *current_pane;
96 int orientation;
97 int max;
98 int cur;
99 } UiPanedContainer;
100
101 typedef struct UiTabViewContainer {
102 UiContainer container;
103 } UiTabViewContainer;
104
105 GtkWidget* ui_gtk_vbox_new(int spacing);
106 GtkWidget* ui_gtk_hbox_new(int spacing);
107
108 UiContainer* ui_frame_container(UiObject *obj, GtkWidget *frame);
109 void ui_frame_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
110
111 UiContainer* ui_box_container(UiObject *obj, GtkWidget *box);
112 void ui_box_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
113
114 UiContainer* ui_grid_container(UiObject *obj, GtkWidget *grid);
115 void ui_grid_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
116
117 UiContainer* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow);
118 void ui_scrolledwindow_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
119
120 UiContainer* ui_tabview_container(UiObject *obj, GtkWidget *tabview);
121 void ui_tabview_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
122
123 void ui_paned_container_add(UiContainer *ct, GtkWidget *widget, UiBool fill);
124
125 void ui_split_container_add1(UiContainer *ct, GtkWidget *widget, UiBool fill);
126 void ui_split_container_add2(UiContainer *ct, GtkWidget *widget, UiBool fill);
127
128
129 UiObject* ui_add_document_tab(UiDocumentView *view);
130 void ui_tab_set_document(UiContext *ctx, void *document);
131 void ui_tab_detach_document(UiContext *ctx);
132
133 #ifdef __cplusplus
134 }
135 #endif
136
137 #endif /* CONTAINER_H */
138

mercurial