/* OpenIDA - Outil d'analyse de fichiers binaires * panel-int.h - prototypes pour les définitions internes liées aux panneaux d'affichage * * Copyright (C) 2012 Cyrille Bagard * * This file is part of OpenIDA. * * OpenIDA 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. * * OpenIDA 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _GUI_PANELS_PANEL_INT_H #define _GUI_PANELS_PANEL_INT_H #include "panel.h" #include #include #include "../editem-int.h" #include "../../common/dllist.h" /* Elément réactif pour panneaux de l'éditeur (instance) */ struct _GPanelItem { GEditorItem parent; /* A laisser en premier */ DL_LIST_ITEM(link); /* Maillon de liste chaînée */ const char *lname; /* Description longue */ const char *path; /* Chemin vers la place idéale */ }; /* Elément de la hiérarchie des panneaux */ typedef struct _panel_node { struct _panel_node *parent; /* Noeud parent */ char *path; /* Chemin du nom courant */ size_t depth; /* Profondeur utilisée */ bool simple; /* Noeud sans division */ union { GtkWidget *station; /* Station d'accueil simple */ struct { GtkWidget *paned; /* Station d'accueil composée */ struct _panel_node *first; /* Premier sous élément */ struct _panel_node *second; /* Second sous élément */ }; }; } panel_node; #define GET_PANEL_NODE_WIDGET(node) (node->simple ? node->station : node->paned) /* Elément réactif pour panneaux de l'éditeur (classe) */ struct _GPanelItemClass { GEditorItemClass parent; /* A laisser en premier */ GtkBin *first; /* Elément racine */ }; #define panels_list_add_tail(new, head) dl_list_add_tail(new, head, GPanelItem, link) #define panels_list_for_each(pos, head) dl_list_for_each(pos, head, GPanelItem, link) /* Initialise dynamique les propriétés de l'instance. */ void g_panel_item_init_ext(GPanelItem *, GObject *, const char *, const char *, GtkWidget *, const char *); #endif /* _GUI_PANELS_PANEL_INT_H */