/* Chrysalide - Outil d'analyse de fichiers binaires * core.c - chargement et le déchargement du tronc commun pour l'éditeur graphique * * Copyright (C) 2016-2017 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 . */ #include "core.h" #include "global.h" #include "panels.h" #include "theme.h" #include "../menus/menubar.h" #include "../menus/view.h" #include "../panels/welcome.h" #include "../../core/params.h" #include "../../glibext/linesegment.h" #include "../../gtkext/tiledgrid.h" /****************************************************************************** * * * Paramètres : - * * * * Description : Charge les éléments graphiques de l'éditeur. * * * * Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ bool load_all_gui_components(void) { bool result; /* Bilan à retourner */ GObject *ref; /* Espace de référencements */ GMenuBar *bar; /* Gestion des menus */ GtkMenuItem *submenuitem; /* Sous-élément de menu */ result = true; load_main_panels(); /** * Charge une liste initiale pour activer les raccourcis clavier. */ ref = get_global_ref(); bar = G_MENU_BAR(g_object_get_data(ref, "menubar")); submenuitem = GTK_MENU_ITEM(g_object_get_data(ref, "mnu_view_side_panels")); mcb_view_update_side_panels_list(submenuitem, bar); return result; } /****************************************************************************** * * * Paramètres : config = configuration globale à utiliser. * * * * Description : Finalise le chargement des éléments graphiques de l'éditeur. * * * * Retour : Bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ bool complete_loading_of_all_gui_components(GGenConfig *config) { bool result; /* Bilan à faire remonter */ GtkTiledGrid *grid; /* Composant d'affichage */ GPanelItem *welcome; /* Panneau d'accueil */ load_extra_gtk_theme(); result = load_segment_rendering_parameters(); grid = get_tiled_grid(); welcome = get_panel_item_by_name(PANEL_WELCOME_ID); gtk_tiled_grid_set_default_main_panel(grid, welcome); g_object_unref(G_OBJECT(welcome)); /** * Le fait d'avoir défini le panneau d'accueil par défaut va l'afficher, * comme il n'y a encore aucun autre panneau. Ce qui va mémoriser son * paramètre d'affichage par défaut au démarrage à vrai. * * Or gtk_panel_item_apply_configuration() s'occupe précisément de * restaurer les affichages de panneaux au démarrage. * * Donc on doit sauter ce panneau d'accueil lors de l'appel suivant. */ if (result) result = _browse_all_item_panels(true, (handle_panel_item_fc)gtk_panel_item_apply_configuration, config); gtk_tiled_grid_restore_positions(grid, config); return result; } /****************************************************************************** * * * Paramètres : - * * * * Description : Décharge les éléments graphiques de l'éditeur. * * * * Retour : - * * * * Remarques : - * * * ******************************************************************************/ void unload_all_gui_components(void) { exit_segment_content_hash_table(); }