summaryrefslogtreecommitdiff
path: root/src/gui/editor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/editor.c')
-rw-r--r--src/gui/editor.c109
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);