diff options
Diffstat (limited to 'src/gui/editor.c')
-rw-r--r-- | src/gui/editor.c | 109 |
1 files changed, 62 insertions, 47 deletions
diff --git a/src/gui/editor.c b/src/gui/editor.c index 8e20cc1..ea650d3 100644 --- a/src/gui/editor.c +++ b/src/gui/editor.c @@ -48,6 +48,7 @@ #include "../core/global.h" #include "../core/params.h" #include "../glibext/chrysamarshal.h" +#include "../glibext/named.h" #include "../glibext/signal.h" #include "../gtkext/easygtk.h" #include "../gtkext/gtkdisplaypanel.h" @@ -115,6 +116,9 @@ static void on_dock_item_switch(GtkDockStation *, GtkWidget *, gpointer); /* Encastre comme demandé un panneau dans l'éditeur. */ static void dock_panel_into_current_station(GtkCheckMenuItem *, GPanelItem *); +/* Ajout d'un panneau dans la liste adaptée des menus. */ +static bool add_side_panel_to_menu(GPanelItem *, GtkContainer *); + /* Réagit à une demande de menu pour rajouter des panneaux. */ static void on_dock_menu_request(GtkDockStation *, GtkWidget *, gpointer); @@ -571,7 +575,7 @@ static GtkWidget *build_editor_toolbar(GObject *ref) gtk_widget_show(result); g_object_set_data(ref, "toolbar", result); - item = create_portions_tb_item(ref); + item = g_portions_tbitem_new(ref); register_editor_item(item); void track_tb_items_visibility(GtkWidget *widget, gpointer unused) @@ -705,11 +709,11 @@ static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelIt /****************************************************************************** * * -* Paramètres : station = panneau de support des éléments concerné. * +* Paramètres : panel n = panneau de support des éléments concerné. * * button = bouton à l'origine de la procédure. * * unsued = adresse non utilisée ici. * * * -* Description : Réagit à une demande de menu pour rajouter des panneaux. * +* Description : Ajout d'un panneau dans la liste adaptée des menus. * * * * Retour : - * * * @@ -717,57 +721,74 @@ static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelIt * * ******************************************************************************/ -static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpointer unused) +static bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support) { - GtkWidget *active; /* Composant actif modèle */ - GPanelItem *model; /* Panneau encapsulé */ - GtkContainer *menu; /* Support à retourner */ - GList *children; /* Composants mis en place */ - GtkWidget *nopanel; /* Sous-élément de menu */ + char *key; /* Désignation de l'entrée */ + GtkWidget *submenuitem; /* Sous-élément de menu */ + const char *bindings; /* Raccourcis clavier bruts */ - menu = GTK_CONTAINER(qck_create_menu(NULL)); + /* Profil qui ne cadre pas ? */ - active = gtk_notebook_get_nth_page(GTK_NOTEBOOK(station), 0); + if (gtk_panel_item_get_personality(panel) != PIP_SINGLETON) + goto exit; - model = G_PANEL_ITEM(g_object_get_data(G_OBJECT(active), "dockable")); + if (g_panel_item_is_docked(panel)) + goto exit; - g_object_set_data_full(G_OBJECT(menu), "path", strdup(gtk_panel_item_get_path(model)), free); + /* Elément de menu */ - /* Ajout des panneaux uniques */ + key = g_editor_item_get_key(G_EDITOR_ITEM(panel)); - bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support) - { - const char *name; /* Désignation de l'entrée */ - GtkWidget *submenuitem; /* Sous-élément de menu */ - const char *bindings; /* Raccourcis clavier bruts */ + submenuitem = qck_create_menu_item(NULL, NULL, key, + G_CALLBACK(dock_panel_into_current_station), panel); - /* Profil qui ne cadre pas ? */ + free(key); - if (gtk_panel_item_get_personality(panel) != PIP_SINGLETON) - goto aptm_exit; + bindings = gtk_panel_item_get_key_bindings(panel); - if (g_panel_item_is_docked(panel)) - goto aptm_exit; + if (bindings != NULL) + add_accelerator_to_widget(submenuitem, bindings); - /* Elément de menu */ + gtk_container_add(support, submenuitem); - name = g_editor_item_get_name(G_EDITOR_ITEM(panel)); + exit: - submenuitem = qck_create_menu_item(NULL, NULL, name, - G_CALLBACK(dock_panel_into_current_station), panel); + return true; + +} + + +/****************************************************************************** +* * +* Paramètres : station = panneau de support des éléments concerné. * +* button = bouton à l'origine de la procédure. * +* unsued = adresse non utilisée ici. * +* * +* Description : Réagit à une demande de menu pour rajouter des panneaux. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ - bindings = gtk_panel_item_get_key_bindings(panel); +static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpointer unused) +{ + GtkWidget *active; /* Composant actif modèle */ + GPanelItem *model; /* Panneau encapsulé */ + GtkContainer *menu; /* Support à retourner */ + GList *children; /* Composants mis en place */ + GtkWidget *nopanel; /* Sous-élément de menu */ - if (bindings != NULL) - add_accelerator_to_widget(submenuitem, bindings); + menu = GTK_CONTAINER(qck_create_menu(NULL)); - gtk_container_add(support, submenuitem); + active = gtk_notebook_get_nth_page(GTK_NOTEBOOK(station), 0); - aptm_exit: + model = G_PANEL_ITEM(g_object_get_data(G_OBJECT(active), "dockable")); - return true; + g_object_set_data_full(G_OBJECT(menu), "path", strdup(gtk_panel_item_get_path(model)), free); - } + /* Ajout des panneaux uniques */ browse_all_item_panels((handle_panel_item_fc)add_side_panel_to_menu, menu); @@ -925,25 +946,19 @@ static void on_editor_content_available(GStudyProject *project, GLoadedContent * static void on_editor_loaded_content_added(GStudyProject *project, GLoadedContent *content, void *unused) { - GtkWidget *selected; /* Interface de prédilection */ - char *name; /* Titre associé au binaire */ - char *lname; /* Description du binaire */ GPanelItem *panel; /* Nouveau panneau à integrer */ + GtkWidget *selected; /* Interface de prédilection */ - selected = g_loaded_content_build_default_view(content); - - name = g_loaded_content_describe(content, false); - lname = g_loaded_content_describe(content, true); - - panel = g_panel_item_new(PIP_BINARY_VIEW, name, lname, selected, true, "M"); - - free(lname); - free(name); + panel = g_panel_item_new(PIP_BINARY_VIEW, G_NAMED_WIDGET(content), true, "M"); register_panel_item(panel, get_main_configuration()); + selected = g_editor_item_get_widget(G_EDITOR_ITEM(panel)); + g_signal_connect(selected, "size-allocate", G_CALLBACK(scroll_for_the_first_time), content); + g_object_unref(G_OBJECT(selected)); + g_panel_item_dock(panel); update_project_area(project); |