aboutsummaryrefslogtreecommitdiffstats
path: root/executive-summary/component/e-summary-factory.c
diff options
context:
space:
mode:
authorIain Holmes <iain@src.gnome.org>2000-11-02 08:42:35 +0800
committerIain Holmes <iain@src.gnome.org>2000-11-02 08:42:35 +0800
commit4f3a4c8234238faaac1dea1ae68cae4d5dca3a5c (patch)
tree6f9b76cee8d456070ca9c849c697f621ff833694 /executive-summary/component/e-summary-factory.c
parent35162bcd8728297bff435a5592328051fd1df211 (diff)
downloadgsoc2013-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.c85
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 *