From ff31a1c535578b75c986e555026764dbc51e359d Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Tue, 6 Jun 2000 22:34:12 +0000 Subject: Stuff svn path=/trunk/; revision=3447 --- notes/component-factory.c | 150 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 notes/component-factory.c (limited to 'notes/component-factory.c') 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 + +#include +#include + +#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); + } +} -- cgit