summaryrefslogtreecommitdiff
path: root/src/gtkext/grid.h
blob: f02cf38cf3deb9e892453a8fa1c6ce9547ab74ce (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
155

/* Chrysalide - Outil d'analyse de fichiers binaires
 * tiledgrid.h - prototypes pour un composant d'affichage avec des chemins vers les composants contenus
 *
 * Copyright (C) 2018-2024 Cyrille Bagard
 *
 *  This file is part of Chrysalide.
 *
 *  Chrysalide is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  Chrysalide is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with Chrysalide.  If not, see <http://www.gnu.org/licenses/>.
 */


#ifndef _GTKEXT_GRID_H
#define _GTKEXT_GRID_H


#include <stdbool.h>
#include <gtk/gtk.h>


#include "panel.h"
#include "../glibext/helpers.h"



#define GTK_TYPE_TILING_GRID (gtk_tiling_grid_get_type())

DECLARE_GTYPE(GtkTilingGrid, gtk_tiling_grid, GTK, TILING_GRID);


/* Crée une nouvelle instance de conteneur avec tuiles. */
GtkWidget *gtk_tiling_grid_new(void);

/* Liste des zones de bordure */
typedef enum _TilingGridBorder              /*< skip (glib-mkenums)       >*/
{
    TGB_TOP,                                /* Zone supérieure             */
    TGB_LEFT,                               /* Zone de gauche              */
    TGB_RIGHT,                              /* Zone de droite              */
    TGB_BOTTOM,                             /* Zone inférieure             */

} TilingGridBorder;

/**
 * Fixe le nombre de combinaisons sans le rendre visible dans l'énumération.
 */
#define TGB_COUNT (TGB_BOTTOM + 1)

/* Affiche ou masque une zone du conteneur en tuiles. */
void gtk_tiling_grid_set_visible(GtkTilingGrid *, TilingGridBorder, bool);

/* Fournit la visibilité d'une zone du conteneur en tuiles. */
bool gtk_tiling_grid_get_visible(GtkTilingGrid *, TilingGridBorder);

/* Ajoute un panneau à un conteneur en tuiles. */
void gtk_tiling_grid_add_panel(GtkTilingGrid *, GtkTiledPanel *, bool);



/* --------------------- FORME GENERIQUE DE MISE EN DISPOSITION --------------------- */


/* Options de dispositions cumulables */
typedef enum _LayoutReachOptions            /*< flags (glib-mkenums)      >*/
{
    LRO_NONE                = (0 << 0),     /* Aucune atteinte des bords   */
    LRO_LEFT_TOP_REACH      = (1 << 0),     /* Atteinte du bord haut à G.  */
    LRO_LEFT_BOTTOM_REACH   = (1 << 1),     /* Atteinte du bord bas à G.   */
    LRO_RIGHT_TOP_REACH     = (1 << 2),     /* Atteinte du bord haut à D.  */
    LRO_RIGHT_BOTTOM_REACH  = (1 << 3),     /* Atteinte du bord bas à D.   */

} LayoutReachOptions;

/* Met en place une disposition particulière de panneaux. */
void apply_tiling_grid_layout(GtkGrid *, LayoutReachOptions, GtkWidget *[TGB_COUNT]);







#if 0

#include <gtk/gtk.h>


#include "gtkdockstation.h"
#include "../glibext/configuration.h"
#include "../gui/panel.h"



/* --------------------------- INTERFACE DU COMPOSANT GTK --------------------------- */


#define GTK_TYPE_TILED_GRID            gtk_tiled_grid_get_type()
#define GTK_TILED_GRID(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_TILED_GRID, GtkTiledGrid))
#define GTK_IS_TILED_GRID(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_TILED_GRID))
#define GTK_TILED_GRID_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_TILED_GRID, GtkTiledGridClass))
#define GTK_IS_TILED_GRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_TILED_GRID))
#define GTK_TILED_GRID_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_TILED_GRID, GtkTiledGridClass))



/* Conteneur pour un affichage en tuiles nommées (instance) */
typedef struct _GtkTiledGrid GtkTiledGrid;

/* Conteneur pour un affichage en tuiles nommées (classe) */
typedef struct _GtkTiledGridClass GtkTiledGridClass;


/* Détermine le type du conteneur d'affichage en tuiles nommées. */
GType gtk_tiled_grid_get_type(void);

/* Crée une nouvelle instance de conteneur avec tuiles. */
GtkWidget *gtk_tiled_grid_new(void);

/* Donne le panneau fourni par défaut pour la zone principale. */
GPanelItem *gtk_tiled_grid_get_default_main_panel(const GtkTiledGrid *);

/* Fournit le panneau par défaut pour la zone principale. */
void gtk_tiled_grid_set_default_main_panel(GtkTiledGrid *, GPanelItem *);

/* Incorpore un nouveau panneau dans le conteneur en tuiles. */
void gtk_tiled_grid_add(GtkTiledGrid *, GPanelItem *);

/* Retire un panneau dans le conteneur en tuiles. */
void gtk_tiled_grid_remove(GtkTiledGrid *, GPanelItem *);

/* Indique le chemin correspondant à une station intégrée. */
char *gtk_tiled_grid_get_path_for_station(const GtkTiledGrid *, GtkDockStation *);

/* Replace les positions des séparateurs de tuiles. */
void gtk_tiled_grid_restore_positions(const GtkTiledGrid *, GGenConfig *);

/* Sauvegarde les positions des séparateurs de tuiles. */
void gtk_tiled_grid_save_positions(const GtkTiledGrid *, GGenConfig *);


#endif


#endif  /* _GTKEXT_GRID_H */