summaryrefslogtreecommitdiff
path: root/src/gtkext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-12-31 19:58:50 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-12-31 19:58:50 (GMT)
commit0f571c20444dbb5d8d8d0fa46a69b31cb89f9583 (patch)
tree4349b6bdfb1b8adbdc60e0887a2a122ed857b678 /src/gtkext
parent57d7eff57c20e75aaa4ccd34f1d9d733e12bb232 (diff)
Resolved links in disassembled instructions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@446 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext')
-rw-r--r--src/gtkext/gtkextstatusbar.c124
-rw-r--r--src/gtkext/gtkextstatusbar.h33
2 files changed, 146 insertions, 11 deletions
diff --git a/src/gtkext/gtkextstatusbar.c b/src/gtkext/gtkextstatusbar.c
index 1d55a0d..5fd37fe 100644
--- a/src/gtkext/gtkextstatusbar.c
+++ b/src/gtkext/gtkextstatusbar.c
@@ -24,6 +24,7 @@
#include "gtkextstatusbar.h"
+#include <assert.h>
#include <malloc.h>
#include <string.h>
@@ -110,6 +111,22 @@ static void _gtk_extended_status_bar_update_activity(GtkExtStatusBar *);
+/* -------------------------- GESTION EN VUE MACROSCOPIQUE -------------------------- */
+
+
+/* Concentré d'informations utiles */
+struct _status_blob_info
+{
+ GtkExtStatusBar *bar; /* Barre de statut utilisée */
+ bstatus_id_t id; /* Identifiant du message */
+
+ double current; /* Valeur courante représentée */
+ double max; /* Valeur maximale à atteindre */
+
+};
+
+
+
/* ---------------------------------------------------------------------------------- */
/* GESTION EXTERIEURE DE LA BARRE */
/* ---------------------------------------------------------------------------------- */
@@ -480,3 +497,110 @@ static void _gtk_extended_status_bar_update_activity(GtkExtStatusBar *bar)
g_mutex_unlock(&bar->stack_access);
}
+
+
+
+/* ---------------------------------------------------------------------------------- */
+/* GESTION EN VUE MACROSCOPIQUE */
+/* ---------------------------------------------------------------------------------- */
+
+
+/******************************************************************************
+* *
+* Paramètres : bar = barre de statut à manipuler. *
+* message = message à afficher pour l'utilisateur. *
+* val = valeur de départ à afficher initialement. *
+* max = valeur maximale de progression (négative = aucune).*
+* *
+* Description : Met en place rapidement un message progressiste de statut. *
+* *
+* Retour : Structure opaque contenant le nécessaire pour les opérations *
+* ultérieures. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+status_blob_info *init_progessive_status(GtkExtStatusBar *bar, const char *message, double val, double max)
+{
+ status_blob_info *result; /* Information à retourner */
+
+ result = (status_blob_info *)calloc(1, sizeof(status_blob_info));
+
+ g_object_ref(G_OBJECT(bar));
+ result->bar = bar;
+
+ result->id = gtk_extended_status_bar_push(bar, message, max > 0.0);
+
+ result->current = 0.0;
+ result->max = max;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : info = regroupement d'informations à manipuler. *
+* *
+* Description : Fait disparaître la glue d'affichage de progression. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void fini_progessive_status(status_blob_info *info)
+{
+ gtk_extended_status_bar_remove(info->bar, info->id);
+
+ g_object_unref(G_OBJECT(info->bar));
+
+ free(info);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : info = regroupement d'informations à manipuler. *
+* *
+* Description : Indique la valeur courante utilisée pour la progression. *
+* *
+* Retour : Valeur courante. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+double get_current_progessive_status(const status_blob_info *info)
+{
+ return info->current;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : info = regroupement d'informations à manipuler. *
+* inc = valeur de la progression à prendre en compte. *
+* *
+* Description : Augmente la progression visible dans la barre de statut. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void inc_progessive_status(status_blob_info *info, double inc)
+{
+ assert((info->current + inc) < info->max);
+
+ info->current += inc;
+
+ gtk_extended_status_bar_update_activity(info->bar, info->id, info->current / info->max);
+
+}
diff --git a/src/gtkext/gtkextstatusbar.h b/src/gtkext/gtkextstatusbar.h
index 779a177..d250b1f 100644
--- a/src/gtkext/gtkextstatusbar.h
+++ b/src/gtkext/gtkextstatusbar.h
@@ -30,17 +30,7 @@
-typedef struct _status_info
-{
-
-
- void *a;
-
- //GtkExtStatusBar *statusbar, bstatus_id_t id
-
-} status_info;
-
-
+/* ------------------------- GESTION EXTERIEURE DE LA BARRE ------------------------- */
#define GTK_TYPE_EXT_STATUS_BAR (gtk_extended_status_bar_get_type())
@@ -77,4 +67,25 @@ void gtk_extended_status_bar_remove(GtkExtStatusBar *, bstatus_id_t);
+/* -------------------------- GESTION EN VUE MACROSCOPIQUE -------------------------- */
+
+
+/* Concentré d'informations utiles */
+typedef struct _status_blob_info status_blob_info;
+
+
+/* Met en place rapidement un message progressiste de statut. */
+status_blob_info *init_progessive_status(GtkExtStatusBar *, const char *, double, double);
+
+/* Fait disparaître la glue d'affichage de progression. */
+void fini_progessive_status(status_blob_info *);
+
+/* Indique la valeur courante utilisée pour la progression. */
+double get_current_progessive_status(const status_blob_info *);
+
+/* Augmente la progression visible dans la barre de statut. */
+void inc_progessive_status(status_blob_info *, double);
+
+
+
#endif /* _GTKEXT_GTKEXTSTATUSBAR_H */