aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/control-factory.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@helixcode.com>2000-09-08 14:39:05 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2000-09-08 14:39:05 +0800
commita38d76bc2e91964b73ffac3efcb043db54bf2189 (patch)
tree8ed2564db7ff3ff60a50b162fc3a75039e322d3e /calendar/gui/control-factory.c
parent0a8b44f162e3d1db26967e972b99a39e174369e6 (diff)
downloadgsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar.gz
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar.bz2
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar.lz
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar.xz
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.tar.zst
gsoc2013-evolution-a38d76bc2e91964b73ffac3efcb043db54bf2189.zip
Fall equinox cleanup!
2000-09-08 Federico Mena Quintero <federico@helixcode.com> Fall equinox cleanup! OK, I know the equinox is not here yet, but weather has changed enough to warrant it. Sigh. This place is definitely not the tropics. * gui/gnome-cal.c (obj_updated_cb): Renamed from gnome_calendar_object_updated_cb(); fixed prototype. (obj_removed_cb): Renamed from gnome_calendar_object_removed_cb(); fixed prototype. (GnomeCalendarPrivate): Moved all the GnomeCalendar fields to a private structure so I don't have to rebuild the whole calendar GUI directory every time something changes in the object. (GnomeCalendarPrivate): Removed the property bag and the control fields; they are local to the control-factory now. (gnome_calendar_update_view_buttons): Remove the ignore_view_button_clicks mess and just block the signal. (gnome_calendar_set_view): Added a "focus" argument to indicate whether we want the main widget in the specified view to grab the focus. (gnome_calendar_set_view_internal): Handle the focus argument here. (gnome_calendar_set_view_buttons): Temporary hack to notify the calendar about its buttons. (gnome_calendar_get_selected_time_range): New function. (gnome_calendar_get_cal_client): New function. * gui/control-factory.c (calendar_properties_init): Keep the property bag local to here; it does not need to be in the calendar object yet. (control_factory_fn): Renamed from control_factory(). Just use control_factory_new_control(). (control_factory_new_control): Moved the stuff over from create_control(), and keep the control local to here. Check the return value of bonobo_control_new(). * gui/calendar-commands.c (show_day_view_clicked): Remove the ignore_view_button_clicks mess. (new_calendar): Removed the useless "page" argument. (calendar_control_activate): Use gnome_calendar_set_view_buttons() for now. svn path=/trunk/; revision=5255
Diffstat (limited to 'calendar/gui/control-factory.c')
-rw-r--r--calendar/gui/control-factory.c65
1 files changed, 35 insertions, 30 deletions
diff --git a/calendar/gui/control-factory.c b/calendar/gui/control-factory.c
index 7bdd9b52a5..3b2f931127 100644
--- a/calendar/gui/control-factory.c
+++ b/calendar/gui/control-factory.c
@@ -49,8 +49,8 @@ CORBA_ORB orb;
static void
-control_activate_cb (BonoboControl *control,
- gboolean activate,
+control_activate_cb (BonoboControl *control,
+ gboolean activate,
gpointer user_data)
{
if (activate)
@@ -112,11 +112,13 @@ set_prop (BonoboPropertyBag *bag,
static void
-calendar_properties_init (GnomeCalendar *gcal)
+calendar_properties_init (GnomeCalendar *gcal, BonoboControl *control)
{
- gcal->properties = bonobo_property_bag_new (get_prop, set_prop, gcal);
+ BonoboPropertyBag *pbag;
- bonobo_property_bag_add (gcal->properties,
+ pbag = bonobo_property_bag_new (get_prop, set_prop, gcal);
+
+ bonobo_property_bag_add (pbag,
PROPERTY_CALENDAR_URI,
PROPERTY_CALENDAR_URI_IDX,
BONOBO_ARG_STRING,
@@ -124,35 +126,21 @@ calendar_properties_init (GnomeCalendar *gcal)
_("The URI that the calendar will display"),
0);
- bonobo_control_set_property_bag (gcal->control, gcal->properties);
+ bonobo_control_set_property_bag (control, pbag);
}
-
-static BonoboControl *
-create_control (void)
+/* Callback factory function for calendar controls */
+static BonoboObject *
+control_factory_fn (BonoboGenericFactory *Factory, void *data)
{
BonoboControl *control;
- GnomeCalendar *cal;
-
- 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);
-
- return control;
-}
+ control = control_factory_new_control ();
-static BonoboObject *
-control_factory (BonoboGenericFactory *Factory, void *closure)
-{
- return BONOBO_OBJECT (create_control ());
+ if (control)
+ return BONOBO_OBJECT (control);
+ else
+ return NULL;
}
@@ -166,7 +154,7 @@ control_factory_init (void)
puts ("XXXXXX - initializing calendar factory!!!");
- factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID, control_factory, NULL);
+ factory = bonobo_generic_factory_new (CONTROL_FACTORY_ID, control_factory_fn, NULL);
if (factory == NULL)
g_error ("I could not register a Calendar control factory.");
@@ -176,5 +164,22 @@ control_factory_init (void)
BonoboControl *
control_factory_new_control (void)
{
- return create_control ();
+ BonoboControl *control;
+ GnomeCalendar *gcal;
+
+ gcal = new_calendar (full_name, NULL, 0);
+ gtk_widget_show (GTK_WIDGET (gcal));
+
+ control = bonobo_control_new (GTK_WIDGET (gcal));
+ if (!control) {
+ g_message ("control_factory_fn(): could not create the control!");
+ return NULL;
+ }
+
+ calendar_properties_init (gcal, control);
+
+ gtk_signal_connect (GTK_OBJECT (control), "activate",
+ GTK_SIGNAL_FUNC (control_activate_cb), gcal);
+
+ return control;
}