summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Geddes <vgeddes@src.gnome.org>2007-06-20 01:19:04 +0000
committerVincent Geddes <vgeddes@src.gnome.org>2007-06-20 01:19:04 +0000
commit552ea45750c8829df74f6345eb95f2f1dd681450 (patch)
treef515985fa951e30a8fbd36758a77468dd8384765 /src
parenteeb660f9d7a9b07fb784c7e045fe7b394dcb1410 (diff)
downloadglade-552ea45750c8829df74f6345eb95f2f1dd681450.tar.gz
New Inspector implementation. - The Inspector no longer records session
* gladeui/glade-inspector.[ch]: New Inspector implementation. - The Inspector no longer records session data. - GtkTreeModel of inspector is now synchronised with project data in an incremental fashion, instead of being totally rebuilt on changes. * gladeui/glade-project-view.[ch]: Removed. * gladeui/glade-app.[ch]: Remove glade_app_add_project_view(). Inspectors are now managed by the frontend. * src/glade-project-window: A unique GladeInspector is associated with each open project. These inspectors are stored in a GtkNotebook. svn path=/trunk/; revision=1370
Diffstat (limited to 'src')
-rw-r--r--src/glade-project-window.c54
1 files changed, 44 insertions, 10 deletions
diff --git a/src/glade-project-window.c b/src/glade-project-window.c
index 79846ab0..fc9982f8 100644
--- a/src/glade-project-window.c
+++ b/src/glade-project-window.c
@@ -30,6 +30,7 @@
#include <gladeui/glade.h>
#include <gladeui/glade-design-view.h>
#include <gladeui/glade-binding.h>
+#include <gladeui/glade-inspector.h>
#include <string.h>
#include <glib/gstdio.h>
@@ -60,6 +61,8 @@ struct _GladeProjectWindowPrivate
GladeDesignView *active_view;
gint num_tabs;
+ GtkWidget *inspectors_notebook;
+
GtkWidget *statusbar; /* A pointer to the status bar. */
guint statusbar_menu_context_id; /* The context id of the menu bar */
guint statusbar_actions_context_id; /* The context id of actions messages */
@@ -1448,6 +1451,19 @@ glade_project_window_next_project_cb (GtkAction *action, GladeProjectWindow *win
}
static void
+inspector_item_activated_cb (GladeInspector *inspector,
+ GladeProjectWindow *gpw)
+{
+ GList *item = glade_inspector_get_selected_items (inspector);
+ g_assert (GLADE_IS_WIDGET (item->data) && (item->next == NULL));
+
+ /* switch to this widget in the workspace */
+ glade_widget_show (GLADE_WIDGET (item->data));
+
+ g_list_free (item);
+}
+
+static void
gpw_notebook_switch_page_cb (GtkNotebook *notebook,
GtkNotebookPage *page,
guint page_num,
@@ -1475,6 +1491,9 @@ gpw_notebook_switch_page_cb (GtkNotebook *notebook,
gpw_refresh_title (gpw);
gpw_set_sensitivity_according_to_project (gpw, project);
+ /* switch to the project's inspector */
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), page_num);
+
/* activate the corresponding item in the project menu */
action_name = g_strdup_printf ("Tab_%d", page_num);
action = gtk_action_group_get_action (gpw->priv->projects_list_menu_actions,
@@ -1498,6 +1517,7 @@ gpw_notebook_tab_added_cb (GtkNotebook *notebook,
GladeProjectWindow *gpw)
{
GladeProject *project;
+ GtkWidget *inspector;
++gpw->priv->num_tabs;
@@ -1515,6 +1535,18 @@ gpw_notebook_tab_added_cb (GtkNotebook *notebook,
G_CALLBACK (gpw_project_notify_handler_cb),
gpw);
+ /* create inspector */
+ inspector = glade_inspector_new ();
+ gtk_widget_show (inspector);
+ glade_inspector_set_project (GLADE_INSPECTOR (inspector), project);
+
+ g_signal_connect (inspector, "item-activated",
+ G_CALLBACK (inspector_item_activated_cb),
+ gpw);
+
+ gtk_notebook_append_page (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), inspector, NULL);
+
+
gpw_set_sensitivity_according_to_project (gpw, project);
gpw_refresh_projects_list_menu (gpw);
@@ -1532,7 +1564,8 @@ gpw_notebook_tab_removed_cb (GtkNotebook *notebook,
guint page_num,
GladeProjectWindow *gpw)
{
- GladeProject *project;
+ GladeProject *project;
+ GladeInspector *inspector;
--gpw->priv->num_tabs;
@@ -1551,6 +1584,10 @@ gpw_notebook_tab_removed_cb (GtkNotebook *notebook,
/* FIXME: this function needs to be preferably called somewhere else */
glade_app_remove_project (project);
+ inspector = (GladeInspector *) gtk_notebook_get_nth_page (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), page_num);
+
+ gtk_notebook_remove_page (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), page_num);
+
gpw_refresh_projects_list_menu (gpw);
gpw_refresh_title (gpw);
@@ -2208,7 +2245,6 @@ glade_project_window_create (GladeProjectWindow *gpw)
GtkWidget *vpaned;
GtkWidget *menubar;
GtkWidget *toolbar;
- GladeProjectView *project_view;
GtkWidget *statusbar;
GtkWidget *editor_item;
GtkWidget *palette;
@@ -2289,15 +2325,13 @@ glade_project_window_create (GladeProjectWindow *gpw)
gtk_paned_pack2 (GTK_PANED (hpaned2), gpw->priv->notebook, TRUE, FALSE);
gtk_widget_show (gpw->priv->notebook);
- /* project view */
- project_view = GLADE_PROJECT_VIEW (glade_project_view_new ());
- glade_app_add_project_view (project_view);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (project_view),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (project_view), GTK_SHADOW_IN);
- dockitem = gpw_construct_dock_item (gpw, _("Inspector"), GTK_WIDGET (project_view));
+ /* inspectors */
+ gpw->priv->inspectors_notebook = gtk_notebook_new ();
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), FALSE);
+ gtk_notebook_set_show_border (GTK_NOTEBOOK (gpw->priv->inspectors_notebook), FALSE);
+ gtk_widget_show (gpw->priv->inspectors_notebook);
+ dockitem = gpw_construct_dock_item (gpw, _("Inspector"), gpw->priv->inspectors_notebook);
gtk_paned_pack1 (GTK_PANED (vpaned), dockitem, FALSE, FALSE);
- gtk_widget_show_all (GTK_WIDGET (project_view));
/* editor */
editor = GTK_WIDGET (glade_app_get_editor ());