aboutsummaryrefslogtreecommitdiffstats
path: root/notes/component-factory.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@src.gnome.org>2000-06-07 06:34:12 +0800
committerAnders Carlsson <andersca@src.gnome.org>2000-06-07 06:34:12 +0800
commitff31a1c535578b75c986e555026764dbc51e359d (patch)
tree6e6a8fad4af5370f4b45f874e9360b69013e9af4 /notes/component-factory.c
parentc219c79496fca669af1ae093a660a1ce4d81a682 (diff)
downloadgsoc2013-evolution-ff31a1c535578b75c986e555026764dbc51e359d.tar.gz
gsoc2013-evolution-ff31a1c535578b75c986e555026764dbc51e359d.tar.zst
gsoc2013-evolution-ff31a1c535578b75c986e555026764dbc51e359d.zip
Stuff
svn path=/trunk/; revision=3447
Diffstat (limited to 'notes/component-factory.c')
-rw-r--r--notes/component-factory.c150
1 files changed, 150 insertions, 0 deletions
diff --git a/notes/component-factory.c b/notes/component-factory.c
new file mode 100644
index 0000000000..5e9cae24f5
--- /dev/null
+++ b/notes/component-factory.c
@@ -0,0 +1,150 @@
+#include <config.h>
+
+#include <gnome.h>
+#include <bonobo.h>
+
+#include "Evolution.h"
+#include "evolution-storage.h"
+
+#include "evolution-shell-component.h"
+
+#include "e-util/e-gui-utils.h"
+
+#define COMPONENT_FACTORY_ID "OAFIID:evolution-shell-component-factory:evolution-notes:f2f0f57f-27d9-4498-b54b-248f223ee772"
+
+static const EvolutionShellComponentFolderType folder_types[] = {
+ { "notes", "evolution-notes.png" },
+ { NULL, NULL }
+};
+
+static void
+new_note_cb (BonoboUIHandler *uih, void *user_data, const char *path)
+{
+ g_print ("new note!\n");
+}
+
+static GnomeUIInfo gnome_toolbar [] = {
+ GNOMEUIINFO_ITEM_STOCK (N_("New"), N_("Create a new note"), new_note_cb, GNOME_STOCK_PIXMAP_NEW),
+ GNOMEUIINFO_END
+};
+
+static void
+control_deactivate (BonoboControl *control, BonoboUIHandler *uih)
+{
+ bonobo_ui_handler_dock_remove (uih, "/Toolbar");
+}
+
+static void
+control_activate (BonoboControl *control, BonoboUIHandler *uih)
+{
+ Bonobo_UIHandler remote_uih;
+ GtkWidget *toolbar, *toolbar_frame;
+ BonoboControl *toolbar_control ;
+
+ remote_uih = bonobo_control_get_remote_ui_handler (control);
+ bonobo_ui_handler_set_container (uih, remote_uih);
+
+ toolbar = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL,
+ GTK_TOOLBAR_BOTH);
+
+ gnome_app_fill_toolbar_with_data (GTK_TOOLBAR (toolbar),
+ gnome_toolbar,
+ NULL, NULL);
+
+ toolbar_frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (toolbar_frame), GTK_SHADOW_OUT);
+ gtk_container_add (GTK_CONTAINER (toolbar_frame), toolbar);
+ gtk_widget_show (toolbar_frame);
+
+ gtk_widget_show_all (toolbar_frame);
+
+ toolbar_control = bonobo_control_new (toolbar_frame);
+ bonobo_ui_handler_dock_add (
+ uih, "/Toolbar",
+ bonobo_object_corba_objref (BONOBO_OBJECT (toolbar_control)),
+ GNOME_DOCK_ITEM_BEH_EXCLUSIVE,
+ GNOME_DOCK_TOP,
+ 1, 1, 0);
+}
+
+
+static void
+control_activate_cb (BonoboControl *control,
+ gboolean activate)
+{
+ BonoboUIHandler *uih;
+
+ uih = bonobo_control_get_ui_handler (control);
+ g_assert (uih);
+
+ if (activate)
+ control_activate (control, uih);
+ else
+ control_deactivate (control, uih);
+}
+
+
+static BonoboControl *
+create_view (EvolutionShellComponent *shell_component,
+ const char *physical_uri,
+ void *closure)
+{
+ BonoboControl * control;
+
+ control = notes_factory_new_control ();
+
+ gtk_signal_connect (GTK_OBJECT (control), "activate",
+ control_activate_cb, NULL);
+
+
+ return control;
+}
+
+static void
+owner_set_cb (EvolutionShellComponent *shell_component,
+ Evolution_Shell shell_interface,
+ gpointer user_data)
+{
+ g_print ("evolution-notes: Yeeeh! We have an owner!\n"); /* FIXME */
+}
+
+static void
+owner_unset_cb (EvolutionShellComponent *shell_component, gpointer user_data)
+{
+ g_print ("No owner anymore\n");
+}
+
+/* The factory function */
+static BonoboObject *
+notes_component_factory (BonoboGenericFactory *factory,
+ void *closure)
+{
+ EvolutionShellComponent *shell_component;
+
+ shell_component = evolution_shell_component_new (folder_types, create_view, NULL);
+
+ gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
+ GTK_SIGNAL_FUNC (owner_set_cb), NULL);
+ gtk_signal_connect (GTK_OBJECT (shell_component), "owner_unset",
+ GTK_SIGNAL_FUNC (owner_unset_cb), NULL);
+
+ return BONOBO_OBJECT (shell_component);
+}
+
+
+void
+component_factory_init (void)
+{
+ static BonoboGenericFactory *factory = NULL;
+
+ if (factory != NULL)
+ return;
+
+ factory = bonobo_generic_factory_new (COMPONENT_FACTORY_ID, notes_component_factory, NULL);
+
+ if (factory == NULL) {
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("Cannot initialize Evolution's notes component."));
+ exit (1);
+ }
+}