summaryrefslogtreecommitdiffstats
path: root/ui/librccui.h
blob: 2c72678748882e1aaf1eec15656cef6f1461bd55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#ifndef _LIBRCC_UI_H
#define _LIBRCC_UI_H

#include <librcc.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct rcc_ui_context_t *rcc_ui_context;

/*******************************************************************************
************************************ Names *************************************
*******************************************************************************/

struct rcc_name_t {
    const char *sn;
    const char *name;
};
typedef struct rcc_name_t rcc_name;

typedef const char *rcc_option_value_name;
typedef rcc_option_value_name *rcc_option_value_names;

struct rcc_option_name_t {
    rcc_option option;
    const char *name;
    rcc_option_value_names value_names;
};
typedef struct rcc_option_name_t rcc_option_name;

int rccUiSetLanguageNames(rcc_ui_context ctx, rcc_name *names);
int rccUiSetCharsetNames(rcc_ui_context ctx, rcc_name *names);
int rccUiSetEngineNames(rcc_ui_context ctx, rcc_name *names);

int rccUiSetOptionNames(rcc_ui_context ctx, rcc_option_name *names);
int rccUiSetClassNames(rcc_ui_context ctx);

/* page & boxes */
typedef const char *rcc_ui_box_name;
struct rcc_ui_language_frame_name_t {
    const char *title;
    rcc_ui_box_name language;
};
typedef struct rcc_ui_language_frame_name_t rcc_ui_language_frame_name;
struct rcc_ui_charset_frame_name_t {
    const char *title;
};
typedef struct rcc_ui_charset_frame_name_t rcc_ui_charset_frame_name;
struct rcc_ui_engine_frame_name_t {
    const char *title;
    rcc_ui_box_name engine;
};
typedef struct rcc_ui_engine_frame_name_t rcc_ui_engine_frame_name;
struct rcc_ui_page_name_t {
    const char *title;
    rcc_ui_language_frame_name language;
    rcc_ui_charset_frame_name charset;
    rcc_ui_engine_frame_name engine;
};
typedef struct rcc_ui_page_name_t rcc_ui_page_name;

rcc_ui_page_name *rccUiGetDefaultPageName();

const char *rccUiGetLanguageName(rcc_ui_context ctx, const char *lang);
const char *rccUiGetCharsetName(rcc_ui_context ctx, const char *charset);
const char *rccUiGetEngineName(rcc_ui_context ctx, const char *engine);
const char *rccUiGetClassName(rcc_ui_context ctx, const char *cl);
const char *rccUiGetOptionName(rcc_ui_context ctx, rcc_option option);
const char *rccUiGetOptionValueName(rcc_ui_context ctx, rcc_option option, rcc_option_value value);

/*******************************************************************************
************************************ API ***************************************
*******************************************************************************/

typedef void *rcc_ui_widget;
typedef void *rcc_ui_box;
typedef void *rcc_ui_frame;
typedef void *rcc_ui_page;

/**
  * Init RCC User Interface Library. This function should be called prior to any other UI functions 
  */
int rccUiInit();
/**
  * Free resources used by UI library. 
  *
  * @return non-zero value in the case of error.
  */
void rccUiFree();

/**
  * Create UI context and attach it to RCC working context. It isn't permited to attach to single
  * working context several UI's.
  * 
  * @param rccctx is pointer on the RCC working context.
  * @return pointer on newly created UI context or NULL in the case of errors.
  */
rcc_ui_context rccUiCreateContext(rcc_context rccctx);
/**
  * Destroy UI context and free all memory used. 
  *
  * @param ctx is UI context to be destroyed.
  */
void rccUiFreeContext(rcc_ui_context ctx);

/**
  * Restores current language UI menu values from #rcc_context.
  *
  * @param ctx is UI context.
  */
int rccUiRestoreLanguage(rcc_ui_context ctx);
/**
  * Restores complete UI configuration from #rcc_context.
  *
  * @param ctx is UI context.
  */
int rccUiRestore(rcc_ui_context ctx);
/**
  * Updates #rcc_context with user adjusted options from UI configuration.
  *
  * @param ctx is UI context.
  */
int rccUiUpdate(rcc_ui_context ctx);

rcc_ui_widget rccUiGetLanguageMenu(rcc_ui_context ctx);
rcc_ui_widget rccUiGetCharsetMenu(rcc_ui_context ctx, rcc_class_id id);
rcc_ui_widget rccUiGetEngineMenu(rcc_ui_context ctx);
rcc_ui_widget rccUiGetOptionMenu(rcc_ui_context ctx, rcc_option option);

rcc_ui_box rccUiGetLanguageBox(rcc_ui_context ctx, const char *title);
rcc_ui_box rccUiGetCharsetBox(rcc_ui_context ctx, rcc_class_id id, const char *title);
rcc_ui_box rccUiGetEngineBox(rcc_ui_context ctx, const char *title);
rcc_ui_box rccUiGetOptionBox(rcc_ui_context ctx, rcc_option option, const char *title);

rcc_ui_frame rccUiGetLanguageFrame(rcc_ui_context ctx, rcc_ui_language_frame_name *name);
rcc_ui_frame rccUiGetCharsetsFrame(rcc_ui_context ctx, rcc_ui_charset_frame_name *name);
rcc_ui_frame rccUiGetEngineFrame(rcc_ui_context ctx, rcc_ui_engine_frame_name *name);

/**
  * Get UI option page which can be integrated in application GUI. It is up on the caller
  * to use and destroy returned page.
  *
  * @param ctx is UI context.
  * @param name provides titles which should be used on the page or NULL to use defaults.
  * @result is created UI page or NULL in the case of errors.
  */
rcc_ui_page rccUiGetPage(rcc_ui_context ctx, rcc_ui_page_name *name);

#ifdef __cplusplus
}
#endif

#endif /* _LIBRCC_UI_H */