36 g_return_if_fail(setting && (value || setting->type ==
STRING));
38 switch(setting->type) {
40 setting->value.b = *((
bool *) value);
43 setting->value.f = *((
float *) value);
46 setting->value.i = *((
int *) value);
49 if (setting->value.s != NULL) {
50 g_free(setting->value.s);
52 setting->value.s = value ? g_strdup(value) : NULL;
58 if (session && setting->callback != NULL) {
59 setting->callback(session, setting->name, setting->type, value, setting->data);
69 if (type !=
STRING && value == NULL) {
79 girara_setting_t* setting = g_slice_new0(girara_setting_t);
81 setting->name = g_strdup(name);
83 setting->init_only = init_only;
84 setting->description = description ? g_strdup(description) : NULL;
85 setting->callback = callback;
101 if (setting == NULL) {
114 bool *bvalue = (
bool*) dest;
115 float *fvalue = (
float*) dest;
116 int *ivalue = (
int*) dest;
117 char **svalue = (
char**) dest;
119 switch(setting->type) {
121 *bvalue = setting->value.b;
124 *fvalue = setting->value.f;
127 *ivalue = setting->value.i;
130 *svalue = setting->value.s ? g_strdup(setting->value.s) : NULL;
145 if (setting == NULL) {
159 g_free(setting->name);
160 g_free(setting->description);
161 if (setting->type ==
STRING) {
162 g_free(setting->value.s);
164 g_slice_free(girara_setting_t, setting);
173 girara_setting_t* result = NULL;
175 if (g_strcmp0(setting->name, name) == 0) {
187 return setting->name;
193 return setting->type;
204 if (completion == NULL) {
214 unsigned int input_length = strlen(input);
217 if ((setting->init_only ==
false) && (input_length <= strlen(setting->name)) &&
218 !strncmp(input, setting->name, input_length)) {
void girara_setting_set_value(girara_session_t *session, girara_setting_t *setting, void *value)
HIDDEN void girara_setting_free(girara_setting_t *setting)
bool girara_setting_add(girara_session_t *session, const char *name, void *value, girara_setting_type_t type, bool init_only, const char *description, girara_setting_callback_t callback, void *data)
girara_setting_t * girara_setting_find(girara_session_t *session, const char *name)
HIDDEN girara_completion_t * girara_cc_set(girara_session_t *session, const char *input)
void girara_list_append(girara_list_t *list, void *data)
girara_session_t * session
bool girara_setting_get_value(girara_setting_t *setting, void *dest)
girara_completion_t * girara_completion_init()
girara_completion_group_t *group value
girara_setting_callback_t callback
void girara_completion_add_group(girara_completion_t *completion, girara_completion_group_t *group)
GIRARA_LIST_FOREACH_END(session->bindings.mouse_events, girara_mouse_event_t *, iter, mouse_event)
void girara_completion_group_add_element(girara_completion_group_t *group, const char *name, const char *description)
bool girara_setting_get(girara_session_t *session, const char *name, void *dest)
girara_setting_type_t type
void girara_completion_free(girara_completion_t *completion)
girara_setting_type_t girara_setting_get_type(girara_setting_t *setting)
g_return_val_if_fail(button!=NULL, false)
bool girara_setting_set(girara_session_t *session, const char *name, void *value)
const char * girara_setting_get_name(girara_setting_t *setting)
girara_completion_group_t * girara_completion_group_create(girara_session_t *session, const char *name)
union girara_setting_s::@12 value
#define GIRARA_LIST_FOREACH(list, type, iter, data)
void(* girara_setting_callback_t)(girara_session_t *session, const char *name, girara_setting_type_t type, void *value, void *data)