aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog16
-rw-r--r--shell/Evolution-ShellView.idl2
-rw-r--r--shell/e-shell-view.c34
-rw-r--r--shell/evolution-shell-view.c46
-rw-r--r--shell/evolution-shell-view.h2
5 files changed, 100 insertions, 0 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 1e4f15fd59..a391fac53c 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,19 @@
+2000-10-26 Iain Holmes <iain@helixcode.com>
+
+ * Evolution-ShellView.idl: Added a change_current_view method and
+ a set_title.
+
+ * evolution-shell-view.c (class_init): Added signals for the above methods.
+ (impl_ShellView_change_current_view), (impl_ShellView_set_title): Implementations
+ for above methods.
+ (corba_class_init): Connect the implemenations.
+
+ * e-shell-view.c (shell_view_interface_change_current_view): Change
+ the display to the new uri.
+ (shell_view_interface_set_title): Set the window title.
+ (setup_evolution_shell_view_interface): Connect the signals to the above
+ functions.
+
2000-11-01 Dan Winship <danw@helixcode.com>
* Evolution-Storage.idl: Add "highligted" field to Folder. Add
diff --git a/shell/Evolution-ShellView.idl b/shell/Evolution-ShellView.idl
index f0931dccdd..d155b3397c 100644
--- a/shell/Evolution-ShellView.idl
+++ b/shell/Evolution-ShellView.idl
@@ -14,5 +14,7 @@ module Evolution {
interface ShellView : Bonobo::Unknown {
void set_message (in string message, in boolean busy);
void unset_message ();
+ void change_current_view (in string uri);
+ void set_title (in string title);
};
};
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index d75ba021d0..45f4fa0ef7 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -797,6 +797,34 @@ shell_view_interface_unset_message_cb (EvolutionShellView *shell_view,
stop_progress_bar (E_SHELL_VIEW (data));
}
+static void
+shell_view_interface_change_current_view_cb (EvolutionShellView *shell_view,
+ const char *uri,
+ void *data)
+{
+ EShellView *view;
+
+ view = E_SHELL_VIEW (data);
+
+ g_return_if_fail (view != NULL);
+
+ e_shell_view_display_uri (view, uri);
+}
+
+static void
+shell_view_interface_set_title (EvolutionShellView *shell_view,
+ const char *title,
+ void *data)
+{
+ EShellView *view;
+
+ view = E_SHELL_VIEW (data);
+
+ g_return_if_fail (view != NULL);
+
+ gtk_window_set_title (GTK_WINDOW (view), title);
+}
+
EShellView *
e_shell_view_construct (EShellView *shell_view,
@@ -1066,6 +1094,12 @@ setup_evolution_shell_view_interface (EShellView *shell_view,
gtk_signal_connect_while_alive (GTK_OBJECT (shell_view_interface), "unset_message",
GTK_SIGNAL_FUNC (shell_view_interface_unset_message_cb),
shell_view, GTK_OBJECT (shell_view));
+ gtk_signal_connect_while_alive (GTK_OBJECT (shell_view_interface), "change_current_view",
+ GTK_SIGNAL_FUNC (shell_view_interface_change_current_view_cb),
+ shell_view, GTK_OBJECT (shell_view));
+ gtk_signal_connect_while_alive (GTK_OBJECT (shell_view_interface), "set_title",
+ GTK_SIGNAL_FUNC (shell_view_interface_set_title),
+ shell_view, GTK_OBJECT (shell_view));
bonobo_object_add_interface (BONOBO_OBJECT (control_frame),
BONOBO_OBJECT (shell_view_interface));
diff --git a/shell/evolution-shell-view.c b/shell/evolution-shell-view.c
index 5c46f70fbb..46a59030d7 100644
--- a/shell/evolution-shell-view.c
+++ b/shell/evolution-shell-view.c
@@ -43,6 +43,8 @@ struct _EvolutionShellViewPrivate {
enum {
SET_MESSAGE,
UNSET_MESSAGE,
+ CHANGE_VIEW,
+ SET_TITLE,
LAST_SIGNAL
};
static int signals[LAST_SIGNAL] = { 0 };
@@ -96,6 +98,30 @@ impl_ShellView_unset_message (PortableServer_Servant servant,
gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[UNSET_MESSAGE]);
}
+static void
+impl_ShellView_change_current_view (PortableServer_Servant servant,
+ CORBA_char *uri,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[CHANGE_VIEW],
+ uri);
+}
+
+static void
+impl_ShellView_set_title (PortableServer_Servant servant,
+ CORBA_char *title,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ gtk_signal_emit (GTK_OBJECT (bonobo_object), signals[SET_TITLE],
+ title);
+}
+
/* GtkObject methods. */
static void
@@ -128,6 +154,8 @@ corba_class_init (void)
epv = g_new0 (POA_Evolution_ShellView__epv, 1);
epv->set_message = impl_ShellView_set_message;
epv->unset_message = impl_ShellView_unset_message;
+ epv->change_current_view = impl_ShellView_change_current_view;
+ epv->set_title = impl_ShellView_set_title;
vepv = &ShellView_vepv;
vepv->_base_epv = base_epv;
@@ -161,6 +189,24 @@ class_init (EvolutionShellViewClass *klass)
gtk_marshal_NONE__NONE,
GTK_TYPE_NONE, 0);
+ signals[CHANGE_VIEW]
+ = gtk_signal_new ("change_current_view",
+ GTK_RUN_FIRST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (EvolutionShellViewClass, change_current_view),
+ gtk_marshal_NONE__POINTER,
+ GTK_TYPE_NONE, 1,
+ GTK_TYPE_STRING);
+
+ signals[SET_TITLE]
+ = gtk_signal_new ("set_title",
+ GTK_RUN_FIRST,
+ object_class->type,
+ GTK_SIGNAL_OFFSET (EvolutionShellViewClass, set_title),
+ gtk_marshal_NONE__POINTER,
+ GTK_TYPE_NONE, 1,
+ GTK_TYPE_STRING);
+
gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
parent_class = gtk_type_class (bonobo_object_get_type ());
diff --git a/shell/evolution-shell-view.h b/shell/evolution-shell-view.h
index e12e8be2e1..546a1a9640 100644
--- a/shell/evolution-shell-view.h
+++ b/shell/evolution-shell-view.h
@@ -61,6 +61,8 @@ struct _EvolutionShellViewClass {
void (* set_message) (EvolutionShellView *shell_view, const char *message, gboolean busy);
void (* unset_message) (EvolutionShellView *shell_view);
+ void (* change_current_view) (EvolutionShellView *shell_view, const char *uri);
+ void (* set_title) (EvolutionShellView *shell_view, const char *message);
};