diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2024-06-04 10:34:24 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2024-06-04 10:36:13 (GMT) |
commit | 4218b6e8f87893a31c292dbb32c328b81e18ec61 (patch) | |
tree | aa2e56259aef63dde37fa93e80dc02eb0b512906 /src/glibext/options.c | |
parent | 20e004389791cce24682a426a183a665247e2920 (diff) |
Define rendering options for content views.
Diffstat (limited to 'src/glibext/options.c')
-rw-r--r-- | src/glibext/options.c | 125 |
1 files changed, 25 insertions, 100 deletions
diff --git a/src/glibext/options.c b/src/glibext/options.c index a8f835b..4739ea4 100644 --- a/src/glibext/options.c +++ b/src/glibext/options.c @@ -1,8 +1,8 @@ /* Chrysalide - Outil d'analyse de fichiers binaires - * gdisplayoptions.h - options de rendus des lignes de code + * options.c - options de rendus des lignes de code * - * Copyright (C) 2018 Cyrille Bagard + * Copyright (C) 2018-2024 Cyrille Bagard * * This file is part of Chrysalide. * @@ -21,7 +21,7 @@ */ -#include "gdisplayoptions.h" +#include "options.h" #include <assert.h> @@ -29,33 +29,10 @@ #include <string.h> -#include "chrysamarshal.h" +#include "options-int.h" -/* Options de représentation (instance) */ -struct _GDisplayOptions -{ - GObject parent; /* A laisser en premier */ - - char **names; /* Désignations des options */ - bool *values; /* Valeurs des options */ - size_t count; /* Nombre de ces options */ - -}; - -/* Options de représentation (classe) */ -struct _GDisplayOptionsClass -{ - GObjectClass parent; /* A laisser en premier */ - - /* Signaux */ - - void (* value_changed) (const GDisplayOptions *, gsize, gboolean); - -}; - - /* Initialise la classe des options pour le rendu des lignes. */ static void g_display_options_class_init(GDisplayOptionsClass *); @@ -95,22 +72,13 @@ static void g_display_options_class_init(GDisplayOptionsClass *klass) object->dispose = (GObjectFinalizeFunc/* ! */)g_display_options_dispose; object->finalize = (GObjectFinalizeFunc)g_display_options_finalize; - /** - * Note : il n'existe pas de G_TYPE_GSIZE. - * - * Or la documentation précise : - * - * typedef unsigned long gsize; - * - */ - - g_signal_new("value-changed", + g_signal_new("state-changed", G_TYPE_DISPLAY_OPTIONS, G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET(GDisplayOptionsClass, value_changed), + G_STRUCT_OFFSET(GDisplayOptionsClass, state_changed), NULL, NULL, - g_cclosure_user_marshal_VOID__ULONG_BOOLEAN, - G_TYPE_NONE, 2, G_TYPE_ULONG, G_TYPE_BOOLEAN); + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } @@ -187,51 +155,35 @@ static void g_display_options_finalize(GDisplayOptions *options) /****************************************************************************** * * -* Paramètres : - * +* Paramètres : options = ensemble d'options à initialiser pleinement. * +* names = désignation humaine de chaque option d'affichage. * +* values = valeur initiale de chacune de ces options. * +* count = quantité d'options prises en compte. * * * -* Description : Crée un groupe d'options pour le rendu des lignes. * +* Description : Met en place un groupe d'options pour le rendu des lignes. * * * -* Retour : Adresse de la structure mise en place. * +* Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ -GDisplayOptions *g_display_options_new(void) +bool g_display_options_create(GDisplayOptions *options, const char **names, const bool *values, size_t count) { - GDisplayOptions *result; /* Structure à retourner */ - - result = g_object_new(G_TYPE_DISPLAY_OPTIONS, NULL); - - return result; - -} - - -/****************************************************************************** -* * -* Paramètres : template = modèle de groupe à copier. * -* * -* Description : Copie un groupe d'options pour le rendu des lignes. * -* * -* Retour : Adresse de la structure mise en place. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GDisplayOptions *g_display_options_dup(const GDisplayOptions *template) -{ - GDisplayOptions *result; /* Structure à retourner */ - size_t count; /* Nombre d'options à copier */ + bool result; /* Bilan à retourner */ size_t i; /* Boucle de parcours */ - result = g_display_options_new(); + result = true; - count = g_display_options_count(template); + options->names = malloc(count * sizeof(char *)); + options->values = malloc(count * sizeof(bool)); + options->count = count; for (i = 0; i < count; i++) - g_display_options_add(result, template->names[i], template->values[i]); + { + options->names[i] = strdup(names[i]); + options->values[i] = values[i]; + } return result; @@ -263,33 +215,6 @@ size_t g_display_options_count(const GDisplayOptions *options) /****************************************************************************** * * -* Paramètres : options = options à compléter. * -* name = désignation humaine de la nouvelle option. * -* value = valeur initiale de l'option à ajouter. * -* * -* Description : Ajoute une nouvelle option à l'ensemble. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void g_display_options_add(GDisplayOptions *options, const char *name, bool value) -{ - options->count++; - - options->names = (char **)realloc(options->names, options->count * sizeof(char *)); - options->values = (bool *)realloc(options->values, options->count * sizeof(bool)); - - options->names[options->count - 1] = strdup(name); - options->values[options->count - 1] = value; - -} - - -/****************************************************************************** -* * * Paramètres : options = options à consulter. * * index = indice de l'option concernée. * * * @@ -378,6 +303,6 @@ void g_display_options_set(GDisplayOptions *options, size_t index, bool value) changed = false; if (changed) - g_signal_emit_by_name(options, "value-changed", index, value); + g_signal_emit_by_name(options, "state-changed"); } |