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.c66
1 files changed, 43 insertions, 23 deletions
diff --git a/src/gui/editor.c b/src/gui/editor.c
index 6e98423..1665ff4 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -43,6 +43,7 @@
#include "core/panels.h"
#include "core/global.h"
#include "core/items.h"
+#include "panels/view.h"
#include "tb/portions.h"
#include "../common/extstr.h"
#include "../core/global.h"
@@ -117,10 +118,10 @@ static void on_dock_station_created(GtkTiledGrid *, GtkDockStation *, gpointer);
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 *);
+static void dock_panel_into_current_station(GtkCheckMenuItem *, gpointer);
/* Ajout d'un panneau dans la liste adaptée des menus. */
-static bool add_side_panel_to_menu(GPanelItem *, GtkContainer *);
+static bool add_side_panel_to_menu(GPanelItemClass *, GtkContainer *);
/* Réagit à une demande de menu pour rajouter des panneaux. */
static void on_dock_menu_request(GtkDockStation *, GtkWidget *, gpointer);
@@ -361,7 +362,7 @@ static void connect_all_editor_signals(GtkBuilder *builder, GObject *obj, const
{
if (strncmp(hdl_name, "mcb_", 4) == 0)
{
- bar = G_MENU_BAR(find_editor_item_by_key("menubar"));
+ bar = G_MENU_BAR(find_editor_item_by_type(G_TYPE_MENU_BAR));
arg = bar;
g_object_unref(G_OBJECT(bar));
}
@@ -739,7 +740,7 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, gpoi
/******************************************************************************
* *
* Paramètres : menuitem = élement de menu actionné. *
-* item = panneau à ajouter à l'interface graphique. *
+* type_ptr = type de panneau à mettre en place. *
* *
* Description : Encastre comme demandé un panneau dans l'éditeur. *
* *
@@ -749,18 +750,21 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, gpoi
* *
******************************************************************************/
-static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelItem *item)
+static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, gpointer type_ptr)
{
+ GType type; /* Type de panneau considérée */
GtkWidget *parent; /* Menu parent avec chemin */
const char *new_path; /* Nouveau chemin à appliquer */
+ GPanelItem *panel; /* Panneau à mettre en place */
+
+ type = GPOINTER_TO_SIZE(type_ptr);
parent = gtk_widget_get_parent(GTK_WIDGET(menuitem));
new_path = g_object_get_data(G_OBJECT(parent), "path");
- gtk_panel_item_set_path(item, new_path);
-
- g_panel_item_dock(item);
+ panel = g_panel_item_new(type, new_path);
+ g_object_unref(G_OBJECT(panel));
}
@@ -773,47 +777,63 @@ static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelIt
* *
* Description : Ajout d'un panneau dans la liste adaptée des menus. *
* *
-* Retour : - *
+* Retour : true, par conformité avec browse_all_item_panels(). *
* *
* Remarques : - *
* *
******************************************************************************/
-static bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support)
+static bool add_side_panel_to_menu(GPanelItemClass *class, GtkContainer *support)
{
+ GEditorItem *item; /* Instance de panneau en place*/
+ gpointer type_ptr; /* Type de panneau traité */
char *key; /* Désignation de l'entrée */
GtkWidget *submenuitem; /* Sous-élément de menu */
- const char *bindings; /* Raccourcis clavier bruts */
+ char *bindings; /* Raccourcis clavier bruts */
GtkBuilder *builder; /* Constructeur principal */
/* Profil qui ne cadre pas ? */
- if (gtk_panel_item_get_personality(panel) != PIP_SINGLETON)
+ if (gtk_panel_item_class_get_personality(class) != PIP_SINGLETON)
goto exit;
- if (g_panel_item_is_docked(panel))
- goto exit;
+ item = find_editor_item_by_type(G_TYPE_FROM_CLASS(class));
+
+ if (item != NULL)
+ {
+ if (g_panel_item_is_docked(G_PANEL_ITEM(item)))
+ goto exit_ref;
+ }
/* Elément de menu */
- key = g_editor_item_get_key(G_EDITOR_ITEM(panel));
+ type_ptr = GSIZE_TO_POINTER(G_TYPE_FROM_CLASS(class));
+
+ key = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class));
submenuitem = qck_create_menu_item(NULL, NULL, key,
- G_CALLBACK(dock_panel_into_current_station), panel);
+ G_CALLBACK(dock_panel_into_current_station), type_ptr);
free(key);
- bindings = gtk_panel_item_get_key_bindings(panel);
+ bindings = gtk_panel_item_class_get_key_bindings(class);
if (bindings != NULL)
{
builder = get_editor_builder();
add_accelerator_to_widget(builder, submenuitem, bindings);
g_object_unref(G_OBJECT(builder));
+
+ free(bindings);
+
}
gtk_container_add(support, submenuitem);
+ exit_ref:
+
+ g_object_unref(G_OBJECT(item));
+
exit:
return true;
@@ -838,7 +858,7 @@ static bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support)
static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpointer unused)
{
GtkWidget *active; /* Composant actif modèle */
- GPanelItem *model; /* Panneau encapsulé */
+ GPanelItemClass *model; /* Panneau encapsulé */
GtkContainer *menu; /* Support à retourner */
GList *children; /* Composants mis en place */
GtkWidget *nopanel; /* Sous-élément de menu */
@@ -847,9 +867,9 @@ static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpo
active = gtk_notebook_get_nth_page(GTK_NOTEBOOK(station), 0);
- model = G_PANEL_ITEM(g_object_get_data(G_OBJECT(active), "dockable"));
+ model = G_PANEL_ITEM_GET_CLASS(g_object_get_data(G_OBJECT(active), "dockable"));
- g_object_set_data_full(G_OBJECT(menu), "path", strdup(gtk_panel_item_get_path(model)), free);
+ g_object_set_data_full(G_OBJECT(menu), "path", gtk_panel_item_class_get_path(model), free);
/* Ajout des panneaux uniques */
@@ -1012,9 +1032,9 @@ static void on_editor_loaded_content_added(GStudyProject *project, GLoadedConten
GPanelItem *panel; /* Nouveau panneau à integrer */
GtkWidget *selected; /* Interface de prédilection */
- panel = g_panel_item_new(PIP_BINARY_VIEW, G_NAMED_WIDGET(content), true, "M");
+ panel = g_view_panel_new(G_NAMED_WIDGET(content));
- register_panel_item(panel, get_main_configuration());
+ register_panel_item(G_TYPE_VIEW_PANEL, get_main_configuration());
selected = g_editor_item_get_widget(G_EDITOR_ITEM(panel));
@@ -1111,7 +1131,7 @@ static void remove_loaded_content_from_editor(GtkWidget *widget, GLoadedContent
panel = G_PANEL_ITEM(g_object_get_data(G_OBJECT(tab), "dockable"));
- if (gtk_panel_item_get_personality(panel) != PIP_BINARY_VIEW)
+ if (gtk_panel_item_class_get_personality(G_PANEL_ITEM_GET_CLASS(panel)) != PIP_BINARY_VIEW)
continue;
built = get_loaded_panel_from_built_view(tab);