/* 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 . */ #ifndef _GTKEXT_GRID_H #define _GTKEXT_GRID_H #include #include #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 #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 */