156 lines
3.6 KiB
C
156 lines
3.6 KiB
C
#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:GNOME_Evolution_Notes_shellComponentFactory"
|
|
|
|
static const EvolutionShellComponentFolderType folder_types[] = {
|
|
{ "notes", "evolution-notes.png", TRUE, NULL, NULL },
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
static void
|
|
new_note_cb (BonoboUIComponent *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
|
|
};
|
|
|
|
#ifdef THIS_NEEDS_UPDATING_FOR_NEW_BONOBOS
|
|
|
|
static void
|
|
control_deactivate (BonoboControl *control, BonoboUIComponent *uih)
|
|
{
|
|
bonobo_ui_handler_dock_remove (uih, "/Toolbar");
|
|
}
|
|
|
|
static void
|
|
control_activate (BonoboControl *control, BonoboUIComponent *uih)
|
|
{
|
|
Bonobo_UIContainer 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);
|
|
bonobo_object_release_unref (remote_uih, NULL);
|
|
|
|
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)
|
|
{
|
|
BonoboUIComponent *uih;
|
|
|
|
uih = bonobo_control_get_ui_handler (control);
|
|
g_assert (uih);
|
|
|
|
if (activate)
|
|
control_activate (control, uih);
|
|
else
|
|
control_deactivate (control, uih);
|
|
}
|
|
#endif
|
|
|
|
static BonoboControl *
|
|
create_view (EvolutionShellComponent *shell_component,
|
|
const char *physical_uri,
|
|
void *closure)
|
|
{
|
|
BonoboControl * control;
|
|
|
|
control = notes_factory_new_control ();
|
|
|
|
#ifdef THIS_CODE_IS_TOTALY_DEAD
|
|
g_signal_connect((control), "activate",
|
|
control_activate_cb, NULL);
|
|
#endif
|
|
|
|
|
|
return control;
|
|
}
|
|
|
|
static void
|
|
owner_set_cb (EvolutionShellComponent *shell_component,
|
|
EvolutionShellClient shell_client,
|
|
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);
|
|
|
|
g_signal_connect((shell_component), "owner_set",
|
|
G_CALLBACK (owner_set_cb), NULL);
|
|
g_signal_connect((shell_component), "owner_unset",
|
|
G_CALLBACK (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, GTK_MESSAGE_ERROR,
|
|
_("Cannot initialize Evolution's notes component."));
|
|
exit (1);
|
|
}
|
|
}
|