Rough description of some internals of Gnome Calendar Application + mainToolbar object: Has 3 states: 1. Overview 2. View Event 3. Edit Event (this one could act as New Event View, or even as New anything view) + GcalApplication Has dconf-key attribute For keeping the last view and last day selected Has command-line option For opening on the day specified Has a GcalManager object For managingn source and events, and everything else + GcalManager Has a list of GcalStoreUnit, Containing: Esource, ECalClient,ECalClientView Has a list of ESourceGroup Has icaltimetype *initial_date, *final_date For defining a range to get events from Could have an active query representing the range (s-exp) Has a list of Events in the active range (a list of ECalComponent) Emit signals for: - objects-added (wrapping ECalClientView) - objects-removed (wrapping ECalClientView) - events-retrieved (for time range changing) Has a GtkListStore with calendar/sources info. + GcalSource Has a base_uri Has a relative uri Has a color + GcalView Has NavigationPane Has icaltimetype: selected_date attribute Has child classes 1. GcalDayView ... + GcalEvent Has one source + GcalMainWindow Design +- GtkClutter.Embed::ClutterBox(BoxLayout) ----------------------------------+ | | | +- _body_actor::ClutterBox(BoxLayout) --------------------------------+ | | | | | | | +- _main_toolbar -----------------------------------------------+ | | | | | | | | | | +---------------------------------------------------------------+ | | | | +- _contents_actor::ClutterBox(BinLayout) ----------------------+ | | | | | | | | | | | +- _sources_actor ----------------------------------------+ | | | | | | | | | | | | | | +---------------------------------------------------------+ | | | | | | | | | | | | +- _notebook_actor ---------------------------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------------------------------------------------+ | | | | | +---------------------------------------------------------------+ | | | | | | | +---------------------------------------------------------------------+ | +----------------------------------------------------------------------------+ Has an active_view attribute For keeping the type view is actually showing Has views 1. GcalDayView 2. GcalWeekView 3. GcalMonthView ... Has icaltimetype attribute For keeping actual date Has set_view/update_view method For updating the view content by talking to GcalManager about events an dates of the view