set calendar's uri with a property bag
* e-shell-view.c (get_view): set calendar's uri with a property bag * gui/evolution-calendar-control.c (calendar_properties_init): create a property bag for this control (set_prop): callback for property sets (get_prop): callback for proprety gets * gui/calendar-commands.c (calendar_set_uri): new function, called when the "calendar_uri" property is set on the calendar- control's property bag. svn path=/trunk/; revision=2501
This commit is contained in:
@ -1,3 +1,14 @@
|
||||
2000-04-19 Seth Alves <alves@hungry.com>
|
||||
|
||||
* gui/evolution-calendar-control.c (calendar_properties_init): create
|
||||
a property bag for this control
|
||||
(set_prop): callback for property sets
|
||||
(get_prop): callback for proprety gets
|
||||
|
||||
* gui/calendar-commands.c (calendar_set_uri): new function,
|
||||
called when the "calendar_uri" property is set on the calendar-
|
||||
control's property bag.
|
||||
|
||||
2000-04-18 Federico Mena Quintero <federico@helixcode.com>
|
||||
|
||||
* cal-util/Makefile.am (INCLUDES): Fix include path.
|
||||
|
||||
@ -32,9 +32,6 @@ char *user_name;
|
||||
/* The full user name from the Gecos field */
|
||||
char *full_name;
|
||||
|
||||
/* The user's default calendar file */
|
||||
char *user_calendar_file;
|
||||
|
||||
/* a gnome-config string prefix that can be used to access the calendar config info */
|
||||
char *calendar_settings;
|
||||
|
||||
@ -288,7 +285,7 @@ goto_clicked (BonoboUIHandler *uih, void *user_data, const char *path)
|
||||
static void
|
||||
new_calendar_cmd (BonoboUIHandler *uih, void *user_data, const char *path)
|
||||
{
|
||||
new_calendar (full_name, NULL, NULL, NULL, FALSE);
|
||||
new_calendar (full_name, NULL, NULL, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -342,7 +339,10 @@ open_ok (GtkWidget *widget, GtkFileSelection *fs)
|
||||
ret = gnome_dialog_run (GNOME_DIALOG (error_dialog));
|
||||
} else {
|
||||
/* FIXME: find out who owns this calendar and use that name */
|
||||
#warning "fix me: find out who owns this calendar and use that name"
|
||||
/*
|
||||
new_calendar ("Somebody", gtk_file_selection_get_filename (fs), NULL, NULL, FALSE);
|
||||
*/
|
||||
gtk_widget_destroy (GTK_WIDGET (fs));
|
||||
}
|
||||
}
|
||||
@ -568,12 +568,12 @@ calendar_close_event (GtkWidget *widget, GdkEvent *event, GnomeCalendar *gcal)
|
||||
|
||||
|
||||
GnomeCalendar *
|
||||
new_calendar (char *full_name, char *calendar_file, char *geometry, char *page, gboolean hidden)
|
||||
new_calendar (char *full_name, char *geometry, char *page, gboolean hidden)
|
||||
{
|
||||
GtkWidget *toplevel;
|
||||
char title[128];
|
||||
int xpos, ypos, width, height;
|
||||
gboolean success;
|
||||
|
||||
|
||||
/* i18n: This "%s%s" indicates possession. Languages where the order is
|
||||
* the inverse should translate it to "%2$s%1$s".
|
||||
@ -590,21 +590,6 @@ new_calendar (char *full_name, char *calendar_file, char *geometry, char *page,
|
||||
if (page)
|
||||
gnome_calendar_set_view (GNOME_CALENDAR (toplevel), page);
|
||||
|
||||
printf ("calendar_file is '%s'\n", calendar_file?calendar_file:"NULL");
|
||||
if (calendar_file && g_file_exists (calendar_file)) {
|
||||
printf ("loading calendar\n");
|
||||
success = gnome_calendar_load (GNOME_CALENDAR (toplevel),
|
||||
calendar_file);
|
||||
}
|
||||
else {
|
||||
printf ("creating calendar\n");
|
||||
success = gnome_calendar_create (GNOME_CALENDAR (toplevel),
|
||||
calendar_file);
|
||||
}
|
||||
|
||||
printf ("load or create returned %d\n", success);
|
||||
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (toplevel), "delete_event",
|
||||
GTK_SIGNAL_FUNC(calendar_close_event), toplevel);
|
||||
|
||||
@ -627,9 +612,30 @@ new_calendar (char *full_name, char *calendar_file, char *geometry, char *page,
|
||||
return GNOME_CALENDAR (toplevel);
|
||||
}
|
||||
|
||||
|
||||
void calendar_set_uri (GnomeCalendar *gcal, char *calendar_file)
|
||||
{
|
||||
gboolean success;
|
||||
|
||||
printf ("calendar_set_uri: calendar_file is '%s'\n",
|
||||
calendar_file ? calendar_file : "NULL");
|
||||
|
||||
if (calendar_file && g_file_exists (calendar_file)) {
|
||||
printf ("loading calendar\n");
|
||||
success = gnome_calendar_load (gcal, calendar_file);
|
||||
}
|
||||
else {
|
||||
printf ("creating calendar\n");
|
||||
success = gnome_calendar_create (gcal, calendar_file);
|
||||
}
|
||||
|
||||
printf (" load or create returned %d\n", success);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Initializes the calendar internal variables, loads defaults
|
||||
*/
|
||||
@ -640,7 +646,7 @@ void init_calendar (void)
|
||||
char *str;
|
||||
|
||||
init_username ();
|
||||
user_calendar_file = g_concat_dir_and_file (gnome_util_user_home (), ".gnome/user-cal.vcf");
|
||||
/*user_calendar_file = g_concat_dir_and_file (gnome_util_user_home (), ".gnome/user-cal.vcf");*/
|
||||
|
||||
gnome_config_push_prefix (calendar_settings);
|
||||
|
||||
|
||||
@ -92,8 +92,12 @@ void parse_color_spec (char *spec, int *r, int *g, int *b);
|
||||
/* Calls build_color_spec() for the color in the specified property number */
|
||||
char *color_spec_from_prop (ColorProp propnum);
|
||||
|
||||
GnomeCalendar *new_calendar (char *full_name, char *calendar_file,
|
||||
char *geometry, char *page, gboolean hidden);
|
||||
GnomeCalendar *new_calendar (char *full_name,
|
||||
char *geometry,
|
||||
char *page,
|
||||
gboolean hidden);
|
||||
|
||||
void calendar_set_uri (GnomeCalendar *gcal, char *calendar_file);
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
@ -124,7 +128,7 @@ void calendar_control_deactivate (BonoboControl *control);
|
||||
|
||||
void quit_cmd (BonoboUIHandler *uih, void *user_data, const char *path);
|
||||
|
||||
extern char *user_calendar_file;
|
||||
/*extern char *user_calendar_file;*/
|
||||
extern char *user_name;
|
||||
extern char *full_name;
|
||||
extern int debug_alarms;
|
||||
|
||||
@ -12,7 +12,10 @@
|
||||
#include <gui/eventedit.h>
|
||||
#include <gui/gnome-cal.h>
|
||||
#include <gui/calendar-commands.h>
|
||||
/*#include <control/calendar-control.h>*/
|
||||
|
||||
#define PROPERTY_CALENDAR_URI "calendar_uri"
|
||||
|
||||
#define PROPERTY_CALENDAR_URI_IDX 1
|
||||
|
||||
|
||||
CORBA_Environment ev;
|
||||
@ -31,18 +34,100 @@ control_activate_cb (BonoboControl *control,
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
init_bonobo (int argc, char **argv)
|
||||
{
|
||||
gnome_CORBA_init_with_popt_table (
|
||||
"evolution-calendar", "0.0",
|
||||
&argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
|
||||
|
||||
orb = gnome_CORBA_ORB ();
|
||||
|
||||
if (bonobo_init (orb, NULL, NULL) == FALSE)
|
||||
g_error (_("Could not initialize Bonobo"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
get_prop (BonoboPropertyBag *bag,
|
||||
BonoboArg *arg,
|
||||
guint arg_id,
|
||||
gpointer user_data)
|
||||
{
|
||||
GnomeCalendar *gcal = user_data;
|
||||
|
||||
switch (arg_id) {
|
||||
|
||||
case PROPERTY_CALENDAR_URI_IDX:
|
||||
/*
|
||||
if (fb && fb->uri)
|
||||
BONOBO_ARG_SET_STRING (arg, fb->uri);
|
||||
else
|
||||
BONOBO_ARG_SET_STRING (arg, "");
|
||||
*/
|
||||
break;
|
||||
|
||||
default:
|
||||
g_warning ("Unhandled arg %d\n", arg_id);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_prop (BonoboPropertyBag *bag,
|
||||
const BonoboArg *arg,
|
||||
guint arg_id,
|
||||
gpointer user_data)
|
||||
{
|
||||
GnomeCalendar *gcal = user_data;
|
||||
|
||||
switch (arg_id) {
|
||||
|
||||
case PROPERTY_CALENDAR_URI_IDX:
|
||||
printf ("set_prop: '%s'\n", BONOBO_ARG_GET_STRING (arg));
|
||||
calendar_set_uri (gcal, BONOBO_ARG_GET_STRING (arg));
|
||||
break;
|
||||
|
||||
default:
|
||||
g_warning ("Unhandled arg %d\n", arg_id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
calendar_properties_init (GnomeCalendar *gcal)
|
||||
{
|
||||
gcal->properties = bonobo_property_bag_new (get_prop, set_prop, gcal);
|
||||
|
||||
bonobo_property_bag_add (gcal->properties,
|
||||
PROPERTY_CALENDAR_URI,
|
||||
PROPERTY_CALENDAR_URI_IDX,
|
||||
BONOBO_ARG_STRING,
|
||||
NULL,
|
||||
_("The URI that the calendar will display"),
|
||||
0);
|
||||
|
||||
bonobo_control_set_property_bag (gcal->control, gcal->properties);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static BonoboObject *
|
||||
calendar_factory (BonoboGenericFactory *Factory, void *closure)
|
||||
{
|
||||
BonoboControl *control;
|
||||
BonoboControl *control;
|
||||
|
||||
/* Create the control. */
|
||||
GnomeCalendar *cal = new_calendar (full_name,
|
||||
user_calendar_file,
|
||||
NULL, NULL, 0);
|
||||
GnomeCalendar *cal = new_calendar (full_name, NULL, NULL, 0);
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (cal));
|
||||
|
||||
control = bonobo_control_new (GTK_WIDGET (cal));
|
||||
cal->control = control;
|
||||
|
||||
calendar_properties_init (cal);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (control), "activate",
|
||||
control_activate_cb, cal);
|
||||
@ -69,26 +154,13 @@ calendar_factory_init (void)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
init_bonobo (int argc, char **argv)
|
||||
{
|
||||
gnome_CORBA_init_with_popt_table (
|
||||
"evolution-calendar", "0.0",
|
||||
&argc, argv, NULL, 0, NULL, GNORBA_INIT_SERVER_FUNC, &ev);
|
||||
|
||||
orb = gnome_CORBA_ORB ();
|
||||
|
||||
if (bonobo_init (orb, NULL, NULL) == FALSE)
|
||||
g_error (_("Could not initialize Bonobo"));
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
alarm_init ();
|
||||
init_calendar ();
|
||||
|
||||
/*g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF);*/
|
||||
g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
#include <gtk/gtkcalendar.h>
|
||||
#include <libgnomeui/gnome-app.h>
|
||||
#include <cal-client/cal-client.h>
|
||||
#include <bonobo.h>
|
||||
|
||||
BEGIN_GNOME_DECLS
|
||||
|
||||
@ -28,6 +29,9 @@ typedef struct {
|
||||
CalClient *client;
|
||||
time_t current_display;
|
||||
|
||||
BonoboPropertyBag *properties;
|
||||
BonoboControl *control;
|
||||
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *day_view;
|
||||
GtkWidget *week_view;
|
||||
|
||||
@ -44,10 +44,10 @@ static GList *start_views;
|
||||
static time_t from_t, to_t;
|
||||
|
||||
/* If set, show events for the specified date and quit */
|
||||
static int show_events;
|
||||
/*static int show_events;*/
|
||||
|
||||
/* If set, show todo items quit */
|
||||
static int show_todo;
|
||||
/*static int show_todo;*/
|
||||
|
||||
/* If true, do not show our top level window */
|
||||
int startup_hidden = 0;
|
||||
@ -76,6 +76,8 @@ same_day (struct tm *a, struct tm *b)
|
||||
a->tm_year == b->tm_year);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
static void
|
||||
dump_events (void)
|
||||
{
|
||||
@ -134,8 +136,10 @@ dump_events (void)
|
||||
/* calendar_destroy (cal); DELETE */
|
||||
exit (0);
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
|
||||
#if 0
|
||||
static void
|
||||
dump_todo (void)
|
||||
{
|
||||
@ -178,6 +182,8 @@ dump_todo (void)
|
||||
/* calendar_destroy (cal); DELETE */
|
||||
exit (0);
|
||||
}
|
||||
#endif /* 0 */
|
||||
|
||||
|
||||
static void
|
||||
session_die (void)
|
||||
@ -269,13 +275,17 @@ parse_an_arg (poptContext ctx,
|
||||
start_calendars = g_list_append (start_calendars, arg);
|
||||
break;
|
||||
|
||||
/*
|
||||
case TODO_KEY:
|
||||
show_todo = 1;
|
||||
break;
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
case 'e':
|
||||
show_events = 1;
|
||||
break;
|
||||
*/
|
||||
|
||||
case HIDDEN_KEY:
|
||||
startup_hidden = 1;
|
||||
@ -339,11 +349,13 @@ main (int argc, char **argv)
|
||||
|
||||
process_dates ();
|
||||
|
||||
# if 0
|
||||
if (show_events)
|
||||
dump_events ();
|
||||
|
||||
if (show_todo)
|
||||
dump_todo ();
|
||||
# endif /* 0 */
|
||||
|
||||
client = gnome_master_client ();
|
||||
if (client) {
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
2000-04-19 Seth Alves <alves@hungry.com>
|
||||
|
||||
* e-shell-view.c (get_view): set calendar's uri with a property bag
|
||||
|
||||
2000-04-19 Christopher James Lahey <clahey@helixcode.com>
|
||||
|
||||
* idl/folder.idl: New idl file. Still unused.
|
||||
|
||||
@ -150,9 +150,25 @@ get_view (EShellView *eshell_view, EFolder *efolder, Bonobo_UIHandler uih)
|
||||
w = bonobo_widget_new_control ("control:addressbook", uih);
|
||||
break;
|
||||
|
||||
case E_FOLDER_CALENDAR :
|
||||
case E_FOLDER_CALENDAR : {
|
||||
gchar *user_cal_file;
|
||||
BonoboPropertyBagClient *pbc;
|
||||
BonoboControlFrame *cf;
|
||||
|
||||
w = bonobo_widget_new_control ("control:calendar", uih);
|
||||
cf = bonobo_widget_get_control_frame (BONOBO_WIDGET (w));
|
||||
pbc = bonobo_control_frame_get_control_property_bag (cf);
|
||||
/*pbc = bonobo_control_get_property_bag (w);*/
|
||||
|
||||
user_cal_file =
|
||||
g_concat_dir_and_file (gnome_util_user_home (),
|
||||
".gnome/user-cal.vcf");
|
||||
|
||||
bonobo_property_bag_client_set_value_string (pbc,
|
||||
"calendar_uri",
|
||||
user_cal_file);
|
||||
break;
|
||||
}
|
||||
|
||||
case E_FOLDER_TASKS :
|
||||
case E_FOLDER_OTHER :
|
||||
|
||||
@ -136,6 +136,8 @@ main (int argc, char **argv)
|
||||
setup_pcs (argc, argv);
|
||||
setup_config (argc, argv);
|
||||
|
||||
/*g_log_set_always_fatal ((GLogLevelFlags) 0xFFFF);*/
|
||||
|
||||
bonobo_main ();
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user