diff options
author | Iain Holmes <iain@src.gnome.org> | 2000-11-02 08:42:35 +0800 |
---|---|---|
committer | Iain Holmes <iain@src.gnome.org> | 2000-11-02 08:42:35 +0800 |
commit | 4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c (patch) | |
tree | 6f9b76cee8d456070ca9c849c697f621ff833694 /executive-summary/component/e-summary-factory.c | |
parent | 35162bcd8728297bff435a5592328051fd1df211 (diff) | |
download | gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar.gz gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar.bz2 gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar.lz gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar.xz gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.tar.zst gsoc2013-evolution-4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c.zip |
Moving the executive summarys now :)
mail-summary now has clickable names to change to that view
executive summary remembers what components are running when you close.
selection now blocks ES updating so it won't be cleared.
svn path=/trunk/; revision=6330
Diffstat (limited to 'executive-summary/component/e-summary-factory.c')
-rw-r--r-- | executive-summary/component/e-summary-factory.c | 85 |
1 files changed, 61 insertions, 24 deletions
diff --git a/executive-summary/component/e-summary-factory.c b/executive-summary/component/e-summary-factory.c index 435e6953ad..4593edee47 100644 --- a/executive-summary/component/e-summary-factory.c +++ b/executive-summary/component/e-summary-factory.c @@ -50,8 +50,8 @@ static GList *control_list = NULL; -GtkWidget* embed_service (GtkWidget *widget, - ESummary *esummary); +void embed_service (GtkWidget *widget, + ESummary *esummary); BonoboUIVerb verbs[] = { BONOBO_UI_UNSAFE_VERB ("AddService", embed_service), @@ -118,11 +118,41 @@ control_activate_cb (BonoboControl *control, gboolean activate, gpointer user_data) { + ESummary *summary; BonoboUIComponent *ui_component; - + Bonobo_ControlFrame control_frame; + Evolution_ShellView shell_view_interface; + CORBA_Environment ev; + ui_component = bonobo_control_get_ui_component (control); g_assert (ui_component != NULL); + if (gtk_object_get_data (GTK_OBJECT (control), "shell_view_interface") == NULL) { + control_frame = bonobo_control_get_control_frame (control); + if (control_frame == NULL) { + goto out; + } + + CORBA_exception_init (&ev); + shell_view_interface = Bonobo_Unknown_query_interface (control_frame, + "IDL:Evolution/ShellView:1.0", + &ev); + CORBA_exception_free (&ev); + + if (shell_view_interface != CORBA_OBJECT_NIL) { + gtk_object_set_data (GTK_OBJECT (control), + "shell_view_interface", + shell_view_interface); + } else { + g_warning ("Control frame doesn't have Evolution/ShellView."); + } + + summary = E_SUMMARY (user_data); + e_summary_set_shell_view_interface (summary, + shell_view_interface); + } + + out: if (activate) control_activate (control, ui_component, user_data); else @@ -147,7 +177,6 @@ update (ExecutiveSummary *summary, ESummary *esummary) { ExecutiveSummaryComponentView *view; - g_print ("OI!\n"); view = e_summary_view_from_id (esummary, id); executive_summary_component_view_set_html (view, html); @@ -158,9 +187,12 @@ static void set_title (ExecutiveSummary *summary, int id, const char *title, - gpointer user_data) + ESummary *esummary) { - g_print ("Setting title to %s\n", title); + ExecutiveSummaryComponentView *view; + + view = e_summary_view_from_id (esummary, id); + executive_summary_component_view_set_title (view, title); } static void @@ -186,48 +218,53 @@ view_destroyed (ExecutiveSummaryComponentView *view, /* A ********very******** temporary function to embed something */ -GtkWidget* +void embed_service (GtkWidget *widget, ESummary *esummary) { - ExecutiveSummaryComponentClient *client; - ExecutiveSummary *summary; - ExecutiveSummaryComponentView *view; char *required_interfaces[2] = {"IDL:Evolution:SummaryComponent:1.0", NULL}; char *obj_id; - char *title; - char *icon; - char *html; - + obj_id = bonobo_selector_select_id ("Select a service", (const char **) required_interfaces); if (obj_id == NULL) - return NULL; + return; - client = executive_summary_component_client_new (obj_id); + e_summary_factory_embed_service_from_id (esummary, obj_id); +} - if (client == NULL) - return NULL; +void +e_summary_factory_embed_service_from_id (ESummary *esummary, + const char *obj_id) +{ + ExecutiveSummaryComponentClient *client; + ExecutiveSummary *summary; + ExecutiveSummaryComponentView *view; + int id; + + client = executive_summary_component_client_new (obj_id); + + g_return_if_fail (client != NULL); /* Set the owner */ - summary = executive_summary_new (); + summary = EXECUTIVE_SUMMARY (executive_summary_new ()); executive_summary_component_client_set_owner (client, summary); gtk_signal_connect (GTK_OBJECT (summary), "flash", - GTK_SIGNAL_FUNC (flash), NULL); + GTK_SIGNAL_FUNC (flash), esummary); gtk_signal_connect (GTK_OBJECT (summary), "set_title", - GTK_SIGNAL_FUNC (set_title), NULL); + GTK_SIGNAL_FUNC (set_title), esummary); gtk_signal_connect (GTK_OBJECT (summary), "update", GTK_SIGNAL_FUNC (update), esummary); /* Create view */ - view = executive_summary_component_client_create_view (client); + id = executive_summary_component_create_unique_id (); + view = executive_summary_component_client_create_view (client, id); gtk_signal_connect (GTK_OBJECT (view), "destroy", GTK_SIGNAL_FUNC (view_destroyed), client); - e_summary_add_service (esummary, summary, view); + e_summary_add_service (esummary, summary, view, obj_id); e_summary_rebuild_page (esummary); - return NULL; } BonoboControl * |